In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/66d813ca37e809ee893f2444cd6319914ce913e0?hp=6d3f582d7a5b910929925bc7e39b7a3fc2d3f997>
- Log ----------------------------------------------------------------- commit 66d813ca37e809ee893f2444cd6319914ce913e0 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:42:09 2013 -0700 perldelta: appease podcheck; tweak formatting M pod/perldelta.pod commit 81ca6d444ce24ddd6636e325f27d5d0b1ab96314 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:39:28 2013 -0700 perldelta for #118839/bf2614180a65 M pod/perldelta.pod commit 93c1eebbfff4f62df545b54a0de480a811b7086d Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:38:01 2013 -0700 perldelta for #118567/50278ed0f M pod/perldelta.pod commit e727f86abeb67e495fe486edf2eee5051595ffc1 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:36:37 2013 -0700 perldelta for #89648/b23eb1831 M pod/perldelta.pod commit 02bef66e81596f051b00fd9edfe6c91cb84972ac Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:33:06 2013 -0700 perldelta for #118627/4e917a04b78 M pod/perldelta.pod commit 57ae4db84e49c8d67f7334225ff909cd6945d4fe Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:30:37 2013 -0700 perldelta for f791a21a2018 M pod/perldelta.pod commit e4d150f17a54a8ffb822508e69fb3894d0d2d7c1 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:28:36 2013 -0700 perldiag: rewrap an entry for better splain output M pod/perldiag.pod commit 1310e59048aba1c74c2db87a964ef93e2d7a7f86 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:23:13 2013 -0700 perldelta for b54d603d2 (consistent proto warnings) M pod/perldelta.pod commit 7f1d4316ed7050194a68a3a4c2568b748d534ee7 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:20:43 2013 -0700 perldelta for a77c16f7c (*foo->bar) M pod/perldelta.pod commit b5a80c26644601305c8048d3fc59e17da25c3a32 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:16:13 2013 -0700 perldelta for #113932 (UNIVERSAL::can) M pod/perldelta.pod commit 47a7c93d355fc8012b6d2b6f8b5b40f46069b6d4 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 16:13:02 2013 -0700 perldelta for #117917/f5df269c5c M pod/perldelta.pod commit 558673e6bc37e199a517c5c6e39dcf73c9a9affc Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:43:24 2013 -0700 perldelta for fdf416b69a0 (utf8 cloned protos) M pod/perldelta.pod commit 7395119525acc2e0a5002864a2b82c6e6fd38a5c Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:41:12 2013 -0700 perldelta for 9700e2d38 (ambiguity warnings) M pod/perldelta.pod commit 7e4f209b3aa7a41f8e4653f6a0093ab9382f116a Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:39:17 2013 -0700 perldelta for e9d9e6f34 (list cx for sort args) M pod/perldelta.pod commit f6b1d2f55451df803971c632a4c86af87a2957bc Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:37:38 2013 -0700 perldelta for f65493df1c (lv sort args) M pod/perldelta.pod commit 71b4007cf24edb6e832af3fc42b72221b490e555 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:35:49 2013 -0700 perldelta for 20d5dc239 (fatal in-place sort) M pod/perldelta.pod commit 07a522a526321341d2a83a852eda7f6fecb333c9 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:31:31 2013 -0700 perldelta for bdbfc51a7b (undef constant my sub) M pod/perldelta.pod commit 989e4501b070a4527c5b203f73ee58ab5a7a1aef Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:30:11 2013 -0700 perldelta for 5e5128ba (@INC and scalarref docs) M pod/perldelta.pod commit bfb4a93c2cc1dd3a99d8a1038cdb1786d33e8712 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:28:29 2013 -0700 perldelta for ee3818ca2c5e (Canât coerce readonly REF) M pod/perldelta.pod commit b7bbd8b6c39172bf4a25a20634c578dbb96d161d Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:28:01 2013 -0700 perldelta for c72a4eedf (sv_force_normal at compile time) M pod/perldelta.pod commit 8be8cdec21eb9c193954fb8ea0e3cde946a7e6fc Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 14:17:16 2013 -0700 perldelta for 9657ccb4f (@INC sub returning scalar ref) M pod/perldelta.pod commit 52c411a5add10c8b4a528d14706153af56ded4e4 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 12:14:19 2013 -0700 perldelta: typos; consistency tweaks M pod/perldelta.pod commit 5e0164b286d6126982c81cabb1306a874431f825 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 12:13:21 2013 -0700 perldelta for 310f4fdb24 (more index constant mangling) M pod/perldelta.pod commit e11f653d34b4ff4b418ba41c67655d642e892fc0 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 12:09:45 2013 -0700 perldelta for 948d23704 (index constant mangling) M pod/perldelta.pod commit 0b023496c3c6ba501cfa33e71c193131f7335a82 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 12:08:47 2013 -0700 perldelta for 60041a0991 (split constant mangling) M pod/perldelta.pod commit ba90f48b375eac90241771eb6d764d059ec4aa07 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 12:06:24 2013 -0700 perldelta for proto parsing changes M pod/perldelta.pod commit aaf547722abf1a5f22b92d3fd938c1a8e76c75e6 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 12:06:15 2013 -0700 perldelta for 8922e438 (BmRARE/PREVIOUS removal) M pod/perldelta.pod commit 81d3ed5a0fa49c09ac57f7edc0917f345ff6b160 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 11:57:02 2013 -0700 perldelta for #118305/88dbe4a M pod/perldelta.pod ----------------------------------------------------------------------- Summary of changes: pod/perldelta.pod | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- pod/perldiag.pod | 8 +-- 2 files changed, 172 insertions(+), 9 deletions(-) diff --git a/pod/perldelta.pod b/pod/perldelta.pod index b53dfc5..24eebb9 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -25,7 +25,20 @@ XXX New core language features go here. Summarize user-visible core language enhancements. Particularly prominent performance optimisations could go here, but most should go in the L</Performance Enhancements> section. -[ List each enhancement as a =head2 entry ] +=head2 More consistent prototype parsing + +Multiple semicolons in subroutine prototypes have long been tolerated and +treated as a single semicolon. There was one case where this did not +happen. A subroutine whose prototype begins with "*" or ";*" can affect +whether a bareword is considered a method name or sub call. This now +applies also to ";;;*". + +Whitespace has long been allowed inside subroutine prototypes, so +C<sub( $ $ )> is equivalent to C<sub($$)>. But it was stripped when the +subroutine was parse. Hence, whitespace was I<not> allowed in prototypes +set by C<Scalar::Util::set_prototype>. Now it is permitted, and the parser +no longer strips whitespace. This means C<prototype &mysub> returns the +original prototype, whitespace and all. =head1 Security @@ -199,6 +212,18 @@ also affects L<perlre> and L<perlsub>.) =back +=head3 L<perlfunc> + +=over 4 + +=item * + +Since Perl v5.10, it has been possible for subroutines in @INC to return +a reference to a scalar holding initial source code to prepend to the file. +This is now documented. + +=back + =head1 Diagnostics The following additions or changes have been made to diagnostic output, @@ -229,7 +254,11 @@ XXX L<message|perldiag/"message"> =item * -XXX L<message|perldiag/"message"> +L<Missing ']' in prototype for %s : %s|perldiag/"Missing ']' in prototype +for %s : %s"> + +(W illegalproto) A grouping was started with C<[> but never closed with +C<]>. =back @@ -241,7 +270,40 @@ XXX Changes (i.e. rewording) of diagnostic messages go here =item * -XXX Describe change here +Under rare circumstances, one could get a "Can't coerce readonly REF to +string" instead of the customary "Modification of a read-only value". This +alternate error message has been removed. + +=item * + +"Ambiguous use of * resolved as operator *": This and similar warnings +about "%" and "&" used to occur in some circumstances where there was no +operator of the type cited, so the warning was completely wrong. This has +been fixed [perl #117535, #76910]. + +=item * + +Warnings about malformed subroutine prototypes are now more consistent in +how the prototypes are rendered. Some of these warnings would truncate +prototypes containing nulls. In other cases one warning would suppress +another. The warning about illegal characters in prototypes no longer says +"after '_'" if the bad character came before the underscore. + +=item * + +L<Perl folding rules are not up-to-date for 0x%X; please use the perlbug +utility to report; in regex; marked by <-- HERE in +mE<sol>%sE<sol>|perldiag/"Perl folding rules are not up-to-date for 0x%X; +please use the perlbug utility to report; in regex; marked by <-- HERE in +m/%s/"> + +This message is now only in the regexp category, and not in the deprecated +category. It is still a default (i.e., severe) warning [perl #89648]. + +=item * + +The debugger's "n" command now respects lvalue subroutines and steps over +them [perl #118839]. =back @@ -426,6 +488,18 @@ discover if the embedded Perl they are using needs the workaround by testing that the C preprocessor symbol C<HAS_SKIP_LOCALE_INIT> is not defined. (RT #38193) +=item * + +C<BmRARE> and C<BmPREVIOUS> have been removed. They were not used anywhere +and are not part of the API. For XS modules, they are now #defined as 0. + +=item * + +C<sv_force_normal>, which usually croaks on read-only values, used to allow +read-only values to be modified at compile time. This has been changed to +croak on read-only values regardless. This change uncovered several core +bugs. + =back =head1 Selected Bug Fixes @@ -439,16 +513,105 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>. =item * -There have been several fixes related to Perl's handling of locales. RT +There have been several fixes related to Perl's handling of locales. perl #38193 was described above in L</Internal Changes>. Also fixed is #112208 in which the error string in C<$!> displayed as garbage in many UTF-8 locales; #118197, where the radix (decimal point) character had to be an ASCII character (which doesn't work for some non-Western languages); -and #115808] in which C<POSIX::setlocale()> on failure returned an +and #115808, in which C<POSIX::setlocale()> on failure returned an C<undef> which didn't warn about not being defined even if those warnings were enabled. +=item * + +The dtrace sub-entry probe now works with lexical subs, instead of +crashing [perl #118305]. + +=item * + +Compiling a C<split> operator whose third argument is a named constant +evaulating to 0 no longer causes the constant's value to change. + +=item * + +A named constant used as the second argument to C<index> no longer gets +coerced to a string if it is a reference, regular expression, dualvar, etc. + +=item * + +A named constant evaluating to the undefined value used as the second +argument to C<index> no longer produces "uninitialized" warnings at compile +time. It will still produce them at run time. + +=item * + +When a scalar was returned from a subroutine in @INC, the referenced scalar +was magically converted into an IO thingy, possibly resulting in "Bizarre +copy" errors if that scalar continued to be used elsewhere. Now Perl uses +an internal copy of the scalar instead. + +=item * + +Undefining an inlinable lexical subroutine (C<my sub foo() { 42 } undef +&foo>) would result in a crash if warnings were turned on. + +=item * + +Certain uses of the C<sort> operator are optimised to modify an array in +place, such as C<@a = sort @a>. During the sorting, the array is made +read-only. If a sort block should happen to die, then the array remained +read-only even outside the C<sort>. This has been fixed. + +=item * + +C<$a> and C<$b> inside a sort block are aliased to the actual arguments to +C<sort>, so they can be modified through those two variables. This did not +always work, e.g., for lvalue subs and C<$#ary>, and probably many other +operators. It works now. + +=item * + +The arguments to C<sort> are now all in list context. If the C<sort> +itself were called in void or scalar context, then I<some>, but not all, of +the arguments used to be in void or scalar context. + +=item * + +Subroutine prototypes with Unicode characters above U+00FF were getting +mangled during closure cloning. This would happen with subroutines closing +over lexical variables declared outside, and with lexical subs. + +=item * + +In regular expressions containing multiple code blocks, the values of +C<$1>, C<$2>, etc., set by nested regular expression calls would leak from +one block to the next. Now these variables always refer to the outer +regular expression at the start of an embedded block [perl #117917]. + +=item * + +C<UNIVERSAL::can> now treats its first argument the same way that method +calls do: Typeglobs and glob references with non-empty IO slots are treated +as handles, and strings are treated as filehandles, rather than packages, +if a handle with that name exists [perl #113932]. + +=item * + +Method calls on typeglobs (e.g., C<< *ARGV->getline >>) used to stringify +the typeglob and then look it up again. Combined with changes in Perl +5.18.0, this allowed C<< *foo->bar >> to call methods on the "foo" package +(like C<< foo->bar >>). In some cases it could cause the method to be +called on the wrong handle. Now a typeglob argument is treated as a +handle (just like C<< (\*foo)->bar >>), or, if its IO slot is empty, an +error is raised. + +=item * + +Under copy-on-write builds (the default as of 5.19.1) C<${'_<-e'}[0]> no +longer gets mangled. This is the first line of input saved for the +debugger's use for one-liners [perl #118627]. + =back =head1 Known Problems diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 1012507..5165599 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -2230,10 +2230,10 @@ offending digit. =item Illegal character after '_' in prototype for %s : %s -(W illegalproto) An illegal character was found in a prototype declaration. -The '_' in a prototype must be followed by a ';', indicating the rest of -the parameters are optional, or one of '@' or '%', since those two will -accept 0 or more final parameters. +(W illegalproto) An illegal character was found in a prototype +declaration. The '_' in a prototype must be followed by a ';', +indicating the rest of the parameters are optional, or one of '@' +or '%', since those two will accept 0 or more final parameters. =item Illegal character \%o (carriage return) -- Perl5 Master Repository
