File: Changes-new

package info (click to toggle)
libcache-memcached-fast-perl 0.28-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 664 kB
  • sloc: ansic: 8,001; perl: 671; makefile: 13; sh: 6
file content (518 lines) | stat: -rw-r--r-- 20,108 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
0.28 ???

    - Tidy & port the test suite to Test2::V0.
    - Lots of internal simplifications and cleanups.
    - Bump minimum Perl to 5.12.

0.27 2021-05-22

    - Fix gat/gat_multi methods on newer Perls (#19, Mutsutoshi Yoshimoto).

0.26 2020-03-26

    - Fix stack when not returning anything (#13, Sergey Aleynikov).
    - Add gat/gat_multi methods (#15, Mutsutoshi Yoshimoto).

0.25 2017-03-15

    - Fix build on a modern ExtUtils::MakeMaker (#7, Alexandr Ciornii).
    - Test that we return undef on server errors (#8, Olli-Antti Kivilahti).

0.24 2017-03-12

    - Add LICENSE field to Makefile.PL (#4, Hunter McMillen)
    - Undef values no longer segfault multi methods (#5, Hunter McMillen).
    - Replace OpenHack project home with GitHub (#6, Dmitry Shalashov).

0.23 2014-11-15

    - Optimize Perl thread-local state access (Alexandr Evstigneev).
    - Fix compilation warnings on Win64 (Alexandr Evstigneev).
    - Add touch/touch_multi methods (#3 neguse).

0.22 2014-04-28

    - Fix RT#92678: behaviour with utf8=0. When utf8 option is disabled
      C::M::F will try to downgrade UTF-8 strings and will croak if failed to
      do so.

0.21 2013-04-06

    - Regenerate tarball to include META.json and META.yml.

0.20 2013-04-03

    - Fix magic handling (tie, Readonly, etc.).
    - Fix typo in POD (RT#77254, Alex)
    - Remove unnecessary string eval in constructor (RT#81782, Andrew Holland).

0.19 2010-04-24

    - Turned out some orthodox systems do not have sigtimedwait(). Since
      advanced systems that have sigtimedwait() also have MSG_NOSIGNAL and
      thus do not use SIGPIPE suppression code in question, and other systems
      have neither MSG_NOSIGNAL nor sigtimedwait(), the only option is to
      revert to the previous suppression code. It works correctly unless your
      program is multi-threaded.

0.18 2010-04-06

    - Fix RT#56142: handle Perl magic.  Tied scalars, arrays and hashes are
      supported now, as well as Readonly variables and other magic stuff.
    - Fix t/command.t failure on some Solaris distributions.
    - Make module thread-safe with Perl >= 5.7.2.

0.17 2009-11-02

    - Warn about ignoring non-zero delete expiration time. Expiration time for
      "delete" command has been optional in older versions of memcached, and
      was dropped in memcached 1.3.2 (in an incompatible manner). Not knowing
      server version it's impossible to tell whether the server will handle
      the parameter or not, so we simply do not send it at all. Explicit zero
      passed to delete() or delete_multi() is silently ignored, and a warning
      is given if you pass non-zero delete expiration time. Furthermore the
      syntax delete($key, $delay) and delete_multi([$key, $delay]) is
      obsoleted and no more documented.

0.16 2009-06-15

    - Add src/addrinfo_hostent.c and src/addrinfo_hostent.h to MANIFEST. Oops.

0.15 2009-06-15
        - no need to upgrade for existing users.  This release fixes
        issues that new users may encounter (lack of getaddrinfo() on
        some Windows systems; failing test case due to behaviour
        change in memcached 1.3.3 that would break automatic
        installation from CPAN).

        Changes since 0.14:

        Previous release (0.14) featured the change in the Ketama
        algorithm.  While that was a necessary move to improve key
        distribution across servers, it introduced incompatibility
        with earlier versions, and provided no means for smooth
        transition for existing users of Ketama algorithm (i.e.,
        without complete loss of cached data).  The following
        workaround was suggested by Masahiro Nagano---thanks!:

          - apply the patch at http://limilic.com/entry/ljlt0sksbiqi16p3

          - create two instances of C::M::F, one with enabled
            old_ketama_algo => 1.

          - for some time populate caches via both client instances,
            while serving gets through old_ketama_algo.  For this you
            may use Cache::Migrate (http://gist.github.com/110981).

          - after some time (depends on cache refresh rate) you may
            drop old_ketama_algo, as new data is now distributed
            according to the new Ketama implementation as well (this
            doubles memory use though).

        I do not include the named patch in the distribution, because
        it's use is limited for one-time transition for existing
        Ketama users only.

        On systems lacking getaddrinfo() implement it with
        gethostbyname(). In particular this should fix the build on
        Win32 (Cygwin, Mingw32).  Problem report (for Windows 2000 and
        below) and initial patch are by Yasuhiro Matsumoto.

        Fix t/commands.t: starting with memcached 1.3.3 incr/decr
        commands expect numeric value in the cache.  Patch by Jason
        M. Mills (RT#46883).


0.14  2009-02-07
        - improve Ketama distribution.  The change is incompatible
        with Ketama implementation in previous versions.

        Changes since 0.13:

        Change calculation of Ketama points for a given server to get
        mapping ratios closer to server weight ratios.  New Ketama
        mode is compatible with nginx's module memcached_hash
        (http://openhack.ru/nginx-patched/wiki/MemcachedHash) version
        0.4, which has the same change, and is incompatible with
        earlier versions of both named and this module.

        Add script/ketama-distr.pl to compute server's share of
        continuum.  Real-world example:

          script/ketama-distr.pl --ketama_points=150 \
                                 --server=10.0.143.4:11211 \
                                 --server=10.0.143.6:11211 \
                                 --server=10.0.143.7:11211 \
                                 --server=10.0.143.8:11211

        outputs:

          Old:
          server 1: 10.0.143.4:11211  total =  671585356 (15.64%)
          server 2: 10.0.143.6:11211  total =  601117590 (14.00%)
          server 3: 10.0.143.7:11211  total = 1771239512 (41.24%)
          server 4: 10.0.143.8:11211  total = 1251024837 (29.13%)

          New:
          server 1: 10.0.143.4:11211  total = 1057134262 (24.61%)
          server 2: 10.0.143.6:11211  total = 1111432463 (25.88%)
          server 3: 10.0.143.7:11211  total = 1017280856 (23.69%)
          server 4: 10.0.143.8:11211  total = 1109119714 (25.82%)

          Continuum array size = 4800 bytes

        I.e. "Old" is what we were getting before the change, and
        "New" is what we are getting now.  "Continuum array size" is
        how much memory is used to store the continuum array.  Try
        this script on your servers to see your distribution, and
        possibly to tweak ketama_points and/or server weights to get a
        better one.

        Fix RT#41077 (http://rt.cpan.org/Ticket/Display.html?id=41077):
        implement disconnect_all().  Patch is by norbi.nix.hu, with
        minor corrections---thanks!.


0.13  2008-10-13
        - introduce Win32 support (based on the patch by Yasuhiro
        Matsumoto---arigatou!), and use poll() instead of select()
        (suggested by Vladimir Timofeev).

        Changes since 0.12:

        Add support for Win32.  I personally don't have the system nor
        compiler, so I can't even test the build.  Win32 port is
        expected to be supported by community.  Note: on Win32 below
        Windows Vista max number of memcached servers is 64.  See
        comment on FD_SETSIZE in src/socket_win32.h to learn how to
        increase this value if you need to connect to more than 64
        servers.

        Use poll() system call instead of select().  The latter has
        the limit on the file descriptor value.  I.e. even when the
        number of memcached servers is low, but your application opens
        lots of other files, then after some point socket() returns
        fd value larger that select() can handle.  poll() doesn't have
        this limitation.  On a side note, we don't have to use
        advanced calls like epoll()/kqueue(), because number of
        memcached servers is normally not very large (and single
        request touches even a smaller subset).

        Add bench make target ('make bench').  You may change initial
        parameters at the top of script/benchmark.pl to benchmark
        different types of loads.

        Do not install libclient.a.  Thanks to Vladimir Timofeev for
        finding out how to prevent the installation.


0.12  2008-07-21
        - this release fixes compilation on Solaris broken in 0.11.
        If you were able to compile 0.11, then you weren't affected.

        Changes since 0.11:

        Fix compilation on Solaris.  Ironically, 0.11 was supposed to
        fix unrecognized format problem on Solaris, but instead broke
        the compilation.  Back in May the line

          return XSRETURN_EMPTY;

        has been introduced to the code, whereas it should be

          XSRETURN_EMPTY;

        It went unnoticed because expansion produces the code
        permitted by compilers like GCC that allow blocks to return a
        value.  But Perl on Solaris has a different definition of this
        macro that is not an expression.  Hence the problem.


0.11  2008-07-17
        - this release fixes %zu problem on Solaris.

        Changes since 0.10:

        Replace size_t/%zu with unsigned long/%lu for benefit of
        systems that do not recognize the former format (Solaris 9).
        Thanks to Michael Vychizhanin!

        Add new parameter max_size (suggested by Alex Kapranoff, see
        RT#35588, http://rt.cpan.org/Ticket/Display.html?id=35588).

        Fix RT#36074 (http://rt.cpan.org/Ticket/Display.html?id=36074):
        ExtUtils::MakeMaker version 6.17 and below generated invalid
        Makefile.


0.10  2008-05-01
        - this is a bugfix release fixing key distribution in
        compatible mode (reported by Anton Yuzhaninov---thanks!), and
        minor fixes in Ketama mode for collision case (very rare).

        Changes since 0.09:

        Fix key distribution bug in compatible mode.  Because of
        accumulated rounding error some keys were mapped to the
        different server than with Cache::Memcached.

        Remove explicit OPTIMIZE setting from the makefiles.  It ought
        to be set explicitly by the user.  You can run 'perl -V:optimize'  
        to learn the default.  It is safe to increase optimization
        level to -O3.

        Fix hash_namespace parameter: it didn't work for the namespace
        specified in the constructor.

        Minor fixes in Ketama mode for rare collision case.


0.09  2008-03-06
        - this release makes 'noreply' mode official, and improves
        latency for some command patterns by managing TCP_NODELAY flag.

        Changes since 0.08:

        Enable TCP_NODELAY to reduce latency of commands that wait for
        the reply, and disable it for throughput of commands that don't
        need any reply.

        t/encoding.t was removed from distribution.  It doesn't work
        with Perl 5.6, which has no 'encoding' pragma, and I don't
        know how to fix it (beautifully, there's a number of ugly
        ways).

        'noreply' mode is documented as the official feature of
        memcached 1.2.5.  script/benchmark.pl uses it automatically
        when available.

        Add parameter 'hash_namespace' (see docs).

        Add method 'namespace' to get and/or set the namespace prefix.
        This is handy when you "lease" C::M::F object for different
        parts of your application that do unrelated things.


0.08  2008-01-24
        - this is mostly a cleanup release, that also improves
        decompression speed.

        Changes since 0.07:

        compress_alog was replaced with more generic compress_methods.
        It turned out that IO::Uncompress::Gunzip is much (~4x) slower
        than Compress::Zlib, so the latter is used as the default for
        compress_methods.  Besides, previous mechanism didn't scale
        well.

        Implemented the check of constructor arguments to catch
        various typos (enabled by default), and new 'check_args'
        parameter to disable it.

        Workaround "cast from integer to pointer of different size"
        warning on 64-bit platforms.

        Removed 127.0.0.x from test cases since not all hosts resolve
        such addresses when x is not 1.

        Use plain malloc()/free() instead of Newx()/Safefree() in XS.
        This should fix the build with Perl versions 5.6.0--5.8.6.


0.07  2008-01-18
        - this is a major release that features a significant speed
        improvement and introduces multi update commands.  It also
        fixes a bug in nowait mode that was introduced in 0.06.
        Upgrade is recommended if you are using nowait => 1, or want
        to employ new features and speed.

        Changes since 0.06:

        For performance reasons all Perl code was converted to XS.  If
        you performed any benchmarks, you may want to repeat them ;).
        This change has a drawback that now you can't derive from
        C::M::F easily.

        Every update command now has its multi equivalent: set_multi,
        add_multi, replace_multi, append_multi, prepend_multi,
        incr_multi, decr_multi and delete_multi.  By using multi
        commands you will reduce request latency: several requests
        would be sent in one packet, and the client would talk to all
        servers simultaneously.

        Improved results of update commands: commands that previously
        returned boolean value now return true for positive server
        reply, false for negative server reply, and undef on error.
        Similar to DBI, decr returns "0E0" for positive zero reply,
        which evaluates to true in a boolean context.

        flush_all now returns a hash 'server_name' => 'bool_result'.

        New commands 'server_versions' and 'nowait_push'.

        New 'utf8' and 'serialize_methods' parameters for constructor.

        script/compare.pl was removed.  Instead script/benchmark.pl
        takes an optional last argument "compare".

        t/03-flush_all.t was removed.  We use PID as a part of a
        namespace prefix now, so we don't need clear cache any more.
        And there are good reasons not to have flush_all: the user may
        flush a valuable cache by mistake, and "flush_all 0" doesn't
        work on memcached 1.2.2, so the outcome was uncertain anyway.
        Without flush_all it's possible to execute in parallel more
        than one 'make test'.

        Fixed bug in 'nowait' mode that could cause false negative
        replies to subsequent requests that you are waiting for.

        Workaround the loss of the last 'noreply' request on the
        server.  'noreply' is still an undocumented feature.

        To support multi commands the API of internal client
        implementation was changed.  If you were using it as a
        standalone library---sorry :).  After API will freeze C client
        library will likely be released on its own.


0.06  2007-12-20
        - this release fixes a serious bug and features the 'nowait'
        mode.  Upgrade is recommended.

        Changes since 0.05:

        Fix a subtle race bug present since 0.02 that could mix
        several values into one when you have more than one memcached
        server and executed get_multi or gets_multi.  If you have seen
        the following in your logs or on the console:

          Attempt to free unreferenced scalar: SV 0x9e89d34 at
          /tmp/Cache-Memcached-Fast/blib/lib/Cache/Memcached/Fast.pm line 688.

        that was it.

        Added 'nowait' mode that allows the client to not wait the
        reply, and thus reduces the wallclock time.  Run
        script/benchmark.pl and see how it affects wallclock time,
        especially over the wire.

        Made undocumented 'noreply' parameter a per-server setting.


0.05  2007-12-18
        - more fixes to build and pass tests on different platforms.
        There's no functional changes again.

        Changes since 0.04:

        At least on Perl 5.6.2 SVREF typemap entry has the meaning of
        the class based on blessed SV.  So instead of SVREF we use
        custom Ref_SV and custom typemap entry.  Found by CPAN
        testers.

        Do not use AUTOLOAD for normal commands, only for undocumented
        ones.

        Add incr() and decr() to script/compare.pl and
        script/benchmark.pl.

        Test case is split into several files and cleaned a bit.

        Rename 'sun' -> 's_unix' in connect.c, because 'sun' is
        reserved on... guesses?  Right, Sun systems!  Found by CPAN
        testers.

        Fix test case for FreeBSD and derivatives: do not use
        localhost.localdomain address, which FreeBSD doesn't resolve
        by default.

        Added docs section "UTF-8 and tainted data".


0.04  2007-12-16
        - CPAN testers found more issues on different platforms,
        fixing these.

        Changes since 0.03:

        const char * is missing from typemap in Perl 5.6.2, fixed by
        using plain char * for class name in new().

        Use AI_ADDRCONFIG conditionally, some systems do not have it
        (NetBSD 3.1).


0.03  2007-12-16
        - this release has no new functionality compared to 0.02.  It
          only fixes some test and documentation problems that were
          discovered, as it always happens, after the upload to CPAN.

        Changes since 0.02:

        Fixed internal documentation references.

        Added missing docs for incr and decr.

        Fixed test case to test server version and use
        cas/gets/append/prepend only for 1.2.4 and up.

        Actually there's new _undocumented_ command server_versions,
        is has broken interface, you can't say which version
        corresponds to which server when some of them do not respond.
        This command is subject to change.


0.02 2007-12-15

        Fully restartable code was replaced with classic
        fill-the-buffer-first approach: it turned out that
        restartability doesn't add much advantage.  Lots of beautiful
        and ugly code gone away.

        Added support for multiple servers (select machine, CRC32,
        timeouts).

        Added script/compare.pl to compare this module to the original
        Cache::Memcached, and also to measure speed in general.

        Added Unix socket support, SIGPIPE handling (proper ignoring
        actually ;)).

        Added support for serialization of Perl data structures, and
        for compression.

        New commands: incr, decr, gets, gets_multi, cas,
        enable_compression, remove (alias to delete).

        New client parameters: connect_timeout, io_timeout (aka
        select_timeout), compress_threshold, compress_ratio,
        compress_algo, max_failure, failure_timeout.

        Finally added documentation!

        Added support for server weights.

        Added the Ketama consistent hashing algorithm.

        Added default tests as generated with Module::Starter.  Main
        test case is still messy, should be split into several tests.

        There's also support for 'noreply'-enabled memcached, but
        those patches are not (yet) accepted to mainline, so 'noreply'
        is not an official feature and is not documented.


0.01 2007-11-26
        - first internal release.

        Supported only one server connection (TCP).  Commands are
        set(), add(), replace(), prepend(), append(), delete(),
        flush_all(), get(), get_multi().  Client parameters are
        'servers', 'namespace', 'close_on_error'.  There's no
        documentation.  Test case is messy (but does its job).


0.00 2007-11-19
        - original version; created by h2xs 1.23 with options
            -O --omit-autoload --compat-version=5.6.0 \
            --use-new-tests --name=Cache::Memcached::Fast