Changes for version 5.33.6

  • If you are upgrading from an earlier release such as 5.33.4, first read L<perl5335delta>, which describes differences between 5.33.4 and 5.33.5.
  • =head1 Core Enhancements
  • =head2 C<qr/{,n}/> is now accepted
  • An empty lower bound is now accepted for regular expression quantifiers, like C<{,3}>.
  • =head2 Blanks freely allowed within but adjacent to curly braces
  • (in double-quotish contexts and regular expression patterns)
  • This means you can write things like S<C<\x{ FFFC }>> if you like. This applies to all such constructs, namely C<\b{}>, C<\g{}>, C<\k{}>, C<\N{}>, C<\o{}>, and C<\x{}>; as well as the regular expression quantifier C<{I<m>,I<n>}>. C<\p{}> and C<\P{}> retain their already-existing, even looser, rules mandated by the Unicode standard (see L<perluniprops/Properties accessible through \p{} and \P{}>).
  • This ability is in effect regardless of the presence of the C</x> regular expression pattern modifier.
  • Additionally, the comma in a regular expression braced quantifier may have blanks (tabs or spaces) before and/or after the comma, like S<C<qr/a{ 5, 7 }/>>.
  • =head1 Modules and Pragmata
  • =head2 Updated Modules and Pragmata
  • =over 4
  • =item *
  • L<Carp> has been upgraded from version 1.51 to 1.52.
  • =item *
  • L<Compress::Raw::Bzip2> has been upgraded from version 2.096 to 2.100.
  • =item *
  • L<Compress::Raw::Zlib> has been upgraded from version 2.096 to 2.100.
  • =item *
  • L<DynaLoader> has been upgraded from version 1.49 to 1.50.
  • =item *
  • L<ExtUtils::MakeMaker> has been upgraded from version 7.56 to 7.58.
  • =item *
  • L<ExtUtils::Manifest> has been upgraded from version 1.72 to 1.73.
  • =item *
  • L<feature> has been upgraded from version 1.61 to 1.62.
  • Added the default enabled C<bareword_filehandles> feature.
  • =item *
  • L<GDBM_File> has been upgraded from version 1.18 to 1.19.
  • New functions and compatibility for newer versions of GDBM.
  • L<GH #18435|https://github.com/Perl/perl5/pull/18435>
    • =item *
    • L<IO> has been upgraded from version 1.44 to 1.45.
    • IO::Socket now stores error messages in C<$IO::Socket::errstr>, in addition to in C<$@>.
    • =item *
    • IO-Compress has been upgraded from version 2.096 to 2.100.
    • =item *
    • libnet has been upgraded from version 3.12 to 3.13.
    • =item *
    • L<Module::CoreList> has been upgraded from version 5.20201220 to 5.20210120.
    • =item *
    • L<POSIX> has been upgraded from version 1.96 to 1.97.
    • POSIX::signbit() behaviour has been improved.
  • L<GH #18441|https://github.com/Perl/perl5/pull/18441>
    • Documentation for C<asctime> clarifies that the result is always in English. (Use C<strftime> for a localized result.)
    • =item *
    • L<Socket> has been upgraded from version 2.030 to 2.031.
    • =item *
    • L<warnings> has been upgraded from version 1.49 to 1.50.
    • =item *
    • L<XS::APItest> has been upgraded from version 1.14 to 1.15.
    • =back
    • =head1 Documentation
    • =head2 New Documentation
    • =head3 L<perlgov>
    • This document describes the goals, scope, system, and rules for Perl's new governance model.
    • Other pod files, most notably L<perlpolicy>, were amended to reflect its adoption.
    • =head2 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 L<https://github.com/Perl/perl5/issues>.
    • Additionally, the following selected changes have been made:
    • =head3 L<perlcommunity>
    • =over 4
    • =item *
    • The freenode IRC URL has been updated.
    • =back
    • =head3 L<perlfunc>
    • =over 4
    • =item *
    • The L<localtime|perlfunc/localtime> entry has been improved and now also states that the result of the function is always in English.
    • =back
    • =head3 L<perlsyn>
    • =over 4
    • =item *
    • A new example shows how a lexical C<my> variable can be declared during the initialization of a C<for> loop.
    • =back
    • =head1 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 L<perldiag>.
    • =head2 New Diagnostics
    • =head3 New Errors
    • =over 4
    • =item *
    • L<Bareword filehandle "%s" not allowed under 'no feature|perldiag/"Bareword filehandle "%s" not allowed under 'no feature "bareword_filehandles"'">
    • This accompanies the new L<bareword_filehandles|feature/"The 'bareword_filehandles' feature."> feature.
    • =back
    • =head2 Changes to Existing Diagnostics
    • =over 4
    • =item *
    • L<Too few arguments for subroutine '%s' (got %d; expected %d)|perldiag/"Too few arguments for subroutine '%s' (got %d; expected %d)">
    • Subroutine argument-count mismatch errors now include the number of given and expected arguments.
    • =item *
    • L<Too many arguments for subroutine '%s' (got %d; expected %d)|perldiag/"Too many arguments for subroutine '%s' (got %d; expected %d)">
    • Subroutine argument-count mismatch errors now include the number of given and expected arguments.
    • =item *
    • L<Lost precision when %s %f by 1|perldiag/"Lost precision when %s %f by 1">
    • This warning was only issued for positive too-large values when incrementing, and only for negative ones when decrementing. It is now issued for both positive or negative too-large values.
  • L<GH #18333|https://github.com/Perl/perl5/issues/18333>
    • =back
    • =head1 Configuration and Compilation
    • =over 4
    • =item * Configure
    • A new probe checks for buggy libc implementations of the C<gcvt>/C<qgcvt> functions.
  • L<GH #18170|https://github.com/Perl/perl5/issues/18170>
    • =back
    • =head1 Testing
    • Tests were added and changed to reflect the other additions and changes in this release. Furthermore, these significant changes were made:
    • =over 4
    • =item *
    • F<t/re/opt.t> was added, providing a test harness for regexp optimization.
  • L<GH #18213|https://github.com/Perl/perl5/pull/18213>
    • =item *
    • A workaround for CPAN distributions needing dot in C<@INC> has been removed [L<GH #18394|https://github.com/Perl/perl5/pull/18394>]. All distributions that previously required the workaround have now been adapted.
    • =back
    • =head1 Platform Support
    • =head2 Platform-Specific Notes
    • =over 4
    • =item Mac OS X
    • A number of system libraries no longer exist as actual files on Big Sur, even though C<dlopen> will pretend they do, so now we fall back to C<dlopen> if a library file can not be found.
  • L<GH #18407|https://github.com/Perl/perl5/issues/18407>
    • =item MS Windows
    • perl can now be built with C<USE_QUADMATH> on MS Windows using (32-bit and 64-bit) mingw-w64 ports of gcc.
  • L<GH #18465|https://github.com/Perl/perl5/pull/18465>
    • The F<pl2bat.pl> utility now needs to C<use ExtUtils::PL2Bat>. This could cause failures in parallel builds.
    • =back
    • =head1 Selected Bug Fixes
    • =over 4
    • =item *
    • Skip trying to constant fold an incomplete op tree
  • L<GH #18380|https://github.com/Perl/perl5/issues/18380>
    • Constant folding of chained comparison op trees could fail under certain conditions, causing perl to crash. As a quick fix, constant folding is now skipped for such op trees. This also addresses [L<GH #17917|https://github.com/Perl/perl5/issues/17917>].
    • =item *
    • %g formatting broken on Ubuntu-18.04, NVSIZE == 8
  • L<GH #18170|https://github.com/Perl/perl5/issues/18170>
    • Buggy libc implementations of the C<gcvt> and C<qgcvt> functions caused C<(s)printf> to incorrectly truncate C<%g> formatted numbers. A new Configure probe now checks for this, with the result that the libc C<sprintf> will be used in place of C<gcvt> and C<qgcvt>.
    • Tests added as part of this fix also revealed related problems in some Windows builds. The makefiles for MINGW builds on Windows have thus been adjusted to use USE_MINGW_ANSI_STDIO by default, ensuring that they also provide correct C<(s)printf> formatting of numbers.
    • =item *
    • op.c: croak on "my $_" when "use utf8" is in effect
  • L<GH #18449|https://github.com/Perl/perl5/issues/18449>
    • The lexical topic feature experiment was removed in Perl v5.24 and declaring C<my $_> became a compile time error. However, it was previously still possible to make this declaration if C<use utf8> was in effect.
    • =item *
    • regexec.c: Fix assertion failure
  • L<GH #18451|https://github.com/Perl/perl5/issues/18451>
    • Fuzzing triggered an assertion failure in the regexp engine when too many characters were copied into a buffer.
    • =back
    • =head1 Acknowledgements
    • Perl 5.33.6 represents approximately 4 weeks of development since Perl

Documentation

notes and best practice for packaging perl 5
README for the Porting/ directory in the Perl 5 core distribution.
Compare the performance of perl code snippets across multiple perls.
use git bisect to pinpoint changes
Check that all the URLs in the Perl source are valid
Check source code for ANSI-C violations
list of Perl release epigraphs
expand C macros using the C preprocessor
Annotate commits for perldelta
How to write a perldelta
Notes on handling the Perl Patch Pumpkin And Porting Perl
Releasing a new version of perl 5.x
Perl 5 release schedule
short description of the security issue, with an identifier of the issue as the manpage name
Sort warning and error messages in perldiag.pod
Perl TO-DO list
A post processor for make test.valgrind
access Perl configuration information
lib
manipulate @INC at compile time
Dynamically load C libraries into Perl code
System errno constants
Group Perl's functions a la perlfunc.pod
Test Pod::Functions
convert .pod files to .html files
Test Pod::Html::anchorify()
the
Test HTML cross reference links
Test --htmldir feature
Test --htmldir feature
Test --htmldir feature
Test --htmldir feature
Test --htmldir feature
Test HTML links
Plain Old Documentation: format specification and notes
Perl predefined variables
converts a collection of POD pages to HTML format.
Namespace for Perl's core routines
Reserved special namespace for internals related functions
Tests for Pod::Usage
the perl debugger
make patchnum
distribute ppport.h among extensions
The Perl 5 language interpreter
what's new for perl5.004
what's new for perl5.005
what is new for perl 5.10.0
what is new for perl v5.10.1
what is new for perl v5.12.0
what is new for perl v5.12.1
what is new for perl v5.12.2
what is new for perl v5.12.3
what is new for perl v5.12.4
what is new for perl v5.12.5
what is new for perl v5.14.0
what is new for perl v5.14.1
what is new for perl v5.14.2
what is new for perl v5.14.3
what is new for perl v5.14.4
what is new for perl v5.16.0
what is new for perl v5.16.1
what is new for perl v5.16.2
what is new for perl v5.16.3
what is new for perl v5.18.0
what is new for perl v5.18.1
what is new for perl v5.18.2
what is new for perl v5.18.4
what is new for perl v5.20.0
what is new for perl v5.20.1
what is new for perl v5.20.2
what is new for perl v5.20.3
what is new for perl v5.22.0
what is new for perl v5.22.1
what is new for perl v5.22.2
what is new for perl v5.22.3
what is new for perl v5.22.4
what is new for perl v5.24.0
what is new for perl v5.24.1
what is new for perl v5.24.2
what is new for perl v5.24.3
what is new for perl v5.24.4
what is new for perl v5.26.0
what is new for perl v5.26.1
what is new for perl v5.26.2
what is new for perl v5.26.3
what is new for perl v5.28.0
what is new for perl v5.28.1
what is new for perl v5.28.2
what is new for perl v5.28.3
what is new for perl v5.30.0
what is new for perl v5.30.1
what is new for perl v5.30.2
what is new for perl v5.30.3
what is new for perl v5.32.0
what is new for perl v5.33.0
what is new for perl v5.33.1
what is new for perl v5.33.2
what is new for perl v5.33.3
what is new for perl v5.33.4
what is new for perl v5.33.5
what's new for perl v5.6.1
what's new for perl v5.6.0
what is new for perl v5.8.1
what is new for perl v5.8.2
what is new for perl v5.8.3
what is new for perl v5.8.4
what is new for perl v5.8.5
what is new for perl v5.8.6
what is new for perl v5.8.7
what is new for perl v5.8.8
what is new for perl v5.8.9
what is new for perl v5.8.0
perl's IO abstraction interface.
the Perl Artistic License
Books about and related to Perl
Links to information on object-oriented programming in Perl
Links to information on object-oriented programming in Perl
Perl calling conventions from C
Perl 5 Cheat Sheet
Internal replacements for standard C library functions
a brief overview of the Perl community
Perl data types
Perl DBM Filters
Guts of Perl debugging
Perl debugging tutorial
Perl debugging
what is new for perl v5.33.6
list Perl deprecations
various Perl diagnostics
A style guide for writing Perl's documentation
Perl Data Structures Cookbook
Perl's support for DTrace
Considerations for running Perl on EBCDIC platforms
how to embed perl in your C program
A listing of experimental features in Perl
Source Filters
Perl's fork() emulation
Perl formats
Perl builtin functions
Detailed information about git and the Perl repository
Perl Rules of Governance
the GNU General Public License, version 1
Introduction to the Perl API
How to hack on Perl
Tips for Perl core C code hacking
Walk through the creation of a simple C code patch
the Perl history records
An overview of the Perl interpreter
a brief introduction and overview of Perl
C API for Perl's implementation of IO in Layers.
Perl interprocess communication (signals, fifos, pipes, safe subprocesses, sockets, and semaphores)
Perl Lexical Warnings
Perl locale handling (internationalization and localization)
Manipulating Arrays of Arrays in Perl
Perl modules (packages and symbol tables)
Installing CPAN Modules
constructing new Perl modules and finding existing ones
Perl module style guide
Perl method resolution plugin interface
preparing a new module for distribution
semantics of numbers and numeric operations in Perl
Perl object reference
Object-Oriented Programming in Perl Tutorial
Perl operators and precedence
simple recipes for opening files and pipes in Perl
tutorial on pack and unpack
Perl Performance and Optimization Techniques
the Plain Old Documentation format
Plain Old Documentation: format specification and notes
Perl POD style guide
Various and sundry policies and commitments related to the Perl core
Writing portable Perl
how to write a user pragma
Perl regular expressions
Perl regular expression plugin interface
Perl Regular Expression Backslash Sequences and Escapes
Perl Regular Expression Character Classes
Perl references and nested data structures
Mark's very short tutorial about references
Description of the Perl regular expression engine.
Links to current information on the Perl source repository
Perl regular expressions quick start
Perl Regular Expressions Reference
Perl regular expressions tutorial
how to execute the Perl interpreter
Perl security
Perl security report handling policy
A guide to the Perl source tree
Perl style guide
Perl subroutines
Perl syntax
Tutorial on threads in Perl
how to hide an object class in a simple variable
Link to the Perl to-do list
Links to information on object-oriented programming in Perl
Links to information on object-oriented programming in Perl
Perl traps for the unwary
Unicode support in Perl
cookbookish examples of handling Unicode in Perl
Perl Unicode FAQ
Perl Unicode introduction
Perl Unicode Tutorial
utilities packaged with the Perl distribution
Perl predefined variables
VMS-specific documentation for Perl
Perl pragma to enable new features
Generate C macros that match character classes efficiently
Perl pragma to control optional warnings
convert .h C header files to .ph Perl header files
convert .h C header files to Perl extensions
configure libnet
how to submit bug reports on Perl
Perl Installation Verification Procedure
Rough tool to translate Perl4 .pl files to Perl5 .pm modules.

Modules

functions for dealing with RFC3066-style language tags
detect the user's language preferences
tags and names for human languages
IO
load various IO modules
supply object methods for directory handles
supply object methods for filehandles
supply object methods for I/O handles
supply object methods for pipes
Object interface to system poll call
supply seek based methods for I/O objects
OO interface to the select system call
Object interface to socket communications
Object interface for AF_INET domain sockets
Object interface for AF_UNIX domain sockets
Perl extension for ARexx support
Perl extension for low level amiga support
B
The Perl Compiler Backend
Walk Perl syntax tree, printing concise info about ops
Show lexical variables used in functions or files
Walk Perl syntax tree, printing terse info about ops
Generates cross reference reports for Perl programs
O
Generic interface to Perl Compiler backends
check optrees as rendered by B::Concise
A data debugging tool for the XS programmer
write the C code for miniperlmain.c and perlmain.c
load the C Fcntl.h defines
DOS like globbing and then some
Traverse a directory tree.
Perl extension for BSD glob routine
keep more files open than the system permits
Perl5 access to the gdbm library.
Support for Inside-Out Classes
A selection of general-utility hash subroutines
query locale information
open a process for both reading and writing using open2()
open a process for reading, writing, and error handling using open3()
Tied access to ndbm files
Tied access to odbm files
Disable named opcodes when compiling perl code
ops
Perl pragma to restrict unsafe operations when compiling
Perl interface to IEEE Std 1003.1
encoding layer
Memory mapped IO
in-memory IO, scalar IO
Helper class for PerlIO layers implemented in perl
module to convert pod files to HTML
Tied access to sdbm files
Try every conceivable way to get hostname
Named regexp capture buffers
add data to hash when needed
Perl extension to manipulate DCL symbols
convert between VMS and Unix file specification syntax
standard I/O functions via VMS extensions
Win32 CORE function stubs
Test the perl C API
module to test the XS typemaps distributed with perl
get/set subroutine or variable attributes
mro
Method Resolution Order
re
Perl pragma to alter regular expression behaviour
Interfaces to some Haiku API Functions
provide framework for multiple DBMs
Perl compiler backend to produce perl code
OP op_private flag definitions
benchmark running times of Perl code
declare struct-like datatypes as Perl classes
hash lookup of which core extensions were built.
DB
programmatic interface to the Perl debugging API
Filter DBM keys/values
filter for DBM_Filter
filter for DBM_Filter
filter for DBM_Filter
filter for DBM_Filter
filter for DBM_Filter
(obsolete) supply object methods for directory handles
use nice English (or awk) names for ugly punctuation variables
Utilities for embedding Perl in C/C++ applications
keep sets of symbol names palatable to the VMS linker
Parse file paths into directory, filename and suffix.
Compare files or filehandles
Copy files or filehandles
by-name interface to Perl's built-in stat() functions
supply object methods for filehandles
Process single-character switches with switch clustering
by-name interface to Perl's built-in gethost*() functions
by-name interface to Perl's built-in getnet*() functions
by-name interface to Perl's built-in getproto*() functions
by-name interface to Perl's built-in getserv*() functions
On demand loader for PerlIO layers and root of PerlIO::* name space
save and restore selected file handle
manipulate Perl symbols and their names
Manipulate threads in Perl (for old code only)
base class for tied arrays
base class definitions for tied handles
base class definitions for tied handles
Fixed-table-size, fixed-key-length hashing
by-name interface to Perl's built-in gmtime() function
by-name interface to Perl's built-in localtime() function
internal object used by Time::gmtime and Time::localtime
base class for ALL classes (blessed references)
Unicode character database
by-name interface to Perl's built-in getgr*() functions
by-name interface to Perl's built-in getpw*() functions
Use MakeMaker's uninstalled version of a package
Perl pragma to expose the individual bytes of characters
access to Unicode character names and named character sequences; also define character names
Perl pragma for deprecating the inclusion of a module in core
Perl pragma to enable new features
Perl pragma to control the filetest permission operators
Perl pragma to use integer arithmetic instead of floating point
perl pragma to request less of something
Perl pragma to use or avoid POSIX locales for built-in operations
perl pragma to set default PerlIO layers for input and output
Package for overloading Perl operations
perl pragma to lexically control overloading
Perl pragma to enable simple signal handling
perl pragma to control sort() behaviour
Perl pragma to restrict unsafe constructs
Perl pragma to predeclare subroutine names
Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code
Perl pragma to predeclare global variable names
Perl pragma to control VMS-specific language features
Perl pragma to control optional warnings
warnings import function
Perl access to extended attributes.
Perl extension for access to OS/2 setting database.
exports constants for system() call, and process control on OS2.
access to DLLs with REXX calling convention.
access to DLLs with REXX calling convention and REXX runtime.

Provides

in ext/Amiga-ARexx/ARexx.pm
in ext/B/B.pm
in lib/Class/Struct.pm
in os2/OS2/OS2-REXX/DLL/DLL.pm
in os2/OS2/OS2-PrfDB/PrfDB.pm
in os2/OS2/OS2-PrfDB/PrfDB.pm
in os2/OS2/OS2-REXX/REXX.pm
in os2/OS2/OS2-REXX/REXX.pm
in os2/OS2/OS2-REXX/REXX.pm
in os2/OS2/OS2-Process/Process.pm
in ext/POSIX/lib/POSIX.pm
in ext/POSIX/lib/POSIX.pm
in ext/POSIX/lib/POSIX.pm
in ext/Pod-Html/lib/Pod/Html.pm
in ext/File-Find/t/lib/Testing.pm
in lib/Tie/Hash.pm
in lib/DBM_Filter.pm
in lib/Tie/Hash.pm
in lib/Tie/Scalar.pm
in lib/Tie/Array.pm
in lib/Tie/Hash.pm
in lib/Tie/Scalar.pm
in lib/diagnostics.pm
in lib/overload/numbers.pm
in ext/XS-APItest/t/BHK.pm
in ext/XS-APItest/t/Markers.pm