X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/5343a617e1832a76d9e6805260dbcd579e845218..c0154fe2bd17357e30a7ba514ff85739fa430250:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 4f282ad..b02a575 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1,9 +1,12 @@ =encoding utf8 -=head1 NAME +=for comment +This has been completed up to 1a50d74bac4, except for: +8629c11317 smueller Escape double-quotes in generated #line directives +8dc67a69b shlomif perl -d: display lines inside subroutines. +3dfd1b5cd2 leont Export PerlIOBase_open -[ this is a template for a new perldelta file. Any text flagged as -XXX needs to be processed before release. ] +=head1 NAME perldelta - what is new for perl v5.15.7 @@ -22,18 +25,32 @@ XXX Any important notices here =head1 Core Enhancements -XXX New core language features go here. Summarise user-visible core language -enhancements. Particularly prominent performance optimisations could go -here, but most should go in the L section. - -[ List each enhancement as a =head2 entry ] - =head2 C no longer needed for C<\N{I}> The C module is now automatically loaded when needed as if the C<:full> and C<:short> options had been specified. See L. +=head2 Improved performance for Unicode properties in regular expressions + +Matching a code point against a Unicode property is now done via a +binary search instead of linear. This means for example that the worst +case for a 1000 item property is 10 probes instead of 1000. This +inefficiency has been compensated for in the past by permanently storing +in a hash the results of a given probe plus the results for the adjacent +64 code points, under the theory that near-by code points are likely to +be searched for. A separate hash was used for each mention of a Unicode +property in each regular expression. Thus, C +would generate two hashes. Any probes in one instance would be unknown +to the other, and the hashes could expand separately to be quite large +if the regular expression were used on many different widely-separated +code points. This can lead to running out of memory in extreme cases. +Now, however, there is just one hash shared by all instances of a given +property. This means that if C<\p{foo}> is matched against "A" in one +regular expression in a thread, the result will be known immediately to +all regular expressions, and the relentless march of using up memory is +slowed considerably. + =head1 Security XXX Any security-related notices go here. In particular, any security @@ -54,24 +71,31 @@ XXX For a release on a stable branch, this section aspires to be: =head1 Deprecations -XXX Any deprecated features, syntax, modules etc. should be listed here. -In particular, deprecated modules should be listed here even if they are -listed as an updated module in the L section. +=head2 Deprecated Modules -[ List each deprecation as a =head2 entry ] +=over -=head1 Performance Enhancements +=item L -XXX Changes which enhance performance without changing behaviour go here. There -may well be none in a stable release. +Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements, +which is a drop-in replacement. It will be deleted from perl.git blead +in v5.17.0. -[ List each enhancement as a =item entry ] +=back + +=head1 Performance Enhancements =over 4 =item * -XXX +Version declarations with the C keyword (e.g., C) are now +faster, as they enable features without loading F. + +=item * + +C is faster now, as it no longer iterates through magic that it +is not going to copy anyway. =back @@ -87,23 +111,155 @@ cribbed. [ Within each section, list entries as a =item entry ] -=head2 New Modules and Pragmata +=head2 Updated Modules and Pragmata =over 4 =item * -XXX +L has been upgraded from version 1.10 to version 1.11. -=back +It now deparses C correctly. It used to omit the +quotation marks, which did not work if the string were not a valid +identifier [perl #91416]. -=head2 Updated Modules and Pragmata +A similar bug also affected hash and array elements such as +C<< 'random string'->[0] >>, which would deparse as C<$random string[0]>. +This has been fixed. -=over 4 +Those same syntaxes used to drop the package name from variables beginning +with a punctuation mark, as in C<< "foo::]"->{$key} >>. This, too, has +been fixed. + +B::Deparse no longer hangs when deparsing a program with stash +circularities, such as C [perl #91384]. + +C used to be deparsed as C<$s[1]> if @s were a lexical variable +[perl #81424]. Similarly, C would be deparsed as C<$#s> for both +lexical and package variables. These has been fixed. + +The C regular expression flags are no longer omitted. + +Feature hints are now deparsed with C rather than C<%^H> +assignments. + +A regression in 1.10 that caused C to disable strict mode +in obscure cases has been fixed. + +Strict mode is now fully deparsed, including subs and vars [perl #24027]. + +The global variables C<$(>, C<$|> and C<$)> are now deparsed with braces +(i.e., C<${(}>) in regular expressions [perl #86060]. + +C blocks after C loops are now deparsed correctly, as they +were back in 0.67 (included with Perl 5.8.5) [perl #108224] + +=item * + +L has been upgraded from version 3.58 to version 3.59. + +We no longer read from STDIN when the Content-Length is not set, preventing +requests with no Content-Length from freezing in some cases. This is consistent +with the CGI RFC 3875, and is also consistent with CGI::Simple. However, the old +behavior may have been expected by some command-line uses of CGI.pm. + +=item * + +L has been upgraded from version 2.112621 to version 2.113640. + +Version::Requirements has now been merged as CPAN::Meta::Requirements. + +=item * + +L has been upgraded from version 0.9113 to version 0.9116. + +=item * + +L has been upgraded from version 2.135_01 to version +2.135_03. + +It can now dump vstrings [perl #101162]. + +The nameless typeglob (C<*{""}>) is now dumped properly. + +=item * + +L has been upgraded from version 1.26 to version 1.27. + +See the entry for splain in the L section, for the +changes. The diagnostics module and the splain utility are actually one +and the same. + +=item * + +L has been upgraded from version 1.45 to version 1.46. + +It no longer produces "used once" warnings when the C and C +methods are called while the main program is still compiling (e.g., from +within a BEGIN block) [perl #107410] [rt.cpan.org #50315]. + +=item * + +L has been upgraded from version 1.21 to version 1.22. + +=item * + +L has been upgraded from version 3.9 to version 4.0. + +=item * + +L has been upgraded from version 1.16 to version 1.17. + +C no longer calls C on the class, but uses +another means to determine whether the object has overloading. It was +never correct for it to call C, as overloading does not respect +AUTOLOAD. So classes that autoload methods and implement C no longer +have to account for overloading [perl #40333]. + +A warning is now produced for invalid arguments. See L. + +=item * + +L has been upgraded from version 5.0150036 to version 5.0150038. + +=item * + +L has been upgraded from version 0.12 to version 0.13. + +(This is the module that implements C<< open $fh, '>', \$scalar >>.) + +It no longer assumes during C that $scalar is a string internally. +If it didn't crash, it was close to doing so [perl #92706]. + +Printing to an in-memory handle now works if the $scalar holds a reference, +stringifying the reference before modifying it. References used to be +treated as empty strings. + +Printing to an in-memory handle no longer crashes if the $scalar happens to +hold a number internally, but no string buffer. + +=item * + +L has been upgraded from version 1.12 to 1.13 + +=item * + +L has been upgraded from version 1.27 to version 1.29. + +C and C now run signals handle before returning, as the +whole point of these two functions is to wait until a signal has +arrived, and then return I it has been triggered. Delayed, or +"safe", signals were preventing that from happening, possibly resulting in +race conditions [perl #107216]. +C is now a direct call into the underlying OS C +function, instead of being a Perl wrapper on C. C +now returns the correct value on Win32 (I the file descriptor). +C C and C and C now +dispatch safe signals immediately before returning to their caller. =item * -L has been upgraded from version 0.9113 to version 0.9115. +L has been upgraded from version 3.15_01 to version 3.15_15. =item * @@ -113,44 +269,59 @@ L has been upgraded from version 0.26 to version 0.30. L has been upgraded from version 0.96 to version 0.98. -=back - -=head2 Removed Modules and Pragmata +=item * -=over 4 +L has been upgraded from version 0.37 to version 0.38. +This changes the output of C for the Name_Alias property +to reflect the changes that are planned for Unicode 6.1, so that there +won't be a format change when upgrading to 6.1. Briefly, a second +component of each alias is added that gives the type of alias it is. +Examples are at L. =item * -XXX +L has been upgraded from version 0.101020 to version 0.101021. + +Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements, +which is a drop-in replacement. =back =head1 Documentation -XXX Changes to files in F go here. Consider grouping entries by -file and be sure to link to the appropriate page, e.g. L. +=head2 Changes to Existing Documentation -=head2 New Documentation +=head3 L -XXX Changes which create B files in F go here. +=over 4 -=head3 L +=item * -XXX Description of the purpose of the new file here +C treats a 0 mode as a special case, that prevents a nonexistent +file from being created. This has been the case since Perl 5.000, but was +never documented anywhere. Now the perlfunc entry mentions it +[perl #90064]. -=head2 Changes to Existing Documentation +=item * -XXX Changes which significantly change existing files in F go here. -However, any changes to F should go in the L -section. +The entry for C has been rewritten. It is now far clearer than +before. -=head3 L +=back + +=head3 L and L =over 4 =item * -XXX Description of the change here +Documentation of the smartmatch operator has been reworked and moved from +perlsyn to perlop where it belongs. + +=item * + +Documentation of the ellipsis statement (C<...>) has been reworked and +moved from perlop to perlsyn. =back @@ -160,28 +331,25 @@ The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see L. -XXX New or changed warnings emitted by the core's C code go here. Also -include any changes in L that reconcile it to the C code. - -[ Within each section, list entries as a =item entry that links to perldiag, - e.g. - - =item * - - L -] - =head2 New Diagnostics -XXX Newly added diagnostic messages go here - =head3 New Errors =over 4 =item * -XXX L +L + +This error occurs when C tries to set C<@DB::args> but finds it +tied. Before this error was added, it used to crash instead. + +=item * + +L + +This error is part of a safety check that the C operator does before +tying a special array like C<@_>. You should never see this message. =back @@ -191,68 +359,94 @@ XXX L =item * -XXX L +L -=back +The long-deprecated C now also warns for package variables. +Previously it only issued a warning for lexical variables. + +=item * + +L -=head2 Changes to Existing Diagnostics +C<\E> does nothing unless preceded by C<\Q>, C<\L> or C<\U>. -XXX Changes (i.e. rewording) of diagnostic messages go here +=item * + +L + +This warning, in the "overload" category, is produced when the overload +pragma is given an argument it doesn't recognize, presumably a mistyped +operator. + +=back + +=head2 Removals =over 4 =item * -XXX Describe change here +"sort is now a reserved word" + +This error used to occur when C was called without arguments, followed by C<;> or C<)>. (E.g., C would die, but C<{sort}> was +OK.) This error message was added in Perl 3 to catch code like +C which would no longer work. More than two decades later, +this message is no longer appropriate. Now C without arguments is +always allowed, and returns an empty list, as it did in those cases where +it was already allowed [perl #90030]. =back =head1 Utility Changes -XXX Changes to installed programs such as F and F go -here. Most of these are built within the directories F and F. +=head3 L -[ List utility changes as a =head3 entry for each utility and =item -entries for each change -Use L with program names to get proper documentation linking. ] +=over 4 -=head3 L +=item * -=over 4 +splain no longer emits backtraces with the first line number repeated. +This: + + Uncaught exception from user code: + Cannot fwiddle the fwuddle at -e line 1. + at -e line 1 + main::baz() called at -e line 1 + main::bar() called at -e line 1 + main::foo() called at -e line 1 + +has become this: + + Uncaught exception from user code: + Cannot fwiddle the fwuddle at -e line 1. + main::baz() called at -e line 1 + main::bar() called at -e line 1 + main::foo() called at -e line 1 =item * -XXX +Some error messages consist of multiple lines that are listed as separate +entries in L. splain has been taught to find the separate +entries in these cases, instead of simply failing to find the message. =back =head1 Configuration and Compilation -XXX Changes to F, F, F, and analogous tools -go here. Any other changes to the Perl build process should be listed here. -However, any platform-specific changes should be listed in the -L section, instead. - -[ List changes as a =item entry ]. - =over 4 =item * -XXX +The Pod files for the perl FAQ, L, L and L +are once again correctly installed in the same directory as the other core +Pods. + +=for 5.16.0 This isn't a regression from 5.14.x, so don't mention this. =back =head1 Testing -XXX Any significant changes to the testing of a freshly built perl should be -listed here. Changes which create B files in F go here as do any -large changes to the testing harness (e.g. when parallel testing was added). -Changes to existing files in F aren't worth summarising, although the bugs -that they represent may be covered elsewhere. - -[ List each test improvement as a =item entry ] - =over 4 =item * @@ -265,117 +459,421 @@ C, are tested here. =back -=head1 Platform Support +=head1 Internal Changes -XXX Any changes to platform support should be listed in the sections below. +=over 4 -[ Within the sections, list each platform as a =item entry with specific -changes as paragraphs below it. ] +=item * -=head2 New Platforms +There are now feature bundle hints in C (C<$^H>) that version +declarations use, to avoid having to load F. One setting of +the hint bits indicates a "custom" feature bundle, which means that the +entries in C<%^H> still apply. F uses that. -XXX List any platforms that this version of perl compiles on, that previous -versions did not. These will either be enabled by new files in the F -directories, or new subdirectories and F files at the top level of the -source tree. +The C macro is defined in F along with other +hints. Other macros for setting and testing features and bundles are in +the new F. C (which has moved to +F) is no longer used throughout the codebase, but more specific +macros, e.g., C, that are defined in F. -=over 4 +=item * -=item XXX-some-platform +F is now a generated file, created by the new +F script, which also generates F. -XXX +=item * -=back +Tied arrays are now always C. If C<@_> or C is tied, it +is reified first, to make sure this is always the case. -=head2 Discontinued Platforms +=back -XXX List any platforms that this version of perl no longer compiles on. +=head1 Selected Bug Fixes =over 4 -=item XXX-some-platform +=item * "b . COND" in the debugger has been fixed + +Breaking on the current line with C was broken by previous work and +has now been fixed. -XXX +=item * Tying C<%^H> -=back +Tying C<%^H> no longer causes perl to crash or ignore +the contents of C<%^H> when entering a compilation +scope [perl #106282]. -=head2 Platform-Specific Notes +=item * C<~> on vstrings -XXX List any changes for specific platforms. This could include configuration -and compilation changes or changes in portability/compatibility. However, -changes within modules for platforms should generally be listed in the -L section. +The bitwise complement operator (and possibly other operators, too) when +passed a vstring would leave vstring magic attached to the return value, +even though the string had changed. This meant that +C<< version->new(~v1.2.3) >> would create a version looking like "v1.2.3" +even though the string passed to C<< version->new >> was actually +"\376\375\374". This also caused L to deparse C<~v1.2.3> +incorrectly, without the C<~> [perl #29070]. -=over 4 +=item * Vstrings blowing away magic -=item XXX-some-platform +Assigning a vstring to a magic (e.g., tied, C<$!>) variable and then +assigning something else used to blow away all the magic. This meant that +tied variables would come undone, C<$!> would stop getting updated on +failed system calls, C<$|> would stop setting autoflush, and other +mischief would take place. This has been fixed. -XXX +=item * C and tied hashes -=back +The C XS function now works on tied hashes, instead of crashing or +returning an empty hash. -=head1 Internal Changes +=item * Hashes will null elements -XXX Changes which affect the interface available to C code go here. -Other significant internal changes for future core maintainers should -be noted as well. +It is possible from XS code to create hashes with elements that have no +values. Perl itself sometimes creates such hashes, but they are rarely +visible to Perl code. The hash element and slice operators used to crash +when handling these in lvalue context. These have been fixed. They now +produce a "Modification of non-creatable hash value attempted" error +message. -[ List each change as a =item entry ] +=item * No warning for C -=over 4 +When one writes C, which used to work in Perl 4, a +"Precedence problem" warning is produced. This warning used erroneously to +apply to fully-qualified bareword handle names not followed by C<||>. This +has been corrected. -=item * +=item * C with 0 or 1 argument +would sometimes return a name that could not be used to refer to the +filehandle, or sometimes it would return C even when a filehandle +was selected. Now it returns a typeglob reference in such cases. -=back +=item * C and tied variables -=head1 Selected Bug Fixes +C no longer ignores FETCH on tied variables as it used +to most of the time [perl #97956]. -XXX Important bug fixes in the core language are summarised here. -Bug fixes in files in F and F are best summarised in -L. +=item * C and numbers -[ List each fix as a =item entry ] +C no longer ignores some arguments that it thinks are +numeric, while treating others as filehandle names. It is now consistent +for flat scalars (i.e., not references). -=over 4 +=item * Lvalue subs and strict mode -=item * "b . COND" in the debugger has been fixed +Lvalue sub calls that are not determined to be such at compile time +(C<&$name> or &{"name"}) are no longer exempt from strict refs if they +occur in the last statement of an lvalue subroutine [perl #102486]. -Breaking on the current line with C was broken by previous work and -has now been fixed. +=item * Non-lvalue sub calls in potentially lvalue context -=back +Sub calls whose subs are not visible at compile time, if +they occurred in the last statement of an lvalue subroutine, +would reject non-lvalue subroutines and die with "Can't modify non-lvalue +subroutine call" [perl #102486]. -=head1 Known Problems +Non-lvalue sub calls whose subs I visible at compile time exhibited +the opposite bug. If the call occurred in the last statement of an lvalue +subroutine, there would be no error when the lvalue sub was called in +lvalue context. Perl would blindly assign to the temporary value returned +by the non-lvalue subroutine. -XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any -tests that had to be Ced for the release would be noted here, unless -they were specific to a particular platform (see below). +=item * AUTOLOADing lvalue subs -This is a list of some significant unfixed bugs, which are regressions -from either 5.XXX.XXX or 5.XXX.XXX. +C routines used to take precedence over the actual sub being +called (i.e., when autoloading wasn't needed), for sub calls in lvalue or +potential lvalue context, if the subroutine was not visible at compile +time. -[ List each fix as a =item entry ] +=item * C and tied C<@DB::args> -=over 4 +C sets C<@DB::args> to the subroutine arguments when called from +the DB package. It used to crash when doing so if C<@DB::args> happened to +be tied. Now it croaks instead. + +=item * Tying C<@_> + +Under debugging builds, this code: + + sub TIEARRAY{bless[]} + sub { + tie @_, ""; + \@_; + }->(1); + +use to produce an "av_reify called on tied array" warning. It doesn't any +more. + +=item * Unrecognised switches on C<#!> line + +If a switch, such as B<-x>, that cannot occur on the C<#!> line is used +there, perl dies with "Can't emulate...". + +It used to produce the same message for switches that perl did not +recognise at all, whether on the command line or the C<#!> line. + +Now it produces the "Unrecognized switch" error message [perl #104288]. + +=item * C and SIGCHLD + +C now temporarily blocks the SIGCHLD signal handler, to prevent the +signal handler from stealing the exit status [perl #105700]. + +=item * Deleting methods via C + +Deletion of methods via C syntax used to update +method caches if called in void context, but not scalar or list context. +Now it always updates those caches. + +=item * Hash element deletion and destructors + +When hash elements are deleted in void context, the internal hash entry is +now freed before the value is freed, to prevent destructors called by that +latter freeing from seeing the hash in an inconsistent state. It was +possible to cause double-frees if the destructor freed the hash itself +[perl #100340]. + +=item * C<(s)printf>'s %n formatting code + +The %n formatting code, which causes the number of characters to be +assigned to the next argument to C or C now actually +assigns the number of characters, instead of the number of bytes. + +It also works now with special lvalue functions like C and with +nonexistent hash and array elements [perl #103492]. + +=item * Typeglobs and threads + +Typeglobs returned from threads are no longer cloned if the parent thread +already has a glob with the same name. This means that returned +subroutines will now assign to the right package variables [perl #107366]. + +=item * C + +In Perl 5.14, C was changed to create a new variable not tied to +anything, even if $_ was tied before that. But, due to an oversight, it +would still call FETCH once on a tied $_ before replacing it with the new +variable. This has been fixed [perl #105912]. + +=item * Returning tied variables + +When returning a value from a non-lvalue subroutine, Perl copies the value. +Sometimes it cheats for the sake of speed, and does not copy the value if +it makes no observable difference. This optimisation was erroneously +allowing the copy to be skipped on tied variables, causing a difference in +behaviour depending on the tied variable's reference count. This has been +fixed [perl #95548]. + +=item * C<{@a = sort}> no longer crashes + +This particular piece of code (C with no arguments assigned to an +array, inside a block with no C<;>) started crashing in an earlier 5.15.x +release. It has been fixed. + +=item * C and read-only scalars + +C now refuses to modify read-only scalars [perl #91850]. + +=item * C with undefined mode + +C now only warns once, rather than three times, if the mode +argument is C [perl #90064]. + +=item * Freeing an aggregate during list assignment + +If list assignment to a hash or array triggered destructors that freed the +hash or array itself, a crash would ensue. This is no longer the case +[perl #107440]. + +=item * Confused internal bookkeeping with @ISA arrays + +Creating a weak reference to an @ISA array or accessing the array index +(C<$#ISA>) could result in confused internal bookkeeping for elements +subsequently added to the @ISA array. For instance, creating a weak +reference to the element itself could push that weak reference on to @ISA; +and elements added after use of C<$#ISA> would be ignored by method lookup +[perl #85670]. + +=item * DELETE on scalar ties + +Tying an element of %ENV or C<%^H> and then deleting that element would +result in a call to the tie object's DELETE method, even though tying the +element itself is supposed to be equivalent to tying a scalar (the element +is, of course, a scalar) [perl #67490]. + +=item * Freeing $_ inside C or C + +Freeing $_ inside a C or C block or a code block embedded in a +regular expression used to result in double frees [perl #92254, #92256]. + +=item * Warnings with C<+=> + +The C<+=> operator does not usually warn when the left-hand side is +C, but it was doing so for tied variables. This has been fixed +[perl #44895]. + +=item * Tying and autovivification + +When Perl autovivifies an element of a tied array or hash (which entails +calling STORE with a new reference), it now calls FETCH immediately after +the STORE, instead of assuming that FETCH would have returned the same +reference. This can make it easier to implement tied objects [perl #35865, #43011]. + +=item * C<@&> and C<$&> + +Mentioning a variable named "&" other than C<$&> (i.e., C<@&> or C<%&>) no +longer stops C<$&> from working. The same applies to variables named "'" +and "`" [perl #24237]. + +=item * Stacked filetests + +C<-T> and C<-B> now work when stacked up with other filetest operators +[perl #77388]. + +=item * Filetests and stat buffers + +Perl keeps several internal variables to keep track of the last stat +buffer, from which file(handle) it originated, what type it was, and +whether the last stat succeeded. + +There were various cases where these could get out of synch, resulting in +inconsistent or erratic behaviour in edge cases (every mention of C<-T> +applies to C<-B> as well): + +=over + +=item * + +C<-T I>, even though it does a C, was not resetting the last +stat type, so an C following it would merrily return the wrong +results. Also, it was not setting the success status. + +=item * + +Freeing the handle last used by C or a filetest could result in +S> using an unrelated handle. + +=item * + +C with an IO reference (as returned by C<*STDIO{IO}>, for instance) +would not reset the stat type. + +=item * + +C with an IO reference was not recording the filehandle for +S> to use. + +=item * + +The presence of fatal warnings could cause the stat buffer not to be reset +for a filetest operator on an unopened filehandle or C<-l> on any handle. =item * -XXX +Fatal warnings would stop C<-T> from setting C<$!>. + +=item * + +When the last stat was on an unreadable file, C<-T _> is supposed to +return C, leaving the last stat buffer unchanged. But it was +setting the stat type, causing C to stop working. + +=item * + +C<-T I> was not resetting the internal stat buffers for +unreadable files. =back -=head1 Obituary +These have all been fixed. + +=item * C + +An earlier 5.15.x release caused this construct to stop the C<%!> hash +from working. Likewise C and C caused +C<%+> and C<%->, respectively, to stop working. This has been fixed. + +=item * C<-T _> with no preceding C + +This used to produce a confusing "uninitialized" warning, even though there +is no visible uninitialized value to speak of. + +=item * C> and fstat failures -XXX If any significant core contributor has died, we've added a short obituary -here. +If the operating system's C function failed, C would warn +about an unopened handle, even though that was not the case. This has been +fixed. + +=item * C> + +C is documented to fall back to C (with a warning) when given +a filehandle. When passed an IO reference, it was actually doing the +equivalent of S> and ignoring the handle. + +=item * Crashes with warnings + +Two warning messages that mention variable names started crashing in +5.15.5, but have been fixed [perl #106726, #107656]. + +=item * Bitwise assignment operators and copy-on-write + +In 5.14.0, the bitwise assignment operators C<|=>, C<^=> and C<&=> starting +leaving the left-hand side undefined if it happened to be a copy-on-write +string. This has been fixed [perl #108480]. + +=item * Three problematic Unicode characters now work better in regex pattern matching under C + +In the past, three Unicode characters: +LATIN SMALL LETTER SHARP S, +GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS, +and +GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS, +along with the sequences that they fold to +(including "ss" in the case of LATIN SMALL LETTER SHARP S), +did not properly match under C. 5.14.0 fixed some of these cases, +but introduced others, including a panic when one of the characters or +sequences was used in the C<(?(DEFINE)> regular expression predicate. +The known bugs that were introduced in 5.14 have now been fixed; as well +as some other edge cases that have never worked until now. All these +involve using the characters and sequences outside bracketed character +classes under C. This closes [perl #98546]. + +There remain known problems when using certain characters with +multi-character folds inside bracketed character classes, including such +constructs as C. These +remaining bugs are addressed in [perl #89774]. + +=back =head1 Acknowledgements -XXX Generate this with: +Perl 5.15.7 represents approximately 4 weeks of development since Perl 5.15.6 +and contains approximately 50,000 lines of changes across 470 files from 28 +authors. + +Perl continues to flourish into its third decade thanks to a vibrant community +of users and developers. The following people are known to have contributed the +improvements that became Perl 5.15.7: + +Alberto Simões, Brian Fraser, Chris 'BinGOs' Williams, Craig A. Berry, Dave +Rolsky, David Mitchell, Eric Brine, Father Chrysostomos, Florian Ragwitz, +H.Merijn Brand, Hojung Youn, James E Keenan, Joel Berger, Joshua ben Jore, Karl +Williamson, Leon Timmermans, Matthew Horsfall, Michael Witten, Nicholas Clark, +Ricardo Signes, Shlomi Fish, Steffen Müller, Steffen Schwigon, Todd Rinaldo, +Tom Christiansen, Tom Hukins, Tony Cook, Ævar Arnfjörð Bjarmason. + +The list above is almost certainly incomplete as it is automatically generated +from version control history. In particular, it does not include the names of +the (very much appreciated) contributors who reported issues to the Perl bug +tracker. + +Many of the changes included in this version originated in the CPAN modules +included in Perl's core. We're grateful to the entire CPAN community for +helping Perl to flourish. - perl Porting/acknowledgements.pl v5.15.6..HEAD +For a more complete list of all of Perl's historical contributors, please see +the F file in the Perl source distribution. =head1 Reporting Bugs