]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
This is 0.47 v0.47
authorVincent Pit <vince@profvince.com>
Thu, 27 Oct 2011 16:52:15 +0000 (18:52 +0200)
committerVincent Pit <vince@profvince.com>
Thu, 27 Oct 2011 16:52:15 +0000 (18:52 +0200)
Changes
META.json
META.yml
README
lib/Variable/Magic.pm

diff --git a/Changes b/Changes
index b97a2e2abce5b8b34fb5344428f7910d11fab82a..1a1ccb7d1af64f677d5de79dbd52aa39bfaa8707 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,20 @@
 Revision history for Variable-Magic
 
+0.47    2011-10-27 16:55 UTC
+        + Add : The new constant VMG_COMPAT_HASH_DELETE_NOUVAR_VOID evaluates
+                to true when "delete $hash{key}" does not call 'delete' uvar
+                magic in void context.
+        + Chg : The MAGIC tokens created by this module no longer use the
+                mg_private member for storing a "magical" signature.
+        + Fix : Triggering magic in a thread on a variable cloned from the main
+                interpreter, and when the wizard already went out of scope,
+                will not segfault anymore.
+        + Opt : The pointer table is no longer needed to ensure thread safety.
+                The size of the object code is about 8% smaller for threaded
+                perls.
+        + Tst : Threads tests will not fail anymore if resources constraints
+                prevent the system from creating all the required threads.
+
 0.46    2011-01-23 16:45 UTC
         + Fix : [RT #64866] : Assertion failure with perl 5.13.9.
                 The real problem was that dispell() wasn't properly resetting
index 83a84b9705c64133ce1f72f33e9419cc9904e6a5..dcdf96f25296c480cf5c5ab4bf5cbbf88ec8c03e 100644 (file)
--- a/META.json
+++ b/META.json
@@ -4,7 +4,7 @@
       "Vincent Pit <perl@profvince.com>"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112150",
+   "generated_by" : "ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112621",
    "license" : [
       "perl_5"
    ],
@@ -60,5 +60,5 @@
          "url" : "http://git.profvince.com/?p=perl%2Fmodules%2FVariable-Magic.git"
       }
    },
-   "version" : "0.46"
+   "version" : "0.47"
 }
index 3ea6960e1b56294f80894402766a2bca152343ae..7c5a46ce5eb6e73ba50d1ceec2fbc90791e0eea0 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,39 +1,38 @@
---- #YAML:1.0
-name:               Variable-Magic
-version:            0.46
-abstract:           Associate user-defined magic to variables from Perl.
+---
+abstract: 'Associate user-defined magic to variables from Perl.'
 author:
-    - Vincent Pit <perl@profvince.com>
-license:            perl
-distribution_type:  module
-configure_requires:
-    Config:               0
-    ExtUtils::MakeMaker:  0
+  - 'Vincent Pit <perl@profvince.com>'
 build_requires:
-    base:                 0
-    Carp:                 0
-    Config:               0
-    Exporter:             0
-    ExtUtils::MakeMaker:  0
-    Test::More:           0
-    XSLoader:             0
+  Carp: 0
+  Config: 0
+  Exporter: 0
+  ExtUtils::MakeMaker: 0
+  Test::More: 0
+  XSLoader: 0
+  base: 0
+configure_requires:
+  Config: 0
+  ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112621'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Variable-Magic
+no_index:
+  directory:
+    - t
+    - inc
 requires:
-    base:      0
-    Carp:      0
-    Exporter:  0
-    perl:      5.008
-    XSLoader:  0
+  Carp: 0
+  Exporter: 0
+  XSLoader: 0
+  base: 0
+  perl: 5.008
 resources:
-    bugtracker:  http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Variable-Magic
-    homepage:    http://search.cpan.org/dist/Variable-Magic/
-    license:     http://dev.perl.org/licenses/
-    repository:  http://git.profvince.com/?p=perl%2Fmodules%2FVariable-Magic.git
-no_index:
-    directory:
-        - t
-        - inc
-generated_by:       ExtUtils::MakeMaker version 6.56
-meta-spec:
-    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
-    version:  1.4
-dynamic_config:     1
+  bugtracker: http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Variable-Magic
+  homepage: http://search.cpan.org/dist/Variable-Magic/
+  license: http://dev.perl.org/licenses/
+  repository: http://git.profvince.com/?p=perl%2Fmodules%2FVariable-Magic.git
+version: 0.47
diff --git a/README b/README
index ac81e42c52bcf6d095d254e9dcbd72d4238ba4e6..9ab46cb6d154c85298d63fa7a50c9afb64cbef46 100644 (file)
--- a/README
+++ b/README
@@ -2,14 +2,16 @@ NAME
     Variable::Magic - Associate user-defined magic to variables from Perl.
 
 VERSION
-    Version 0.46
+    Version 0.47
 
 SYNOPSIS
         use Variable::Magic qw<wizard cast VMG_OP_INFO_NAME>;
 
         { # A variable tracer
-         my $wiz = wizard set  => sub { print "now set to ${$_[0]}!\n" },
-                          free => sub { print "destroyed!\n" };
+         my $wiz = wizard(
+          set  => sub { print "now set to ${$_[0]}!\n" },
+          free => sub { print "destroyed!\n" },
+         );
 
          my $a = 1;
          cast $a, $wiz;
@@ -17,15 +19,17 @@ SYNOPSIS
         }               # "destroyed!"
 
         { # A hash with a default value
-         my $wiz = wizard data     => sub { $_[1] },
-                          fetch    => sub { $_[2] = $_[1] unless exists $_[0]->{$_[2]}; () },
-                          store    => sub { print "key $_[2] stored in $_[-1]\n" },
-                          copy_key => 1,
-                          op_info  => VMG_OP_INFO_NAME;
+         my $wiz = wizard(
+          data     => sub { $_[1] },
+          fetch    => sub { $_[2] = $_[1] unless exists $_[0]->{$_[2]}; () },
+          store    => sub { print "key $_[2] stored in $_[-1]\n" },
+          copy_key => 1,
+          op_info  => VMG_OP_INFO_NAME,
+         );
 
          my %h = (_default => 0, apple => 2);
          cast %h, $wiz, '_default';
-         print $h{banana}, "\n"; # "0", because the 'banana' key doesn't exist in %h
+         print $h{banana}, "\n"; # "0" (there is no 'banana' key in %h)
          $h{pear} = 1;           # "key pear stored in helem"
         }
 
@@ -150,29 +154,26 @@ DESCRIPTION
     You can refer to the tests to have more insight of where the different
     magics are invoked.
 
-    To prevent any clash between different magics defined with this module,
-    an unique numerical signature is attached to each kind of magic (i.e.
-    each set of callbacks for magic operations). At the C level, magic
-    tokens owned by magic created by this module have their "mg->mg_private"
-    field set to 0x3891 or 0x3892, so please don't use these magic (sic)
-    numbers in other extensions.
-
 FUNCTIONS
   "wizard"
-        wizard data     => sub { ... },
-               get      => sub { my ($ref, $data [, $op]) = @_; ... },
-               set      => sub { my ($ref, $data [, $op]) = @_; ... },
-               len      => sub { my ($ref, $data, $len [, $op]) = @_; ... ; return $newlen; },
-               clear    => sub { my ($ref, $data [, $op]) = @_; ... },
-               free     => sub { my ($ref, $data [, $op]) = @_, ... },
-               copy     => sub { my ($ref, $data, $key, $elt [, $op]) = @_; ... },
-               local    => sub { my ($ref, $data [, $op]) = @_; ... },
-               fetch    => sub { my ($ref, $data, $key [, $op]) = @_; ... },
-               store    => sub { my ($ref, $data, $key [, $op]) = @_; ... },
-               exists   => sub { my ($ref, $data, $key [, $op]) = @_; ... },
-               delete   => sub { my ($ref, $data, $key [, $op]) = @_; ... },
-               copy_key => $bool,
-               op_info  => [ 0 | VMG_OP_INFO_NAME | VMG_OP_INFO_OBJECT ]
+        wizard(
+         data     => sub { ... },
+         get      => sub { my ($ref, $data [, $op]) = @_; ... },
+         set      => sub { my ($ref, $data [, $op]) = @_; ... },
+         len      => sub {
+          my ($ref, $data, $len [, $op]) = @_; ... ; return $newlen
+         },
+         clear    => sub { my ($ref, $data [, $op]) = @_; ... },
+         free     => sub { my ($ref, $data [, $op]) = @_, ... },
+         copy     => sub { my ($ref, $data, $key, $elt [, $op]) = @_; ... },
+         local    => sub { my ($ref, $data [, $op]) = @_; ... },
+         fetch    => sub { my ($ref, $data, $key [, $op]) = @_; ... },
+         store    => sub { my ($ref, $data, $key [, $op]) = @_; ... },
+         exists   => sub { my ($ref, $data, $key [, $op]) = @_; ... },
+         delete   => sub { my ($ref, $data, $key [, $op]) = @_; ... },
+         copy_key => $bool,
+         op_info  => [ 0 | VMG_OP_INFO_NAME | VMG_OP_INFO_OBJECT ],
+        )
 
     This function creates a 'wizard', an opaque type that holds the magic
     information. It takes a list of keys / values as argument, whose keys
@@ -243,9 +244,11 @@ FUNCTIONS
     Here's a simple usage example :
 
         # 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" }
+        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, ...
@@ -310,6 +313,10 @@ CONSTANTS
     callbacks on hashes. Initial VMG_UVAR capability was introduced in perl
     5.9.5, with a fully functional implementation shipped with perl 5.10.0.
 
+  "VMG_COMPAT_SCALAR_LENGTH_NOLEN"
+    True for perls that don't call 'len' magic when taking the "length" of a
+    magical scalar.
+
   "VMG_COMPAT_ARRAY_PUSH_NOLEN"
     True for perls that don't call 'len' magic when you push an element in a
     magical array. Starting from perl 5.11.0, this only refers to pushes in
@@ -326,9 +333,9 @@ CONSTANTS
   "VMG_COMPAT_ARRAY_UNDEF_CLEAR"
     True for perls that call 'clear' magic when undefining magical arrays.
 
-  "VMG_COMPAT_SCALAR_LENGTH_NOLEN"
-    True for perls that don't call 'len' magic when taking the "length" of a
-    magical scalar.
+  "VMG_COMPAT_HASH_DELETE_NOUVAR_VOID"
+    True for perls that don't call 'delete' uvar magic when you delete an
+    element from a hash in void context.
 
   "VMG_COMPAT_GLOB_GET"
     True for perls that call 'get' magic for operations on globs.
@@ -373,7 +380,7 @@ COOKBOOK
           unless (defined $data) {
            $data = \(my $slot);
            &cast($var, $wiz, $slot)
-                            or die "Couldn't cast UserData magic onto the variable";
+                     or die "Couldn't cast UserData magic onto the variable";
           }
           $$data;
          }
index ebfbc7c2a621cf91853dc8e09b7f68b1f9ca2673..05821e9799f35310aa118df000ef4a315ebf066b 100644 (file)
@@ -11,13 +11,13 @@ Variable::Magic - Associate user-defined magic to variables from Perl.
 
 =head1 VERSION
 
-Version 0.46
+Version 0.47
 
 =cut
 
 our $VERSION;
 BEGIN {
- $VERSION = '0.46';
+ $VERSION = '0.47';
 }
 
 =head1 SYNOPSIS