This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta, perlguts: Fix typos
[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 L<XXX> has been upgraded from version A.xx to B.yy.
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 XXX Any changes to platform support should be listed in the sections below.
295
296 [ Within the sections, list each platform as a =item entry with specific
297 changes as paragraphs below it. ]
298
299 =head2 New Platforms
300
301 XXX List any platforms that this version of perl compiles on, that previous
302 versions did not.  These will either be enabled by new files in the F<hints/>
303 directories, or new subdirectories and F<README> files at the top level of the
304 source tree.
305
306 =over 4
307
308 =item XXX-some-platform
309
310 XXX
311
312 =back
313
314 =head2 Discontinued Platforms
315
316 XXX List any platforms that this version of perl no longer compiles on.
317
318 =over 4
319
320 =item XXX-some-platform
321
322 XXX
323
324 =back
325
326 =head2 Platform-Specific Notes
327
328 XXX List any changes for specific platforms.  This could include configuration
329 and compilation changes or changes in portability/compatibility.  However,
330 changes within modules for platforms should generally be listed in the
331 L</Modules and Pragmata> section.
332
333 =over 4
334
335 =item Win32
336
337 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
338 an "INTERNAL COMPILER ERROR" message.  [perl #126045]
339
340 =back
341
342 =head1 Internal Changes
343
344 XXX Changes which affect the interface available to C<XS> code go here.  Other
345 significant internal changes for future core maintainers should be noted as
346 well.
347
348 [ List each change as a =item entry ]
349
350 =over 4
351
352 =item *
353
354 The implementation of perl's context stack system, and its internal API,
355 have been heavily reworked. Note that no significant changes have been
356 made to any external APIs, but XS code which relies on such internal
357 details may need to be fixed. The main changes are:
358
359 =over 4
360
361 =item *
362
363 The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
364 inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
365 function args rather than implicitly relying on local vars such as
366 C<gimme> and C<newsp> being available. Also their functionality has
367 changed: in particular, C<cx_popblock()> no longer decrements
368 C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
369 involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
370 documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
371 details on how to use them.
372
373 =item *
374
375 Various macros, which now consistently have a CX_ prefix, have been added:
376
377  CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
378
379 or renamed:
380
381  CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST() ,CX_POPSUBST()
382
383 =item *
384
385 C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
386 CMpp_enter*> and C<pp_leave*> no longer do
387
388   ENTER; SAVETMPS; ....; LEAVE
389
390 =item *
391
392 C<cx_popblock()> now also restores C<PL_curpm>.
393
394 =item *
395
396 In C<dounwind()> for every context type, the current savestack frame is
397 now processed before each context is popped; formerly this was only done
398 for sub-like context frames. This action has been removed from
399 C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
400 must be called before C<cx_popsub()> etc.
401
402 C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
403 (formerly it only did the C<cx_popsub()> etc. actions on each frame).
404
405 =item *
406
407 The temps stack is now freed on scope exit; previously, temps created
408 during the last statement of a block wouldn't be freed until the next
409 C<nextstate> following the block (apart from an existing hack that did
410 this for recursive subs in scalar context); and in something like
411 C<f(g())>, the temps created by the last statement in C<g()> would
412 formerly not be freed until the statement following the return from
413 C<f()>.
414
415 =item *
416
417 Most values that were saved on the savestack on scope entry are now
418 saved in suitable new fields in the context struct, and saved and
419 restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
420 faster.
421
422 =item *
423
424 Various context struct fields have been added, removed or modified.
425
426 =item *
427
428 The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
429 considerably tidied up, including removing the C<argarray> field from the
430 context struct, and extracting out some common (but rarely used) code into
431 a separate function, C<clear_defarray()>. Also, useful subsets of
432 C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
433 gathered into the new functions C<cx_popsub_args()> and
434 C<cx_popsub_common()>.
435
436 =item *
437
438 C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
439 of the C<pp_leave*>'s to process return args.
440
441 =item *
442
443 C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
444 C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
445
446 =item *
447
448 Some variables formerly declared by C<dMULTICALL> (but not documented) have
449 been removed.
450
451 =back
452
453
454 =back
455
456 =head1 Selected Bug Fixes
457
458 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
459 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
460
461 [ List each fix as a =item entry ]
462
463 =over 4
464
465 =item *
466
467 Line numbers larger than 2**31-1 but less than 2**32 are no longer
468 returned by caller() as negative numbers.  [perl #126991]
469
470 =item *
471
472 C<< unless ( I<assignment> ) >> now properly warns when syntax
473 warnings are enabled.  [perl #127122]
474
475 =item *
476
477 Setting an C<ISA> glob to an array reference now properly adds
478 C<isaelem> magic to any existing elements.  Previously modifying such
479 an element would not update the ISA cache, so method calls would call
480 the wrong function.  Perl would also crash if the C<ISA> glob was
481 destroyed, since new code added in 5.23.7 would try to release the
482 C<isaelem> magic from the elements.  [perl #127351]
483
484 =item *
485
486 If a here-doc was found while parsing another operator, the parser had
487 already read end of file, and the here-doc was not terminated, perl
488 could produce an assertion or a segmentation fault.  This now reliably
489 complains about the unterminated here-doc.  [perl #125540]
490
491 =back
492
493 =head1 Known Problems
494
495 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
496 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
497 platform specific bugs also go here.
498
499 [ List each fix as a =item entry ]
500
501 =over 4
502
503 =item *
504
505 XXX
506
507 =back
508
509 =head1 Errata From Previous Releases
510
511 =over 4
512
513 =item *
514
515 XXX Add anything here that we forgot to add, or were mistaken about, in
516 the perldelta of a previous release.
517
518 =back
519
520 =head1 Obituary
521
522 XXX If any significant core contributor has died, we've added a short obituary
523 here.
524
525 =head1 Acknowledgements
526
527 XXX Generate this with:
528
529   perl Porting/acknowledgements.pl v5.23.7..HEAD
530
531 =head1 Reporting Bugs
532
533 If you find what you think is a bug, you might check the articles recently
534 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
535 L<https://rt.perl.org/> .  There may also be information at
536 L<http://www.perl.org/> , the Perl Home Page.
537
538 If you believe you have an unreported bug, please run the L<perlbug> program
539 included with your release.  Be sure to trim your bug down to a tiny but
540 sufficient test case.  Your bug report, along with the output of C<perl -V>,
541 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
542
543 If the bug you are reporting has security implications, which make it
544 inappropriate to send to a publicly archived mailing list, then please send it
545 to perl5-security-report@perl.org.  This points to a closed subscription
546 unarchived mailing list, which includes all the core committers, who will be
547 able to help assess the impact of issues, figure out a resolution, and help
548 co-ordinate the release of patches to mitigate or fix the problem across all
549 platforms on which Perl is supported.  Please only use this address for
550 security issues in the Perl core, not for modules independently distributed on
551 CPAN.
552
553 =head1 SEE ALSO
554
555 The F<Changes> file for an explanation of how to view exhaustive details on
556 what changed.
557
558 The F<INSTALL> file for how to build Perl.
559
560 The F<README> file for general stuff.
561
562 The F<Artistic> and F<Copying> files for copyright information.
563
564 =cut