source: Changes @ 335378

Revision 335378, 19.0 KB checked in by Tomash Brechko <tomash.brechko@…>, 22 months ago (diff)

Update Changes file.

  • Property mode set to 100644
Line 
1Revision history for Perl extension Cache::Memcached::Fast.
2
3
40.19  2010-04-24
5        - revert SIGPIPE suppression change.  Upgrade if you couldn't
6        build 0.18.
7
8        Changes since 0.18:
9
10        Turned out some orthodox systems do not have sigtimedwait().
11        Since advanced systems that have sigtimedwait() also have
12        MSG_NOSIGNAL and thus do not use SIGPIPE suppression code in
13        question, and other systems have neither MSG_NOSIGNAL nor
14        sigtimedwait(), the only option is to revert to the previous
15        suppression code.  It works correctly unless your program is
16        multi-threaded.
17
18
190.18  2010-04-06
20        - make module thread-safe, and fix several bugs.  No need to
21        upgrade unless you experienced limitations mentioned below.
22
23        Changes since 0.17:
24
25        Fix RT#56142: handle Perl magic.  Tied scalars, arrays and
26        hashes are supported now, as well as Readonly variables and
27        other magic stuff.
28
29        Fix t/command.t failure on some Solaris distributions.
30
31        Make module thread-safe with Perl >= 5.7.2.
32
33
340.17  2009-11-02
35        - remove delete expiration aka delay parameter.  Upgrade is
36        required for use with memcached >= 1.3.2.
37
38        Changes since 0.16:
39
40        Warn about ignoring non-zero delete expiration time.
41        Expiration time for "delete" command has been optional in
42        older versions of memcached, and was dropped in memcached
43        1.3.2 (in an incompatible manner).  Not knowing server version
44        it's impossible to tell whether the server will handle the
45        parameter or not, so we simply do not send it at all.
46        Explicit zero passed to delete() or delete_multi() is silently
47        ignored, and a warning is given if you pass non-zero delete
48        expiration time.  Furthermore the syntax delete($key, $delay)
49        and delete_multi([$key, $delay]) is obsoleted and no more
50        documented.
51
52
530.16  2009-06-15
54        - add missing files.  This is a fix for the previous release.
55
56        Changes since 0.15:
57
58        Add src/addrinfo_hostent.c and src/addrinfo_hostent.h to
59        MANIFEST.  Oops :(.
60
61
620.15  2009-06-15
63        - no need to upgrade for existing users.  This release fixes
64        issues that new users may encounter (lack of getaddrinfo() on
65        some Windows systems; failing test case due to behaviour
66        change in memcached 1.3.3 that would break automatic
67        installation from CPAN).
68
69        Changes since 0.14:
70
71        Previous release (0.14) featured the change in the Ketama
72        algorithm.  While that was a necessary move to improve key
73        distribution across servers, it introduced incompatibility
74        with earlier versions, and provided no means for smooth
75        transition for existing users of Ketama algorithm (i.e.,
76        without complete loss of cached data).  The following
77        workaround was suggested by Masahiro Nagano---thanks!:
78
79          - apply the patch at http://limilic.com/entry/ljlt0sksbiqi16p3
80
81          - create two instances of C::M::F, one with enabled
82            old_ketama_algo => 1.
83
84          - for some time populate caches via both client instances,
85            while serving gets through old_ketama_algo.  For this you
86            may use Cache::Migrate (http://gist.github.com/110981).
87
88          - after some time (depends on cache refresh rate) you may
89            drop old_ketama_algo, as new data is now distributed
90            according to the new Ketama implementation as well (this
91            doubles memory use though).
92
93        I do not include the named patch in the distribution, because
94        it's use is limited for one-time transition for existing
95        Ketama users only.
96
97        On systems lacking getaddrinfo() implement it with
98        gethostbyname(). In particular this should fix the build on
99        Win32 (Cygwin, Mingw32).  Problem report (for Windows 2000 and
100        below) and initial patch are by Yasuhiro Matsumoto.
101
102        Fix t/commands.t: starting with memcached 1.3.3 incr/decr
103        commands expect numeric value in the cache.  Patch by Jason
104        M. Mills (RT#46883).
105
106
1070.14  2009-02-07
108        - improve Ketama distribution.  The change is incompatible
109        with Ketama implementation in previous versions.
110
111        Changes since 0.13:
112
113        Change calculation of Ketama points for a given server to get
114        mapping ratios closer to server weight ratios.  New Ketama
115        mode is compatible with nginx's module memcached_hash
116        (http://openhack.ru/nginx-patched/wiki/MemcachedHash) version
117        0.4, which has the same change, and is incompatible with
118        earlier versions of both named and this module.
119
120        Add script/ketama-distr.pl to compute server's share of
121        continuum.  Real-world example:
122
123          script/ketama-distr.pl --ketama_points=150 \
124                                 --server=10.0.143.4:11211 \
125                                 --server=10.0.143.6:11211 \
126                                 --server=10.0.143.7:11211 \
127                                 --server=10.0.143.8:11211
128
129        outputs:
130
131          Old:
132          server 1: 10.0.143.4:11211  total =  671585356 (15.64%)
133          server 2: 10.0.143.6:11211  total =  601117590 (14.00%)
134          server 3: 10.0.143.7:11211  total = 1771239512 (41.24%)
135          server 4: 10.0.143.8:11211  total = 1251024837 (29.13%)
136
137          New:
138          server 1: 10.0.143.4:11211  total = 1057134262 (24.61%)
139          server 2: 10.0.143.6:11211  total = 1111432463 (25.88%)
140          server 3: 10.0.143.7:11211  total = 1017280856 (23.69%)
141          server 4: 10.0.143.8:11211  total = 1109119714 (25.82%)
142
143          Continuum array size = 4800 bytes
144
145        I.e. "Old" is what we were getting before the change, and
146        "New" is what we are getting now.  "Continuum array size" is
147        how much memory is used to store the continuum array.  Try
148        this script on your servers to see your distribution, and
149        possibly to tweak ketama_points and/or server weights to get a
150        better one.
151
152        Fix RT#41077 (http://rt.cpan.org/Ticket/Display.html?id=41077):
153        implement disconnect_all().  Patch is by norbi.nix.hu, with
154        minor corrections---thanks!.
155
156
1570.13  2008-10-13
158        - introduce Win32 support (based on the patch by Yasuhiro
159        Matsumoto---arigatou!), and use poll() instead of select()
160        (suggested by Vladimir Timofeev).
161
162        Changes since 0.12:
163
164        Add support for Win32.  I personally don't have the system nor
165        compiler, so I can't even test the build.  Win32 port is
166        expected to be supported by community.  Note: on Win32 below
167        Windows Vista max number of memcached servers is 64.  See
168        comment on FD_SETSIZE in src/socket_win32.h to learn how to
169        increase this value if you need to connect to more than 64
170        servers.
171
172        Use poll() system call instead of select().  The latter has
173        the limit on the file descriptor value.  I.e. even when the
174        number of memcached servers is low, but your application opens
175        lots of other files, then after some point socket() returns
176        fd value larger that select() can handle.  poll() doesn't have
177        this limitation.  On a side note, we don't have to use
178        advanced calls like epoll()/kqueue(), because number of
179        memcached servers is normally not very large (and single
180        request touches even a smaller subset).
181
182        Add bench make target ('make bench').  You may change initial
183        parameters at the top of script/benchmark.pl to benchmark
184        different types of loads.
185
186        Do not install libclient.a.  Thanks to Vladimir Timofeev for
187        finding out how to prevent the installation.
188
189
1900.12  2008-07-21
191        - this release fixes compilation on Solaris broken in 0.11.
192        If you were able to compile 0.11, then you weren't affected.
193
194        Changes since 0.11:
195
196        Fix compilation on Solaris.  Ironically, 0.11 was supposed to
197        fix unrecognized format problem on Solaris, but instead broke
198        the compilation.  Back in May the line
199
200          return XSRETURN_EMPTY;
201
202        has been introduced to the code, whereas it should be
203
204          XSRETURN_EMPTY;
205
206        It went unnoticed because expansion produces the code
207        permitted by compilers like GCC that allow blocks to return a
208        value.  But Perl on Solaris has a different definition of this
209        macro that is not an expression.  Hence the problem.
210
211
2120.11  2008-07-17
213        - this release fixes %zu problem on Solaris.
214
215        Changes since 0.10:
216
217        Replace size_t/%zu with unsigned long/%lu for benefit of
218        systems that do not recognize the former format (Solaris 9).
219        Thanks to Michael Vychizhanin!
220
221        Add new parameter max_size (suggested by Alex Kapranoff, see
222        RT#35588, http://rt.cpan.org/Ticket/Display.html?id=35588).
223
224        Fix RT#36074 (http://rt.cpan.org/Ticket/Display.html?id=36074):
225        ExtUtils::MakeMaker version 6.17 and below generated invalid
226        Makefile.
227
228
2290.10  2008-05-01
230        - this is a bugfix release fixing key distribution in
231        compatible mode (reported by Anton Yuzhaninov---thanks!), and
232        minor fixes in Ketama mode for collision case (very rare).
233
234        Changes since 0.09:
235
236        Fix key distribution bug in compatible mode.  Because of
237        accumulated rounding error some keys were mapped to the
238        different server than with Cache::Memcached.
239
240        Remove explicit OPTIMIZE setting from the makefiles.  It ought
241        to be set explicitly by the user.  You can run 'perl -V:optimize' 
242        to learn the default.  It is safe to increase optimization
243        level to -O3.
244
245        Fix hash_namespace parameter: it didn't work for the namespace
246        specified in the constructor.
247
248        Minor fixes in Ketama mode for rare collision case.
249
250
2510.09  2008-03-06
252        - this release makes 'noreply' mode official, and improves
253        latency for some command patterns by managing TCP_NODELAY flag.
254
255        Changes since 0.08:
256
257        Enable TCP_NODELAY to reduce latency of commands that wait for
258        the reply, and disable it for throughput of commands that don't
259        need any reply.
260
261        t/encoding.t was removed from distribution.  It doesn't work
262        with Perl 5.6, which has no 'encoding' pragma, and I don't
263        know how to fix it (beautifully, there's a number of ugly
264        ways).
265
266        'noreply' mode is documented as the official feature of
267        memcached 1.2.5.  script/benchmark.pl uses it automatically
268        when available.
269
270        Add parameter 'hash_namespace' (see docs).
271
272        Add method 'namespace' to get and/or set the namespace prefix.
273        This is handy when you "lease" C::M::F object for different
274        parts of your application that do unrelated things.
275
276
2770.08  2008-01-24
278        - this is mostly a cleanup release, that also improves
279        decompression speed.
280
281        Changes since 0.07:
282
283        compress_alog was replaced with more generic compress_methods.
284        It turned out that IO::Uncompress::Gunzip is much (~4x) slower
285        than Compress::Zlib, so the latter is used as the default for
286        compress_methods.  Besides, previous mechanism didn't scale
287        well.
288
289        Implemented the check of constructor arguments to catch
290        various typos (enabled by default), and new 'check_args'
291        parameter to disable it.
292
293        Workaround "cast from integer to pointer of different size"
294        warning on 64-bit platforms.
295
296        Removed 127.0.0.x from test cases since not all hosts resolve
297        such addresses when x is not 1.
298
299        Use plain malloc()/free() instead of Newx()/Safefree() in XS.
300        This should fix the build with Perl versions 5.6.0--5.8.6.
301
302
3030.07  2008-01-18
304        - this is a major release that features a significant speed
305        improvement and introduces multi update commands.  It also
306        fixes a bug in nowait mode that was introduced in 0.06.
307        Upgrade is recommended if you are using nowait => 1, or want
308        to employ new features and speed.
309
310        Changes since 0.06:
311
312        For performance reasons all Perl code was converted to XS.  If
313        you performed any benchmarks, you may want to repeat them ;).
314        This change has a drawback that now you can't derive from
315        C::M::F easily.
316
317        Every update command now has its multi equivalent: set_multi,
318        add_multi, replace_multi, append_multi, prepend_multi,
319        incr_multi, decr_multi and delete_multi.  By using multi
320        commands you will reduce request latency: several requests
321        would be sent in one packet, and the client would talk to all
322        servers simultaneously.
323
324        Improved results of update commands: commands that previously
325        returned boolean value now return true for positive server
326        reply, false for negative server reply, and undef on error.
327        Similar to DBI, decr returns "0E0" for positive zero reply,
328        which evaluates to true in a boolean context.
329
330        flush_all now returns a hash 'server_name' => 'bool_result'.
331
332        New commands 'server_versions' and 'nowait_push'.
333
334        New 'utf8' and 'serialize_methods' parameters for constructor.
335
336        script/compare.pl was removed.  Instead script/benchmark.pl
337        takes an optional last argument "compare".
338
339        t/03-flush_all.t was removed.  We use PID as a part of a
340        namespace prefix now, so we don't need clear cache any more.
341        And there are good reasons not to have flush_all: the user may
342        flush a valuable cache by mistake, and "flush_all 0" doesn't
343        work on memcached 1.2.2, so the outcome was uncertain anyway.
344        Without flush_all it's possible to execute in parallel more
345        than one 'make test'.
346
347        Fixed bug in 'nowait' mode that could cause false negative
348        replies to subsequent requests that you are waiting for.
349
350        Workaround the loss of the last 'noreply' request on the
351        server.  'noreply' is still an undocumented feature.
352
353        To support multi commands the API of internal client
354        implementation was changed.  If you were using it as a
355        standalone library---sorry :).  After API will freeze C client
356        library will likely be released on its own.
357
358
3590.06  2007-12-20
360        - this release fixes a serious bug and features the 'nowait'
361        mode.  Upgrade is recommended.
362
363        Changes since 0.05:
364
365        Fix a subtle race bug present since 0.02 that could mix
366        several values into one when you have more than one memcached
367        server and executed get_multi or gets_multi.  If you have seen
368        the following in your logs or on the console:
369
370          Attempt to free unreferenced scalar: SV 0x9e89d34 at
371          /tmp/Cache-Memcached-Fast/blib/lib/Cache/Memcached/Fast.pm line 688.
372
373        that was it.
374
375        Added 'nowait' mode that allows the client to not wait the
376        reply, and thus reduces the wallclock time.  Run
377        script/benchmark.pl and see how it affects wallclock time,
378        especially over the wire.
379
380        Made undocumented 'noreply' parameter a per-server setting.
381
382
3830.05  2007-12-18
384        - more fixes to build and pass tests on different platforms.
385        There's no functional changes again.
386
387        Changes since 0.04:
388
389        At least on Perl 5.6.2 SVREF typemap entry has the meaning of
390        the class based on blessed SV.  So instead of SVREF we use
391        custom Ref_SV and custom typemap entry.  Found by CPAN
392        testers.
393
394        Do not use AUTOLOAD for normal commands, only for undocumented
395        ones.
396
397        Add incr() and decr() to script/compare.pl and
398        script/benchmark.pl.
399
400        Test case is split into several files and cleaned a bit.
401
402        Rename 'sun' -> 's_unix' in connect.c, because 'sun' is
403        reserved on... guesses?  Right, Sun systems!  Found by CPAN
404        testers.
405
406        Fix test case for FreeBSD and derivatives: do not use
407        localhost.localdomain address, which FreeBSD doesn't resolve
408        by default.
409
410        Added docs section "UTF-8 and tainted data".
411
412
4130.04  2007-12-16
414        - CPAN testers found more issues on different platforms,
415        fixing these.
416
417        Changes since 0.03:
418
419        const char * is missing from typemap in Perl 5.6.2, fixed by
420        using plain char * for class name in new().
421
422        Use AI_ADDRCONFIG conditionally, some systems do not have it
423        (NetBSD 3.1).
424
425
4260.03  2007-12-16
427        - this release has no new functionality compared to 0.02.  It
428          only fixes some test and documentation problems that were
429          discovered, as it always happens, after the upload to CPAN.
430
431        Changes since 0.02:
432
433        Fixed internal documentation references.
434
435        Added missing docs for incr and decr.
436
437        Fixed test case to test server version and use
438        cas/gets/append/prepend only for 1.2.4 and up.
439
440        Actually there's new _undocumented_ command server_versions,
441        is has broken interface, you can't say which version
442        corresponds to which server when some of them do not respond.
443        This command is subject to change.
444
445
4460.02  2007-12-15
447        - first public release.
448
449        Changes since 0.01:
450
451        Fully restartable code was replaced with classic
452        fill-the-buffer-first approach: it turned out that
453        restartability doesn't add much advantage.  Lots of beautiful
454        and ugly code gone away.
455
456        Added support for multiple servers (select machine, CRC32,
457        timeouts).
458
459        Added script/compare.pl to compare this module to the original
460        Cache::Memcached, and also to measure speed in general.
461
462        Added Unix socket support, SIGPIPE handling (proper ignoring
463        actually ;)).
464
465        Added support for serialization of Perl data structures, and
466        for compression.
467
468        New commands: incr, decr, gets, gets_multi, cas,
469        enable_compression, remove (alias to delete).
470
471        New client parameters: connect_timeout, io_timeout (aka
472        select_timeout), compress_threshold, compress_ratio,
473        compress_algo, max_failure, failure_timeout.
474
475        Finally added documentation!
476
477        Added support for server weights.
478
479        Added the Ketama consistent hashing algorithm.
480
481        Added default tests as generated with Module::Starter.  Main
482        test case is still messy, should be split into several tests.
483
484        There's also support for 'noreply'-enabled memcached, but
485        those patches are not (yet) accepted to mainline, so 'noreply'
486        is not an official feature and is not documented.
487
488
4890.01  2007-11-26
490        - first internal release.
491
492        Supported only one server connection (TCP).  Commands are
493        set(), add(), replace(), prepend(), append(), delete(),
494        flush_all(), get(), get_multi().  Client parameters are
495        'servers', 'namespace', 'close_on_error'.  There's no
496        documentation.  Test case is messy (but does its job).
497
498
4990.00  2007-11-19
500        - original version; created by h2xs 1.23 with options
501            -O --omit-autoload --compat-version=5.6.0 \
502            --use-new-tests --name=Cache::Memcached::Fast
Note: See TracBrowser for help on using the repository browser.