]> git.vpit.fr Git - perl/modules/autovivification.git/commitdiff
This is 0.07 v0.07
authorVincent Pit <vince@profvince.com>
Fri, 31 Dec 2010 16:17:47 +0000 (17:17 +0100)
committerVincent Pit <vince@profvince.com>
Fri, 31 Dec 2010 16:17:47 +0000 (17:17 +0100)
Changes
META.yml
README
lib/autovivification.pm

diff --git a/Changes b/Changes
index d39bdd607d74879e7a7ec167f19dd849e679a448..bd04e426cb84d4207cf710ce9329cafbdd079eca 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,28 @@
 Revision history for autovivification
 
+0.07    2010-12-31 16:20 UTC
+        + Chg : perl 5.8.3 is required.
+        + Doc : Complements and clarifications.
+        + Fix : Segmentation faults and misbehaviours in threaded applications.
+        + Fix : Compatibility with perl 5.13.7.
+                Thanks Andreas J. König for reporting and Andrew Main for
+                providing a fix.
+        + Fix : Broken linkage on Windows with gcc 3.4, which appears in
+                particular when using ActivePerl's default compiler suite.
+                For those setups, the autovivification shared library will now
+                be linked against the perl dll directly (instead of the import
+                library).
+        + Opt : The pragma takes slightly more time at compile-time, but is
+                slightly faster at run-time.
+        + Tst : Lengthy tests have been ported to Test::Leaner, making the
+                whole test suite about 50% faster.
+        + Tst : Threads tests are now only run on perl 5.13.4 and higher.
+                They could segfault randomly because of what seems to be an
+                internal bug of Perl, which has been addressed in 5.13.4.
+                There is also an environment variable that allows you to
+                forcefully run those tests, but it should be set only for
+                author testing and not for end users.
+
 0.06    2010-04-24 17:40 UTC
         + Add : The A_THREADSAFE and A_FORKSAFE constants.
         + Fix : [RT #56870] : "no autovivification" vs Regexp::Common.
index 55a1df3d6c150f373f384974349b63b83ac8b0ba..6e85fe7acb0c135e25b4d717b63652ec2fce97ff 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:               autovivification
-version:            0.06
+version:            0.07
 abstract:           Lexically disable autovivification.
 author:
     - Vincent Pit <perl@profvince.com>
@@ -13,7 +13,7 @@ build_requires:
     Test::More:           0
     XSLoader:             0
 requires:
-    perl:      5.008
+    perl:      5.008003
     XSLoader:  0
 resources:
     bugtracker:  http://rt.cpan.org/NoAuth/ReportBug.html?Queue=autovivification
diff --git a/README b/README
index de9502192868d947569efe4e648b007ceb2705af..d2232631a1699461786e02954f59c5487f7c4927 100644 (file)
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ NAME
     autovivification - Lexically disable autovivification.
 
 VERSION
-    Version 0.06
+    Version 0.07
 
 SYNOPSIS
         no autovivification;
@@ -34,49 +34,73 @@ DESCRIPTION
 
 METHODS
   "unimport @opts"
-    Magically called when "no autovivification" is encountered. Enables the
-    features given in @opts, which can be :
+    Magically called when "no autovivification @opts" is encountered.
+    Enables the features given in @opts, which can be :
 
     *   'fetch'
 
-        Turn off autovivification for rvalue dereferencing expressions, such
-        as "$value = $hashref->{key}[$idx]{$field}", "keys
-        %{$hashref->{key}}" or "values %{$hashref->{key}}". Starting from
-        perl 5.11, it also covers "keys" and "values" on array references.
+        Turns off autovivification for rvalue dereferencing expressions,
+        such as :
+
+            $value = $arrayref->[$idx]
+            $value = $hashref->{$key}
+            keys %$hashref
+            values %$hashref
+
+        Starting from perl 5.11, it also covers "keys" and "values" on array
+        references :
+
+            keys @$arrayref
+            values @$arrayref
+
         When the expression would have autovivified, "undef" is returned for
         a plain fetch, while "keys" and "values" return 0 in scalar context
         and the empty list in list context.
 
     *   'exists'
 
-        Turn off autovivification for dereferencing expressions that are
-        parts of an "exists", such as "exists
-        $hashref->{key}[$idx]{$field}". '' is returned when the expression
-        would have autovivified.
+        Turns off autovivification for dereferencing expressions that are
+        parts of an "exists", such as :
+
+            exists $arrayref->[$idx]
+            exists $hashref->{$key}
+
+        '' is returned when the expression would have autovivified.
 
     *   'delete'
 
-        Turn off autovivification for dereferencing expressions that are
-        parts of a "delete", such as "delete $hashref->{key}[$idx]{$field}".
+        Turns off autovivification for dereferencing expressions that are
+        parts of a "delete", such as :
+
+            delete $arrayref->[$idx]
+            delete $hashref->{$key}
+
         "undef" is returned when the expression would have autovivified.
 
     *   'store'
 
-        Turn off autovivification for lvalue dereferencing expressions, such
-        as "$hashref->{key}[$idx]{$field} = $value" or "for
-        ($hashref->{key}[$idx]{$field}) { ... }". An exception is thrown if
-        vivification is needed to store the value, which means that
-        effectively you can only assign to levels that are already defined
-        (in the example, this would require "$hashref->{key}[$idx]" to
-        already be a hash reference).
+        Turns off autovivification for lvalue dereferencing expressions,
+        such as :
+
+            $arrayref->[$idx] = $value
+            $hashref->{$key} = $value
+            for ($arrayref->[$idx]) { ... }
+            for ($hashref->{$key}) { ... }
+            function($arrayref->[$idx])
+            function($hashref->{$key})
+
+        An exception is thrown if vivification is needed to store the value,
+        which means that effectively you can only assign to levels that are
+        already defined In the example, this would require $arrayref (resp.
+        $hashref) to already be an array (resp. hash) reference.
 
     *   'warn'
 
-        Emit a warning when an autovivification is avoided.
+        Emits a warning when an autovivification is avoided.
 
     *   'strict'
 
-        Throw an exception when an autovivification is avoided.
+        Throws an exception when an autovivification is avoided.
 
     Each call to "unimport" adds the specified features to the ones already
     in use in the current lexical scope.
@@ -84,8 +108,9 @@ METHODS
     When @opts is empty, it defaults to "qw/fetch exists delete/".
 
   "import @opts"
-    Magically called when "use autovivification" is encountered. Disables
-    the features given in @opts, which can be the same as for "unimport".
+    Magically called when "use autovivification @opts" is encountered.
+    Disables the features given in @opts, which can be the same as for
+    "unimport".
 
     Each call to "import" removes the specified features to the ones already
     in use in the current lexical scope.
@@ -113,7 +138,10 @@ CAVEATS
     slices.
 
 DEPENDENCIES
-    perl 5.8.
+    perl 5.8.3.
+
+    A C compiler. This module may happen to build with a C++ compiler as
+    well, but don't rely on it, as no guarantee is made in this regard.
 
     XSLoader (standard since perl 5.006).
 
index 77cdb7bda108b13ed1213a95f1153ae14704f007..3d5ab411f7c509773bc8d86da7e02197075ace33 100644 (file)
@@ -11,13 +11,13 @@ autovivification - Lexically disable autovivification.
 
 =head1 VERSION
 
-Version 0.06
+Version 0.07
 
 =cut
 
 our $VERSION;
 BEGIN {
- $VERSION = '0.06';
+ $VERSION = '0.07';
 }
 
 =head1 SYNOPSIS