Revision history for Variable-Magic

0.28    2009-01-24 17:05 UTC
        + Add : The 'copy_key' option to wizard(), that enables the safe edition
                of $_[2] in uvar callbacks to redirect actions to another key.
        + Fix : Exception objects thrown from callbacks at compile time were not
                available in $@.
        + Fix : free callbacks triggered during global destruction could lead to
                segfaults because the wizard was already freed.
        + Fix : Refcount of scalars with free callback.
        + Fix : Segfaults when using get or uvar magic simultaneously with clear
                magic.
        + Doc : The documentation about what the callbacks take and should
                return is now somewhat clearer.

0.27    2009-01-18 23:40 UTC
        + Fix : Offset of 1 with len magic on scalars.
        + Fix : Segfaults that seem to happen when one croak in a callback at
                compile time (thanks Ash Berlin for the testcase).
        + Upd : Resources in META.yml (Florian Ragwitz)
        + Tst : Large cleanup resulting in a wider set of tested behaviours.

0.26    2008-11-29 22:05 UTC
        + Fix : Leaks of cloned coderefs that access lexicals.
        + Fix : Building with maint-5.8 and blead (thanks Andreas Koenig).

0.25    2008-11-12 19:40 UTC
        + Fix : Compatibility with 5.8.9.
        + Fix : Old Pod::Coverage don't ignore CLONE.
        + Upd : META.yml spec updated to 1.4.

0.24    2008-10-12 14:55 UTC
        + Fix : Really fix it.

0.23    2008-10-11 17:25 UTC
        + Fix : Building on perls with multiplicity but not ithreads.

0.22    2008-09-29 19:40 UTC
        + Doc : Explain how magic differs from overloading.
        + Fix : Disable thread safety for perl 5.8 on Windows. If you want it
                enabled, reliable feedback is welcome.

0.21_02 2008-09-28 23:10 UTC
        + Fix : Hide previously deleted magic tokens in vmg_svt_free (Yuval
                Kogman).

0.21_01 2008-09-22 13:25 UTC
        + Chg : Shrink the context data.
        + Fix : Enable thread safety features for perls that just lack
                MY_CXT_CLONE.
        + Tst : Output threads and threads::shared versions in threads tests.

0.20    2008-09-20 23:35 UTC
        + Fix : The module is now thread safe. You can test if it had been
                built with thread safety features enabled through the
                VMG_THREADSAFE constant.
        + Fix : Correct backtrace when wizard() croaks.
        + Fix : 'cast $a, undef' should throw an 'invalid wizard' error instead
                of an 'invalid signature'.

0.19    2008-07-05 15:05 UTC
        + Add : The patchlevel with which the module has been built is now
                exported with the VMG_PERL_PATCHLEVEL constant.
        + Chg : Version checking macros overhaul.
        + Fix : 'uvar' magic should only be enabled in maint-5.10 and higher
                since it's never going to be backported to 5.8.
        + Fix : Likewise, the copy callback API change should only be enabled in
                5.11 and higher.
        + Fix : Instead of those ackward fake refcount increments in the wizard
                destructor, flag the wizard with SVf_BREAK and force temps
                cleanup. This should fix the wizard destruction for all perls,
                and solves the leak introduced by the previous solution.

0.18    2008-07-04 12:20 UTC
        + Fix : Enable uvar magic when patchlevel >= 28419.
        + Fix : Set VMG_COMPAT_ARRAY_PUSH_NOLEN for Windows ActiveState Perl
                5.8.x.

0.17    2008-05-11 09:05 UTC
        + Fix : 5.8.4 and lower don't have mPUSHi. Gah. Yeah, I know, I should
                use Devel::PPPort.

0.16    2008-05-10 22:05 UTC
        + Add : The samples/copy.pl script.
        + Chg : The sv_magical() + vmg_mg_magical() combo was simplified into
                vmg_sv_magicuvar().
        + Tst : t/33-code.t was testing scalars, not code.
        + Tst : is() and like() are better than ok().
        + Tst : 100% coverage reached.

0.15    2008-04-11 18:25 UTC
        + Chg : Factor vmg_cb_call{1,2,3}() into one function.
        + Fix : len magic is no longer called when taking the length() of a
                magical scalar since p32969. The VMG_COMPAT_SCALAR_LENGTH_NOLEN
                constant was added to cover this.
        + Tst : More tests for t/22-len.t.

0.14    2008-03-24 12:35 UTC
        + Fix : t/16-huf.t failures on Solaris and FreeBSD caused by not
                updating mg->mg_ptr after Renew-ing it on dispell.
        + Fix : Undefining MGf_DUP caused the wizard's magic to be wrongly
                initialized. MGf_DUP now appears as true from the user point of
                view, but the dup callback isn't actually set.
        + Fix : Warnings with blead due to copy callbacks now taking an I32 (API
                change #33256).
        + Fix : vmg_svt_val() and vmg_uvar_del() aren't required if no uvar
                magic is available.
        + Tst : Tests now output the version of optional modules loaded.

0.13    2008-03-19 14:35 UTC
        + Doc : Link to coverage report.
        + Fix : Correct dependencies listing in META.yml.
        + Tst : Improved test coverage.
        + Tst : Print the patchlevel as a comment.
        + Tst : Use is() where it's relevant.
        + Tst : t/16-huf.t now really tests interaction with H::U::FH.

0.12    2008-02-07 18:15 UTC
        + Fix : POD error. Thanks to Chris Williams (BinGOs) for the quick
                feedback.

0.11    2008-02-07 17:55 UTC
        + Add : Copy callbacks now receive the current key/index in $_[2].
                The current value/element is now in $_[3].
        + Chg : The trigger of copy magic on list assignment with perls greater
                than 5.10.0 was caused by uvar magic. Hence,
                VMG_COMPAT_HASH_LISTASSIGN_COPY was removed. Use VMG_UVAR
                instead.
        + Fix : Build failures on patched perls.
        + Tst : Added missing exported symbols to 01-import.t.

0.10    2008-02-04 11:30 UTC
        + Add : New script : samples/vm_vs_tie.pl, that benchmarks our uvar
                magic versus tied hashes.
        + Add : The VMG_COMPAT_* constants can be used from userspace to check
                perl magic abilities.
        + Fix : Callbacks that returned undef made us croak, breaking the
                variable behaviour (regression test in 14-callbacks.t).
        + Fix : uvar callbacks weren't tested for non-NULL-ity before being
                called (regression test in 28-uvar.t).
        + Tst : Fix typo in 25-copy.t that prevented Tie::Hash tests to be ran.

0.09    2008-02-02 11:30 UTC
        + Doc : Explicitely say that uvar callbacks are safely ignored for
                non-hashes.
        + Doc : Document caveats and fix the usual set of typos.
        + Fix : vmg_dispell() didn't check if the ext magic were ours when
                counting wizards that have uvar callbacks, resulting in a
                possible memory misread.
        + Fix : getdata() now returns directly the data object, and no longer a
                copy. This caused a leak.
        + Tst : Prefix author tests by 9*-.
        + Tst : New optional author test : 95-portability-files.t, that uses
                Test::Portability::Files when it's present.
        + Tst : New test : 14-self.t, that tests application of magic on the
                wizard itself.
        + Tst : Move Hash::Util::FieldHash tests out of 11-multiple.t to
                15-huf.t.

0.08    2008-02-01 16:55 UTC
        + Add : copy magic for tied arrays/hashes.
        + Add : local magic.
        + Add : uvar magics : fetch, store, exists, delete for hashes.

0.07_*  2008-01
        Internal development versions.

0.06    2007-11-20 10:10 UTC
        + Chg : 5.7.3 is now officially required.
        + Fix : "data" test failures on 5.8.{0,2}.
        + Fix : Drand01() vs rand().

0.05    2007-11-19 09:10 UTC
        + Fix : 5.10.0_RC1 compatibility fix.

0.04    2007-08-28 12:25 UTC
        + Chg : s/require (XSLoader)/use $1/.
        + Fix : Tests are now strict.
        + Fix : Complete dependencies.

0.03    2007-08-01 17:20 UTC
        + Add : Passing the signature of an already defined magic to wizard()
                now returns the corresponding magic object.
        + Add : You can pass the numeric signature as the wizard argument of
                cast(), dispell() and getdata().
        + Add : Any argument specified after the wizard (or the signature) in a
                call to cast() is now passed to the private data constructor in
                $_[1] and after.
        + Chg : $_[0] is now always a reference to the magic variable in all
                callbacks. The reason for changing from the previous behaviour
                is that one may want to apply the same magic to a plain scalar
                and to a scalar reference, and needs a way to distinguish
                between them in the callback (say, ref()).
        + Fix : Wizard object destruction used not to free the signature.

0.02    2007-07-27 13:50 UTC
        + Fix : In response to test report 548152 :
                Newx() and SvMAGIC_set() not present on older perls.
        + Fix : In response to test report 548275 :
                Since perl 5.9.5, 'clear' magic is invoked when an array is
                undefined (bug #43357). Moreover, 'len' magic is no longer
                called by pushing an element since perl 5.9.3.
        + Fix : Missing glob test in MANIFEST.

0.01    2007-07-25 16:15 UTC
        First version, released on an unsuspecting world.

