This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Change enum names for new locale function parameters
[perl5.git] / pod / perldelta.pod
index ae90c2d..17dff72 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.7
+perldelta - what is new for perl v5.27.10
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.27.6 release and the 5.27.7
+This document describes differences between the 5.27.9 release and the 5.27.10
 release.
 
-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.
+If you are upgrading from an earlier release such as 5.27.8, first read
+L<perl5279delta>, which describes differences between 5.27.8 and 5.27.9.
 
 =head1 Notice
 
@@ -21,16 +21,9 @@ XXX Any important notices here
 
 =head1 Core Enhancements
 
-XXX New core language features go here.  Summarize user-visible core language
-enhancements.  Particularly prominent performance optimisations could go
-here, but most should go in the L</Performance Enhancements> section.
+=head2 XXX
 
-[ 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.
+XXX
 
 =head1 Security
 
@@ -54,12 +47,6 @@ 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 not applicable.
@@ -80,7 +67,7 @@ not usually on concerns over their design.
 
 =over
 
-=item L<Locale::Codes> and its associated Country, Currency and Language modules
+=item XXX
 
 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.
@@ -91,11 +78,6 @@ as an updated module in the L</Modules and Pragmata> section.
 
 =head1 Performance Enhancements
 
-XXX Changes which enhance performance without changing behaviour go here.
-There may well be none in a stable release.
-
-[ List each enhancement as an =item entry ]
-
 =over 4
 
 =item *
@@ -136,15 +118,22 @@ XXX Remove this section if not applicable.
 
 =item *
 
-L<Locale::Codes> has been upgraded from version 3.54 to 3.55
+L<Carp> has been upgraded from version 1.46 to 1.4x.
 
-B<NOTE>: L<Locale::Codes> is deprecated in core and will be removed
-from Perl 5.30.
+XXX Please update the version number.
 
-=item *
+L<Carp>, when generating stack traces, now attempts to work around
+longstanding bugs resulting from Perl's non-reference-counted stack.
+[perl #52610]
 
-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].
+Carp has been modified to avoid assuming that objects cannot be
+overloaded without the L<overload> module loaded (this can happen with
+objects created by XS modules).  Previously, infinite recursion would
+result if an XS-defined overload method itself called Carp.  [perl #132828]
+
+Carp now avoids using C<overload::StrVal>, partly because older versions
+of L<overload> (included with perl 5.14 and earlier) load L<Scalar::Util>
+at run time, which will fail if Carp has been invoked after a syntax error.
 
 =back
 
@@ -173,46 +162,13 @@ XXX Description of the purpose of the new file here
 
 =head2 Changes to Existing Documentation
 
-We have attempted to update the documentation to reflect the changes
-listed in this document.  If you find any we have missed, send email
-to L<perlbug@perl.org|mailto:perlbug@perl.org>.
-
 XXX Changes which significantly change existing files in F<pod/> go here.
 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
 section.
 
 Additionally, the following selected changes have been made:
 
-=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.
+=head3 L<XXX>
 
 =over 4
 
@@ -242,10 +198,7 @@ and New Warnings
 
 =item *
 
-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>.
+XXX L<message|perldiag/"message">
 
 =back
 
@@ -255,12 +208,7 @@ block.  You can't get there from here.  See L<perlfunc/goto>.
 
 =item *
 
-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">).
+XXX
 
 =back
 
@@ -272,13 +220,20 @@ XXX Changes (i.e. rewording) of diagnostic messages go here
 
 =item *
 
-XXX Describe change here
+The new (as of 5.27.8) restriction forbidding use of C<goto> to enter the
+argument of a binary or list expression (see L<perldiag/"Can't
+E<quot>gotoE<quot> into a binary or list expression">) has been relaxed to
+allow entering the I<first> argument of an operator that takes a fixed
+number of arguments, since this is a case that will not cause stack
+corruption.  [perl #132854]
 
 =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".
+The warning added in 5.27.8 concerning UTF-8 locale compatibility was
+misleading.  The new wording and explanation are at
+L<perldiag/Locale '%s' contains (at least) the following characters which
+have unexepected meanings: %s  The Perl program will use the exepected
+meanings>
 
 =back
 
@@ -314,31 +269,26 @@ L</Platform Support> section, instead.
 
 =item *
 
-XXX
+F<lib/unicore/mktables> now correctly canonicalizes the names of the
+dependencies stored in the files it generates.
 
-=back
+F<regen/mk_invlists.pl>, unlike the other F<regen/*.pl> scripts, used
+C<$0> to name itself in the dependencies stored in the files it
+generates.  It now uses a literal so that the path stored in the
+generated files doesn't depend on how F<regen/mk_invlists.pl> is
+invoked.
 
-=head1 Testing
+This lack of canonical names could cause test failures in
+F<t/porting/regen.t>.  [perl #132925]
 
-XXX Any significant changes to the testing of a freshly built perl should be
-listed here.  Changes which create B<new> files in F<t/> go here as do any
-large changes to the testing harness (e.g. when parallel testing was added).
-Changes to existing files in F<t/> aren't worth summarizing, although the bugs
-that they represent may be covered elsewhere.
-
-XXX If there were no significant test changes, say this:
-
-Tests were added and changed to reflect the other additions and changes
-in this release.
+=back
 
-XXX If instead there were significant changes, say this:
+=head1 Testing
 
 Tests were added and changed to reflect the other additions and
 changes in this release.  Furthermore, these significant changes were
 made:
 
-[ List each test improvement as an =item entry ]
-
 =over 4
 
 =item *
@@ -349,21 +299,11 @@ XXX
 
 =head1 Platform Support
 
-XXX Any changes to platform support should be listed in the sections below.
-
-[ Within the sections, list each platform as an =item entry with specific
-changes as paragraphs below it. ]
-
 =head2 New Platforms
 
-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<hints/>
-directories, or new subdirectories and F<README> files at the top level of the
-source tree.
-
 =over 4
 
-=item XXX-some-platform
+=item That Plaftorm
 
 XXX
 
@@ -390,81 +330,33 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item Windows
+=item XXX-some-platform
 
-We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
-versions earlier than 14.1.
+XXX
 
 =back
 
 =head1 Internal Changes
 
-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.
-
 =over 4
 
 =item *
 
-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.
+The item names passed to the function L<perlapi/Perl_langinfo>,
+introduced in 5.27.4, may no longer be prefixed with C<PERL_>.  For
+example, if you want the current floating point radix character, you
+must call it like C<Perl_langinfo(RADIXCHAR)>.
 
 =back
 
 =head1 Selected Bug Fixes
 
-XXX Important bug fixes in the core language are summarized here.  Bug fixes in
-files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
-
-[ List each fix as an =item entry ]
-
 =over 4
 
 =item *
 
 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 *
-
-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 *
-
-C<open $$scalarref...> and similar invocations no longer leak the file
-handle.  [perl #115814]
-
-=item *
-
-The default typemap, by avoiding C<newGVgen>, now no longer leaks when
-XSUBs return file handles (C<PerlIO *> or C<FILE *>).  [perl #115814]
-
-=item *
-
-Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
-crashes because of the early freeing of the subroutine.
-
 =back
 
 =head1 Known Problems
@@ -503,7 +395,7 @@ died, add a short obituary here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.27.6..HEAD
+  perl Porting/acknowledgements.pl v5.27.9..HEAD
 
 =head1 Reporting Bugs