5 [ this is a template for a new perldelta file. Any text flagged as XXX needs
6 to be processed before release. ]
8 perldelta - what is new for perl v5.23.4
12 This document describes differences between the 5.23.3 release and the 5.23.4
15 If you are upgrading from an earlier release such as 5.23.2, first read
16 L<perl5233delta>, which describes differences between 5.23.2 and 5.23.3.
20 XXX Any important notices here
22 =head1 Core Enhancements
24 XXX New core language features go here. Summarize user-visible core language
25 enhancements. Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
28 [ List each enhancement as a =head2 entry ]
32 XXX Any security-related notices go here. In particular, any security
33 vulnerabilities closed should be noted here rather than in the
34 L</Selected Bug Fixes> section.
36 [ List each security issue as a =head2 entry ]
38 =head1 Incompatible Changes
40 =head2 Lexical $_ has been removed
42 C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
43 with no obvious solution. In Perl 5.18.0, it was made experimental on the
44 theory that it would either be removed or redesigned in a less confusing (but
45 backward-incompatible) way. Over the following years, no alternatives were
46 proposed. The feature has now been removed and will fail to compile.
48 =head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
50 The experimental Extended Bracketed Character Classes can contain regular
51 bracketed character classes within them. These differ from regular ones in
52 that white space is generally ignored, unless escaped by preceding it with a
53 backslash. The white space that is ignored is now limited to just tab C<\t>
54 and SPACE characters. Previously, it was any white space. See
55 L<perlrecharclass/Extended Bracketed Character Classes>.
59 XXX Any deprecated features, syntax, modules etc. should be listed here.
61 =head2 Module removals
63 XXX Remove this section if inapplicable.
65 The following modules will be removed from the core distribution in a
66 future release, and will at that time need to be installed from CPAN.
67 Distributions on CPAN which require these modules will need to list them as
70 The core versions of these modules will now issue C<"deprecated">-category
71 warnings to alert you to this fact. To silence these deprecation warnings,
72 install the modules in question from CPAN.
74 Note that these are (with rare exceptions) fine modules that you are encouraged
75 to continue to use. Their disinclusion from core primarily hinges on their
76 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
77 not usually on concerns over their design.
83 XXX Note that deprecated modules should be listed here even if they are listed
84 as an updated module in the L</Modules and Pragmata> section.
88 [ List each other deprecation as a =head2 entry ]
90 =head1 Performance Enhancements
92 XXX Changes which enhance performance without changing behaviour go here.
93 There may well be none in a stable release.
95 [ List each enhancement as a =item entry ]
101 C</fixed-substr/> has been made much faster.
103 On platforms with a libc memchr() implementation which makes good use of
104 underlying hardware support, patterns which include fixed substrings will now
105 often be much faster; for example with glibc on on a recent x86_64 CPU, this:
107 $s = "a" x 1000 . "wxyz";
108 $s =~ /wxyz/ for 1..30000
110 is now about 7 times faster. On systems with slow memchr(), e.g. 32-bit ARM
111 Raspberry Pi, there will be a small or little speedup. Conversely, some
112 pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
113 times slower on the rPi, 1.5x slower on x86_64.
117 =head1 Modules and Pragmata
119 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
120 go here. If Module::CoreList is updated, generate an initial draft of the
121 following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
122 for important changes should then be added by hand. In an ideal world,
123 dual-life modules would have a F<Changes> file that could be cribbed.
125 [ Within each section, list entries as a =item entry ]
127 =head2 New Modules and Pragmata
137 =head2 Updated Modules and Pragmata
143 L<B> has been upgraded from version 1.59 to 1.60.
147 L<bignum> has been upgraded from version 0.40 to 0.41.
151 L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
155 L<Compress::Raw::Zlib> has been upgraded from version 2.068_01 to 2.069.
159 L<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
163 L<DynaLoader> has been upgraded from version 1.34 to 1.35.
167 L<Encode> has been upgraded from version 2.77 to 2.78.
171 L<experimental> has been upgraded from version 0.014 to 0.016.
175 L<ExtUtils::CBuilder> has been upgraded from version 0.280223 to 0.280224.
179 L<File::Path> has been upgraded from version 2.11 to 2.12.
183 L<if> has been upgraded from version 0.0605 to 0.0606.
187 L<IO> has been upgraded from version 1.35 to 1.36.
189 For an IO::Poll object C<$poll> with no file handles yet in it,
190 C<$poll->poll(10)> now sleeps for up to 10 seconds anyway instead of returning
192 L<[cpan #25049]|https://rt.cpan.org/Ticket/Display.html?id=25049>
196 L<IO-Compress> has been upgraded from version 2.068 to 2.069.
200 L<Math::BigInt> has been upgraded from version 1.999701 to 1.999704.
204 L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.34.
208 L<Module::CoreList> has been upgraded from version 5.20150920 to 5.20151020.
212 L<Module::Metadata> has been upgraded from version 1.000027 to 1.000029.
216 L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
220 L<PerlIO::encoding> has been upgraded from version 0.21 to 0.22.
222 PerlIO::encoding objects are now properly duplicated.
223 L<[perl #31923]|https://rt.perl.org/Ticket/Display.html?id=31923>
227 L<POSIX> has been upgraded from version 1.57 to 1.58.
229 If C<POSIX::strerror> was passed C<$!> as its argument then it accidentally
230 cleared C<$!>. This has been fixed.
231 L<[perl #126229]|https://rt.perl.org/Ticket/Display.html?id=126229>
235 L<Socket> has been upgraded from version 2.020_01 to 2.020_02.
237 Various fixes have been applied to inet_pton for the benefit of MS VC++ builds
238 on Windows. In particular, this restores the build with MS VC++ 6.0.
242 L<Unicode::Normalize> has been upgraded from version 1.19 to 1.21.
246 L<warnings> has been upgraded from version 1.33 to 1.35.
248 The C<warnings::enabled> example now actually uses C<warnings::enabled>.
249 L<[perl #126051]|https://rt.perl.org/Ticket/Display.html?id=126051>
253 =head2 Removed Modules and Pragmata
265 XXX Changes to files in F<pod/> go here. Consider grouping entries by
266 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
268 =head2 New Documentation
270 XXX Changes which create B<new> files in F<pod/> go here.
274 XXX Description of the purpose of the new file here
276 =head2 Changes to Existing Documentation
278 XXX Changes which significantly change existing files in F<pod/> go here.
279 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
288 The process of using undocumented globals has been documented, namely, that one
289 should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
290 first to get the go-ahead for documenting and using an undocumented function or
301 Updated to note that anonymous subroutines can have signatures.
311 The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
321 The specific true value of C<$!{E...}> is now documented, noting that it is
322 subject to change and not guaranteed.
328 The following additions or changes have been made to diagnostic output,
329 including warnings and fatal error messages. For the complete list of
330 diagnostic messages, see L<perldiag>.
332 XXX New or changed warnings emitted by the core's C<C> code go here. Also
333 include any changes in L<perldiag> that reconcile it to the C<C> code.
335 =head2 New Diagnostics
337 XXX Newly added diagnostic messages go under here, separated into New Errors
346 L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
350 L<perldiag/"Illegal user-defined property name">
360 XXX L<message|perldiag/"message">
364 =head2 Changes to Existing Diagnostics
366 XXX Changes (i.e. rewording) of diagnostic messages go here
372 L<"Can't modify non-lvalue subroutine call of &%s"|perldiag/"Can't modify non-lvalue subroutine call of &%s">
374 This error now reports the name of the non-lvalue subroutine you attempted to
379 =head1 Utility Changes
381 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
382 Most of these are built within the directory F<utils>.
384 [ List utility changes as a =head2 entry for each utility and =item
385 entries for each change
386 Use L<XXX> with program names to get proper documentation linking. ]
394 Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
395 C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
396 the interpreter, since Perl 5.17.10. This has been fixed.
400 =head1 Configuration and Compilation
402 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
403 go here. Any other changes to the Perl build process should be listed here.
404 However, any platform-specific changes should be listed in the
405 L</Platform Support> section, instead.
407 [ List changes as a =item entry ].
413 If you had F<Configure> hints for C<d_procselfexe> or C<procselfexe>, they were
414 probably broken by the AmigaOS changes in Perl 5.23.3. This has been now
416 L<[perl #126152]|https://rt.perl.org/Ticket/Display.html?id=126152>
422 XXX Any significant changes to the testing of a freshly built perl should be
423 listed here. Changes which create B<new> files in F<t/> go here as do any
424 large changes to the testing harness (e.g. when parallel testing was added).
425 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
426 that they represent may be covered elsewhere.
428 [ List each test improvement as a =item entry ]
438 =head1 Platform Support
440 XXX Any changes to platform support should be listed in the sections below.
442 [ Within the sections, list each platform as a =item entry with specific
443 changes as paragraphs below it. ]
447 XXX List any platforms that this version of perl compiles on, that previous
448 versions did not. These will either be enabled by new files in the F<hints/>
449 directories, or new subdirectories and F<README> files at the top level of the
454 =item XXX-some-platform
460 =head2 Discontinued Platforms
462 XXX List any platforms that this version of perl no longer compiles on.
466 =item XXX-some-platform
472 =head2 Platform-Specific Notes
474 XXX List any changes for specific platforms. This could include configuration
475 and compilation changes or changes in portability/compatibility. However,
476 changes within modules for platforms should generally be listed in the
477 L</Modules and Pragmata> section.
487 Under some circumstances IRIX stdio fgetc() and fread() set the errno to
488 C<ENOENT>, which made no sense according to either IRIX or POSIX docs. Errno
489 is now cleared in such cases.
490 L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
494 Problems when multiplying long doubles by infinity have been fixed.
495 L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
505 Until now OS X builds of perl have specified a link target of 10.3 (Panther,
506 2003) but have not specified a compiler target. From now on, builds of perl on
507 OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
508 version and specify that as the explicit build target in both compiler and
509 linker flags, thus preserving binary compatibility for extensions built later
510 regardless of changes in OS X, SDK, or compiler and linker versions. To
511 override the default value used in the build and preserved in the flags,
512 specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
513 perl, where 10.N is the version of OS X you wish to target. In OS X 10.5 or
514 earlier there is no change to the behavior present when those systems were
515 current; the link target is still OS X 10.3 and there is no explicit compiler
526 Perl now implements its own C<killpg> by scanning for processes in the
527 specified process group, which may not mean exactly the same thing as a Unix
528 process group, but allows us to send a signal to a parent (or master) process
529 and all of its sub-processes. At the perl level, this means we can now send a
530 negative pid like so:
534 to signal all processes in the same group as C<$pid>.
544 A new build option C<USE_NO_REGISTRY> has been added to the makefiles. This
545 option is off by default, meaning the default is to do Windows registry
546 lookups. This option stops Perl from looking inside the registry for anything.
547 For what values are looked up in the registry see L<perlwin32>. Internally, in
548 C, the name of this option is C<WIN32_NO_REGISTRY>.
552 The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
553 C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
554 vars starting with C<PERL> has changed. Previously, the 2 keys were checked
555 for entries at all times through Perl processes life time even if they did not
556 exist. For performance reasons, now, if the root key (i.e.
557 C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
558 not exist at process start time, it will not be checked again for C<%ENV>
559 override entries for the remainder of the Perl processes life. This more
560 closely matches Unix behaviour in that the environment is copied or inherited
561 on startup and changing the variable in the parent process or another process
562 or editing <.bashrc> will not change the environmental variable in other
563 existing, running, processes.
567 One glob fetch was removed for each C<-X> or C<stat> call whether done from
568 Perl code or internally from Perl's C code. The glob being looked up was
569 C<${^WIN32_SLOPPY_STAT}> which is a special variable. This makes C<-X> and
570 C<stat> slightly faster.
574 During miniperl's process startup, during the build process, 4 to 8 IO calls
575 related to the process starting F<.pl> and the F<buildcustomize.pl> file were
576 removed from the code opening and executing the first 1 or 2 F<.pl> files.
582 =head1 Internal Changes
584 XXX Changes which affect the interface available to C<XS> code go here. Other
585 significant internal changes for future core maintainers should be noted as
588 [ List each change as a =item entry ]
594 L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>. It
595 previously has always returned C<0> since Perl 5.000 stable but that was
596 undocumented. Although C<sv_backoff> is marked as public API, XS code is not
597 expected to be impacted since the proper API call would be through public API
598 C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
599 C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
600 meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
604 The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
605 with integer truncation and wrapping. In particular, some casts formerly used
606 within the macros have been removed. This means for example that passing an
607 unsigned nitems arg is likely to raise a compiler warning now (it's always been
608 documented to require a signed value; formerly int, lately SSize_t).
612 =head1 Selected Bug Fixes
614 XXX Important bug fixes in the core language are summarized here. Bug fixes in
615 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
617 [ List each fix as a =item entry ]
623 There were places in regular expression patterns where comments (C<(?#...)>)
624 weren't allowed, but should have been. This is now fixed.
625 L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
629 A regression from perl Perl 5.20 has been fixed, in which some syntax errors in
630 L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
631 within regular expression patterns could cause a segfault instead of a proper
633 L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
637 Some problems with attempting to extend the perl stack to around 2G or 4G
638 entries have been fixed. This was particularly an issue on 32-bit perls built
639 to use 64-bit integers, and was easily noticeable with the list repetition
642 @a = (1) x $big_number
644 Formerly perl may have crashed, depending on the exact value of C<$big_number>;
645 now it will typically raise an exception.
646 L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
650 In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
651 the condition is C<(?!)> then perl failed the match outright instead of
652 matching the no-pattern. This has been fixed.
653 L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
657 The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
658 argument and set C<REGERROR/REGMARK> appropriately as well.
659 L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
663 =head1 Known Problems
665 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
666 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
667 platform specific bugs also go here.
669 [ List each fix as a =item entry ]
679 =head1 Errata From Previous Releases
685 (This was actually done in Perl 5.23.2, but the perldelta entry got missed.)
686 The way that C<OP_AASSIGN> handles assignment with potentially common values
687 (e.g. C<($a,$b) = ($b, $a)> has changed. In particular the C<OPpASSIGN_COMMON>
688 flag has been replaced with three more specific flags:
692 OPpASSIGN_COMMON_SCALAR
694 and the runtime now sometimes does a mark and sweep using the C<SVf_BREAK> to
695 detect common elements.
701 XXX If any significant core contributor has died, we've added a short obituary
704 =head1 Acknowledgements
706 XXX Generate this with:
708 perl Porting/acknowledgements.pl v5.23.3..HEAD
710 =head1 Reporting Bugs
712 If you find what you think is a bug, you might check the articles recently
713 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
714 L<https://rt.perl.org/> . There may also be information at
715 L<http://www.perl.org/> , the Perl Home Page.
717 If you believe you have an unreported bug, please run the L<perlbug> program
718 included with your release. Be sure to trim your bug down to a tiny but
719 sufficient test case. Your bug report, along with the output of C<perl -V>,
720 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
722 If the bug you are reporting has security implications, which make it
723 inappropriate to send to a publicly archived mailing list, then please send it
724 to perl5-security-report@perl.org. This points to a closed subscription
725 unarchived mailing list, which includes all the core committers, who will be
726 able to help assess the impact of issues, figure out a resolution, and help
727 co-ordinate the release of patches to mitigate or fix the problem across all
728 platforms on which Perl is supported. Please only use this address for
729 security issues in the Perl core, not for modules independently distributed on
734 The F<Changes> file for an explanation of how to view exhaustive details on
737 The F<INSTALL> file for how to build Perl.
739 The F<README> file for general stuff.
741 The F<Artistic> and F<Copying> files for copyright information.