The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

perl5412delta - what is new for perl v5.41.2

DESCRIPTION

This document describes differences between the 5.41.1 release and the 5.41.2 release.

If you are upgrading from an earlier release such as 5.41.0, first read perl5411delta, which describes differences between 5.41.0 and 5.41.1.

Core Enhancements

New pragma source::encoding

This allows you to declare that the portion of a program for the remainder of the lexical scope of this pragma is encoded either entirely in ASCII (for use source::encoding 'ascii') or if UTF-8 is allowed as well (for use source::encoding 'utf8'). No other encodings are accepted. The second form is entirely equivalent to use utf8, and may be used interchangeably with that.

The purpose of this pragma is to catch cases early where you forgot to specify use utf8.

use source::encoding 'ascii' is automatically enabled within the lexical scope of a use v5.41.0 or higher.

no source::encoding turns off all this checking for the remainder of its lexical scope. The meaning of non-ASCII characters is then undefined.

Modules and Pragmata

Updated Modules and Pragmata

  • B::Deparse has been upgraded from version 1.76 to 1.77.

    Now understands the new ^^ operator (high-precedence xor).

  • Benchmark has been upgraded from version 1.25 to 1.26.

  • Devel::PPPort has been upgraded from version 3.72 to 3.73.

  • File::Spec has been upgraded from version 3.90 to 3.92.

  • locale has been upgraded from version 1.12 to 1.13.

  • Module::CoreList has been upgraded from version 5.20240620 to 5.20240720.

  • podlators has been upgraded from version 5.01_02 to v6.0.2.

    This distribution provides the Pod::Man and Pod::Text modules and the pod2man and pod2text command-line utilities. The distribution now uses semantic versioning for the package and module versions, with a v prefix to work with Perl's packaging system. Pod::Man, in particular, has received a variety of improvements.

  • POSIX has been upgraded from version 2.21 to 2.22.

  • Storable has been upgraded from version 3.32 to 3.33.

  • threads has been upgraded from version 2.40 to 2.41.

  • utf8 has been upgraded from version 1.25 to 1.27.

  • Win32 has been upgraded from version 0.59 to 0.59_01.

    Imported an upstream PR that fixes symbolic link support detection on 32-bit Windows. [GH #22393]

  • XS::APItest has been upgraded from version 1.36 to 1.37.

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, open an issue at https://github.com/Perl/perl5/issues.

Additionally, the following selected changes have been made:

perlapi

  • All forms of gv_fetchmeth() are now documented together.

  • gv_autoload4 is now documented with gv_autoload_pv and additional notes added.

perlgov

  • The list of Steering Council and Core Team members have been updated, following the conclusion of the latest election on 2024-07-17.

perlvar

  • Entries for $# and $* have been amended to note that use of them result in a compilation error, not a warning.

Diagnostics

The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see perldiag.

New Diagnostics

New Errors

New Warnings

  • __CLASS__ is experimental

    (S experimental::class) This warning is emitted if you use the __CLASS__ keyword of use feature 'class'. This keyword is currently experimental and its behaviour may change in future releases of Perl.

Utility Changes

Porting/test-dist-modules.pl

  • Separate installation (without overwriting installed modules) is now the default

  • Documentation is significantly enhanced

Testing

Tests were added and changed to reflect the other additions and changes in this release.

Internal Changes

  • Calls to call_argv() with the G_DISCARD flag set also ensure the SV parameters constructed from the argv parameter are released before call_argv() returns. Previously they were released on the next FREETMPS. [GH #22255]

Selected Bug Fixes

  • chdir now returns real booleans (as its documentation describes), not integers. This means the result of a failed chdir now stringifies to '', not '0'.

    [GH #22365]

Acknowledgements

Perl 5.41.2 represents approximately 3 weeks of development since Perl 5.41.1 and contains approximately 4,100 lines of changes across 180 files from 13 authors.

Excluding auto-generated files, documentation and release tools, there were approximately 1,900 lines of changes to 95 .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.41.2:

Aaron Dill, Dagfinn Ilmari Mannsåker, Elvin Aslanov, Erik Huelsmann, Graham Knop, H.Merijn Brand, James E Keenan, Karen Etheridge, Karl Williamson, Lukas Mai, Philippe Bruhat (BooK), Russ Allbery, Tony Cook.

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 https://www.perl.org/, the Perl Home Page.

If you believe you have an unreported bug, please open an issue at https://github.com/Perl/perl5/issues. Be sure to trim your bug down to a tiny but sufficient test case.

If the bug you are reporting has security implications which make it inappropriate to send to a public issue tracker, 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.