perlcdelta - what is new for cperl v5.27.0
This document describes the differences between the cperl 5.26.0 and the cperl 5.27.0 releases.
If you are upgrading from an earlier release such as v5.24.2c, first read the perl525*cdelta documentation, which describes differences between v5.25.1c and v5.26.0c
study does not stringify hashes anymore, it rather calls the new hv_study function on hashes, which optimizes the internal structure of a hash. Currently clears all placeholders, and optionally shrinks its size if the new size falls below a power of two. On code, regex and arrays it does nothing yet, but might add type optimizations on the current dynamic status.
Added use strict 'hashpairs'
to allow only pairs for hash assignments, within a map even only an empty or single pair. See [cperl #281.
With any of three supported BOMs set use utf8
and use feature 'unicode_strings'
at compile-time as documented until perl 5.26.
With 5.26 perl5 decided to change the documentation to match the broken implementation. With cperl 5.27.0c the implementation was fixed instead. See [cperl #269] and [perl #121292].
Avoid undoable and unsafe sideeffects (io, ...) in the CHECK mode, esp. for editor syntax checks. See [cperl #263]
Essentially prepend -Mops=:browse,:load,print
with -c:s
.
With use strict
this will now fail:
my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files;
Two pairs being added in a map block violates strict hashpairs. Add the second pair in a second loop or no strict 'hashpairs'
.
my %xsc = map { /(.*)\.xs$/ && ("$1.c" => 1) } @files;
/^(.*)\.xs$/) && $xsc{"$1.cc"} = 1 for @files;
On hash split and shrink the rounding up to a power of 2 has been improved by a factor of 10^8 on modern hardware. On old hardware by a factor of 2.
Replaced the old quadratic bsd glob with a linear glob, detected by Russ Cox https://research.swtch.com/glob.
'0' is a valid name for an archive, change 'iter' to check definedness. See https://metacpan.org/changes/distribution/Archive-Tar
Support pgcc, seperate it from gcc
Support the new strict hints flags and abbrevate all strict flags as strict.
Support pgcc, seperate it from gcc
Support pgcc, seperate it from gcc
MSVC 14.0 support and higher, changed nan in the runtime.
Support pgcc, seperate it from gcc
Support strict hashpairs, fix for . in @INC. Merged with 3.36
no strict hashpairs in encoding. fixed some -Wsign-compare See https://metacpan.org/changes/distribution/Encode
Optimisations: use our instead of vars lazy load modules make OS variables into constants move some calculations out of a loop
Keep our make -s support
Enhancements: Added wait_loop_callback for run_forked()
Bug fixes: Only search in curdir in can_run() when on Win32 RT#105601
getcwd, getdcwd and abs_path have now long path support. getdcwd (Windows only) also supports unicode paths, using the wide API.
no strict hashpairs
getcwd has now long path support. Added realpath, with long path support, if the libc supports NULL as 2nd argument.
fix cygwin stack probing
Added use strict 'hashpairs'
to allow only pairs for hash assignments, within a map even only an empty or single pair. See [cperl #281.
Also reserved use strict 'names'
, which is not yet implemented.
Added "What hash operations dominate" in perldtrace and "glob/gv call statistics" in perldtrace sections.
Added new pairwise hash contruction limitations to "List value constructors" in perldata and "map EXPR,LIST" in perlfunc.
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.
Only pair in map hash assignment allowed while "strict hashpairs", got %d elements
Only pairs in hash assignment allowed while "strict hashpairs", got %d elements
With "strict hashpairs" in use, odd numbers of elements are forbidden to be assigned to hashes. Within a map block only a single or empty pair.
Odd number of map elements in hash assignment
Added a new HASH private bit to the mapwhile op when a map is assigned to a hash, to be able to warn once per map on uneven hashmap assignments. See [cperl #281 and strict hashpairs.
do "%s" failed, '.' is no longer in @INC; did you mean do "./%s"?
Was changed from "do "%s" failed, '.' is no longer in @INC".
Four new dtrace probes for hash and glob. See perldtrace and #240.
Added support for the pgcc pgi compiler http://www.pgroup.com/. pgcc is very slow though. pgcc -O2 is 40% slower than gcc-6 -O3, pgcc -fast 30% slower. #279.
d_getcwd probe and key added. Sets HAS_GETCWD
d_get_current_dir_name probe and key added. Sets HAS_GET_CURRENT_DIR_NAME
getcwdnull probe and key added. Sets HAS_GETCWDNULL
d_realpath probe and key added. Sets HAS_REALPATH
d_builtin_clz probe and key added. Sets HAS_BUILTIN_CLZ. ("Count leading zeros"). Needed later for fast hopscotch hashing.
Travis and appveyor deploy now automatically master builds, besides tags.
Preliminary support for the Portland pgcc compiler (Linux, Darwin, Win32 only) has been added.
Support for long paths have been added to all platforms, for cwd
longer than 4096. Many kernels have limited support for it, but filesystems do. See [cperl #270].
Fixed hints for pgcc.
Use for getcwd(NULL)
or get_current_dir_name()
, which can return paths longer than 4096.
Fixed hints for pgcc
More mingw build improvements, but the smoker still not pass the tests, and my local vm seems to be broken.
Fixed invalid check_type_and_open macro on mingw miniperl.
Cygwin and the MSVC versions 10,12,14 smoke now ok with 32-bit and 64-bit.
Fixed upstream mkstemp API changes.
getcwd is deprecated on Windows. use _getcwd() instead.
PathTools: Support overlong paths for getdcwd(), using the wide API for overlong paths.
Fixed Storable stacksize probing. Fixed a lot of admin-specific file-permission tests
Export re_op_compile
needed for re engines.
Added study API functions for possible internal costly optimizations of hv, av, cv, and rx, such as hash shrinking, regex and cv jit compilation, and av type promotion. For now implemented is hv_study()
, the rest are stubs.
The three supported unicode BOM's UTF-8, UTF-16LE and UTF-16BE set the utf8 and unicode compile-time hints to match the documentation and expectation.
Fixed several minor coverity issues.
Perl 5.27.0 represents approximately 3 weeks of development since Perl 5.26.0c and contains approximately 21,000 lines of changes across 180 files from 4 authors.
Excluding auto-generated files, documentation and release tools, there were approximately 2,300 lines of changes to 81 .pm, .t, .c and .h files.
The following people are known to have contributed the improvements that became Perl 5.26.1:
Reini Urban, François Perrad, Yves Orton, vendethiel.
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.
Generated with:
cperl Porting/acknowledgements.pl cperl-5.26.0..HEAD
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 https://rt.perl.org/ . 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 you think it's a cperl specific bug or trust the cperl developers more please file an issue at https://github.com/perl11/cperl/issues.
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.
Hey! The above document had some coding errors, which are explained below:
alternative text 'do "%s" failed, '.' is no longer in @INC; did you mean do "./%s"? ' contains non-escaped | or /