X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/b10906fb63d47e840aa349d3c52c6615644dda75..499333dc7a261e5b3794e032f578b461bd895084:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index a5f9237..016c1bf 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -5,15 +5,15 @@ [ this is a template for a new perldelta file. Any text flagged as XXX needs to be processed before release. ] -perldelta - what is new for perl v5.21.1 +perldelta - what is new for perl v5.21.4 =head1 DESCRIPTION -This document describes differences between the 5.21.0 release and the 5.21.1 +This document describes differences between the 5.21.3 release and the 5.21.4 release. -If you are upgrading from an earlier release such as 5.20.0, first read -L, which describes differences between 5.20.0 and 5.21.0. +If you are upgrading from an earlier release such as 5.21.2, first read +L, which describes differences between 5.21.2 and 5.21.3. =head1 Notice @@ -27,26 +27,6 @@ here, but most should go in the L section. [ List each enhancement as a =head2 entry ] -=head2 C now ignores any Unicode pattern white space - -The C regular expression modifier allows the pattern to contain -white space and comments, both of which are ignored, for improved -readability. Until now, not all the white space characters that Unicode -designates for this purpose were handled. The additional ones now -recognized are -U+0085 NEXT LINE, -U+200E LEFT-TO-RIGHT MARK, -U+200F RIGHT-TO-LEFT MARK, -U+2028 LINE SEPARATOR, -and -U+2029 PARAGRAPH SEPARATOR. - -=head2 S> can restrict which locale categories are affected - -It is now possible to pass a parameter to S> to specify -a subset of locale categories to be locale-aware, with the remaining -ones unaffected. See L for details. - =head1 Security XXX Any security-related notices go here. In particular, any security @@ -63,71 +43,12 @@ XXX For a release on a stable branch, this section aspires to be: If any exist, they are bugs, and we request that you submit a report. See L below. -=head2 In double-quotish C<\cI>, I must now be a printable ASCII character - -In prior releases, failure to do this raised a deprecation warning. - -=head2 Splitting the tokens C<(?> and C<(*> in regular expressions is -now a fatal compilation error. - -These had been deprecated since v5.18. - -=head2 5 additional characters are treated as white space under C in -regex patterns (unless escaped) - -The use of these characters with C outside bracketed character -classes and when not preceeded by a backslash has raised a deprecation -warning since v5.18. Now they will be ignored. See LfooEx> -for the list of the five characters. - -=head2 Comment lines within S> now are ended only by a C<\n> - -S> is an experimental feature, introduced in v5.18. It operates -as if C is always enabled. But there was a difference, comment -lines (following a C<#> character) were terminated by anything matching -C<\R> which includes all vertical whitespace, such as form feeds. For -consistency, this is now changed to match what terminates comment lines -outside S>, namely a C<\n> (even if escaped), which is the -same as what terminates a heredoc string and formats. - -=head2 Omitting % and @ on hash and array names is no longer permitted - -Really old Perl let you omit the @ on array names and the % on hash -names in some spots. This has issued a deprecation warning since Perl -5.0, and is no longer permitted. - -=head2 C<"$!"> text is now in English outside C<"use locale"> scope - -Previously, the text, unlike almost everything else, always came out -based on the current underlying locale of the program. (Also affected -on some systems is C<"$^E>".) For programs that are unprepared to -handle locale, this can cause garbage text to be displayed. It's better -to display text that is translatable via some tool than garbage text -which is much harder to figure out. - -=head2 C<"$!"> text will be returned in UTF-8 when appropriate - -The stringification of C<$!> and C<$^E> will have the UTF-8 flag set -when the text is actually non-ASCII UTF-8. This will enable programs -that are set up to be locale-aware to properly output messages in the -user's native language. Code that needs to continue the 5.20 and -earlier behavior can do the stringification within the scopes of both -'use bytes' and 'use locale ":messages". No other Perl operations will -be affected by locale; only C<$!> and C<$^E> stringification. The -'bytes' pragma causes the UTF-8 flag to not be set, just as in previous -Perl releases. This resolves [perl #112208]. +[ List each incompatible change as a =head2 entry ] =head1 Deprecations XXX Any deprecated features, syntax, modules etc. should be listed here. -=head2 Using a NO-BREAK space in a character alias for C<\N{...}> is now -deprecated - -This non-graphic character is essentially indistinguishable from a -regular space, and so should not be allowed. See -L. - =head2 Module removals XXX Remove this section if inapplicable. @@ -168,18 +89,7 @@ There may well be none in a stable release. =item * -Many internal functions have been refactored to improve performance and reduce -their memory footprints. - -L<[perl #121436]|https://rt.perl.org/Ticket/Display.html?id=121436> -L<[perl #121906]|https://rt.perl.org/Ticket/Display.html?id=121906> -L<[perl #121969]|https://rt.perl.org/Ticket/Display.html?id=121969> - -=item * - -C<-T> and C<-B> filetests will return sooner when an empty file is detected. - -L +XXX =back @@ -209,98 +119,56 @@ XXX =item * -L has been upgraded from version 1.3301 to 1.34. - -Carp::Heavy now ignores version mismatches with Carp if Carp is newer -than 1.12, since Carp::Heavy's guts were merged into Carp at that -point. -L<[perl #121574]|https://rt.perl.org/Ticket/Display.html?id=121574> - -=item * - -L has been upgraded from version 2.60_01 to 2.62. - -B now has better error handling when the encoding name is nonexistent, -and a build breakage when upgrading L in perl-5.8.2 and earlier has -been fixed. +L has been upgraded from version A.xx to B.yy. =item * -The libnet collection of modules has been upgraded from version 1.25 to 1.27. +L has been upgraded from version 1.27 to 1.28. -There are only whitespace changes to the installed files. +C and C will now warn if passed inappropriate or +misspelled options. =item * -The Locale-Codes collection of modules has been upgraded from vesion 3.30 to 3.31. +L has been upgraded from version 0.992 to 0.993. -Fixed a bug in the scripts used to extract data from spreadsheets that -prevented the SHP currency code from being found. -L<[cpan #94229]|https://rt.cpan.org/Ticket/Display.html?id=94229> =item * -L has been upgraded from version 1.9993 to 1.9994. - -Synchronize POD changes from the CPAN release. - -C<< Math::BigFloat->blog(x) >> would sometimes return blog(2*x) when -the accuracy was greater than 70 digits. - -The result of C<< Math::BigFloat->bdiv() >> in list context now -satisfies C<< x = quotient * divisor + remainder >>. +L has been upgraded from version 0.280216 to 0.280219. +[perl #122675]. =item * -L has been upgraded from version 0.2606 to 0.2607. - -Synchronize POD changes from the CPAN release. +L has been upgraded from version 1.65 to 1.66. +[perl #122415]. =item * -L has been upgraded from version 1.000022 to 1.000024. - -Support installations on older perls with an L earlier -than 6.63_03 +L has been upgraded from version 0.047 to 0.048. =item * -L has been upgraded from version 1.44 to 1.45. +L has been upgraded from version 5.021003 to 5.021004. =item * -A mismatch between the documentation and the code in utf8::downgrade() -was fixed in favour of the documentation. The optional second argument -is now correctly treated as a perl boolean (true/false semantics) and -not as an integer. +L has been upgraded from version 1.42 to 1.43. =item * -fork() in the debugger under C will now create a new window for -the forked process. L<[perl -#121333]|https://rt.perl.org/Ticket/Display.html?id=121333> - -The debugger now saves the current working directory on startup and -restores it when you restart your program with C or . L<[perl -#121509]|https://rt.perl.org/Ticket/Display.html?id=121509> - -L has been upgraded from version 1.04 to 1.07. - -Version 0.67's improved discontiguous contractions is invalidated by default -and is supported as a parameter 'long_contraction'. +L has been upgraded from version 3.23 to 3.24. =item * -L has been upgraded from version 1.17 to 1.18. +L has been upgraded from version 1.31 to 1.32. -The XSUB implementation has been removed in favour of pure Perl. +It now accepts fully-qualified constant names, allowing constants to be +defined in packages other than the caller. =item * -L has been upgraded from version 0.16 to 0.17. - -Minor bug fixes and documentation fixes to Hash::Util::hash_stats() - +L has been upgraded from version 1.95 to 1.96. =back @@ -333,62 +201,13 @@ XXX Changes which significantly change existing files in F go here. However, any changes to F should go in the L section. -=head3 L - -=over 4 - -=item * - -C<-l> now notes that it will return false if symlinks aren't supported by the -file system. - -L<[perl #121523]|https://rt.perl.org/Ticket/Display.html?id=121523> - -=back - -=head3 L - -=over 4 - -=item * - -C - Fix documentation to mention the use of C instead of -C. - -L<[perl #121869]|https://rt.perl.org/Ticket/Display.html?id=121869> - -=back - -=head3 L - -=over 4 - -=item * - -Updated documentation for the C C target. - -L<[perl #121431]|https://rt.perl.org/Ticket/Display.html?id=121431> - -=back - -=head3 L - -=over 4 - -=item * - -The C modifier has been clarified to note that comments cannot be continued -onto the next line by escaping them. - -=back - -=head3 L +=head3 L =over 4 =item * -The documentation includes many clarifications and fixes. +XXX Description of the change here =back @@ -422,13 +241,7 @@ XXX L =item * -L: - -(S experimental::win32_perlio) The C<:win32> PerlIO layer is -experimental. If you want to take the risk of using this layer, -simply disable this warning: - - no warnings "experimental::win32_perlio"; +XXX L =back @@ -440,10 +253,7 @@ XXX Changes (i.e. rewording) of diagnostic messages go here =item * -L - -This warning is now only produced when the newline is at the end of -the filename. +XXX Describe change here =back @@ -456,16 +266,13 @@ Most of these are built within the directory F. entries for each change Use L with program names to get proper documentation linking. ] -=head2 F +=head2 L =over 4 =item * -The F directory has been removed from the Perl core. - -This removes find2perl, s2p and a2p. They have all been released to CPAN as -separate distributions (App::find2perl, App::s2p, App::a2p). +XXX =back @@ -482,15 +289,7 @@ L section, instead. =item * -C now supports parallel testing. - -For example: - - TEST_JOBS=9 make test.valgrind - -See L for more information. - -L<[perl #121431]|https://rt.perl.org/Ticket/Display.html?id=121431> +XXX =back @@ -540,12 +339,9 @@ XXX List any platforms that this version of perl no longer compiles on. =over 4 -=item NeXTSTEP/OPENSTEP +=item XXX-some-platform -NeXTSTEP was proprietary OS bundled with NeXT's workstations in the early -to mid 90's; OPENSTEP was an API specification that provided a NeXTSTEP-like -environment on a non-NeXTSTEP system. Both are now long dead, so support -for building Perl on them has been removed. +XXX =back @@ -570,26 +366,15 @@ 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. -=over 4 +[ List each change as a =item entry ] -=item * - -The deprecated variable C has been removed. +=over 4 =item * -Perl now tries to keep the locale category C set to "C" -except around operations that need it to be set to the program's -underlying locale. This protects the many XS modules that cannot cope -with the decimal radix character not being a dot. Prior to this -release, Perl initialized this category to "C", but a call to -C would change it. Now such a call will change the -underlying locale of the C category for the program, but the -locale exposed to XS code will remain "C". There is an API under -development for those relatively few modules that need to use the -underlying locale. This API will be nailed down during the course of -developing v5.21. Send email to L for -guidance. +The parser no longer gets confused by C<\U=> within a double-quoted string. +It used to roduce a syntax error, but now compiles it correctly. +[perl #80368] =back @@ -604,59 +389,58 @@ files in F and F are best summarized in L. =item * -index() and rindex() no longer crash when used on strings over 2GB in -size. -L<[perl #121562]|https://rt.perl.org/Ticket/Display.html?id=121562>. +XXX + +=item * + +Compile-time checking of constant dereferencing (e.g., +C<< my_constant->() >>) has been removed, since it was not taking +overloading into account. [perl #69456] [perl #122607] + +=item * + +Constant dereferencing now works correctly for typeglob constants. +Previously the glob was stringified and its name looked up. Now the glob +itself is used. [perl #69456] + +=item * + +When parsing a funny character ($ @ % &) followed by braces, the parser no +longer tries to guess whether it is a block or a hash constructor (causing +a syntax error when it guesses the latter), since it can only be a block. =item * -A small previously intentional memory leak in PERL_SYS_INIT/PERL_SYS_INIT3 on -Win32 builds was fixed. This might affect embedders who repeatedly create and -destroy perl engines within the same process. +C now frees the referent immediately, instead of hanging +on to it until the next statement. [perl #122556] =item * -C now returns the data for the program's underlying -locale even when called from outside the scope of S>. +Various cases where the name of a sub is used (autoload, overloading, error +messages) used to crash for lexical subs, but have been fixed. =item * -C now works properly on platforms which don't have -C and/or C, or for which Perl has been compiled -to disregard either or both of these locale categories. In such -circumstances, there are now no entries for the corresponding values in -the hash returned by C. +Bareword lookup now tries to avoid vivifying packages if it turns out the +bareword is not going to be a subroutine name. =item * -C now marks appropriately the values it returns as -UTF-8 or not. Previously they were always returned as a bytes, even if -they were supposed to be encoded as UTF-8. +Compilation of anonymous constants (e.g., C) no longer +deletes any subroutine named C<__ANON__> in the current package. Not only +was C<*__ANON__{CODE}> cleared, but there was a memory leak, too. This bug +goes back to perl 5.8.0. =item * -On Microsoft Windows, within the scope of C>, the following -POSIX character classes gave results for many locales that did not -conform to the POSIX standard: -C<[[:alnum:]]>, -C<[[:alpha:]]>, -C<[[:blank:]]>, -C<[[:digit:]]>, -C<[[:graph:]]>, -C<[[:lower:]]>, -C<[[:print:]]>, -C<[[:punct:]]>, -C<[[:upper:]]>, -C<[[:word:]]>, -and -C<[[:xdigit:]]>. -These are because the underlying Microsoft implementation does not -follow the standard. Perl now takes special precautions to correct for -this. +Stub declarations like C and C no longer wipe out +constants of the same name declared by C. This bug was +introduced in perl 5.10.0. =item * -Many issues have been detected by L and +Under some conditions a warning raised in compilation of regular +expression patterns could be displayed multiple times. This is now fixed. =back @@ -697,7 +481,7 @@ here. XXX Generate this with: - perl Porting/acknowledgements.pl v5.21.1..HEAD + perl Porting/acknowledgements.pl v5.21.3..HEAD =head1 Reporting Bugs