In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/8b9712e0b77b52b04db44f78e16770283126e80a?hp=a8cecd9d25c77e0dcdb769e272dc146e1bf7afa5>
- Log ----------------------------------------------------------------- commit 8b9712e0b77b52b04db44f78e16770283126e80a Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:48:14 2012 -0700 perldelta for $@=3; warn M pod/perldelta.pod commit 9c3080964b8766403561afa3d6e80a811e3bfb74 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:46:18 2012 -0700 perldelta for -$utf8 M pod/perldelta.pod commit a7143705c77bcb8b0ee917e0119252c6e0497008 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:45:16 2012 -0700 perldelta for -"-10" with gmagic M pod/perldelta.pod commit 844115ec1265989c44303bcf4fb397bd03ffddab Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:44:10 2012 -0700 perldelta for -$str_with_cached_num M pod/perldelta.pod commit e811dbaa4b8bdd619fb33941c41a8df4009994ad Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:40:55 2012 -0700 perldelta for numeric opts, gmg, and 64-bit ints M pod/perldelta.pod commit 38d77b7f3b083e863850d44f39bed1eea7fecf62 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:38:40 2012 -0700 perldelta for warn gmagic fixes M pod/perldelta.pod commit c0df136dcba7bcadc48498b3233c9973b4d98307 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:35:16 2012 -0700 perldelta for prototype($1) M pod/perldelta.pod commit 2aab098d094cf0a7b13c627bc17b14c3191d8c78 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:31:39 2012 -0700 perldelta for open, <&, and $1 M pod/perldelta.pod commit 6fe02df8da7dca8a55a73e06b8cbd6926e256acb Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:28:42 2012 -0700 perldelta for UNIVERSAL::can($num,...) M pod/perldelta.pod commit 8dffc0ab19d358b2f5510c0e7f1b3ed435e26cd9 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:25:39 2012 -0700 perldelta for âNot a format refâ M pod/perldelta.pod commit fbdb83f33ea2c8d5f42aa4ca98fb8d8499928e05 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:23:19 2012 -0700 perldelta for B::COP::stashpv and utf8/nulls M pod/perldelta.pod commit 5cefbec95ac656e7b8937930e60e9e3761e77865 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:22:41 2012 -0700 perldelta for B::COP::stashoff M pod/perldelta.pod commit b16ca463545a377fa963a7dd744ac3107716a142 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:20:52 2012 -0700 perldelta for caller crashing on SvOOK str M pod/perldelta.pod commit f8ef51fd631e602b4f4486d4e6d1bed39e67e32e Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 23:17:22 2012 -0700 perldelta for cop_stashoff M pod/perldelta.pod commit 9b9df0bb45b64fe50e68919dfc48b7dff50be88b Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 20:02:19 2012 -0700 perldelta for #78742 â eval "__PACKAGE__" M pod/perldelta.pod commit a1d2df3641d7e45ed98a44531d0e09c561888885 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 19:54:36 2012 -0700 perldelta: fix pod syntax M pod/perldelta.pod commit d8816adcc1ea49c4bdcf10f3bf33f286d703d5df Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 18:01:07 2012 -0700 perldelta for rv2cv not cloning closures M pod/perldelta.pod commit 4a3013099e71fa1d96439c5f3c8b3478f9e34659 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 16:14:18 2012 -0700 perldelta for âRunaway prototypeâ removal M pod/perldelta.pod commit b7e9bef4379136a8cd73d18396b4c10e296765aa Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 16:12:49 2012 -0700 perldelta for study code removal M pod/perldelta.pod commit b6d5888cfa3eedfc571114295b1acf1f6897bf2a Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 16:10:36 2012 -0700 perldelta for #113060 M pod/perldelta.pod commit b9dc63e8207866cc1806bbc6c468c79f653a92df Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 15:59:59 2012 -0700 perldelta for #97478 M pod/perldelta.pod commit d9661073524de014d39261b9b89b24bd9771ee77 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 14:57:06 2012 -0700 perldelta tweaks M pod/perldelta.pod commit 028c87190db1b7d7f24f04c37dbd734b73e6dcef Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 14:56:32 2012 -0700 perldelta for new coresubs M pod/perldelta.pod commit 4d219cc294919c4718440e6420749e385ed9a2a2 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 10:02:29 2012 -0700 perldelta for #111782 M pod/perldelta.pod commit d67d4c0ef3de0aa73bbe7f136218b4361b72d706 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 09:57:28 2012 -0700 perldelta for #76546 M pod/perldelta.pod commit 701da2e9c0c46f4ed842533c8eb007a62b40d8d2 Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 09:44:57 2012 -0700 perldelta for #9423 M pod/perldelta.pod commit c506fc7e26db316f8ae371f8a9854eef1e2e090b Author: Father Chrysostomos <[email protected]> Date: Thu Jun 7 09:42:24 2012 -0700 perldelta for #111510 M pod/perldelta.pod commit dc5c17b5ed9cd51878c60e51fe38e6cb00b54f4c Author: Father Chrysostomos <[email protected]> Date: Wed Jun 6 15:55:16 2012 -0700 cop.h: Clarify comment M cop.h ----------------------------------------------------------------------- Summary of changes: cop.h | 3 +- pod/perldelta.pod | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 163 insertions(+), 5 deletions(-) diff --git a/cop.h b/cop.h index 9f3762e..af98965 100644 --- a/cop.h +++ b/cop.h @@ -387,7 +387,8 @@ struct cop { line_t cop_line; /* line # of this command */ /* label for this construct is now stored in cop_hints_hash */ #ifdef USE_ITHREADS - PADOFFSET cop_stashoff; /* package line was compiled in */ + PADOFFSET cop_stashoff; /* offset into PL_stashpad, for the + package the line was compiled in */ char * cop_file; /* file name the following line # is from */ #else HV * cop_stash; /* package line was compiled in */ diff --git a/pod/perldelta.pod b/pod/perldelta.pod index afa6406..808146c 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -28,6 +28,18 @@ here, but most should go in the L</Performance Enhancements> section. [ List each enhancement as a =head2 entry ] +=head2 More CORE:: subs + +Several more built-in functions have been added as subroutines to the +CORE:: namespace, namely, those non-overridable keywords that can be +implemented without custom parsers: C<defined>, C<delete>, C<exists>, +C<glob>, C<pos>, C<protoytpe>, C<scalar>, C<split>, C<study>, C<undef>, + +As some of these have prototypes, C<prototype('CORE::...')> has been +changed not to make a distinction between overridable and non-overridable +keywords. This is to make C<prototype('CORE::pos')> consistent with +C<prototype(&CORE::pos)>. + =head1 Security XXX Any security-related notices go here. In particular, any security @@ -110,15 +122,37 @@ make use of them. =item * +L<B> has been upgraded from version 1.35 to 1.36. + +C<B::COP::stashlen> has been replaced with C<B::COP::stashoff>. + +C<B::COP::stashpv> now supports UTF8 package names and embedded nulls. + +=item * + +L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208. + +It no longer fails when trying to embed manifests on Windows +[perl #111782, #111798]. + +=item * + L<File::DosGlob> has been upgraded from version 1.07 to 1.08. There are no visible changes, only minor internal refactorings. =item * -L<IO> has been upgraded from version 1.25_06 to version 1.25_07. +L<File::Spec::Unix> has been upgraded from version 3.39_02 to 3.39_03. + +C<abs2rel> could produce incorrect results when given two relative paths or +the root directory twice [perl #111510]. + +=item * + +L<IO> has been upgraded from version 1.25_06 to 1.25_07. -C<sync()> can now be called on read only file handles [perl #64772]. +C<sync()> can now be called on read-only file handles [perl #64772]. =item * @@ -129,7 +163,8 @@ does nothing other than issue a warning that it is no longer supported. =item * -L<Unicode::UCD> has been upgraded from version 0.43 to version 0.44. +L<Unicode::UCD> has been upgraded from version 0.43 to 0.44. + This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()> that returns all the casefolds. @@ -227,6 +262,22 @@ XXX Describe change here =back +=head2 Removals of Diagnostics + +=over 4 + +=item * + +The "Runaway prototype" warning that occurs in bizarre cases has been +removed as being unhelpful and inconsistent. + +=item * + +The "Not a format reference" error has been removed, as the only case in +which it could be triggered was a bug. + +=back + =head1 Utility Changes XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go @@ -343,7 +394,16 @@ be noted as well. =item * -XXX +The C<study> function was made a no-op in 5.16. It was simply disabled via +a C<return> statement; the code was left in place. Now the code supporting +what C<study> used to do has been removed. + +=item * + +Under threaded perls, there is no longer a separate PV allocated for every +COP to store its package name (C<< cop->stashpv >>). Instead, there is an +offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which +holds stash pointers. =back @@ -364,6 +424,103 @@ far. In v5.16, it worked on Unicodes 6.0 and 6.1, but there were various bugs for earlier releases; the older the release the more problems. +=item * + +C<vec> no longer produces "uninitialized" warnings in lvalue context +[perl #9423]. + +=item * + +An optimisation involving fixed strings in regular expressions could cause +a severe performance penalty in edge cases. This has been fixed +[perl #76546]. + +=item * + +The "Can't find an opnumber" message that C<prototype> produces when passed +a string like "CORE::nonexistent_keyword" is now passes UTF8 and embedded +nulls through unchanged [perl #97478]. + +=item * + +C<prototype> now treats magical variables like C<$1> the same way as +non-magical variables when checking for the CORE:: prefix, instead of +treating them as subroutine names. + +=item * + +Under threaded perls, a run-time code block in a regular expression could +corrupt the package name stored in the op tree, resulting in bad reads +in C<caller>, and possibly crashes [perl #113060]. + +=item * + +Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a +closure) no longer results in a copy of the subroutine (or assertion +failures on debugging builds). + +=item * + +C<eval '__PACKAGE__'> now returns the right answer on threaded builds if +the current package has been assigned over (as in +C<*ThisPackage:: = *ThatPackage::>) [perl #78742]. + +=item * + +If a package is deleted by code that it calls, it is possible for C<caller> +to see a stack frame belonging to that deleted package. C<caller> could +crash if the stash's memory address was reused for a scalar and a +substitution was performed on the same scalar [perl #113486]. + +=item * + +C<UNIVERSAL::can> no longer treats its first argument differently +depending on whether it is a string or number internally. + +=item * + +C<open> with "<&" for the mode checks to see whether the third argument is +a number, in determining whether to treat it as a file descriptor or a +handle name. Magical variables like C<$1> were always failing the numeric +check and being treated as handle names. + +=item * + +C<warn>'s handling of magical variables (C<$1>, ties) has undergone several +fixes. FETCH is only called once now on a tied argument or a tied C<$@> +[perl #97480]. Tied variables returning objects that stringify as "" are +no longer ignored. A tied C<$@> that happened to return a reference the +I<previous> time is was used is no longer ignored. + +=item * + +C<warn ""> now treats C<$@> with a number in it the same way, regardless of +whether it happened via C<$@=3> or C<$@="3">. It used to ignore the +former. Now it appends "\t...caught", as it has always done with +C<$@="3">. + +=item * + +Numeric operators on magical variables (e.g., S<C<$1 + 1>>) used to use +floating point operations even where integer operations were more appropriate, resulting in loss of accuracy on 64-bit platforms +[perl #109542]. + +=item * + +Unary negation no longer treats a string as a number if the string happened +to be used as a number some time. So, if $x contains the string "dogs", +C<-$x> returns "-dogs" even if C<$y=0+$x> has happened at some point. + +=item * + +In Perl 5.14, C<-'-10'> was fixed to return "10", not "+10". But magical +variables (C<$1>, ties) were not fixed till now [perl #57706]. + +=item * + +Unary negation now treats strings consistently, regardless of the internal +UTF8 flag. + =back =head1 Known Problems -- Perl5 Master Repository
