The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

perl5317delta - what is new for perl v5.31.7

DESCRIPTION

This document describes differences between the 5.31.6 release and the 5.31.7 release.

If you are upgrading from an earlier release such as 5.31.5, first read perl5316delta, which describes differences between 5.31.5 and 5.31.6.

Core Enhancements

The isa Operator

A new experimental infix operator called isa tests whether a given object is an instance of a given class or a class derived from it:

    if( $obj isa Package::Name ) { ... }

For more detail see "Class Instance Operator" in perlop.

Incompatible Changes

\p{user-defined} properties now always override official Unicode ones

Previously, if and only if a user-defined property was declared prior to the compilation of the regular expression pattern containing it, its definition was used instead of any official Unicode property with the same name. Now, it always overrides the official property. This change could break existing code that relied (likely unwittingly) on the previous behavior. Without this fix, if Unicode released a new version with a new property that happens to have the same name as the one you had long been using, your program would break when you upgraded to a perl that used that new Unicode version. See "User-Defined Character Properties" in perlunicode. [GH #17205]

Deprecations

Module removals

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. Distributions on CPAN which require these modules will need to list them as prerequisites.

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.

B::Debug

B::Debug is no longer shipped with Perl, you can still install it from CPAN.

Modules and Pragmata

Updated Modules and Pragmata

  • B has been upgraded from version 1.77 to 1.78.

  • B::Deparse has been upgraded from version 1.51 to 1.52.

  • Compress::Raw::Bzip2 has been upgraded from version 2.090 to 2.093.

  • Compress::Raw::Zlib has been upgraded from version 2.090 to 2.093.

  • CPAN now points to version 2.27 instead of version 2.27-TRIAL2.

  • Devel::PPPort has been upgraded from version 3.55 to 3.56.

  • English has been upgraded from version 1.10 to 1.11.

  • ExtUtils::MakeMaker has been upgraded from version 7.38 to 7.42.

  • feature has been upgraded from version 1.56 to 1.57.

  • File::stat has been upgraded from version 1.08 to 1.09.

  • Filter::Simple has been upgraded from version 0.95 to 0.96.

  • FindBin is now a dual-life module.

  • IO::Compress has been upgraded from version 2.090 to 2.093.

  • Module::CoreList has been upgraded from version 5.20191120 to 5.20191220.

  • Net::Ping has been upgraded from version 2.71 to 2.72.

  • Opcode has been upgraded from version 1.44 to 1.45.

  • Storable has been upgraded from version 3.17 to 3.18.

    fix to disallow vstring magic strings over 2GB.

  • Test::Simple has been upgraded from version 1.302169 to 1.302170.

  • Tie::Hash::NamedCapture has been upgraded from version 0.11 to 0.13.

  • VMS::Stdio has been upgraded from version 2.44 to 2.45.

  • warnings has been upgraded from version 1.45 to 1.46.

  • XS::APItest has been upgraded from version 1.04 to 1.05.

Documentation

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 perlbug@perl.org.

Additionally, the following selected changes have been made:

perldebguts

Simplify a couple regnode definitions

Update BOUND and NBOUND definitions.

Add ANYOFHs regnode

This node is like ANYOFHb, but is used when more than one leading byte is the same in all the matched code points.

ANYOFHb is used to avoid having to convert from UTF-8 to code point for something that won't match. It checks that the first byte in the UTF-8 encoded target is the desired one, thus ruling out most of the possible code points.

perldiag

Add documentation for experimental 'isa' operator

(S experimental::isa) This warning is emitted if you use the (isa) operator. This operator is currently experimental and its behaviour may change in future releases of Perl.

perlfunc

caller

Like __FILE__ and __LINE__, the filename and line number returned here may be altered by the mechanism described at "Plain Old Comments (Not!)" in perlsyn.

__FILE__

It can be altered by the mechanism described at "Plain Old Comments (Not!)" in perlsyn.

__LINE__

It can be altered by the mechanism described at "Plain Old Comments (Not!)" in perlsyn.

return

Mention that you cannot return from do BLOCK

perlguts

Update documentation for UTF8f
Add missing '=for apidoc' lines

perlhacktips

Perl strings are NOT the same as C strings

perlop

'isa' operator is experimental

This is an experimental feature and is available from Perl 5.31.6 when enabled by use feature 'isa'. It emits a warning in the experimental::isa category.

perlreref

Fix some typos.

perlvar

Remove ${^FEATURE_BITS}.

Utility Changes

perlbug

Adjust bug tracker homepage url to point to GitHub.

Configuration and Compilation

Configure

Check if the compiler can handle inline attribute.
Check for character data alignment.

Testing

Tests were added and changed to reflect the other additions and changes in this release. Furthermore, these significant changes were made:

t/charset_tools.pl

Avoid some work on ASCII platforms

t/re/regexp.t

Speed up many regex tests on ASCII platform

t/re/pat.t

Skip tests that don't work on EBCDIC

Platform Support

Platform-Specific Notes

Solaris

Configure will now find recent versions of the Oracle Developer Studio compiler, which are found under /opt/developerstudio*.

Selected Bug Fixes

Fix MYMALLOC (PERL_MALLOC) build on Windows
\p{user-defined} overrides official Unicode [GH #17025]

Prior to this patch, they only sometimes overrode.

Regular Expressions

Properly handle filled /il regnodes and multi-char folds

Compilation error during make minitest [GH #17293]

move the implementation of %-, %+ into core

read beyond buffer in grok_inf_nan [GH #17370]
Workaround glibc bug with LC_MESSAGES [GH #17081]

Acknowledgements

Perl 5.31.7 represents approximately 4 weeks of development since Perl 5.31.6 and contains approximately 9,300 lines of changes across 450 files from 22 authors.

Excluding auto-generated files, documentation and release tools, there were approximately 5,200 lines of changes to 280 .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.31.7:

Ask Bjørn Hansen, brian d foy, Bryan Stenson, Chad Granum, Chris 'BinGOs' Williams, Dan Book, David Mitchell, Felipe Gasper, James E Keenan, Karl Williamson, Matthew Horsfall, Max Maischein, Nicolas R., Pali, Paul Evans, Ricardo Signes, Sawyer X, Stefan Seifert, Steve Hay, Tomasz Konojacki, Tony Cook, Vitali Peil.

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 the (very much appreciated) contributors who reported issues to the Perl bug tracker.

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.

Reporting Bugs

If you find what you think is a bug, you might check the perl bug database at https://github.com/Perl/perl5/issues. There may also be information at http://www.perl.org/, the Perl Home Page.

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.

Give Thanks

If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, you can do so by running the perlthanks program:

    perlthanks

This will send an email to the Perl 5 Porters list with your show of thanks.

SEE ALSO

The Changes file for an explanation of how to view exhaustive details on what changed.

The INSTALL file for how to build Perl.

The README file for general stuff.

The Artistic and Copying files for copyright information.