5 perldelta - what is new for perl v5.23.8
9 This document describes differences between the 5.23.7 release and the 5.23.8
12 If you are upgrading from an earlier release such as 5.23.6, first read
13 L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7.
15 =head1 Core Enhancements
17 =head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
19 When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
20 C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
21 included in the hash passed to the handler, if supported by the
26 =head2 Set proper umask before calling C<mkstemp(3)>
28 In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
29 and restoring it afterwards. This wrongfully tells open(2) to strip
30 the owner read and write bits from the given mode before applying it,
31 rather than the intended negation of leaving only those bits in place.
33 Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
34 glibc) createa a file with permissions 0066, leaving world read and
35 write permissions regardless of current umask.
37 This has been fixed by using umask 0177 instead. [perl #127322]
39 =head1 Incompatible Changes
41 =head2 C<qr/\N{}/> now disallowed under C<use re "strict">
43 An empty C<\N{}> makes no sense, but for backwards compatibility is
44 silently accepted as doing nothing. But now this is a fatal error under
45 the experimental feature L<re/'strict' mode>.
47 =head1 Performance Enhancements
53 The overhead of scope entry and exit has been considerably reduced, so
54 for example subroutine calls, loops and basic blocks are all faster now.
55 This empty function call now takes about a third less time to execute:
61 On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
62 exist, is now 3.5x faster on a SSD (or any drive) than before.
66 =head1 Modules and Pragmata
68 =head2 Updated Modules and Pragmata
74 F<cpan/podlators/> has been upgraded from version 4.04 to 4.06.
78 The PathTools module collection has been upgraded from version 3.62
83 L<DynaLoader> has been upgraded from version 1.37 to 1.38.
85 DynaLoader now always looks for bootstrap files having the same base name as
86 the module for which the bootstrap code is being run. Previously, and only on
87 platforms that use C<mod2fname> to produce unique loadable library names,
88 L<DynaLoader> would look for the bootstrap file using a base name that matched
89 the loadable library and not find it.
93 L<Encode> has been upgraded from version 2.78 to 2.80.
97 L<ExtUtils::CBuilder> has been upgraded from version 0.280224 to 0.280225.
101 L<ExtUtils::MakeMaker> has been upgraded from version 7.10 to 7.10_01.
105 L<File::Spec> has been upgraded from version 3.62 to 3.63.
109 L<IPC::SysV> has been upgraded from version 2.04 to 2.05.
113 L<Module::CoreList> has been upgraded from version 5.20160120 to 5.20160121.
117 L<ODBM_File> has been upgraded from version 1.12 to 1.13.
121 L<PerlIO::encoding> has been upgraded from version 0.23 to 0.24.
125 L<POSIX> has been upgraded from version 1.59 to 1.63.
127 It can now export constants for the C<code> value in the hash passed to the
128 L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
130 These previously deprecated functions are now removed: C<isalnum>,
131 C<isalpha>, C<iscntrl>, C<isdigit>, C<isgraph>, C<islower>, C<isprint>,
132 C<ispunct>, C<isspace>, C<isupper>, and C<isxdigit>.
136 L<Storable> has been upgraded from version 2.54 to 2.55.
140 L<Time::HiRes> has been upgraded from version 1.9728 to 1.9730.
142 It can now export Linux-specific and FreeBSD-specific C<clock_gettime()>
143 constants. It also now has emulation for OS X C<clock_nanosleep()>,
144 C<clock_gettime()>, and C<clock_getres()>.
150 =head2 Changes to Existing Documentation
158 A new section has been added, L<perlguts/"Dynamic Scope and the Context
159 Stack">, which explains how the perl context stack works.
169 We now recommend contacting the module-authors list or PAUSE in seeking
170 guidance on the naming of modules.
176 The following additions or changes have been made to diagnostic output,
177 including warnings and fatal error messages. For the complete list of
178 diagnostic messages, see L<perldiag>.
180 =head2 New Diagnostics
188 L<Sequence (?PE<lt>... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
189 |perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
193 L<Sequence (?PE<gt>... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
194 |perldiag/Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>>
198 L<Empty \%c in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
199 |perldiag/Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>>
209 L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
210 perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
214 =head1 Configuration and Compilation
220 The GNU Make makefile for Win32 now supports parallel builds. [perl #126632]
224 You can now build perl with MSVC++ on Win32 using GNU Make. [perl #126632]
228 Bison 3.0 is now supported.
232 =head1 Platform Support
234 =head2 Platform-Specific Notes
244 For those C<%ENV> elements based on the CRTL environ array, we've always
245 preserved case when setting them but did look-ups only after upcasing the
246 key first, which made lower- or mixed-case entries go missing. This problem
247 has been corrected by making C<%ENV> elements derived from the environ array
248 case-sensitive on look-up as well as case-preserving on store.
252 Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
253 considered logical names, but now consider all sources of C<%ENV> as
254 determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
260 =head2 Platform-Specific Notes
266 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
267 an "INTERNAL COMPILER ERROR" message. [perl #126045]
271 =head1 Internal Changes
277 The implementation of perl's context stack system, and its internal API,
278 have been heavily reworked. Note that no significant changes have been
279 made to any external APIs, but XS code which relies on such internal
280 details may need to be fixed. The main changes are:
286 The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
287 inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
288 function args rather than implicitly relying on local vars such as
289 C<gimme> and C<newsp> being available. Also their functionality has
290 changed: in particular, C<cx_popblock()> no longer decrements
291 C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
292 involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
293 documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
294 details on how to use them.
298 Various macros, which now consistently have a CX_ prefix, have been added:
300 CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
304 CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
308 C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
309 CMpp_enter*> and C<pp_leave*> no longer do
311 ENTER; SAVETMPS; ....; LEAVE
315 C<cx_popblock()> now also restores C<PL_curpm>.
319 In C<dounwind()> for every context type, the current savestack frame is
320 now processed before each context is popped; formerly this was only done
321 for sub-like context frames. This action has been removed from
322 C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
323 must be called before C<cx_popsub()> etc.
325 C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
326 (formerly it only did the C<cx_popsub()> etc. actions on each frame).
330 The temps stack is now freed on scope exit; previously, temps created
331 during the last statement of a block wouldn't be freed until the next
332 C<nextstate> following the block (apart from an existing hack that did
333 this for recursive subs in scalar context); and in something like
334 C<f(g())>, the temps created by the last statement in C<g()> would
335 formerly not be freed until the statement following the return from
340 Most values that were saved on the savestack on scope entry are now
341 saved in suitable new fields in the context struct, and saved and
342 restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
347 Various context struct fields have been added, removed or modified.
351 The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
352 considerably tidied up, including removing the C<argarray> field from the
353 context struct, and extracting out some common (but rarely used) code into
354 a separate function, C<clear_defarray()>. Also, useful subsets of
355 C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
356 gathered into the new functions C<cx_popsub_args()> and
357 C<cx_popsub_common()>.
361 C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
362 of the C<pp_leave*>'s to process return args.
366 C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
367 C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
371 Some variables formerly declared by C<dMULTICALL> (but not documented) have
378 =head1 Selected Bug Fixes
384 Line numbers larger than 2**31-1 but less than 2**32 are no longer
385 returned by caller() as negative numbers. [perl #126991]
389 C<< unless ( I<assignment> ) >> now properly warns when syntax
390 warnings are enabled. [perl #127122]
394 Setting an C<ISA> glob to an array reference now properly adds
395 C<isaelem> magic to any existing elements. Previously modifying such
396 an element would not update the ISA cache, so method calls would call
397 the wrong function. Perl would also crash if the C<ISA> glob was
398 destroyed, since new code added in 5.23.7 would try to release the
399 C<isaelem> magic from the elements. [perl #127351]
403 If a here-doc was found while parsing another operator, the parser had
404 already read end of file, and the here-doc was not terminated, perl
405 could produce an assertion or a segmentation fault. This now reliably
406 complains about the unterminated here-doc. [perl #125540]
410 untie() would sometimes return the last value returned by the UNTIE()
411 handler as well as it's normal value, messing up the stack. [perl
416 Fixed an operator precedence problem when C< castflags & 2> is true.
421 Caching of DESTROY methods could result in a non-pointer or a
422 non-STASH stored in the SvSTASH() slot of a stash, breaking the B
423 STASH() method. The DESTROY method is now cached in the MRO metadata
424 for the stash. [perl #126410]
428 The AUTOLOAD method is now called when searching for a DESTROY method,
429 and correctly sets C<$AUTOLOAD> too. [perl #124387] [perl #127494]
433 Avoid parsing beyond the end of the buffer when processing a C<#line>
434 directive with no filename. [perl #127334]
438 Perl now raises a warning when a regular expression pattern looks like
439 it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
440 there was some slight defect in its specification which causes it to
441 instead be treated as a regular bracketed character class. An example
442 would be missing the second colon in the above like this:
443 C<qr/[[:alpha]]/>. This compiles to match a sequence of two characters.
444 The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
445 C<"h">, C<"l">, or C<"p">. This is unlikely to be the intended
446 meaning, and now a warning is raised. No warning is raised unless the
447 specification is very close to one of the 14 legal POSIX classes. (See
448 L<perlrecharclass/POSIX Character Classes>.)
453 Certain regex patterns involving a complemented POSIX class in an
454 inverted bracketed character class, and matching something else
455 optionally would improperly fail to match. An example of one that could
456 fail is C</qr/_?[^\Wbar]\x{100}/>. This has been fixed.
461 Perl 5.22 added support to the C99 hexadecimal floating point notation,
462 but sometimes misparses hex floats. This had been fixed.
467 =head1 Acknowledgements
469 Perl 5.23.8 represents approximately 4 weeks of development since Perl 5.23.7
470 and contains approximately 30,000 lines of changes across 350 files from 23
473 Excluding auto-generated files, documentation and release tools, there were
474 approximately 14,000 lines of changes to 210 .pm, .t, .c and .h files.
476 Perl continues to flourish into its third decade thanks to a vibrant community
477 of users and developers. The following people are known to have contributed the
478 improvements that became Perl 5.23.8:
480 Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
481 Mannsåker, Daniel Dragan, David Mitchell, Ed J, Herbert Breunung, H.Merijn
482 Brand, James E Keenan, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Niko
483 Tyni, Pip Cet, Ricardo Signes, Sawyer X, Sisyphus, Stevan Little, Steve Hay,
484 Todd Rinaldo, Tom Hukins, Tony Cook.
486 The list above is almost certainly incomplete as it is automatically generated
487 from version control history. In particular, it does not include the names of
488 the (very much appreciated) contributors who reported issues to the Perl bug
491 Many of the changes included in this version originated in the CPAN modules
492 included in Perl's core. We're grateful to the entire CPAN community for
493 helping Perl to flourish.
495 For a more complete list of all of Perl's historical contributors, please see
496 the F<AUTHORS> file in the Perl source distribution.
498 =head1 Reporting Bugs
500 If you find what you think is a bug, you might check the articles recently
501 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
502 L<https://rt.perl.org/> . There may also be information at
503 L<http://www.perl.org/> , the Perl Home Page.
505 If you believe you have an unreported bug, please run the L<perlbug> program
506 included with your release. Be sure to trim your bug down to a tiny but
507 sufficient test case. Your bug report, along with the output of C<perl -V>,
508 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
510 If the bug you are reporting has security implications, which make it
511 inappropriate to send to a publicly archived mailing list, then please send it
512 to perl5-security-report@perl.org. This points to a closed subscription
513 unarchived mailing list, which includes all the core committers, who will be
514 able to help assess the impact of issues, figure out a resolution, and help
515 co-ordinate the release of patches to mitigate or fix the problem across all
516 platforms on which Perl is supported. Please only use this address for
517 security issues in the Perl core, not for modules independently distributed on
522 The F<Changes> file for an explanation of how to view exhaustive details on
525 The F<INSTALL> file for how to build Perl.
527 The F<README> file for general stuff.
529 The F<Artistic> and F<Copying> files for copyright information.