X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/25219f3fabc14ca6ead919d570f0d33e9fa12213..364b8cf9b4fc5c83097a45783243e57a1440aadf:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 6c6d246..94b416c 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -27,6 +27,11 @@ here, but most should go in the L section. [ List each enhancement as a =head2 entry ] +=head2 The C C<%j> format size modifier is now available with +pre-C99 compilers + +The actual size used depends on the platform, so remains unportable. + =head1 Security XXX Any security-related notices go here. In particular, any security @@ -45,10 +50,29 @@ XXX For a release on a stable branch, this section aspires to be: [ List each incompatible change as a =head2 entry ] +=head2 Over-radix digits in floating point literals + +Octal and binary floating point literals used to permit any hexadecimal +digit to appear after the radix point. The digits are now restricted +to those appropriate for the radix, as digits before the radix point +always were. + =head1 Deprecations XXX Any deprecated features, syntax, modules etc. should be listed here. +=head2 Assignment to C<$[> will be fatal in Perl 5.30 + +Assigning a non-zero value to L|perlvar/$[> has been deprecated +since Perl 5.12, but was never given a deadline for removal. This has +now been scheduled for Perl 5.30. + +=head2 hostname() won't accept arguments in Perl 5.32 + +Passing arguments to C was already deprecated, +but didn't have a removal date. This has now been scheduled for Perl +5.32. [perl #124349] + =head2 Module removals XXX Remove this section if not applicable. @@ -69,7 +93,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. @@ -125,9 +149,24 @@ XXX Remove this section if not applicable. =item * -L has been upgraded from version A.xx to B.yy. +L has been upgraded from version 3.54 to 3.55 + +B: L is deprecated in core and will be removed +from Perl 5.30. + +=item * + +L has been upgraded from version 2.19 to 2.20. +The documentation now better describes the problems that arise when +returning values from threads, and no longer warns about creating threads +in C blocks. [perl #96538] -If there was something important to note about this change, include that here. +=item * + +L has been upgraded from version 2.167_02 to 2.169. +Quoting of glob names now obeys the Useqq option [perl #119831]. +Attempts to set an option to C through a combined getter/setter +method are no longer mistaken for getter calls [perl #113090]. =back @@ -166,7 +205,82 @@ section. Additionally, the following selected changes have been made: -=head3 L +=head3 L + +The API functions C, C, and C +are now documented comprehensively, where previously the only +documentation was a reference to the L tutorial. + +The documentation of C has been belatedly updated to +account for the removal of lexical C<$_>. + +The API functions C and C are +documented much more comprehensively than before. + +=head3 L + +The general explanation of operator precedence and associativity has +been corrected and clarified. [perl #127391] + +The documentation for the C<\> referencing operator now explains the +unusual context that it supplies to its operand. [perl #131061] + +=head3 L + +The means to disambiguate between code blocks and hash constructors, +already documented in L, are now documented in L too. +[perl #130958] + +=head3 L + +The documentation for the C operator no longer says that +autovivification behaviour "may be fixed in a future release". +We've determined that we're not going to change the default behaviour. +[perl #127712] + +A couple of small details in the documentation for the C operator +have been clarified. [perl #124428] + +The description of C<@INC> hooks in the documentation for C +has been corrected to say that filter subroutines receive a useless +first argument. [perl #115754] + +The documentation of C now explains what syntactically qualifies +as a version number for its module version checking feature. + +=head3 L + +For each binary table or property, the documentation now includes which +characters in the range C<\x00-\xFF> it matches, as well as a list of +the first few ranges of code points matched above that. + +=head3 L + +The documentation about set-id scripts has been updated and revised. +[perl #74142] + +A section about using C to run Perl scripts has been added. + +=head3 L + +The examples in L have been made more portable in the way +they exit, and the example that gets an exit code from the embedded Perl +interpreter now gets it from the right place. The examples that pass +a constructed argv to Perl now show the mandatory null C. + +=head3 L + +The description of the conditions under which C will be called +has been clarified. [perl #131672] + +=head3 L + +The internal functions C and C are +now documented. + +=head3 L + +The precise rules for identifying C branches are now stated. =over 4 @@ -196,7 +310,10 @@ and New Warnings =item * -XXX L +LgotoE into a EgivenE block"> + +(F) A "goto" statement was executed to jump into the middle of a C +block. You can't get there from here. See L. =back @@ -206,7 +323,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 @@ -220,6 +342,24 @@ XXX Changes (i.e. rewording) of diagnostic messages go here XXX Describe change here +=item * + +Warnings that a variable or subroutine "masks earlier declaration in same +...", or that an C variable has been redeclared, have been moved to a +new warnings category "shadow". Previously they were in category "misc". + +=item * + +The deprecation warning from C saying that +it doesn't accept arguments now states the Perl version in which the +warning will be upgraded to an error. [perl #124349] + +=item * + +The L entry for the error regarding a set-id script has been +expanded to make clear that the error is reporting a specific security +vulnerability, and to advise how to fix it. + =back =head1 Utility Changes @@ -330,9 +470,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 @@ -342,13 +483,25 @@ 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. -[ List each change as an =item entry ] - =over 4 =item * -XXX +XS modules can now automatically get reentrant versions of system +functions on threaded perls. + +By saying + + #define PERL_REENTRANT + +near the beginning of an C file, it will be compiled so that +whatever reentrant functions perl knows about on that system will +automatically and invisibly be used instead of the plain, non-reentrant +versions. For example, if you write C in your code, on a +system that has C all calls to the former will be translated +invisibly into the latter. This does not happen except on threaded +perls, as they aren't needed otherwise. Be aware that which functions +have reentrant versions varies from system to system. =back @@ -365,6 +518,80 @@ files in F and F are best summarized in L. XXX +=item * + +Digits past the radix point in octal and binary floating point literals +now have the correct weight on platforms where a floating point +significand doesn't fit into an integer type. + +=item * + +C in a C or C block no longer permits the +main program to run, and C in a C block no longer permits +C blocks to run before exiting. [perl #2754] + +=item * + +The canonical truth value no longer has a spurious special meaning as +a callable. It used to be a magic placeholder for a missing C +or C method. It is now treated like any other string C<1>. +[perl #126042] + +=item * + +The C built-in function now checks at compile time that +it has only one parameter expression, and puts it in scalar context, +thus ensuring that it doesn't corrupt the stack at runtime. [perl #4574] + +=item * + +C now performs correct reference counting when aliasing C<$a> and +C<$b>, thus avoiding premature destruction and leakage of scalars if they +are re-aliased during execution of the sort comparator. [perl #92264] + +=item * + +Perl's own C no longer gets confused by attempts to allocate +more than a gigabyte on a 64-bit platform. [perl #119829] + +=item * + +Stacked file test operators in a sort comparator expression no longer +cause a crash. [perl #129347] + +=item * + +An identity C transformation on a reference is no longer mistaken +for that reference for the purposes of deciding whether it can be +assigned to. [perl #130578] + +=item * + +Lengthy hexadecimal, octal, or binary floating point literals no +longer cause undefined behaviour when parsing digits that are of such +low significance that they can't affect the floating point value. +[perl #131894] + +=item * + +C and similar invocations no longer leak the file +handle. [perl #115814] + +=item * + +Some convoluted kinds of regexp no longer cause an arithmetic overflow +when compiled. [perl #131893] + +=item * + +The default typemap, by avoiding C, now no longer leaks when +XSUBs return file handles (C or C). [perl #115814] + +=item * + +Creating a C block as an XS subroutine with a prototype no longer +crashes because of the early freeing of the subroutine. + =back =head1 Known Problems