This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
9fdcae2e594d510c7bef5b6e64051ef86d5bc1a1
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.23.8
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.23.7 release and the 5.23.8
13 release.
14
15 If you are upgrading from an earlier release such as 5.23.6, first read
16 L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
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.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
31
32 When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
33 C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
34 included in the hash passed to the handler, if supported by the
35 platform.
36
37 =head1 Security
38
39 =head2 Set proper umask before calling C<mkstemp(3)>
40
41 In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
42 and restoring it afterwards. This wrongfully tells open(2) to strip
43 the owner read and write bits from the given mode before applying it,
44 rather than the intended negation of leaving only those bits in place.
45
46 Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
47 glibc) createa a file with permissions 0066, leaving world read and
48 write permissions regardless of current umask.
49
50 This has been fixed by using umask 0177 instead. [perl #127322]
51
52 =head1 Incompatible Changes
53
54 XXX For a release on a stable branch, this section aspires to be:
55
56     There are no changes intentionally incompatible with 5.XXX.XXX
57     If any exist, they are bugs, and we request that you submit a
58     report.  See L</Reporting Bugs> below.
59
60 [ List each incompatible change as a =head2 entry ]
61
62 =head2 C<qr/\N{}/> now disallowed under C<use re "strict">
63
64 An empty C<\N{}> makes no sense, but for backwards compatibility is
65 silently accepted as doing nothing.  But now this is a fatal error under
66 the experimental feature L<re/'strict' mode>.
67
68 =head1 Deprecations
69
70 XXX Any deprecated features, syntax, modules etc. should be listed here.
71
72 =head2 Module removals
73
74 XXX Remove this section if inapplicable.
75
76 The following modules will be removed from the core distribution in a
77 future release, and will at that time need to be installed from CPAN.
78 Distributions on CPAN which require these modules will need to list them as
79 prerequisites.
80
81 The core versions of these modules will now issue C<"deprecated">-category
82 warnings to alert you to this fact.  To silence these deprecation warnings,
83 install the modules in question from CPAN.
84
85 Note that these are (with rare exceptions) fine modules that you are encouraged
86 to continue to use.  Their disinclusion from core primarily hinges on their
87 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
88 not usually on concerns over their design.
89
90 =over
91
92 =item XXX
93
94 XXX Note that deprecated modules should be listed here even if they are listed
95 as an updated module in the L</Modules and Pragmata> section.
96
97 =back
98
99 [ List each other deprecation as a =head2 entry ]
100
101 =head1 Performance Enhancements
102
103 XXX Changes which enhance performance without changing behaviour go here.
104 There may well be none in a stable release.
105
106 [ List each enhancement as a =item entry ]
107
108 =over 4
109
110 =item *
111
112 The overhead of scope entry and exit has been considerably reduced, so
113 for example subroutine calls, loops and basic blocks are all faster now.
114 This empty function call now takes about a third less time to execute:
115
116     sub f{} f();
117
118 =item *
119
120 On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
121 exist, is now 3.5x faster on a SSD (or any drive) than before.
122
123 =back
124
125 =head1 Modules and Pragmata
126
127 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
128 go here.  If Module::CoreList is updated, generate an initial draft of the
129 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
130 for important changes should then be added by hand.  In an ideal world,
131 dual-life modules would have a F<Changes> file that could be cribbed.
132
133 [ Within each section, list entries as a =item entry ]
134
135 =head2 New Modules and Pragmata
136
137 =over 4
138
139 =item *
140
141 XXX
142
143 =back
144
145 =head2 Updated Modules and Pragmata
146
147 =over 4
148
149 =item *
150
151 F<cpan/podlators/> has been upgraded from version 4.04 to 4.06.
152
153 =item *
154
155 L<POSIX> has been upgraded from version 1.59 to 1.63.
156
157 It can now export constants for the C<code> value in the hash passed to the
158 L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
159
160 These previously deprecated functions are now removed: C<isalnum>,
161 C<isalpha>, C<iscntrl>, C<isdigit>, C<isgraph>, C<islower>, C<isprint>,
162 C<ispunct>, C<isspace>, C<isupper>, and C<isxdigit>.
163
164 =item *
165
166 L<Encode> has been upgraded from version 2.78 to 2.80.
167
168 =item *
169
170 L<Storable> has been upgraded from version 2.54 to 2.55.
171
172 =item *
173
174 L<Time::HiRes> has been upgraded from version 1.9728 to 1.9730.
175
176 It can now export Linux-specific and FreeBSD-specific C<clock_gettime()>
177 constants. It also now has emulation for OS X C<clock_nanosleep()>,
178 C<clock_gettime()>, and C<clock_getres()>.
179
180 =item *
181
182 L<DynaLoader> has been upgraded from version 1.37 to 1.38.
183
184 DynaLoader now always looks for bootstrap files having the same base name as
185 the module for which the bootstrap code is being run. Previously, and only on
186 platforms that use C<mod2fname> to produce unique loadable library names,
187 L<DynaLoader> would look for the bootstrap file using a base name that matched
188 the loadable library and not find it.
189
190 =item *
191
192 L<PerlIO::encoding> has been upgraded from version 0.23 to 0.24.
193
194 =item *
195
196 The PathTools module collection has been upgraded from version 3.62
197 to 3.63.
198
199 =item *
200
201 L<IPC::SysV> has been upgraded from version 2.04 to 2.05.
202
203 =back
204
205 =head2 Removed Modules and Pragmata
206
207 =over 4
208
209 =item *
210
211 XXX
212
213 =back
214
215 =head1 Documentation
216
217 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
218 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
219
220 =head2 New Documentation
221
222 XXX Changes which create B<new> files in F<pod/> go here.
223
224 =head3 L<XXX>
225
226 XXX Description of the purpose of the new file here
227
228 =head2 Changes to Existing Documentation
229
230 XXX Changes which significantly change existing files in F<pod/> go here.
231 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
232 section.
233
234 =head3 L<perlguts>
235
236 =over 4
237
238 =item *
239
240 A new section has been added, L<perlguts/"Dynamic Scope and the Context
241 Stack">, which explains how the perl context stack works.
242
243 =back
244
245 =head3 L<perlmodlib>
246
247 =over 4
248
249 =item *
250
251 We now recommend contacting the module-authors list or PAUSE in seeking
252 guidance on the naming of modules.
253
254 =back
255
256 =head1 Diagnostics
257
258 The following additions or changes have been made to diagnostic output,
259 including warnings and fatal error messages.  For the complete list of
260 diagnostic messages, see L<perldiag>.
261
262 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
263 include any changes in L<perldiag> that reconcile it to the C<C> code.
264
265 =head2 New Diagnostics
266
267 XXX Newly added diagnostic messages go under here, separated into New Errors
268 and New Warnings
269
270 =head3 New Errors
271
272 =over 4
273
274 =item *
275
276 L<Sequence (?PE<lt>... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
277 |perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
278
279 =item *
280
281 L<Sequence (?PE<gt>... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
282 |perldiag/Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>>
283
284 =item *
285
286 L<Empty \%c in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
287 |perldiag/Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>>
288
289 =back
290
291 =head3 New Warnings
292
293 =over 4
294
295 =item *
296
297 L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
298 perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
299
300 =back
301
302 =head2 Changes to Existing Diagnostics
303
304 XXX Changes (i.e. rewording) of diagnostic messages go here
305
306 =over 4
307
308 =item *
309
310 XXX Describe change here
311
312 =back
313
314 =head1 Utility Changes
315
316 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
317 Most of these are built within the directory F<utils>.
318
319 [ List utility changes as a =head2 entry for each utility and =item
320 entries for each change
321 Use L<XXX> with program names to get proper documentation linking. ]
322
323 =head2 L<XXX>
324
325 =over 4
326
327 =item *
328
329 XXX
330
331 =back
332
333 =head1 Configuration and Compilation
334
335 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
336 go here.  Any other changes to the Perl build process should be listed here.
337 However, any platform-specific changes should be listed in the
338 L</Platform Support> section, instead.
339
340 [ List changes as a =item entry ].
341
342 =over 4
343
344 =item *
345
346 The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
347
348 =item *
349
350 You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
351
352 =item *
353
354 Bison 3.0 is now supported.
355
356 =back
357
358 =head1 Testing
359
360 XXX Any significant changes to the testing of a freshly built perl should be
361 listed here.  Changes which create B<new> files in F<t/> go here as do any
362 large changes to the testing harness (e.g. when parallel testing was added).
363 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
364 that they represent may be covered elsewhere.
365
366 [ List each test improvement as a =item entry ]
367
368 =over 4
369
370 =item *
371
372 XXX
373
374 =back
375
376 =head1 Platform Support
377
378 =head2 Platform-Specific Notes
379
380 =over 4
381
382 =item VMS
383
384 =over
385
386 =item *
387
388 For those C<%ENV> elements based on the CRTL environ array, we've always
389 preserved case when setting them but did look-ups only after upcasing the
390 key first, which made lower- or mixed-case entries go missing. This problem
391 has been corrected by making C<%ENV> elements derived from the environ array
392 case-sensitive on look-up as well as case-preserving on store.
393
394 =item *
395
396 Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
397 considered logical names, but now consider all sources of C<%ENV> as
398 determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
399
400 =back
401
402 =back
403
404 =head2 New Platforms
405
406 XXX List any platforms that this version of perl compiles on, that previous
407 versions did not.  These will either be enabled by new files in the F<hints/>
408 directories, or new subdirectories and F<README> files at the top level of the
409 source tree.
410
411 =over 4
412
413 =item XXX-some-platform
414
415 XXX
416
417 =back
418
419 =head2 Discontinued Platforms
420
421 XXX List any platforms that this version of perl no longer compiles on.
422
423 =over 4
424
425 =item XXX-some-platform
426
427 XXX
428
429 =back
430
431 =head2 Platform-Specific Notes
432
433 XXX List any changes for specific platforms.  This could include configuration
434 and compilation changes or changes in portability/compatibility.  However,
435 changes within modules for platforms should generally be listed in the
436 L</Modules and Pragmata> section.
437
438 =over 4
439
440 =item Win32
441
442 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
443 an "INTERNAL COMPILER ERROR" message.  [perl #126045]
444
445 =back
446
447 =head1 Internal Changes
448
449 XXX Changes which affect the interface available to C<XS> code go here.  Other
450 significant internal changes for future core maintainers should be noted as
451 well.
452
453 [ List each change as a =item entry ]
454
455 =over 4
456
457 =item *
458
459 The implementation of perl's context stack system, and its internal API,
460 have been heavily reworked. Note that no significant changes have been
461 made to any external APIs, but XS code which relies on such internal
462 details may need to be fixed. The main changes are:
463
464 =over 4
465
466 =item *
467
468 The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
469 inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
470 function args rather than implicitly relying on local vars such as
471 C<gimme> and C<newsp> being available. Also their functionality has
472 changed: in particular, C<cx_popblock()> no longer decrements
473 C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
474 involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
475 documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
476 details on how to use them.
477
478 =item *
479
480 Various macros, which now consistently have a CX_ prefix, have been added:
481
482   CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
483
484 or renamed:
485
486   CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
487
488 =item *
489
490 C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
491 CMpp_enter*> and C<pp_leave*> no longer do
492
493   ENTER; SAVETMPS; ....; LEAVE
494
495 =item *
496
497 C<cx_popblock()> now also restores C<PL_curpm>.
498
499 =item *
500
501 In C<dounwind()> for every context type, the current savestack frame is
502 now processed before each context is popped; formerly this was only done
503 for sub-like context frames. This action has been removed from
504 C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
505 must be called before C<cx_popsub()> etc.
506
507 C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
508 (formerly it only did the C<cx_popsub()> etc. actions on each frame).
509
510 =item *
511
512 The temps stack is now freed on scope exit; previously, temps created
513 during the last statement of a block wouldn't be freed until the next
514 C<nextstate> following the block (apart from an existing hack that did
515 this for recursive subs in scalar context); and in something like
516 C<f(g())>, the temps created by the last statement in C<g()> would
517 formerly not be freed until the statement following the return from
518 C<f()>.
519
520 =item *
521
522 Most values that were saved on the savestack on scope entry are now
523 saved in suitable new fields in the context struct, and saved and
524 restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
525 faster.
526
527 =item *
528
529 Various context struct fields have been added, removed or modified.
530
531 =item *
532
533 The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
534 considerably tidied up, including removing the C<argarray> field from the
535 context struct, and extracting out some common (but rarely used) code into
536 a separate function, C<clear_defarray()>. Also, useful subsets of
537 C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
538 gathered into the new functions C<cx_popsub_args()> and
539 C<cx_popsub_common()>.
540
541 =item *
542
543 C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
544 of the C<pp_leave*>'s to process return args.
545
546 =item *
547
548 C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
549 C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
550
551 =item *
552
553 Some variables formerly declared by C<dMULTICALL> (but not documented) have
554 been removed.
555
556 =back
557
558
559 =back
560
561 =head1 Selected Bug Fixes
562
563 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
564 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
565
566 [ List each fix as a =item entry ]
567
568 =over 4
569
570 =item *
571
572 Line numbers larger than 2**31-1 but less than 2**32 are no longer
573 returned by caller() as negative numbers.  [perl #126991]
574
575 =item *
576
577 C<< unless ( I<assignment> ) >> now properly warns when syntax
578 warnings are enabled.  [perl #127122]
579
580 =item *
581
582 Setting an C<ISA> glob to an array reference now properly adds
583 C<isaelem> magic to any existing elements.  Previously modifying such
584 an element would not update the ISA cache, so method calls would call
585 the wrong function.  Perl would also crash if the C<ISA> glob was
586 destroyed, since new code added in 5.23.7 would try to release the
587 C<isaelem> magic from the elements.  [perl #127351]
588
589 =item *
590
591 If a here-doc was found while parsing another operator, the parser had
592 already read end of file, and the here-doc was not terminated, perl
593 could produce an assertion or a segmentation fault.  This now reliably
594 complains about the unterminated here-doc.  [perl #125540]
595
596 =item *
597
598 untie() would sometimes return the last value returned by the UNTIE()
599 handler as well as it's normal value, messing up the stack.  [perl
600 #126621]
601
602 =item *
603
604 Fixed an operator precedence problem when C< castflags & 2> is true.
605 [perl #127474]
606
607 =item *
608
609 Caching of DESTROY methods could result in a non-pointer or a
610 non-STASH stored in the SvSTASH() slot of a stash, breaking the B
611 STASH() method.  The DESTROY method is now cached in the MRO metadata
612 for the stash.  [perl #126410]
613
614 =item *
615
616 The AUTOLOAD method is now called when searching for a DESTROY method,
617 and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
618
619 =item *
620
621 Avoid parsing beyond the end of the buffer when processing a C<#line>
622 directive with no filename.  [perl #127334]
623
624 =item *
625
626 Perl now raises a warning when a regular expression pattern looks like
627 it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
628 there was some slight defect in its specification which causes it to
629 instead be treated as a regular bracketed character class.  An example
630 would be missing the second colon in the above like this:
631 C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
632 The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
633 C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
634 meaning, and now a warning is raised.  No warning is raised unless the
635 specification is very close to one of the 14 legal POSIX classes.  (See
636 L<perlrecharclass/POSIX Character Classes>.)
637 [perl #8904]
638
639 =item *
640
641 Certain regex patterns involving a complemented POSIX class in an
642 inverted bracketed character class, and matching something else
643 optionally would improperly fail to match.  An example of one that could
644 fail is C</qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
645 [perl #127537]
646
647 =item *
648
649 Perl 5.22 added support to the C99 hexadecimal floating point notation,
650 but sometimes misparses hex floats. This had been fixed.
651 [perl #127183]
652
653 =back
654
655 =head1 Known Problems
656
657 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
658 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
659 platform specific bugs also go here.
660
661 [ List each fix as a =item entry ]
662
663 =over 4
664
665 =item *
666
667 XXX
668
669 =back
670
671 =head1 Errata From Previous Releases
672
673 =over 4
674
675 =item *
676
677 XXX Add anything here that we forgot to add, or were mistaken about, in
678 the perldelta of a previous release.
679
680 =back
681
682 =head1 Obituary
683
684 XXX If any significant core contributor has died, we've added a short obituary
685 here.
686
687 =head1 Acknowledgements
688
689 XXX Generate this with:
690
691   perl Porting/acknowledgements.pl v5.23.7..HEAD
692
693 =head1 Reporting Bugs
694
695 If you find what you think is a bug, you might check the articles recently
696 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
697 L<https://rt.perl.org/> .  There may also be information at
698 L<http://www.perl.org/> , the Perl Home Page.
699
700 If you believe you have an unreported bug, please run the L<perlbug> program
701 included with your release.  Be sure to trim your bug down to a tiny but
702 sufficient test case.  Your bug report, along with the output of C<perl -V>,
703 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
704
705 If the bug you are reporting has security implications, which make it
706 inappropriate to send to a publicly archived mailing list, then please send it
707 to perl5-security-report@perl.org.  This points to a closed subscription
708 unarchived mailing list, which includes all the core committers, who will be
709 able to help assess the impact of issues, figure out a resolution, and help
710 co-ordinate the release of patches to mitigate or fix the problem across all
711 platforms on which Perl is supported.  Please only use this address for
712 security issues in the Perl core, not for modules independently distributed on
713 CPAN.
714
715 =head1 SEE ALSO
716
717 The F<Changes> file for an explanation of how to view exhaustive details on
718 what changed.
719
720 The F<INSTALL> file for how to build Perl.
721
722 The F<README> file for general stuff.
723
724 The F<Artistic> and F<Copying> files for copyright information.
725
726 =cut