From 90814a4e3c744b161cec74d3372d8d7546b0c9da Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Tue, 16 Oct 2012 14:09:14 -0700 Subject: [PATCH] =?utf8?q?perl=CE=B4=20up=20to=20the=20present?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- pod/perldelta.pod | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/pod/perldelta.pod b/pod/perldelta.pod index a6dbfb1..d314937 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1,5 +1,10 @@ =encoding utf8 +=for comment +A Windows-specific commit that may need mention (does this have any +user-visible effects?): +0c38a57 Remove exports of dummy set[ug]id functions on Windows + =head1 NAME [ this is a template for a new perldelta file. Any text flagged as XXX needs @@ -134,6 +139,53 @@ XXX =item * +L has been upgraded from version 1.17 to 1.18. It no longer +dies when deparsing C without arguments. It now correctly omits the +comma for C and C. + +=item * + +L, L and L have been upgraded from version 0.30 to +0.31. The overrides for C and C have been rewritten, eliminating +several problems, and making one incompatible change: + +=over + +=item * + +Formerly, whichever of C or C was compiled later +would take precedence over the other, causing C and C not to +respect the other pragma when in scope. + +=item * + +Using any of these three pragmata would cause C and C anywhere +else in the program to evalute their arguments in list context and prevent +them from inferring $_ when called without arguments. + +=item * + +Using any of these three pragmata would make C return 1234 +(for any number not beginning with 0) anywhere in the program. Now "1234" +is translated from octal to decimal, whether within the pragma's scope or +not. + +=item * + +The global overrides that facilitate lexical use of C and C now +respect any existing overrides that were in place before the new overrides +were installed, falling back to them outside of the scope of C. + +=item * + +C, C and similar invocations for bigint +and bigrat now export a C or C function, instead of providing a +global override. + +=back + +=item * + L has been upgraded from version 1.26 to 1.27. The C and C functions are now documented. @@ -150,6 +202,13 @@ space-separated list of patterns return long lists of results no longer results in memory corruption or crashes. This bug was introduced in Perl 5.16.0. [perl #114984] +=item * + +L has been upgraded from version 0.15 to 0.16. This is +the module implementing the ":encoding(...)" I/O layer. It no longer +corrupts memory or crashes when the encoding back-end reallocates the +buffer or gives it a typeglob or shared hash key scalar. + =back =head2 Removed Modules and Pragmata @@ -386,6 +445,24 @@ sometimes returns bytes and sometimes characters. C no longer assumes that its argument is in UTF8. Neither of these creates UTF8 caches for tied or overloaded values or for non-PVs any more. +=item * + +C now copies string buffers of shared hash key scalars when +called from XS modules [perl #79824]. + +=item * + +C and C are no longer used. They are now +#defined as 0. + +=item * + +The new C flag can be set by custom regular expression +engines to indicate that the execution of the regular expression may cause +variables to be modified. This lets C know to skip certain +optimisations. Perl's own regular expression engine sets this flag for the +special backtracking verbs that set $REGMARK and $REGERROR. + =back =head1 Selected Bug Fixes @@ -503,6 +580,64 @@ changed the internal representation to or from UTF8. [perl #114410] utf8::encode now calls FETCH and STORE on tied variables. utf8::decode now calls STORE (it was already calling FETCH). +=item * + +C<$tied =~ s/$non_utf8/$utf8/> no longer loops infinitely if the tied +variable returns a Latin-1 string, shared hash key scalar, or reference or +typeglob that stringifies as ASCII or Latin-1. This is a regression from +5.12.x. + +=item * + +C without /e is now better at detecting when it needs to forego +certain optimisations, fixing some buggy cases: + +=over + +=item * + +Match variables in certain constructs (C<&&>, C<||>, C<..> and others) in +the replacement part; e.g., C. [perl #26986] + +=item * + +Aliases to match variables in the replacement. + +=item * + +$REGERROR or $REGMARK in the replacement. [perl #49190] + +=item * + +An empty pattern (C) that causes the last-successful pattern to +be used, when that pattern contains code blocks that modify the variables +in the replacement. + +=back + +=item * + +The taintedness of the replacement string no longer affects the taintedness +of the return value of C. + +=item * + +The C<$|> autoflush variable is created on-the-fly when needed. If this +happened (e.g., if it was mentioned in a module or eval) when the +currently-selected filehandle was a typeglob with an empty IO slot, it used +to crash. [perl #115206] + +=item * + +Line numbers at the end of a string eval are no longer off by one. +[perl #114658] + +=item * + +@INC filters (subroutines returned by subroutines in @INC) that set $_ to a +copy-on-write scalar no longer cause the parser to modify that string +buffer in place. + =back =head1 Known Problems -- 2.7.4