[ 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
[ 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
[ 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.
=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
=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
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
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
=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
=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
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
=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
=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
=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
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
=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
XXX Generate this with:
- perl Porting/acknowledgements.pl v5.31.8..HEAD
+ perl Porting/acknowledgements.pl v5.33.0..HEAD
=head1 Reporting Bugs