From: Vincent Pit Date: Fri, 31 Dec 2010 16:17:47 +0000 (+0100) Subject: This is 0.07 X-Git-Tag: v0.07^0 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Fautovivification.git;a=commitdiff_plain;h=d402f3b58ca66e1201c1f88cd96b0dcb8a45adff This is 0.07 --- diff --git a/Changes b/Changes index d39bdd6..bd04e42 100644 --- 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. diff --git a/META.yml b/META.yml index 55a1df3..6e85fe7 100644 --- 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 @@ -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 de95021..d223263 100644 --- 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). diff --git a/lib/autovivification.pm b/lib/autovivification.pm index 77cdb7b..3d5ab41 100644 --- a/lib/autovivification.pm +++ b/lib/autovivification.pm @@ -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