This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta d3f0c815eccb54ae88550259c06aa395b2274580
[perl5.git] / pod / perldelta.pod
index 0ee5556..ae90c2d 100644 (file)
@@ -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.4
+perldelta - what is new for perl v5.27.7
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.27.3 release and the 5.27.4
+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.2, first read
-L<perl5273delta>, which describes differences between 5.27.2 and 5.27.3.
+If you are upgrading from an earlier release such as 5.27.5, first read
+L<perl5276delta>, which describes differences between 5.27.5 and 5.27.6.
 
 =head1 Notice
 
@@ -27,6 +27,11 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
+=head2  The C<sprintf> 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
@@ -49,9 +54,15 @@ XXX For a release on a stable branch, this section aspires to be:
 
 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<C<$[>|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 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.
@@ -69,7 +80,7 @@ not usually on concerns over their design.
 
 =over
 
-=item XXX
+=item L<Locale::Codes> 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</Modules and Pragmata> section.
@@ -89,7 +100,7 @@ There may well be none in a stable release.
 
 =item *
 
-Slightly improved performance when parsing stash names.  [perl #129990]
+XXX
 
 =back
 
@@ -115,7 +126,7 @@ release manager will have to investigate the situation carefully.)
 
 =item *
 
-XXX
+XXX Remove this section if not applicable.
 
 =back
 
@@ -125,7 +136,15 @@ XXX
 
 =item *
 
-L<XXX> has been upgraded from version A.xx to B.yy.
+L<Locale::Codes> has been upgraded from version 3.54 to 3.55
+
+B<NOTE>: L<Locale::Codes> is deprecated in core and will be removed
+from Perl 5.30.
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.167_02 to 2.168.
+Quoting of glob names now obeys the Useqq option [perl #119831].
 
 =back
 
@@ -164,7 +183,36 @@ section.
 
 Additionally, the following selected changes have been made:
 
-=head3 L<XXX>
+=head3 L<perlapi>
+
+The documentation of C<newGIVENOP()> has been belatedly updated to
+account for the removal of lexical C<$_>.
+
+The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
+documented much more comprehensively than before.
+
+=head3 L<perlop>
+
+The documentation for the C<\> referencing operator now explains the
+unusual context that it supplies to its operand.  [perl #131061]
+
+=head3 L<perlfunc>
+
+The documentation for the C<exists> 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]
+
+=head3 L<perluniprops>
+
+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<perlintern>
+
+The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
+now documented.
 
 =over 4
 
@@ -194,7 +242,10 @@ and New Warnings
 
 =item *
 
-XXX L<message|perldiag/"message">
+L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
+
+(F) A "goto" statement was executed to jump into the middle of a C<given>
+block.  You can't get there from here.  See L<perlfunc/goto>.
 
 =back
 
@@ -204,7 +255,12 @@ XXX L<message|perldiag/"message">
 
 =item *
 
-XXX L<message|perldiag/"message">
+L<Old package separator used in string|perldiag/"Old package separator used in string">
+
+(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
 
@@ -218,6 +274,12 @@ 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<our> variable has been redeclared, have been moved to a
+new warnings category "shadow".  Previously they were in category "misc".
+
 =back
 
 =head1 Utility Changes
@@ -328,9 +390,10 @@ L</Modules and Pragmata> 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
 
@@ -340,13 +403,25 @@ XXX Changes which affect the interface available to C<XS> 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<XS> 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<getpwnam()> in your code, on a
+system that has C<pwnam_r()> 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
 
@@ -361,35 +436,34 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-The internal stack usage checks introduced in 5.27.2 is now also done
-by the C<entersub> operator when calling XSUBs.  This means we can
-report which XSUB failed to allocate enough stack space.  [perl
-#131975]
+XXX
+
+=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<import>
+or C<unimport> method.  It is now treated like any other string C<1>.
+[perl #126042]
 
 =item *
 
-Parsing a C<sub> definition could cause a use after free if the C<sub>
-keyword was followed by whitespace including newlines (and comments.)
-[perl #131836]
+Perl's own C<malloc> no longer gets confused by attempts to allocate
+more than a gigabyte on a 64-bit platform.  [perl #119829]
 
 =item *
 
-The tokenizer now correctly adjusts a parse pointer when skipping
-whitespace in a C< ${identifier} > construct.  [perl #131949]
+C<open $$scalarref...> and similar invocations no longer leak the file
+handle.  [perl #115814]
 
 =item *
 
-Accesses to C<${^LAST_FH}> no longer assert after using any of a
-variety of I/O operations on a non-glob.  [perl #128263]
+The default typemap, by avoiding C<newGVgen>, now no longer leaks when
+XSUBs return file handles (C<PerlIO *> or C<FILE *>).  [perl #115814]
 
 =item *
 
-The C<Copy()>, C<Move()>, C<Zero()> macros and their variants now
-assert if the pointers supplied are C<NULL>.  ISO C considers
-supplying NULL pointers to the functions these macros are built upon
-as undefined behaviour even when their count parameters are zero.
-Based on these assertions and the original bug report three macro
-calls were made conditional. [perl #131746][perl #131892]
+Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
+crashes because of the early freeing of the subroutine.
 
 =back
 
@@ -422,14 +496,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.25.5..HEAD
+  perl Porting/acknowledgements.pl v5.27.6..HEAD
 
 =head1 Reporting Bugs