From: Vincent Pit Date: Tue, 1 Dec 2009 00:00:22 +0000 (+0100) Subject: This is 0.39 X-Git-Tag: v0.39^0 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FVariable-Magic.git;a=commitdiff_plain;h=6c0a2afbec3921761d384fdebacba3f0407cb721 This is 0.39 --- diff --git a/Changes b/Changes index c1e98e9..60eb548 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,20 @@ Revision history for Variable-Magic +0.39 2009-12-01 00:05 UTC + + Add : You can use a function name as a callback by passing a string + reference to wizard() instead of a code reference. + + Fix : Compatiblity with perl 5.11.1 and 5.11.2. + + Fix : Scalars stored into the data slot no longer leak. + + Fix : Thread destruction should not segfault anymore. + + Opt : As a result of removing the deprecated features, less memory is + used for both threaded (a pointer table is used instead of a + hash) and non-threaded (no global structure is needed anymore) + perls. + + Rem : As advertised in the precendent version, all the signature + related features were removed. This includes the 'sig' option + to wizard(), the getsig() and gensig() functions, and the SIG_* + constants. + 0.38 2009-10-04 16:10 UTC + Dep : All the signature-related features are DEPRECATED and will be removed in december 2009. This includes the 'sig' option to diff --git a/META.yml b/META.yml index 37672c2..fe86c5b 100644 --- a/META.yml +++ b/META.yml @@ -1,6 +1,6 @@ --- #YAML:1.0 name: Variable-Magic -version: 0.38 +version: 0.39 abstract: Associate user-defined magic to variables from Perl. author: - Vincent Pit diff --git a/README b/README index 778e4fb..0f2d459 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ NAME Variable::Magic - Associate user-defined magic to variables from Perl. VERSION - Version 0.38 + Version 0.39 SYNOPSIS use Variable::Magic qw/wizard cast VMG_OP_INFO_NAME/; @@ -178,30 +178,23 @@ FUNCTIONS information. It takes a list of keys / values as argument, whose keys can be : - * "sig" - - The numerical signature. If not specified or undefined, a random - signature is generated. If the signature matches an already defined - magic, then the existant magic object is returned. - - This option is deprecated and will be removed in december 2009. - * "data" - A code reference to a private data constructor. It is called each - time this magic is cast on a variable, and the scalar returned is - used as private data storage for it. $_[0] is a reference to the - magic object and @_[1 .. @_-1] are all extra arguments that were - passed to "cast". + A code (or string) reference to a private data constructor. It is + called each time this magic is cast on a variable, and the scalar + returned is used as private data storage for it. $_[0] is a + reference to the magic object and @_[1 .. @_-1] are all extra + arguments that were passed to "cast". * "get", "set", "len", "clear", "free", "copy", "local", "fetch", "store", "exists" and "delete" - Code references to the corresponding magic callbacks. You don't have - to specify all of them : the magic associated with undefined entries - simply won't be hooked. In those callbacks, $_[0] is always a - reference to the magic object and $_[1] is always the private data - (or "undef" when no private data constructor was supplied). + Code (or string) references to the corresponding magic callbacks. + You don't have to specify all of them : the magic associated with + undefined entries simply won't be hooked. In those callbacks, $_[0] + is always a reference to the magic object and $_[1] is always the + private data (or "undef" when no private data constructor was + supplied). Moreover, when you pass "op_info => $num" to "wizard", the last element of @_ will be the current op name if "$num == @@ -240,34 +233,19 @@ FUNCTIONS straight to the perl magic API. However, only the return value of the "len" callback currently holds a meaning. - # A simple scalar tracer - my $wiz = wizard get => sub { print STDERR "got ${$_[0]}\n" }, - set => sub { print STDERR "set to ${$_[0]}\n" }, - free => sub { print STDERR "${$_[0]} was deleted\n" } + Each callback can be specified as a code or a string reference, in which + case the function denoted by the string will be used as the callback. Note that "free" callbacks are *never* called during global destruction, as there's no way to ensure that the wizard and the "free" callback weren't destroyed before the variable. - "gensig" - With this tool, you can manually generate random magic signature between - SIG_MIN and SIG_MAX inclusive. That's the way "wizard" creates them when - no signature is supplied. - - # Generate a signature - my $sig = gensig; - - This function is deprecated and will be removed in december 2009. - - "getsig" - getsig $wiz - - This accessor returns the magic signature of this wizard. + Here's a simple usage example : - # Get $wiz signature - my $sig = getsig $wiz; - - This function is deprecated and will be removed in december 2009. + # A simple scalar tracer + my $wiz = wizard get => sub { print STDERR "got ${$_[0]}\n" }, + set => sub { print STDERR "set to ${$_[0]}\n" }, + free => sub { print STDERR "${$_[0]} was deleted\n" } "cast" cast [$@%&*]var, $wiz, ... @@ -318,21 +296,6 @@ FUNCTIONS die 'no such magic in $x' unless dispell $x, $wiz; CONSTANTS - "SIG_MIN" - The minimum integer used as a signature for user-defined magic. - - This constant is deprecated and will be removed in december 2009. - - "SIG_MAX" - The maximum integer used as a signature for user-defined magic. - - This constant is deprecated and will be removed in december 2009. - - "SIG_NBR" - SIG_NBR = SIG_MAX - SIG_MIN + 1 - - This constant is deprecated and will be removed in december 2009. - "MGf_COPY" Evaluates to true iff the 'copy' magic is available. @@ -511,9 +474,9 @@ PERL MAGIC HISTORY magical array in non-void context. EXPORT - The functions "wizard", "gensig", "getsig", "cast", "getdata" and - "dispell" are only exported on request. All of them are exported by the - tags ':funcs' and ':all'. + The functions "wizard", "cast", "getdata" and "dispell" are only + exported on request. All of them are exported by the tags ':funcs' and + ':all'. All the constants are also only exported on request, either individually or by the tags ':consts' and ':all'. diff --git a/lib/Variable/Magic.pm b/lib/Variable/Magic.pm index 05fb364..f599b72 100644 --- a/lib/Variable/Magic.pm +++ b/lib/Variable/Magic.pm @@ -13,13 +13,13 @@ Variable::Magic - Associate user-defined magic to variables from Perl. =head1 VERSION -Version 0.38 +Version 0.39 =cut our $VERSION; BEGIN { - $VERSION = '0.38'; + $VERSION = '0.39'; } =head1 SYNOPSIS