This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add perldelta entry for Intel compiler detection fix
[perl5.git] / pod / perldelta.pod
index dbdcc36..40822b4 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.31.9
+perldelta - what is new for perl v5.33.1
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.31.8 release and the 5.31.9
+This document describes differences between the 5.33.0 release and the 5.33.1
 release.
 
-If you are upgrading from an earlier release such as 5.31.7, first read
-L<perl5318delta>, which describes differences between 5.31.7 and 5.31.8.
+If you are upgrading from an earlier release such as 5.32.0, first read
+L<perl5330delta>, which describes differences between 5.32.0 and 5.33.0.
 
 =head1 Notice
 
@@ -27,53 +27,6 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 Unicode 13.0 (beta) is supported
-
-Using the beta causes us to participate in the soak cycle for
-Unicode.  Final approval for the existing changes has been made by the
-Unicode consortium, and there are few possibilities that this could
-break existing programs, as there are few changes to already existing
-characters.
-
-Information about the changes is at
-L<https://unicode.org/versions/beta-13.0.0.html>.
-
-=head2 New Unicode properties C<Identifier_Status> and C<Identifier_Type> supported
-
-Unicode is in the process of revising its regular expression
-requirements: L<https://www.unicode.org/draft/reports/tr18/tr18.html>.
-As part of that they are wanting more properties to be exposed, ones
-that aren't part of the strict UCD (Unicode character database).  These
-two are used for examining inputs for security purposes.  Details on
-their usage is at L<https://www.unicode.org/reports/tr39/proposed.html>.
-
-=head2 It is now possible to write C<qr/\p{Name=...}/>, or C<\p{Na=...}>
-
-The Unicode Name property is now accessible in regular expression
-patterns using the above syntaxes, as an alternative to C<\N{...}>.
-A comparison of the two methods is given in
-L<perlunicode/Comparison of \N{...} and \p{name=...}>.
-
-=head2 The C<POSIX::mblen()>, C<mbtowc>, and C<wctomb> functions now
-work on shift state locales and are thread-safe on C99 and above
-compilers when executed on a platform that has locale thread-safety; the
-length parameters are now optional.
-
-These functions are always executed under the current C language locale.
-(See L<perllocale>.)  Most locales are stateless, but a few, notably the
-very rarely encountered ISO 2022, maintain a state between calls to
-these functions.  Previously the state was cleared on every call, but
-now the state is not reset unless the appropriate parameter is C<undef>.
-
-On threaded perls, the C99 functions L<mbrlen(3)>, L<mbrtowc(3)>, and
-L<wcrtomb(3)>, when available, are substituted for the plain functions.
-This makes these functions thread-safe when executing on a locale
-thread-safe platform.
-
-The string length parameters in C<mblen> and C<mbtowc> are now optional;
-useful only if you wish to restrict the length parsed in the source
-string to less than the actual length.
-
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -92,29 +45,6 @@ XXX For a release on a stable branch, this section aspires to be:
 
 [ List each incompatible change as a =head2 entry ]
 
-=head2 Certain pattern matching features are now prohibited in compiling
-Unicode property value wildcard subpatterns
-
-These few features are either inappropriate or interfere with the
-algorithm used to accomplish this task.  The complete list is in
-L<perlunicode/Wildcards in Property Values>.
-
-=head2 Stop pretending C<POSIX::mbstowcs> and C<POSIX::wcstombs> are
-supported
-
-These functions could never have worked due to a defective interface
-specification.  There is clearly no demand for them, given that no one
-has ever complained in the many years the functions were claimed to be
-available, hence so-called "support" for them is now dropped.
-
-=head2 A bug fix for C<(?[...])> may have caused some patterns to no
-longer compile
-
-See L</Selected Bug Fixes>.  The heuristics previously used may have let
-some constructs compile (perhaps not with the programmer's intended
-effect) that should have been errors.  None are known, but it is
-possible that some erroneous constructs no longer compile.
-
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -183,9 +113,11 @@ release manager will have to investigate the situation carefully.)
 
 =over 4
 
-=item *
+=item * ExtUtils::PL2Bat
 
-XXX Remove this section if not applicable.
+This module is a generalization of the pl2bat script. It being a script has lead
+to at least two forks of this code, this modules will unify them under one
+implemention with tests.
 
 =back
 
@@ -195,32 +127,11 @@ XXX Remove this section if not applicable.
 
 =item *
 
-L<IO> has been upgraded from version 1.42 to 1.43.
-
-L<IO::Socket> no longer caches a zero protocol value, since this
-indicates that the implementation will select a protocol.  This means
-that on platforms that don't implement C<SO_PROTOCOL> for a given
-socket type the protocol method may return C<undef>.
-
-=item *
-
-L<Storable> has been upgraded from version 3.18 to 3.19.
+L<feature> has been upgraded from version 1.58 to 1.60.
 
-Use of note() from Test::More is now optional in tests.  This works
-around a circular dependency with Test::More when installing on very
-old perls from CPAN.
-
-=item *
-
-L<threads> has been upgraded from version 2.23 to 2.24.
-
-=item *
-
-L<feature> has been upgraded from version 1.57 to 1.58.
-
-A new C<indirect> feature has been added, which is enabled by default
-but allows turning off L<indirect object syntax|perlobj/Indirect
-Object Syntax>.
+A new C<multidimensional> feature has been added, which is enabled by
+default but allows turning off L<multi-dimensional array
+emulation|perldata/Multi-dimensional array emulation>.
 
 =back
 
@@ -259,19 +170,34 @@ section.
 
 Additionally, the following selected changes have been made:
 
-=head3 L<XXX>
+=head3 L<perlpacktut>
 
 =over 4
 
 =item *
 
-Links to the now defunct L<https://search.cpan.org> site now point at
-the equivalent L<https://metacpan.org> URL.  [GH #17393]
+Incorrect variables used in an example have been fixed. Thanks to Deji Adegbite.
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
 
 =item *
 
-The man page for L<ExtUtils::XSSymSet> is now only installed on VMS,
-which is the only platform the module is installed on.  [GH #17424]
+Better explain what happens when C<sleep> is called with a zero or
+negative value
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+The C<< <> >> and C<<< <<>> >>> operators are commonly referred to as
+the diamond and double diamond operators respectively, but that wasn't
+mentioned previously in their documentation.
 
 =back
 
@@ -297,12 +223,6 @@ and New Warnings
 
 XXX L<message|perldiag/"message">
 
-L<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>
-|perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>">
-
-This is a replacement for several error messages listed under
-L</Changes to Existing Diagnostics>.
-
 =back
 
 =head3 New Warnings
@@ -311,26 +231,7 @@ L</Changes to Existing Diagnostics>.
 
 =item *
 
-L<Code point 0x%X is not Unicode, and not portable|perldiag/"Code point 0x%X is not Unicode, and not portable">
-
-This is actually not a new message, but it is now output when the
-warnings category C<portable> is enabled.
-
-When raised during regular expression pattern compilation, the warning
-has extra text added at the end marking where precisely in the pattern
-it occured.
-
-=item *
-
-L<Non-hex character '%c' terminates \x early.  Resolved as "%s"|perldiag/"Non-hex character '%c' terminates \x early.  Resolved as "%s"">
-
-This replaces a warning that was much less specific, and which gave
-false information.  This new warning parallels the similar
-already-existing one raised for C<\o{}>.
-
-=item *
-
-L<message|perldiag/"message">
+XXX L<message|perldiag/"message">
 
 =back
 
@@ -342,73 +243,7 @@ XXX Changes (i.e. rewording) of diagnostic messages go here
 
 =item *
 
-L<Character following "\c" must be printable ASCII|perldiag/"Character following "\c" must be printable ASCII">
-
-now has extra text added at the end, when raised during regular
-expression pattern compilation, marking where precisely in the pattern
-it occured.
-
-=item *
-
-L<Use "%s" instead of "%s"|perldiag/"Use "%s" instead of "%s"">
-
-now has extra text added at the end, when raised during regular
-expression pattern compilation, marking where precisely in the pattern
-it occured.
-
-=item *
-
-L<Sequence "\c{" invalid|perldiag/"Sequence "\c{" invalid">
-
-now has extra text added at the end, when raised during regular
-expression pattern compilation, marking where precisely in the pattern
-it occured.
-
-=item *
-
-L<"\c%c" is more clearly written simply as "%s"|perldiag/""\c%c" is more clearly written simply as "%s"">
-
-now has extra text added at the end, when raised during regular
-expression pattern compilation, marking where precisely in the pattern
-it occured.
-
-=item *
-
-L<Non-octal character '%c' terminates \o early.  Resolved as "%s"|perldiag/"Non-octal character '%c' terminates \o early.  Resolved as "%s"">
-
-now includes the phrase "terminates \o early", and has extra text added
-at the end, when raised during regular expression pattern compilation,
-marking where precisely in the pattern it occured.  In some instances
-the text of the resolution has been clarified.
-
-=item *
-
-L<'%s' resolved to '\o{%s}%d'|perldiag/'%s' resolved to '\o{%s}%d'>
-
-As of Perl 5.32, this message is no longer generated.  Instead,
-L<perldiag/Non-octal character '%c' terminates \o early.  Resolved as "%s">
-is.
-
-=item *
-
-
-L<Use of code point 0x%s is not allowed; the permissible max is 0x%X|perldiag/"Use of code point 0x%s is not allowed; the permissible max is 0x%X">
-
-Some instances of this message previously output the hex digits C<A>,
-C<B>, C<C>, C<D>, C<E>, and C<F> in lower case.  Now they are all
-consistently upper case.
-
-=item *
-
-The following three diagnostics have been removed, and replaced by
-L<C<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>>
-|perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>">.
-C<Expecting close paren for nested extended charclass in regex; marked
-by <-- HERE in mE<sol>%sE<sol>>,
-C<Expecting close paren for wrapper for nested extended charclass in
-regex; marked by <-- HERE in mE<sol>%sE<sol>>,
-and
-C<Expecting '(?flags:(?[...' in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>>.
+XXX Describe change here
 
 =back
 
@@ -421,13 +256,20 @@ Most of these are built within the directory F<utils>.
 entries for each change
 Use L<XXX> with program names to get proper documentation linking. ]
 
-=head2 L<XXX>
+=head2 L<perl5db.pl> (the debugger)
 
 =over 4
 
-=item *
+=item * New option: C<HistItemMinLength>
 
-XXX
+This option controls the minimum length a command must be to get stored in
+history.  Traditionally, this has been fixed at 2.  Changes to the debugger
+are often perilous, and new bugs should be reported so the debugger can be
+debugged.
+
+=item * Fix to C<i> and C<l> commands
+
+The C<i $var> and C<l $var> commands work again with lexical variables.
 
 =back
 
@@ -444,7 +286,12 @@ L</Platform Support> section, instead.
 
 =item *
 
-XXX
+The minimum supported Bison version is now 2.4, and the maxiumm is 3.7.
+
+=item *
+
+Newer 64-bit versions of the Intel C/C++ compiler are now recognised
+and have the correct flags set.
 
 =back
 
@@ -473,55 +320,41 @@ made:
 
 =item *
 
-F<t/run/switches.t> no longer uses (and re-uses) the F<tmpinplace/>
-directory under F<t/>.  This may prevent spurious failures. [GH #17424]
-
-=item *
-
-Various bugs in C<POSIX::mbtowc> were fixed.   Potential races with
-other threads are now avoided, and previously the returned wide
-character could well be garbage.
-
-=item *
-
-Various bugs in C<POSIX::wctomb> were fixed. Potential races with other
-threads are now avoided, and previously it would segfault if the string
-parameter was shared or hadn't been pre-allocated with a string of
-sufficient length to hold the result.
+XXX
 
 =back
 
 =head1 Platform Support
 
-XXX Any changes to platform support should be listed in the sections below.
+=head2 New Platforms
 
-[ Within the sections, list each platform as an =item entry with specific
-changes as paragraphs below it. ]
+=over 4
 
-=head2 New Platforms
+=item 9front
 
-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.
+Allow building Perl on i386 9front systems (fork of plan9).
+
+=back
+
+=head2 Updated Platforms
 
 =over 4
 
-=item XXX-some-platform
+=item Plan9
 
-XXX
+Improve support for Plan9 on i386 platforms.
 
 =back
 
 =head2 Discontinued Platforms
 
-XXX List any platforms that this version of perl no longer compiles on.
-
 =over 4
 
-=item XXX-some-platform
+=item Symbian
 
-XXX
+Support code relating to Symbian has been removed.  Symbian was an
+operating system for mobile devices.  The port was last updated in July
+2009, and the platform itself in October 2012.
 
 =back
 
@@ -534,14 +367,11 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item VMS
+=item z/OS
 
-With the release of the patch kit C99 V2.0, VSI has provided support for a
-number of previously-missing C99 features.  On systems with that patch kit
-installed, Perl's configuration process will now detect the presence of the
-header C<stdint.h> and the following functions: C<fpclassify>, C<isblank>, C<isless>,
-C<llrint>, C<llrintl>, C<llround>, C<llroundl>, C<nearbyint>, C<round>, C<scalbn>,
-and C<scalbnl>.
+The locale categories C<LC_SYNTAX> and C<LC_TOD> are now recognized.
+Perl doesn't do anything with these, except it now allows you to specify
+them.  They are included in C<LC_ALL>.
 
 =back
 
@@ -551,13 +381,27 @@ 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
+The C<PERL_GLOBAL_STRUCT> compilation option has been removed, and
+with it the need or the C<dVAR> macro.  C<dVAR> remains defined as a
+no-op outside C<PERL_CORE> for backwards compatiblity with XS modules.
+
+=item *
+
+A new savestack type C<SAVEt_HINTS_HH> has been added, which neatens the
+previous behaviour of C<SAVEt_HINTS>.  On previous versions the types and
+values pushed to the save stack would depend on whether the hints included the
+C<HINT_LOCALIZE_HH> bit, which complicates external code that inspects the
+save stack. The new version uses a different savestack type to indicate the
+difference.
+
+=item *
+
+A new API function L<perlapi/av_count> has been added which gives a
+clearly named way to find how many elements are in an array.
 
 =back
 
@@ -572,29 +416,7 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-Previously L<perlfunc/require> would only treat the special built-in
-SV C<&PL_sv_undef> as a value in C<%INC> as if a previous C<require>
-has failed, treating other undefined SVs as if the previous C<require>
-has succeeded.  This could cause unexpected success from C<require>
-eg. on C<local %INC = %INC;>.  This has been fixed [GH #17428]
-
-=item *
-
-C<(?{...})> eval groups in regular expressions no longer unintentionally
-trigger "EVAL without pos change exceeded limit in regex" [GH #17490].
-
-=item *
-
-C<(?[...])> extended bracketed character classes do not wrongly raise an
-error on some cases where a previously-compiled such class is
-interpolated into another.  The heuristics previously used have been
-replaced by a reliable method, and hence the diagnostics generated have
-changed.  See L</Diagnostics>.
-
-=item *
-The debug display (say by specifying C<-Dr> or S<C<use re>> (with
-appropriate options) of compiled Unicode propery wildcard subpatterns no
-longer has extraneous output.
+IO::Handle: Fix a spurious error reported for regular file handles.  GH #18019
 
 =back
 
@@ -634,7 +456,7 @@ died, add a short obituary here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.31.8..HEAD
+  perl Porting/acknowledgements.pl v5.33.0..HEAD
 
 =head1 Reporting Bugs