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