perl5222cdelta - what is new for cperl v5.22.2


This document describes perl-only differences between the cperl 5.22.1 release and the cperl 5.22.2 release.

For cperl also see Changes and perlcperl

Core Enhancements

Core Enhancements from Perl5

Backported some fixes from p5p, merged with perl-5.22.2.

Modules and Pragmata

New Modules in Core

B-C 1.54_02

With many cperl-specific improvements, global destruction fixes and PERL_CORE specific test changes.

MS Windows with MSVC is not yet ready, sorry.

Cpanel-JSON-XS 3.0213

A fast and standard JSON en-/decoder. You should not use PP.

Devel-NYTProf 6.03

A fast and standard profiler. With PERL_CORE specific test and build changes.

Internals-DumpArenas 0.12_03

The only way to test sv_dump properly.

YAML-LibYAML 0.70c

A fast and standard YAML en-/decoder. You should not use PP. With most compiler warnings fixed, PERL_CORE specific test changes and new options IndentlessMap for compatibility and NonStrict mode to pass the validator tests and make it usable for

Term::ReadKey 2.33

Needed for the perl debugger with readline.

Updated Modules and Pragmata

B::Debug 1.23_01

Skip CORE test with B::Flags XS installed in sitearch.

podlators 4.0.7

Remove unneeded pod2*.PL customizations Fix VERSION_FROM in

perlfaq 5.021011
if 0.0604

Improved error message for no if.

experimental 0.016

Added bitwise Removed lexical_topic, new max_version check

base 2.23
autouse 1.11
autodie 2.29
Win32API::File 0.1203

Numify $fd in OsFHandleOpen()

Unicode::Normalize 1.25

Added Normalize.xs

Unicode::Collate 1.14

Update Unicode::Collate::CJK::Korean

Thread::Queue 3.07

Added limit to set or return the max. size for a queue

Term::Cap 1.17
Term::ANSIColor 4.05
Pod::Simple 3.32
Perl::OSTyp 1.009

Handle $^O sco

PathTools 3.62

Added AmigaOS support.

Socket 2.021_01 (private)

Added the IPV6_* constants needed for Net::Ping. Include netinet/ip.h, netinet/ip6.h, netinet6/in6.h if valid.

Net-Ping 2.50 (private)

Upstream development stalled at both cpan and p5p. Now also at

New Features:

- Handle IPv6 addresses and the AF_INET6 family.

- Added the optional family argument to most methods. valid values: 6, "v6", "ip6", "ipv6", AF_INET6

- new can take now named arguments, a hashref.

- Added the following named arguments to new: gateway host bind retrans pingstring source_verify econnrefused IPV6_USE_MIN_MTU IPV6_RECVPATHMTU IPV6_HOPLIMIT

- Added the wakeonlan method

- Improve argument default handling

- Added missing documentation

bignum 0.42

uses new Math::Big*, fixing inf/nan. fix bignum::bpi, use bpi() as a class method, not a function.

Math::BigInt::FastCalc 0.40

Only minor changes

Math::BigRat 0.260802

Fix blog() for inf/nan, and more. See

Math::BigInt 1.999716

Tons of changes from 1.999701 See

Locale::Codes 3.38

But kept the deprecated Locale::Codes::Country::alias_code function.

Improved test suite (and made some changes to based on Devel::Cover. Test suite now has 100% coverage.

IPC::SysV 2.06

shmat() with illegal id fails and sets errno

IPC::Cmd 0.94

* move __END__ above POD in documentation (plicease)

* Don't clobber $SIG{__DIE__} and $SIG{__WARN__} in open3_run() (avar)

* Fix 'terminate_on_signal' segfaulting (Petya Kohts)

* Fix usage of fcntl(..., F_GETFL, ...) (tonyc)

Getopt::Long 2.48

Fixed gnu_getopt option not 100% identical to GNU getopt [RT #12675]

Fixed parsing valid real numeric values, e.g. --num=.1 [RT #89513]

PAT_FLOAT => "[-+]?(?=[0-9.])[0-9_]*(\.[0-9_]+)?([eE][-+]?[0-9_]+)?";

File::Path 2.12

Tons of fixes from 2.09

ExtUtils::ParseXS 3.30

Fix quoting if $^X has spaces

ExtUtils::Command removed

Now merged into ExtUtils-MakeMaker-7.10

ExtUtils::CBuilder 0.280224

Use warnings/strict on all modules

Digest-MD5 2.55_01

cperl only: Fix alignment probe for 64bit and enforce a SIGBUS on intel also (at least with gnu c compatible compilers: gcc, clang, icc) to mimic errors on other strict platforms: sparc, mips, ppc

Allows now 64bit and darwin multiarch to be probed.

Adds now coverage for the previously never tested branch for -UU32_ALIGNMENT_REQUIRED.

Fixes RT #77919


Devel-PPPort 3.32_02

cperl added support for 5.16 binary names See

Config-Perl-V 0.25_01

Added v5.24 and cperl support.

Carp 1.38

$Carp::MaxArgNums is no longer treated as if it was one larger.

CPAN-Meta-YAML 0.018

Removed t/00-report-prereqs.dd template.

Generated from ETHER/YAML-Tiny-1.69

Tests no longer print to stderr unnecessarily. This makes core perl builds a little quieter.

The Test::More dependency has been reduced to 0.88 by emulating 'subtest' for those tests that need it.

Instead of erroring on duplicate keys found in a hash (introduced in version 1.63), now we only warn. This fixes an issue in Strawberry Perl (via CPAN::Meta::YAML) when parsing a configuration file.

CPAN-Meta-Requirements 3.140c

Handle cperl-specific 'c' version suffices.

Protect internal _isa_version from non-refs that pass ->isa(version)

Added method for getting structured requirements

In fixing preservation of "0.00", some Module => 0 optimizations were lost; this restores those optimizations

Pod::Usage 1.68

CPAN#110443: [PATCH] fix -perldoc option in pod2usage() method. added missing '-'

CPAN#110446: [feature request] -perldocopt for supplying perldoc options added this option; split of string on whitespace is not optimal, but should do the job

Test::Harness 3.36

Accept YAML with trailing whitespace in header (Maik Hentsche)

Filter::Util::Call 1.55

Improved Filter documentation, esp. document that __DATA__ is not filtered.

Scalar-List-Utils 1.45

Renamed existing uniq() to uniqstr() Canonicalise undef to {empty string,zero} in uniq{str,num}() Add a new uniq() with more DWIMish semantics around undef

Fix uses of GET magic by the uniq*() family of functions. GET magic is now always invoked exactly once if it exists.

Added List::Util::uniq() and uniqnum()

Fix build on non-C99 compilers

* Avoid divide-by-zero exception if product()'s accumulator is IV zero (RT105415) * Possible fix for SvTEMP issues in first and any/all/none/notall (RT96343)

Encode 2.84


Both decoder and encoder are rewritten by Pali Rohár. Encoder should be now fully compliant of RFC 2047. Decoder is less strict to be able to decode strings generated by old versions of this module. This fixed a couple of related decode('MIME-header') / encode('MIME-header') bugs and tickets.


Fix RT#107043: If no BOM is found, the routine dies. When you decode from UTF-(16|32) without -BE or LE without BOM, Encode now assumes BE accordingly to RFC2781 and the Unicode Standard version 8.0

Precompile 1252 table as that is now the Pod::Simple default

Fixed compilation under -pedantic

Time::HiRes 1.9732

Compilation cleanup, remove hrt_ualarm, hrt_ualarm_itimer


clock_getres(), clock_gettime(), clock_nanosleep() emulation for OS X [RT #78566]

Storable 2.53_03

Add new optional flags argument to retrieve()/thaw() for flags, or set new global $Storable::flags: 2 for BLESS_OK | 4 TIE_OK. default 6. With 0 disable blessing and tieing of objects for proper security.

Compute CAN_FLOCK at compile-time, to avoid Config in perlcc compiled binaries.

Broke support for restoring restricted hashes [perl #73972] with the new default PERL_PERTURB_KEYS_TOP strategy.

CPAN::Meta (private)

Favour the new builtin XS YAML and JSON variants over PP. Improve the validator tests.

Parse::CPAN::Meta (private)

Favour the new builtin XS YAML and JSON variants over PP.

ExtUtils::Constant 0.23_03

Fixed fatal typos, moved from cpan to dist.

Module::CoreList 5.20160225c

Fixed all 'c' suffix version checks.

CPAN::Meta::Requirements (private)

Handle 'c' suffix version checks.

cperl accepts versions with and without c, and should not warn about not existing, builtin modules (XSLoader, DynaLoader, strict, attributes) or unparsable versions. [cperl #104]

* Accept the c suffix * perl5 should fail with a c version. * A requirement of a c version can only be fulfilled by cperl (currently).

CPAN (private)

Fix prerequisite and version checks, Allow cperl c suffices, Honor cperl builtin modules

ExtUtils::MakeMaker 8.04_03 (private)

Protect our cperl changes and non-upstream improvements:

Fixed prereq check for cperl builtins, 'c' version suffix support, make -s silencing, fixed wrong Config dependencies, PERL_USE_UNSAFE_INC=1, call darwin dsymutil

Config 6.19

Config is now a XS module, synced with CPAN as XSConfig. The Config tables are now readonly, and many more memory improvements.

B::Concise 0.998c

Support gv(cvname). Do not print gv(IV \"$$"), the prototype as ref, rather the name of the cvref. [cperl #96]

Avoid uninit hr->name warning.


Stabilize broken t/search50.t search test

threads 2.02_01

Protect ithread_free from deleted PL_modglobal during global destruction.

ExtUtils::Embed 1.34c

Optimize boot_DynaLoader, fix a couple of stack errors.


Fix 2 tests broken with readonly Config.

Time::HiRes 1.9727_02

To improve parallel builds on Windows.

XSLoader 1.01c

Support utf8-encoded XS modulenames. Fixed load_file 2nd arg. Improve load_file errmsg, print the missing sofile. Protect from underflow: use a signed i counter, which can underflow Fixed memory corruption caused by a negative SvCUR. GH #66 Use labs instead of abs on an 64bit IV value.

Beware: untested and platform incompatible.

DynaLoader 2.01c

Fixed typo @shared_objects. It is named @dl_shared_objects. This broke perlcc --staticxs (#71)

Set the IOK bit for dl_expand, caught by the compiler.

B 1.58_02

Fix B::UNOP_AUX::aux_list design with threads. No 2nd cv arg, return the PADOFFSET not the SV. (#76)

Export SVt_ types. (#80)

Safe 2.39_02c

Fixed Safe version 'c' problem. Do not check the XS_VERSION of Opcode, because it has a cperl 'c' suffix, which is not yet fully supported in the version check code.


Add a scmp method for string comparison, needed to destinguish between 0.2 and 0.2c but only enforced if the version object is stringified. Using eq is not enough.

fix c suffix comparisons: stringify v0.2c to v0.2c, 0.2c to 0.2c numify 0.2c to 0.002 [0 200], same as 0.2

constant 1.34

Lower memory usage


Fixed shmat with negative id. The negative argument will be interpreted as a very large unsigned value. Coverity CWE-687


Avoid div by zero [coverity] Note: fixed differently upstream, with much more branches than here.

IO-Compress, Compress-Raw-{Zlib,Bzip2} 2.069

static const some local tables.

Not Updated Modules and Pragmata

This modules are currently not ready to be updated.

Pod::Checker 1.71

1.71 breaks t/porting/podcheck.t [RT #113846]

MakeUtils::MakeMaker 7.11_06

broken for -Dfortify_inc, no "." in @INC

version 0.9916

Broken new "_" logic when merged with our 'c' suffix logic.

Platform Support

Platform-Specific Notes


Selected Bug Fixes



Daniel Dragan took over XSConfig development on CPAN.

Dave Mitchell started to work on some tasks proposed in cperl.

cperl 5.22.2 represents approximately 7 months of development since cperl 5.22.1c and contains approximately 260,000 lines of changes across 1,500 files from 39 authors.

Excluding auto-generated files, documentation and release tools, there were approximately 180,000 lines of changes to 1,000 .pm, .t, .c and .h files.

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

Reini Urban, Daniel Dragan, Steve Hay, Jarkko Hietaniemi, Tony Cook, Karl Williamson, David Mitchell, Ricardo Signes, Matthew Horsfall, Abigail, Aristotle Pagaltzis, Aaron Crane, David Golden, Jan Dubois, Craig A. Berry, Nicolas Rochelemagne, Todd Rinaldo, James E Keenan, Peter Martini, Nicholas Clark, Niko Tyni, Karen Etheridge, Sisyphus, Victor Adam, Sawyer X, Yves Orton, Stevan Little, Vladimir Timofeev, Andreas König, Leon Timmermans, Hugo van der Sanden, Andy Broad, Father Chrysostomos, Helmut Wollmersdorfer, Lukas Mai, H.Merijn Brand, Herbert Breunung, Ivan Pozdeev, Dagfinn Ilmari Mannsåker.

The list above is almost certainly incomplete as it is automatically generated from version control history including the perl and cperl repos. In particular, it does not include the names of the (very much appreciated) contributors who reported issues to the Perl bug tracker and the cperl github issues.

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. Their quality of work succeeds the work of the perl5 porters by far.

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 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 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 please send it to This points to a closed subscription unarchived mailing list, which includes all the p5p core committers, who will be able to help assess the impact of issues, figure out a resolution, and help co-ordinate the release of patches to mitigate or fix the problem across all platforms on which Perl is supported. Please only use this address for security issues in the Perl core, not for modules independently distributed on CPAN.

If you trust the cperl developers more, please send an email to them. The p5p security teams skips many security issues, or are unwilling to fix them.


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.