PERL5300DELTA(1) | Perl Programmers Reference Guide | PERL5300DELTA(1) |
If you are upgrading from an earlier release such as 5.26.0, first read perl5280delta, which describes differences between 5.26.0 and 5.28.0.
See "(?<=pattern)" in perlre and "(?<!pattern)" in perlre.
For details on the Unicode changes, see <https://www.unicode.org/versions/Unicode11.0.0/> for 11.0; <https://www.unicode.org/versions/Unicode12.0.0/> for 12.0; and <https://www.unicode.org/versions/Unicode12.1.0/> for 12.1. (Unicode 12.1 differs from 12.0 only in the addition of a single character, that for the new Japanese era name.)
The Word_Break property, as in past Perl releases, remains tailored to behave more in line with expectations of Perl users. This means that sequential runs of horizontal white space characters are not broken apart, but kept as a single run. Unicode 11 changed from past versions to be more in line with Perl, but it left several white space characters as causing breaks: TAB, NO BREAK SPACE, and FIGURE SPACE (U+2007). We have decided to continue to use the previous Perl tailoring with regards to these.
qr! \p{nv= /(?x) \A [0-5] \z / }!
which matches all Unicode code points whose numeric value is between 0 and 5 inclusive. So, it could match the Thai or Bengali digits whose numeric values are 0, 1, 2, 3, 4, or 5.
This marks another step in implementing the regular expression features the Unicode Consortium suggests.
Most properties are supported, with the remainder planned for 5.32. Details are in "Wildcards in Property Values" in perlunicode.
-Accflags='-DUSE_THREAD_SAFE_LOCALE'
to your Configure flags.
There were two problems with calling these functions on ":utf8" handles:
[perl #125760] <https://rt.perl.org/Ticket/Display.html?id=125760>.
[perl #133543] <https://rt.perl.org/Ticket/Display.html?id=133543>.
[perl #133583] <https://rt.perl.org/Ticket/Display.html?id=133583>.
[perl #133584] <https://rt.perl.org/Ticket/Display.html?id=133584>.
[perl #133586] <https://rt.perl.org/Ticket/Display.html?id=133586>.
All digits in a run still have to come from the same set of ten digits.
Data::Dumper now avoids leaking when "croak"ing.
$File::Find::dont_use_nlink now defaults to 1 on all platforms. [perl #133673] <https://rt.perl.org/Ticket/Display.html?id=133673>.
Variables $Is_Win32 and $Is_VMS are being initialized.
Silence Cwd warning on Android builds if "targetsh" is not defined.
Adds support for "IO::Uncompress::Zstd" and "IO::Uncompress::UnLzip".
The "BinModeIn" and "BinModeOut" options are now no-ops. ALL files will be read/written in binmode.
JSON::PP as JSON::XS 4.0 enables "allow_nonref" by default.
"bnok()" now supports the full Kronenburg extension. [cpan #95628] <https://rt.cpan.org/Ticket/Display.html?id=95628>.
Changes to B::Op_private and Config
Properly clean up temporary directories after testing.
Debugging threaded code no longer deadlocks in "DB::sub" nor "DB::lsub".
Warnings enabled by setting the "WARN_ON_ERR" flag in $PerlIO::encoding::fallback are now only produced if warnings are enabled with "use warnings "utf8";" or setting $^W.
Storable no longer probes for recursion limits at build time. [perl #133708] <https://rt.perl.org/Ticket/Display.html?id=133708> and others.
Metasploit exploit code was included to test for CVE-2015-1992 detection, this caused anti-virus detections on at least one AV suite. The exploit code has been removed and replaced with a simple functional test. [perl #133706] <https://rt.perl.org/Ticket/Display.html?id=133706>
Added support for extra tracing of locking, this requires a "-DDEBUGGING" and extra compilation flags.
"vars.pm" no longer disables non-vars strict when checking if strict vars is enabled. [perl #130674] <https://rt.perl.org/Ticket/Display.html?id=130674>.
The core versions of these modules will now issue "deprecated"-category warnings to alert you to this fact. To silence these deprecation warnings, install the modules in question from CPAN.
Note that these are (with rare exceptions) fine modules that you are encouraged to continue to use. Their disinclusion from core primarily hinges on their necessity to bootstrapping a fully functional, CPAN-capable Perl installation, not usually on concerns over their design.
perlapi
perlop
perlreapi, perlvar
perlfunc
perlreref
perllocale
perlrecharclass
perlvar
Attempts to push, pop, etc on a hash or glob now produce this message rather than complaining that they no longer work on scalars. [perl #130367] <https://rt.perl.org/Ticket/Display.html?id=130367>.
The file and line number is now reported for this error. [perl #133524] <https://rt.perl.org/Ticket/Display.html?id=133524>
separate error for "push", etc. on hash/glob.
Add test for "goto &sub" in overload leaking.
SIP prevents binaries in /bin (and a few other places) being passed the "DYLD_LIBRARY_PATH" environment variable. For our purposes this prevents "DYLD_LIBRARY_PATH" from being passed to the shell, which prevents that variable being passed to the testing or build process, so running "perl" couldn't find libperl.dylib.
To work around that, the initial build of the perl executable expects to find libperl.dylib in the build directory, and the library path is then adjusted during installation to point to the installed library.
[perl #126706] <https://rt.perl.org/Ticket/Display.html?id=126706>.
(The dmake and gmake makefiles will automatically detect which compiler is being used, so do not require "CCTYPE" to be set. This feature has not yet been added to the nmake makefile.)
\(@a[3,5,7]) = \(....);
was being interpreted as:
local \(@a[3,5,7]) = \(....);
[perl #133538] <https://rt.perl.org/Ticket/Display.html?id=133538>.
This can prevent stack overflow when processing extremely deep op trees.
An EXACTFish regnode has a finite length it can hold for the string being matched. If that length is exceeded, a second node is used for the next segment of the string, for as many regnodes as are needed. Care has to be taken where to break the string, in order to deal multi-character folds in Unicode correctly. If we want to break a string at a place which could potentially be in the middle of a multi-character fold, we back off one (or more) characters, leaving a shorter EXACTFish regnode. This backing off mechanism contained an off-by-one error. [perl #133756] <https://rt.perl.org/Ticket/Display.html?id=133756>.
This allows code like:
perl -i -ne 'print "Foo"; last'
to replace the input file, while code like:
perl -i -ne 'print "Foo"; die'
will not. Partly resolves [perl #133659] <https://rt.perl.org/Ticket/Display.html?id=133659>.
close(STDIN); open(CHILD, "|wc -l")'
because the child's stdin would be closed on exec. This has now been fixed.
Excluding auto-generated files, documentation and release tools, there were approximately 510,000 lines of changes to 750 .pm, .t, .c and .h files.
Perl continues to flourish into its fourth decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl 5.30.0:
Aaron Crane, Abigail, Alberto Simo~es, Alexandr Savca, Andreas Koenig, Andy Dougherty, Aristotle Pagaltzis, Brian Greenfield, Chad Granum, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsaaker, Dan Book, Dan Dedrick, Daniel Dragan, Dan Kogai, David Cantrell, David Mitchell, Dominic Hargreaves, E. Choroba, Ed J, Eugen Konkov, Francois Perrad, Graham Knop, Hauke D, H.Merijn Brand, Hugo van der Sanden, Jakub Wilk, James Clarke, James E Keenan, Jerry D. Hedden, Jim Cromie, John SJ Anderson, Karen Etheridge, Karl Williamson, Leon Timmermans, Matthias Bethke, Nicholas Clark, Nicolas R., Niko Tyni, Pali, Petr PisaX, Phil Pearl (Lobbes), Richard Leach, Ryan Voots, Sawyer X, Shlomi Fish, Sisyphus, Slaven Rezic, Steve Hay, Sullivan Beck, Tina Mueller, Tomasz Konojacki, Tom Wyant, Tony Cook, Unicode Consortium, Yves Orton, Zak B. Elep.
The list above is almost certainly incomplete as it is automatically generated from version control history. In particular, it does not include the names of most of the (very much appreciated) contributors who reported issues to the Perl bug tracker. Noteworthy in this release were the large number of bug fixes made possible by Sergey Aleynikov's high quality perlbug reports for issues he discovered by fuzzing with AFL.
Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish.
For a more complete list of all of Perl's historical contributors, please see the AUTHORS file in the Perl source distribution.
If you believe you have an unreported bug, please run the perlbug program included with your release. Be sure to trim your bug down to a tiny but sufficient test case. Your bug report, along with the output of "perl -V", will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
If the bug you are reporting has security implications which make it inappropriate to send to a publicly archived mailing list, then see "SECURITY VULNERABILITY CONTACT INFORMATION" in perlsec for details of how to report the issue.
perlthanks
This will send an email to the Perl 5 Porters list with your show of thanks.
The INSTALL file for how to build Perl.
The README file for general stuff.
The Artistic and Copying files for copyright information.
2019-10-21 | perl v5.30.3 |