perl5281cdelta - what is new for cperl v5.28.1


This document describes the differences between the cperl 5.28.0 and the cperl 5.28.1 release.

If you are upgrading from an earlier release such as v5.26.0c, first read the perl526*cdelta documentation, which describes differences between v5.26.0c and v5.26.3c

Core Enhancements

Check bless name under use strict names

The second argument to bless, the new classname, is now checked to be a valid package name identifier when strict names is in effect, and the name is now normalized. [cperl #376]

This is a bugfix, but a major compatibility change.

Performance Enhancements

Improve newSVpvn_share

Don't downgrade twice, the is_utf8 flags can be taken from the returned hek, which does the downgrading to bytes already.


Undeprecate "Unescaped left brace in regex" warnings and errors

In cperl only the following special unicode groups within regexes are reserved:

   Name:     \N{
   Property: \p{ \P{
   Break:    \b{ \B{
   Code:     \x{ \o{
   Group:    \g{

All other /{}/ sequences are allowed in cperl and not deprecated anymore. There's no need to quote the literal \{ and \}, only if it's ambiguous and can be mixed up with those reserved unicode groups.

automake and more widespread utils does not need to be plagued by spurious "Unescaped left brace in regex" warnings, when they dont need to be quoted. We undeprecated those new warnings and errors, there's nothing more to reserve (yet). [cperl #362]

Modules and Pragmata

Updated Modules and Pragmata

CPAN 2.21_01

Update to 2.21 upstream with our cperl fixes. Some of our fixes were accepted upstream.

Fixed critical rmtree bug with a symlink crossing mountpoints previous directory ~/.cpan/build changed before entering tmp-32186, expected dev=47 ino=244719549, actual dev=47 ino=33303, aborting at CPAN/ line 591

Add many upstream tests.

Add the distroprefs from CPAN and cperl. Install them by copying them to your ~/.cpan/prefs/ or see

Cwd 4.75c

Fixed long pathnames test for getcwd() on older systems, like debian-7.11 i386, which still returns ENAMETOOLONG on large enough buffers.

Fix the HAS_GET_CURRENT_DIR_NAME check, and the is_ENAMETOOLONG macro.

For getcwd with get_current_dir_name() - i.e. fastcwd - add abs_path. See also

DynaLoader 2.09c

dl_load_file: set NULL xs (bootstrap). When we find the bootname via dl_find_symbol early, we still need to set xs from dl_install_xsub(). Coverity CID #165325

Errno 1.29_01

Protect from including some avx512 intrinsics directly on mingw.

File::Path 3.16_02c

Fix symlink abort crossing mountpoint with CPAN::Distribution previous directory ~/.cpan/build changed before entering tmp-32186, expected dev=47 ino=244719549, actual dev=47 ino=33303, aborting at CPAN/ line 591

Fix method of generating names for dummy users and groups during testing (i.e. under docker) [cpan #121967].

Storable 3.12_02

Enable >2GB AvFILL check on store_hook (64bit) Too many references returned by STORABLE_freeze. It wrapped around previously. Fixes Coverity CID #187854. Move into Storable_pm.PL [cperl #374]


Changes to Existing Documentation


Configuration and Compilation


Platform Support

Platform-Specific Notes

Fixed Errno from processing some protected intrinsics directly

which fail with #error "Never use <avx512vpopcntdqintrin.h>, <avx512ifmaintrin.h> directly; include <immintrin.h> instead.", #error "Never use <fmaintrin.h> directly; include <immintrin.h> instead.", #error "Never use <xsavesintrin.h> directly; include <x86intrin.h> instead."

Undefine i_dlfcn

on mingw and new architectures. See

MSVC 11.0

Enable HAS_BOOL, fixes xkeycheck.h redefinition errors.

Internal Changes

Selected Bug Fixes


cperl 5.28.1 represents approximately 5 weeks of development since cperl 5.28.0c and contains approximately 40,000 lines of changes across 940 files from 2 authors.

Excluding auto-generated files, documentation and release tools, there were approximately 5,300 lines of changes to 110 .pm, .t, .c and .h files.

The following people are known to have contributed the improvements that became cperl 5.28.1:

Reini Urban, Andreas König.

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.

Generated with:

    cperl Porting/ cperl-5.28.0..HEAD -c

Reporting Bugs

If you find what you think is a bug, you might check the articles recently posted to the comp.lang.perl.misc newsgroup and the perl bug database at . There may also be information at , the Perl Home Page.

If you believe you have an unreported bug, please run the cperlbug 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 to be analysed by the Perl porting team.

If you think it's a cperl specific bug or trust the cperl developers more please file an issue at

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.


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.