5 perldelta - what is new for perl v5.23.4
9 This document describes differences between the 5.23.3 release and the 5.23.4
12 If you are upgrading from an earlier release such as 5.23.2, first read
13 L<perl5233delta>, which describes differences between 5.23.2 and 5.23.3.
15 =head1 Incompatible Changes
17 =head2 Lexical $_ has been removed
19 C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
20 with no obvious solution. In Perl 5.18.0, it was made experimental on the
21 theory that it would either be removed or redesigned in a less confusing (but
22 backward-incompatible) way. Over the following years, no alternatives were
23 proposed. The feature has now been removed and will fail to compile.
25 =head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
27 The experimental Extended Bracketed Character Classes can contain regular
28 bracketed character classes within them. These differ from regular ones in
29 that white space is generally ignored, unless escaped by preceding it with a
30 backslash. The white space that is ignored is now limited to just tab C<\t>
31 and SPACE characters. Previously, it was any white space. See
32 L<perlrecharclass/Extended Bracketed Character Classes>.
34 =head1 Performance Enhancements
40 C</fixed-substr/> has been made much faster.
42 On platforms with a libc memchr() implementation which makes good use of
43 underlying hardware support, patterns which include fixed substrings will now
44 often be much faster; for example with glibc on on a recent x86_64 CPU, this:
46 $s = "a" x 1000 . "wxyz";
47 $s =~ /wxyz/ for 1..30000
49 is now about 7 times faster. On systems with slow memchr(), e.g. 32-bit ARM
50 Raspberry Pi, there will be a small or little speedup. Conversely, some
51 pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
52 times slower on the rPi, 1.5x slower on x86_64.
56 =head1 Modules and Pragmata
58 =head2 Updated Modules and Pragmata
64 L<B> has been upgraded from version 1.59 to 1.60.
68 L<bignum> has been upgraded from version 0.40 to 0.41.
72 L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
76 L<Compress::Raw::Zlib> has been upgraded from version 2.068_01 to 2.069.
80 L<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
84 L<DynaLoader> has been upgraded from version 1.34 to 1.35.
88 L<Encode> has been upgraded from version 2.77 to 2.78.
92 L<experimental> has been upgraded from version 0.014 to 0.016.
96 L<ExtUtils::CBuilder> has been upgraded from version 0.280223 to 0.280224.
100 L<File::Path> has been upgraded from version 2.11 to 2.12.
104 L<if> has been upgraded from version 0.0605 to 0.0606.
108 L<IO> has been upgraded from version 1.35 to 1.36.
110 For an IO::Poll object C<$poll> with no file handles yet in it,
111 C<$poll->poll(10)> now sleeps for up to 10 seconds anyway instead of returning
113 L<[cpan #25049]|https://rt.cpan.org/Ticket/Display.html?id=25049>
117 The IO-Compress modules have been upgraded from version 2.068 to 2.069.
121 L<Math::BigInt> has been upgraded from version 1.999701 to 1.999704.
125 L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.34.
129 L<Module::CoreList> has been upgraded from version 5.20150920 to 5.20151020.
133 L<Module::Metadata> has been upgraded from version 1.000027 to 1.000029.
137 L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
141 L<PerlIO::encoding> has been upgraded from version 0.21 to 0.22.
143 PerlIO::encoding objects are now properly duplicated.
144 L<[perl #31923]|https://rt.perl.org/Ticket/Display.html?id=31923>
148 L<POSIX> has been upgraded from version 1.57 to 1.58.
150 If C<POSIX::strerror> was passed C<$!> as its argument then it accidentally
151 cleared C<$!>. This has been fixed.
152 L<[perl #126229]|https://rt.perl.org/Ticket/Display.html?id=126229>
156 L<Socket> has been upgraded from version 2.020_01 to 2.020_02.
158 Various fixes have been applied to inet_pton for the benefit of MS VC++ builds
159 on Windows. In particular, this restores the build with MS VC++ 6.0.
163 L<Unicode::Normalize> has been upgraded from version 1.19 to 1.21.
167 L<warnings> has been upgraded from version 1.33 to 1.35.
169 The C<warnings::enabled> example now actually uses C<warnings::enabled>.
170 L<[perl #126051]|https://rt.perl.org/Ticket/Display.html?id=126051>
176 =head2 Changes to Existing Documentation
184 The process of using undocumented globals has been documented, namely, that one
185 should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
186 first to get the go-ahead for documenting and using an undocumented function or
197 Updated to note that anonymous subroutines can have signatures.
207 The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
217 The specific true value of C<$!{E...}> is now documented, noting that it is
218 subject to change and not guaranteed.
224 The following additions or changes have been made to diagnostic output,
225 including warnings and fatal error messages. For the complete list of
226 diagnostic messages, see L<perldiag>.
228 =head2 New Diagnostics
236 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/">
240 L<perldiag/"Illegal user-defined property name">
244 =head2 Changes to Existing Diagnostics
250 L<"Can't modify non-lvalue subroutine call of &%s"|perldiag/"Can't modify non-lvalue subroutine call of &%s">
252 This error now reports the name of the non-lvalue subroutine you attempted to
257 =head1 Configuration and Compilation
263 Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
264 C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
265 the interpreter, since Perl 5.17.10. This has been fixed.
269 If you had F<Configure> hints for C<d_procselfexe> or C<procselfexe>, they were
270 probably broken by the AmigaOS changes in Perl 5.23.3. This has been now
272 L<[perl #126152]|https://rt.perl.org/Ticket/Display.html?id=126152>
276 =head1 Platform Support
278 =head2 Platform-Specific Notes
288 Under some circumstances IRIX stdio fgetc() and fread() set the errno to
289 C<ENOENT>, which made no sense according to either IRIX or POSIX docs. Errno
290 is now cleared in such cases.
291 L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
295 Problems when multiplying long doubles by infinity have been fixed.
296 L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
306 Until now OS X builds of perl have specified a link target of 10.3 (Panther,
307 2003) but have not specified a compiler target. From now on, builds of perl on
308 OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
309 version and specify that as the explicit build target in both compiler and
310 linker flags, thus preserving binary compatibility for extensions built later
311 regardless of changes in OS X, SDK, or compiler and linker versions. To
312 override the default value used in the build and preserved in the flags,
313 specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
314 perl, where 10.N is the version of OS X you wish to target. In OS X 10.5 or
315 earlier there is no change to the behavior present when those systems were
316 current; the link target is still OS X 10.3 and there is no explicit compiler
327 Perl now implements its own C<killpg> by scanning for processes in the
328 specified process group, which may not mean exactly the same thing as a Unix
329 process group, but allows us to send a signal to a parent (or master) process
330 and all of its sub-processes. At the perl level, this means we can now send a
331 negative pid like so:
335 to signal all processes in the same group as C<$pid>.
345 A new build option C<USE_NO_REGISTRY> has been added to the makefiles. This
346 option is off by default, meaning the default is to do Windows registry
347 lookups. This option stops Perl from looking inside the registry for anything.
348 For what values are looked up in the registry see L<perlwin32>. Internally, in
349 C, the name of this option is C<WIN32_NO_REGISTRY>.
353 The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
354 C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
355 vars starting with C<PERL> has changed. Previously, the 2 keys were checked
356 for entries at all times through Perl processes life time even if they did not
357 exist. For performance reasons, now, if the root key (i.e.
358 C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
359 not exist at process start time, it will not be checked again for C<%ENV>
360 override entries for the remainder of the Perl processes life. This more
361 closely matches Unix behaviour in that the environment is copied or inherited
362 on startup and changing the variable in the parent process or another process
363 or editing <.bashrc> will not change the environmental variable in other
364 existing, running, processes.
368 One glob fetch was removed for each C<-X> or C<stat> call whether done from
369 Perl code or internally from Perl's C code. The glob being looked up was
370 C<${^WIN32_SLOPPY_STAT}> which is a special variable. This makes C<-X> and
371 C<stat> slightly faster.
375 During miniperl's process startup, during the build process, 4 to 8 IO calls
376 related to the process starting F<.pl> and the F<buildcustomize.pl> file were
377 removed from the code opening and executing the first 1 or 2 F<.pl> files.
383 =head1 Internal Changes
389 L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>. It
390 previously has always returned C<0> since Perl 5.000 stable but that was
391 undocumented. Although C<sv_backoff> is marked as public API, XS code is not
392 expected to be impacted since the proper API call would be through public API
393 C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
394 C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
395 meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
399 The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
400 with integer truncation and wrapping. In particular, some casts formerly used
401 within the macros have been removed. This means for example that passing an
402 unsigned nitems arg is likely to raise a compiler warning now (it's always been
403 documented to require a signed value; formerly int, lately SSize_t).
407 =head1 Selected Bug Fixes
413 There were places in regular expression patterns where comments (C<(?#...)>)
414 weren't allowed, but should have been. This is now fixed.
415 L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
419 A regression from perl Perl 5.20 has been fixed, in which some syntax errors in
420 L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
421 within regular expression patterns could cause a segfault instead of a proper
423 L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
427 Some problems with attempting to extend the perl stack to around 2G or 4G
428 entries have been fixed. This was particularly an issue on 32-bit perls built
429 to use 64-bit integers, and was easily noticeable with the list repetition
432 @a = (1) x $big_number
434 Formerly perl may have crashed, depending on the exact value of C<$big_number>;
435 now it will typically raise an exception.
436 L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
440 In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
441 the condition is C<(?!)> then perl failed the match outright instead of
442 matching the no-pattern. This has been fixed.
443 L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
447 The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
448 argument and set C<REGERROR>/C<REGMARK> appropriately as well.
449 L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
453 Several bugs, including a segmentation fault, have been fixed with the
454 bounds checking constructs (introduced in Perl v5.22) C<\b{gcb}>,
455 C<\b{sb}>, C<\b{wb}>, C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.
456 L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>.
457 All the C<\B{}> ones now match an empty string; none of the C<\b{}> ones
462 =head1 Errata From Previous Releases
468 (This was actually done in Perl 5.23.2, but the perldelta entry got missed.)
469 The way that C<OP_AASSIGN> handles assignment with potentially common values
470 (e.g. C<($a,$b) = ($b, $a)> has changed. In particular the C<OPpASSIGN_COMMON>
471 flag has been replaced with three more specific flags:
475 OPpASSIGN_COMMON_SCALAR
477 and the runtime now sometimes does a mark and sweep using the C<SVf_BREAK> to
478 detect common elements.
482 =head1 Acknowledgements
484 XXX Generate this with:
486 perl Porting/acknowledgements.pl v5.23.3..HEAD
488 =head1 Reporting Bugs
490 If you find what you think is a bug, you might check the articles recently
491 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
492 L<https://rt.perl.org/> . There may also be information at
493 L<http://www.perl.org/> , the Perl Home Page.
495 If you believe you have an unreported bug, please run the L<perlbug> program
496 included with your release. Be sure to trim your bug down to a tiny but
497 sufficient test case. Your bug report, along with the output of C<perl -V>,
498 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
500 If the bug you are reporting has security implications, which make it
501 inappropriate to send to a publicly archived mailing list, then please send it
502 to perl5-security-report@perl.org. This points to a closed subscription
503 unarchived mailing list, which includes all the core committers, who will be
504 able to help assess the impact of issues, figure out a resolution, and help
505 co-ordinate the release of patches to mitigate or fix the problem across all
506 platforms on which Perl is supported. Please only use this address for
507 security issues in the Perl core, not for modules independently distributed on
512 The F<Changes> file for an explanation of how to view exhaustive details on
515 The F<INSTALL> file for how to build Perl.
517 The F<README> file for general stuff.
519 The F<Artistic> and F<Copying> files for copyright information.