X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/5952a8408bfeaf682bc0eb5126e274aa28dc5626..04139aa0b51c7b5d9f80f77b10f85ce4c65a4cf6:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index fc4f564..de2ba9c 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.27.6 +perldelta - what is new for perl v5.27.7 =head1 DESCRIPTION -This document describes differences between the 5.27.5 release and the 5.27.6 +This document describes differences between the 5.27.6 release and the 5.27.7 release. -If you are upgrading from an earlier release such as 5.27.4, first read -L, which describes differences between 5.27.4 and 5.27.5. +If you are upgrading from an earlier release such as 5.27.5, first read +L, which describes differences between 5.27.5 and 5.27.6. =head1 Notice @@ -27,24 +27,6 @@ here, but most should go in the L section. [ List each enhancement as a =head2 entry ] -=head2 Initialisation of aggregate state variables - -A persistent lexical array or hash variable can now be initialized, -by an expression such as C. Initialization of a -list of persistent lexical variables is still not possible. - -=head2 Full-size inode numbers - -On platforms where inode numbers are of a type larger than perl's native -integer numerical types, L will preserve the full -content of large inode numbers by returning them in the form of strings of -decimal digits. Exact comparison of inode numbers can thus be achieved by -comparing with C rather than C<==>. Comparison with C<==>, and other -numerical operations (which are usually meaningless on inode numbers), -work as well as they did before, which is to say they fall back to -floating point, and ultimately operate on a fairly useless rounded inode -number if the real inode number is too big for the floating point format. - =head1 Security XXX Any security-related notices go here. In particular, any security @@ -63,47 +45,13 @@ XXX For a release on a stable branch, this section aspires to be: [ List each incompatible change as a =head2 entry ] -=head2 Yada-yada is now strictly a statement - -By the time of its initial stable release in Perl 5.12, the C<...> -(yada-yada) operator was explicitly intended to serve as a statement, -not an expression. However, the original implementation was confused -on this point, leading to inconsistent parsing. The operator was -accidentally accepted in a few situations where it did not serve as a -complete statement, such as - - ... . "foo"; - ... if $a < $b; - -The parsing has now been made consistent, permitting yada-yada only as -a statement. Affected code can use C to put a yada-yada into -an arbitrary expression context. - -=head2 Subroutines no longer need typeglobs - -Perl 5.22.0 introduced an optimization allowing subroutines to be stored in -packages as simple sub refs, not requiring a full typeglob (thus -potentially saving large amounts of memeory). However, the optimization -was flawed: it only applied to the main package. - -This optimization has now been extended to all packages. This may break -compatibility with introspection code that looks inside stashes and expects -everything in them to be a typeglob. - -When this optimization happens, the typeglob still notionally exists, so -accessing it will cause the stash entry to be upgraded to a typeglob. The -optimization does not apply to XSUBs or exported subroutines, and calling a -method will undo it, since method calls cache things in typeglobs. - -[perl #129916] [perl #132252] - =head1 Deprecations XXX Any deprecated features, syntax, modules etc. should be listed here. =head2 Module removals -XXX Remove this section if inapplicable. +XXX Remove this section if not applicable. The following modules will be removed from the core distribution in a future release, and will at that time need to be installed from CPAN. @@ -121,7 +69,7 @@ not usually on concerns over their design. =over -=item XXX +=item L and its associated Country, Currency and Language modules XXX Note that deprecated modules should be listed here even if they are listed as an updated module in the L section. @@ -141,43 +89,7 @@ There may well be none in a stable release. =item * -Many string concatenation expressions are now considerably faster, due -to the introduction internally of a C opcode which combines -multiple concatenations, and optionally a C<=> or C<.=>, into a single -action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this -whole expression is now handled as a single op: - - $s .= "a=$a b=$b\n" - -As a special case, if the LHS of an assign is a lexical variable or -C, the op itself handles retrieving the lexical variable, which -is faster. - -In general, the more the expression includes a mix of constant strings and -variable expressions, the longer the expression, and the more it mixes -together non-utf8 and utf8 strings, the more marked the performance -improvement. For example on a C system, this code has been -benchmarked running four times faster: - - my $s; - my $a = "ab\x{100}cde"; - my $b = "fghij"; - my $c = "\x{101}klmn"; - - for my $i (1..10_000_000) { - $s = "\x{100}wxyz"; - $s .= "foo=$a bar=$b baz=$c"; - } - -In addition, C expressions which have a constant format -containing only C<%s> and C<%%> format elements, and which have a fixed -number of arguments, are now also optimised into a C op. - -=item * - -Subroutines in packages no longer need to be stored in typeglobs, saving -large amounts of memory. See L -under L, above. +XXX =back @@ -197,23 +109,13 @@ release manager will have to investigate the situation carefully.) [ Within each section, list entries as an =item entry ] -=head2 Removal of use vars - -=over 4 - -The usage of "use vars" has been discouraged since the introduction of our in -Perl 5.6.0. Where possible the usage of this pragma has now been removed from -the Perl source code. - -=back - =head2 New Modules and Pragmata =over 4 =item * -XXX +XXX Remove this section if not applicable. =back @@ -223,15 +125,10 @@ XXX =item * -L has been upgraded from version 1.43 to 1.44. - -If a package on the call stack contains a constant named C, Carp no -longer throws a "Not a GLOB reference" error. - -=item * +L has been upgraded from version 3.54 to 3.55 -L has been upgraded from version 2.32 to 2.33. It will now use -Time::HiRes utime where available (RT #132401). +B: L is deprecated in core and will be removed +from Perl 5.30. =back @@ -270,26 +167,12 @@ section. Additionally, the following selected changes have been made: -=head3 L - -This now gives more ideas as to workarounds to the issue that was -introduced in Perl 5.18 (but not documented explicitly in its perldelta) -for the fact that some Unicode C rules cause a few sequences such as - - (? =over 4 =item * -The section on reference counting in L has been heavily revised, -to describe references in the way a programmer needs to think about them -rather than in terms of the physical data structures. - -=item * - XXX Description of the change here =back @@ -324,7 +207,12 @@ XXX L =item * -XXX L +L + +(W syntax) You used the old package separator, "'", in a variable +named inside a double-quoted string; e.g., C<"In $name's house">. This +is equivalent to C<"In $name::s house">. If you meant the former, put +a backslash before the apostrophe (C<"In $name\'s house">). =back @@ -336,13 +224,6 @@ XXX Changes (i.e. rewording) of diagnostic messages go here =item * -The diagnostic C has changed to C, because list-context initialization of -single aggregate state variables is now permitted. - -=item * - XXX Describe change here =back @@ -377,43 +258,9 @@ L section, instead. =over 4 -=item C89 requirement - -Perl has been documented as requiring a C89 compiler to build since October -1998. A variety of simpliifcations have now been made to Perl's internals to -rely on the features specified by the C89 standard. We believe that this -internal change hasn't altered the set of platforms that Perl builds on, but -please report a bug if Perl now has new problems building on your platform. - -=item New probes - -=over 2 - -=item HAS_BUILTIN_ADD_OVERFLOW - -=item HAS_BUILTIN_MUL_OVERFLOW - -=item HAS_BUILTIN_SUB_OVERFLOW - -=item HAS_THREAD_SAFE_NL_LANGINFO_L - -=item HAS_LOCALECONV_L - -=item HAS_MBRLEN - -=item HAS_MBRTOWC - -=item HAS_MEMRCHR - -=item HAS_NANOSLEEP - -=item HAS_STRNLEN - -=item HAS_STRTOLD_L - -=item I_WCHAR +=item * -=back +XXX =back @@ -489,9 +336,10 @@ L section. =over 4 -=item XXX-some-platform +=item Windows -XXX +We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++ +versions earlier than 14.1. =back @@ -507,35 +355,7 @@ well. =item * -A new optimisation phase has been added to the compiler, -C, which does a top-down scan of a complete optree -just before the peephole optimiser is run. This phase is not currently -hookable. - -=item * - -An C op has been added. At C time, a -chain of C and C ops, together optionally with an -C and/or C, are combined into a single -C op. The op is of type C, and the aux array -contains the argument count, plus a pointer to a constant string and a set -of segment lengths. For example with - - my $x = "foo=$foo, bar=$bar\n"; - -the constant string would be C<"foo=, bar=\n"> and the segment lengths -would be (4,6,1). If the string contains characters such as C<\x80>, whose -representation changes under utf8, two sets of strings plus lengths are -precomputed and stored. - -=item * - -Direct access to L|perlapi/PL_keyword_plugin> is not -safe in the presence of multithreading. A new -L|perlapi/wrap_keyword_plugin> function has been -added to allow XS modules to safely define custom keywords even when -loaded from a thread, analoguous to L|perlapi/PL_check> / -L|perlapi/wrap_op_checker>. +XXX =back @@ -550,31 +370,7 @@ files in F and F are best summarized in L. =item * -C, C, and file test operators now fail if given a -filename containing a nul character, in the same way that C -already fails. - -=item * - -The in-place reverse optimisation now correctly strengthens weak -references using the L|perlapi/sv_rvunweaken> -API function. - -=item * - -Fixed a read before buffer when parsing a range starting with C<\N{}> -at the beginning of the character set for the transliteration -operator. [perl #132245] - -=item * - -Fixed a leaked SV when parsing an empty C<\N{}> at compile-time. -[perl #132245] - -=item * - -Calling C on a directory or block device now yields a meaningful -error code in C<$!>. [perl #125774] +XXX =back @@ -607,14 +403,14 @@ the perldelta of a previous release. =head1 Obituary -XXX If any significant core contributor has died, we've added a short obituary -here. +XXX If any significant core contributor or member of the CPAN community has +died, add a short obituary here. =head1 Acknowledgements XXX Generate this with: - perl Porting/acknowledgements.pl v5.27.5..HEAD + perl Porting/acknowledgements.pl v5.27.6..HEAD =head1 Reporting Bugs