This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
c22ddbdda42763833bea457784bdbeeb03c591a1
[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 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 =back
106
107 =head1 Modules and Pragmata
108
109 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
110 go here.  If Module::CoreList is updated, generate an initial draft of the
111 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
112 for important changes should then be added by hand.  In an ideal world,
113 dual-life modules would have a F<Changes> file that could be cribbed.
114
115 [ Within each section, list entries as a =item entry ]
116
117 =head2 New Modules and Pragmata
118
119 =over 4
120
121 =item *
122
123 XXX
124
125 =back
126
127 =head2 Updated Modules and Pragmata
128
129 =over 4
130
131 =item *
132
133 F<cpan/podlators/> has been upgraded from version 4.04 to 4.06.
134
135 =item *
136
137 L<POSIX> has been upgraded from version 1.59 to 1.60.
138
139 It can now export constants for the C<code> value in the hash passed to the
140 L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
141
142 =back
143
144 =head2 Removed Modules and Pragmata
145
146 =over 4
147
148 =item *
149
150 XXX
151
152 =back
153
154 =head1 Documentation
155
156 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
157 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
158
159 =head2 New Documentation
160
161 XXX Changes which create B<new> files in F<pod/> go here.
162
163 =head3 L<XXX>
164
165 XXX Description of the purpose of the new file here
166
167 =head2 Changes to Existing Documentation
168
169 XXX Changes which significantly change existing files in F<pod/> go here.
170 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
171 section.
172
173 =head3 L<perlguts>
174
175 =over 4
176
177 =item *
178
179 A new section has been added, L<perlguts/"Dynamic Scope and the Context
180 Stack">, which explains how the perl context stack works.
181
182 =back
183
184 =head1 Diagnostics
185
186 The following additions or changes have been made to diagnostic output,
187 including warnings and fatal error messages.  For the complete list of
188 diagnostic messages, see L<perldiag>.
189
190 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
191 include any changes in L<perldiag> that reconcile it to the C<C> code.
192
193 =head2 New Diagnostics
194
195 XXX Newly added diagnostic messages go under here, separated into New Errors
196 and New Warnings
197
198 =head3 New Errors
199
200 =over 4
201
202 =item *
203
204 XXX L<message|perldiag/"message">
205
206 =back
207
208 =head3 New Warnings
209
210 =over 4
211
212 =item *
213
214 XXX L<message|perldiag/"message">
215
216 =back
217
218 =head2 Changes to Existing Diagnostics
219
220 XXX Changes (i.e. rewording) of diagnostic messages go here
221
222 =over 4
223
224 =item *
225
226 XXX Describe change here
227
228 =back
229
230 =head1 Utility Changes
231
232 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
233 Most of these are built within the directory F<utils>.
234
235 [ List utility changes as a =head2 entry for each utility and =item
236 entries for each change
237 Use L<XXX> with program names to get proper documentation linking. ]
238
239 =head2 L<XXX>
240
241 =over 4
242
243 =item *
244
245 XXX
246
247 =back
248
249 =head1 Configuration and Compilation
250
251 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
252 go here.  Any other changes to the Perl build process should be listed here.
253 However, any platform-specific changes should be listed in the
254 L</Platform Support> section, instead.
255
256 [ List changes as a =item entry ].
257
258 =over 4
259
260 =item *
261
262 XXX
263
264 =back
265
266 =head1 Testing
267
268 XXX Any significant changes to the testing of a freshly built perl should be
269 listed here.  Changes which create B<new> files in F<t/> go here as do any
270 large changes to the testing harness (e.g. when parallel testing was added).
271 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
272 that they represent may be covered elsewhere.
273
274 [ List each test improvement as a =item entry ]
275
276 =over 4
277
278 =item *
279
280 XXX
281
282 =item *
283
284 The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
285
286 =item *
287
288 You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
289
290 =back
291
292 =head1 Platform Support
293
294 =head2 Platform-Specific Notes
295
296 =over 4
297
298 =item VMS
299
300 =over
301
302 =item *
303
304 For those C<%ENV> elements based on the CRTL environ array, we've always
305 preserved case when setting them but did look-ups only after upcasing the
306 key first, which made lower- or mixed-case entries go missing. This problem
307 has been corrected by making C<%ENV> elements derived from the environ array
308 case-sensitive on look-up as well as case-preserving on store.
309
310 =item *
311
312 Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
313 considered logical names, but now consider all sources of C<%ENV> as
314 determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
315
316 =back
317
318 =back
319
320 =head2 New Platforms
321
322 XXX List any platforms that this version of perl compiles on, that previous
323 versions did not.  These will either be enabled by new files in the F<hints/>
324 directories, or new subdirectories and F<README> files at the top level of the
325 source tree.
326
327 =over 4
328
329 =item XXX-some-platform
330
331 XXX
332
333 =back
334
335 =head2 Discontinued Platforms
336
337 XXX List any platforms that this version of perl no longer compiles on.
338
339 =over 4
340
341 =item XXX-some-platform
342
343 XXX
344
345 =back
346
347 =head2 Platform-Specific Notes
348
349 XXX List any changes for specific platforms.  This could include configuration
350 and compilation changes or changes in portability/compatibility.  However,
351 changes within modules for platforms should generally be listed in the
352 L</Modules and Pragmata> section.
353
354 =over 4
355
356 =item Win32
357
358 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
359 an "INTERNAL COMPILER ERROR" message.  [perl #126045]
360
361 =back
362
363 =head1 Internal Changes
364
365 XXX Changes which affect the interface available to C<XS> code go here.  Other
366 significant internal changes for future core maintainers should be noted as
367 well.
368
369 [ List each change as a =item entry ]
370
371 =over 4
372
373 =item *
374
375 The implementation of perl's context stack system, and its internal API,
376 have been heavily reworked. Note that no significant changes have been
377 made to any external APIs, but XS code which relies on such internal
378 details may need to be fixed. The main changes are:
379
380 =over 4
381
382 =item *
383
384 The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
385 inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
386 function args rather than implicitly relying on local vars such as
387 C<gimme> and C<newsp> being available. Also their functionality has
388 changed: in particular, C<cx_popblock()> no longer decrements
389 C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
390 involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
391 documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
392 details on how to use them.
393
394 =item *
395
396 Various macros, which now consistently have a CX_ prefix, have been added:
397
398  CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
399
400 or renamed:
401
402  CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST() ,CX_POPSUBST()
403
404 =item *
405
406 C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
407 CMpp_enter*> and C<pp_leave*> no longer do
408
409   ENTER; SAVETMPS; ....; LEAVE
410
411 =item *
412
413 C<cx_popblock()> now also restores C<PL_curpm>.
414
415 =item *
416
417 In C<dounwind()> for every context type, the current savestack frame is
418 now processed before each context is popped; formerly this was only done
419 for sub-like context frames. This action has been removed from
420 C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
421 must be called before C<cx_popsub()> etc.
422
423 C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
424 (formerly it only did the C<cx_popsub()> etc. actions on each frame).
425
426 =item *
427
428 The temps stack is now freed on scope exit; previously, temps created
429 during the last statement of a block wouldn't be freed until the next
430 C<nextstate> following the block (apart from an existing hack that did
431 this for recursive subs in scalar context); and in something like
432 C<f(g())>, the temps created by the last statement in C<g()> would
433 formerly not be freed until the statement following the return from
434 C<f()>.
435
436 =item *
437
438 Most values that were saved on the savestack on scope entry are now
439 saved in suitable new fields in the context struct, and saved and
440 restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
441 faster.
442
443 =item *
444
445 Various context struct fields have been added, removed or modified.
446
447 =item *
448
449 The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
450 considerably tidied up, including removing the C<argarray> field from the
451 context struct, and extracting out some common (but rarely used) code into
452 a separate function, C<clear_defarray()>. Also, useful subsets of
453 C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
454 gathered into the new functions C<cx_popsub_args()> and
455 C<cx_popsub_common()>.
456
457 =item *
458
459 C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
460 of the C<pp_leave*>'s to process return args.
461
462 =item *
463
464 C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
465 C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
466
467 =item *
468
469 Some variables formerly declared by C<dMULTICALL> (but not documented) have
470 been removed.
471
472 =back
473
474
475 =back
476
477 =head1 Selected Bug Fixes
478
479 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
480 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
481
482 [ List each fix as a =item entry ]
483
484 =over 4
485
486 =item *
487
488 Line numbers larger than 2**31-1 but less than 2**32 are no longer
489 returned by caller() as negative numbers.  [perl #126991]
490
491 =item *
492
493 C<< unless ( I<assignment> ) >> now properly warns when syntax
494 warnings are enabled.  [perl #127122]
495
496 =item *
497
498 Setting an C<ISA> glob to an array reference now properly adds
499 C<isaelem> magic to any existing elements.  Previously modifying such
500 an element would not update the ISA cache, so method calls would call
501 the wrong function.  Perl would also crash if the C<ISA> glob was
502 destroyed, since new code added in 5.23.7 would try to release the
503 C<isaelem> magic from the elements.  [perl #127351]
504
505 =item *
506
507 If a here-doc was found while parsing another operator, the parser had
508 already read end of file, and the here-doc was not terminated, perl
509 could produce an assertion or a segmentation fault.  This now reliably
510 complains about the unterminated here-doc.  [perl #125540]
511
512 =item *
513
514 untie() would sometimes return the last value returned by the UNTIE()
515 handler as well as it's normal value, messing up the stack.  [perl
516 #126621]
517
518 =back
519
520 =head1 Known Problems
521
522 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
523 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
524 platform specific bugs also go here.
525
526 [ List each fix as a =item entry ]
527
528 =over 4
529
530 =item *
531
532 XXX
533
534 =back
535
536 =head1 Errata From Previous Releases
537
538 =over 4
539
540 =item *
541
542 XXX Add anything here that we forgot to add, or were mistaken about, in
543 the perldelta of a previous release.
544
545 =back
546
547 =head1 Obituary
548
549 XXX If any significant core contributor has died, we've added a short obituary
550 here.
551
552 =head1 Acknowledgements
553
554 XXX Generate this with:
555
556   perl Porting/acknowledgements.pl v5.23.7..HEAD
557
558 =head1 Reporting Bugs
559
560 If you find what you think is a bug, you might check the articles recently
561 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
562 L<https://rt.perl.org/> .  There may also be information at
563 L<http://www.perl.org/> , the Perl Home Page.
564
565 If you believe you have an unreported bug, please run the L<perlbug> program
566 included with your release.  Be sure to trim your bug down to a tiny but
567 sufficient test case.  Your bug report, along with the output of C<perl -V>,
568 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
569
570 If the bug you are reporting has security implications, which make it
571 inappropriate to send to a publicly archived mailing list, then please send it
572 to perl5-security-report@perl.org.  This points to a closed subscription
573 unarchived mailing list, which includes all the core committers, who will be
574 able to help assess the impact of issues, figure out a resolution, and help
575 co-ordinate the release of patches to mitigate or fix the problem across all
576 platforms on which Perl is supported.  Please only use this address for
577 security issues in the Perl core, not for modules independently distributed on
578 CPAN.
579
580 =head1 SEE ALSO
581
582 The F<Changes> file for an explanation of how to view exhaustive details on
583 what changed.
584
585 The F<INSTALL> file for how to build Perl.
586
587 The F<README> file for general stuff.
588
589 The F<Artistic> and F<Copying> files for copyright information.
590
591 =cut