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) create 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 E<lt>-- 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 E<lt>-- 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 E<lt>-- 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 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
261 an "INTERNAL COMPILER ERROR" message. [perl #126045]
265 =head1 Internal Changes
271 The implementation of perl's context stack system, and its internal API,
272 have been heavily reworked. Note that no significant changes have been
273 made to any external APIs, but XS code which relies on such internal
274 details may need to be fixed. The main changes are:
280 The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
281 inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
282 function args rather than implicitly relying on local vars such as
283 C<gimme> and C<newsp> being available. Also their functionality has
284 changed: in particular, C<cx_popblock()> no longer decrements
285 C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
286 involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
287 documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
288 details on how to use them.
292 Various macros, which now consistently have a CX_ prefix, have been added:
294 CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
298 CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
302 C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
303 C<pp_enter*> and C<pp_leave*> no longer do
305 ENTER; SAVETMPS; ....; LEAVE
309 C<cx_popblock()> now also restores C<PL_curpm>.
313 In C<dounwind()> for every context type, the current savestack frame is
314 now processed before each context is popped; formerly this was only done
315 for sub-like context frames. This action has been removed from
316 C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
317 must be called before C<cx_popsub()> etc.
319 C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
320 (formerly it only did the C<cx_popsub()> etc. actions on each frame).
324 The temps stack is now freed on scope exit; previously, temps created
325 during the last statement of a block wouldn't be freed until the next
326 C<nextstate> following the block (apart from an existing hack that did
327 this for recursive subs in scalar context); and in something like
328 C<f(g())>, the temps created by the last statement in C<g()> would
329 formerly not be freed until the statement following the return from
334 Most values that were saved on the savestack on scope entry are now
335 saved in suitable new fields in the context struct, and saved and
336 restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
341 Various context struct fields have been added, removed or modified.
345 The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
346 considerably tidied up, including removing the C<argarray> field from the
347 context struct, and extracting out some common (but rarely used) code into
348 a separate function, C<clear_defarray()>. Also, useful subsets of
349 C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
350 gathered into the new functions C<cx_popsub_args()> and
351 C<cx_popsub_common()>.
355 C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
356 of the C<pp_leave*>'s to process return args.
360 C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
361 C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
365 Some variables formerly declared by C<dMULTICALL> (but not documented) have
372 =head1 Selected Bug Fixes
378 Line numbers larger than 2**31-1 but less than 2**32 are no longer
379 returned by caller() as negative numbers. [perl #126991]
383 C<< unless ( I<assignment> ) >> now properly warns when syntax
384 warnings are enabled. [perl #127122]
388 Setting an C<ISA> glob to an array reference now properly adds
389 C<isaelem> magic to any existing elements. Previously modifying such
390 an element would not update the ISA cache, so method calls would call
391 the wrong function. Perl would also crash if the C<ISA> glob was
392 destroyed, since new code added in 5.23.7 would try to release the
393 C<isaelem> magic from the elements. [perl #127351]
397 If a here-doc was found while parsing another operator, the parser had
398 already read end of file, and the here-doc was not terminated, perl
399 could produce an assertion or a segmentation fault. This now reliably
400 complains about the unterminated here-doc. [perl #125540]
404 untie() would sometimes return the last value returned by the UNTIE()
405 handler as well as it's normal value, messing up the stack. [perl
410 Fixed an operator precedence problem when C< castflags & 2> is true.
415 Caching of DESTROY methods could result in a non-pointer or a
416 non-STASH stored in the SvSTASH() slot of a stash, breaking the B
417 STASH() method. The DESTROY method is now cached in the MRO metadata
418 for the stash. [perl #126410]
422 The AUTOLOAD method is now called when searching for a DESTROY method,
423 and correctly sets C<$AUTOLOAD> too. [perl #124387] [perl #127494]
427 Avoid parsing beyond the end of the buffer when processing a C<#line>
428 directive with no filename. [perl #127334]
432 Perl now raises a warning when a regular expression pattern looks like
433 it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
434 there was some slight defect in its specification which causes it to
435 instead be treated as a regular bracketed character class. An example
436 would be missing the second colon in the above like this:
437 C<qr/[[:alpha]]/>. This compiles to match a sequence of two characters.
438 The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
439 C<"h">, C<"l">, or C<"p">. This is unlikely to be the intended
440 meaning, and now a warning is raised. No warning is raised unless the
441 specification is very close to one of the 14 legal POSIX classes. (See
442 L<perlrecharclass/POSIX Character Classes>.)
447 Certain regex patterns involving a complemented POSIX class in an
448 inverted bracketed character class, and matching something else
449 optionally would improperly fail to match. An example of one that could
450 fail is C</qr/_?[^\Wbar]\x{100}/>. This has been fixed.
455 Perl 5.22 added support to the C99 hexadecimal floating point notation,
456 but sometimes misparses hex floats. This had been fixed.
461 =head1 Acknowledgements
463 Perl 5.23.8 represents approximately 4 weeks of development since Perl 5.23.7
464 and contains approximately 30,000 lines of changes across 350 files from 23
467 Excluding auto-generated files, documentation and release tools, there were
468 approximately 14,000 lines of changes to 210 .pm, .t, .c and .h files.
470 Perl continues to flourish into its third decade thanks to a vibrant community
471 of users and developers. The following people are known to have contributed the
472 improvements that became Perl 5.23.8:
474 Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
475 Mannsåker, Daniel Dragan, David Mitchell, Ed J, Herbert Breunung, H.Merijn
476 Brand, James E Keenan, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Niko
477 Tyni, Pip Cet, Ricardo Signes, Sawyer X, Sisyphus, Stevan Little, Steve Hay,
478 Todd Rinaldo, Tom Hukins, Tony Cook.
480 The list above is almost certainly incomplete as it is automatically generated
481 from version control history. In particular, it does not include the names of
482 the (very much appreciated) contributors who reported issues to the Perl bug
485 Many of the changes included in this version originated in the CPAN modules
486 included in Perl's core. We're grateful to the entire CPAN community for
487 helping Perl to flourish.
489 For a more complete list of all of Perl's historical contributors, please see
490 the F<AUTHORS> file in the Perl source distribution.
492 =head1 Reporting Bugs
494 If you find what you think is a bug, you might check the articles recently
495 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
496 L<https://rt.perl.org/> . There may also be information at
497 L<http://www.perl.org/> , the Perl Home Page.
499 If you believe you have an unreported bug, please run the L<perlbug> program
500 included with your release. Be sure to trim your bug down to a tiny but
501 sufficient test case. Your bug report, along with the output of C<perl -V>,
502 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
504 If the bug you are reporting has security implications, which make it
505 inappropriate to send to a publicly archived mailing list, then please send it
506 to perl5-security-report@perl.org. This points to a closed subscription
507 unarchived mailing list, which includes all the core committers, who will be
508 able to help assess the impact of issues, figure out a resolution, and help
509 co-ordinate the release of patches to mitigate or fix the problem across all
510 platforms on which Perl is supported. Please only use this address for
511 security issues in the Perl core, not for modules independently distributed on
516 The F<Changes> file for an explanation of how to view exhaustive details on
519 The F<INSTALL> file for how to build Perl.
521 The F<README> file for general stuff.
523 The F<Artistic> and F<Copying> files for copyright information.