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
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
af8a293f
SL
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.23.8
eabfc7bc 9
2cfe9b50 10=head1 DESCRIPTION
eabfc7bc 11
af8a293f 12This document describes differences between the 5.23.7 release and the 5.23.8
2cfe9b50 13release.
eabfc7bc 14
af8a293f
SL
15If you are upgrading from an earlier release such as 5.23.6, first read
16L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7.
394609a5 17
af8a293f 18=head1 Notice
6b659339 19
af8a293f 20XXX Any important notices here
6b659339 21
af8a293f 22=head1 Core Enhancements
a8c28920 23
af8a293f
SL
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
7feb15ec 27
af8a293f 28[ List each enhancement as a =head2 entry ]
7feb15ec 29
cdfe2e65
DIM
30=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
31
32When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
33C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
34included in the hash passed to the handler, if supported by the
35platform.
36
af8a293f 37=head1 Security
a8c28920 38
af8a293f
SL
39XXX Any security-related notices go here. In particular, any security
40vulnerabilities closed should be noted here rather than in the
41L</Selected Bug Fixes> section.
a8c28920 42
af8a293f 43[ List each security issue as a =head2 entry ]
a8c28920 44
c0883d63 45=head1 Incompatible Changes
a8c28920 46
af8a293f 47XXX For a release on a stable branch, this section aspires to be:
f1f6961f 48
af8a293f
SL
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.
f1f6961f 52
af8a293f 53[ List each incompatible change as a =head2 entry ]
1257ab89 54
af8a293f 55=head1 Deprecations
d9d208b8 56
af8a293f 57XXX Any deprecated features, syntax, modules etc. should be listed here.
d9d208b8 58
af8a293f 59=head2 Module removals
a7e63acd 60
af8a293f 61XXX Remove this section if inapplicable.
a7e63acd 62
af8a293f
SL
63The following modules will be removed from the core distribution in a
64future release, and will at that time need to be installed from CPAN.
65Distributions on CPAN which require these modules will need to list them as
66prerequisites.
a7e63acd 67
af8a293f
SL
68The core versions of these modules will now issue C<"deprecated">-category
69warnings to alert you to this fact. To silence these deprecation warnings,
70install the modules in question from CPAN.
a7e63acd 71
af8a293f
SL
72Note that these are (with rare exceptions) fine modules that you are encouraged
73to continue to use. Their disinclusion from core primarily hinges on their
74necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
75not usually on concerns over their design.
a7e63acd 76
af8a293f 77=over
a7e63acd 78
af8a293f 79=item XXX
a7e63acd 80
af8a293f
SL
81XXX Note that deprecated modules should be listed here even if they are listed
82as an updated module in the L</Modules and Pragmata> section.
a7e63acd 83
af8a293f 84=back
a7e63acd 85
af8a293f 86[ List each other deprecation as a =head2 entry ]
a7e63acd 87
af8a293f 88=head1 Performance Enhancements
a7e63acd 89
af8a293f
SL
90XXX Changes which enhance performance without changing behaviour go here.
91There may well be none in a stable release.
a7e63acd 92
af8a293f 93[ List each enhancement as a =item entry ]
a7e63acd 94
af8a293f 95=over 4
a7e63acd
SL
96
97=item *
98
d7745c5b
DM
99The overhead of scope entry and exit has been considerably reduced, so
100for example subroutine calls, loops and basic blocks are all faster now.
101This empty function call now takes about a third less time to execute:
102
103 sub f{} f();
a7e63acd 104
af8a293f 105=back
a7e63acd 106
af8a293f 107=head1 Modules and Pragmata
a7e63acd 108
af8a293f
SL
109XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
110go here. If Module::CoreList is updated, generate an initial draft of the
111following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
112for important changes should then be added by hand. In an ideal world,
113dual-life modules would have a F<Changes> file that could be cribbed.
a7e63acd 114
af8a293f 115[ Within each section, list entries as a =item entry ]
a7e63acd 116
af8a293f 117=head2 New Modules and Pragmata
a7e63acd 118
af8a293f 119=over 4
a7e63acd
SL
120
121=item *
122
af8a293f 123XXX
a7e63acd 124
af8a293f 125=back
fd12b912 126
af8a293f 127=head2 Updated Modules and Pragmata
f909f9f7 128
af8a293f 129=over 4
a7e63acd
SL
130
131=item *
132
af8a293f 133L<XXX> has been upgraded from version A.xx to B.yy.
a7e63acd 134
34e79b75
DIM
135=item *
136
137L<POSIX> has been upgraded from version 1.59 to 1.60.
138
139It can now export constants for the C<code> value in the hash passed to the
140L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
141
af8a293f 142=back
a7e63acd 143
af8a293f 144=head2 Removed Modules and Pragmata
a7e63acd 145
af8a293f 146=over 4
a7e63acd
SL
147
148=item *
149
af8a293f 150XXX
f909f9f7 151
054383b6 152=back
d9d208b8 153
c0883d63
SL
154=head1 Documentation
155
af8a293f
SL
156XXX Changes to files in F<pod/> go here. Consider grouping entries by
157file and be sure to link to the appropriate page, e.g. L<perlfunc>.
c0883d63 158
af8a293f 159=head2 New Documentation
d9d208b8 160
af8a293f 161XXX Changes which create B<new> files in F<pod/> go here.
d9d208b8 162
af8a293f 163=head3 L<XXX>
d9d208b8 164
af8a293f 165XXX Description of the purpose of the new file here
523c5db4 166
af8a293f 167=head2 Changes to Existing Documentation
d9d208b8 168
af8a293f
SL
169XXX Changes which significantly change existing files in F<pod/> go here.
170However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
171section.
172
d7745c5b 173=head3 L<perlguts>
d9d208b8 174
c0883d63 175=over 4
fd12b912 176
c0883d63 177=item *
fd12b912 178
d7745c5b
DM
179A new section has been added, L<perlguts/"Dynamic Scope and the Context
180Stack">, which explains how the perl context stack works.
fd12b912 181
c0883d63 182=back
d9d208b8 183
af8a293f 184=head1 Diagnostics
d9d208b8 185
af8a293f
SL
186The following additions or changes have been made to diagnostic output,
187including warnings and fatal error messages. For the complete list of
188diagnostic messages, see L<perldiag>.
d9d208b8 189
af8a293f
SL
190XXX New or changed warnings emitted by the core's C<C> code go here. Also
191include any changes in L<perldiag> that reconcile it to the C<C> code.
fd12b912 192
af8a293f 193=head2 New Diagnostics
fd12b912 194
af8a293f
SL
195XXX Newly added diagnostic messages go under here, separated into New Errors
196and New Warnings
fd12b912 197
af8a293f 198=head3 New Errors
c0883d63 199
af8a293f 200=over 4
fd12b912 201
c0883d63 202=item *
d9d208b8 203
af8a293f 204XXX L<message|perldiag/"message">
d9d208b8 205
c0883d63 206=back
fd12b912 207
af8a293f 208=head3 New Warnings
fd12b912 209
054383b6 210=over 4
fd12b912
DG
211
212=item *
213
af8a293f 214XXX L<message|perldiag/"message">
a8c28920 215
6c83150b 216=back
a8c28920 217
af8a293f
SL
218=head2 Changes to Existing Diagnostics
219
220XXX Changes (i.e. rewording) of diagnostic messages go here
d9d208b8
DG
221
222=over 4
223
224=item *
225
af8a293f 226XXX Describe change here
d9d208b8
DG
227
228=back
229
af8a293f 230=head1 Utility Changes
c0883d63 231
af8a293f
SL
232XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
233Most of these are built within the directory F<utils>.
054383b6 234
af8a293f
SL
235[ List utility changes as a =head2 entry for each utility and =item
236entries for each change
237Use L<XXX> with program names to get proper documentation linking. ]
238
239=head2 L<XXX>
a8c28920 240
6c83150b 241=over 4
a8c28920
A
242
243=item *
244
af8a293f 245XXX
d9d208b8
DG
246
247=back
248
054383b6 249=head1 Configuration and Compilation
a8c28920 250
af8a293f
SL
251XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
252go here. Any other changes to the Perl build process should be listed here.
253However, any platform-specific changes should be listed in the
254L</Platform Support> section, instead.
255
256[ List changes as a =item entry ].
257
6c83150b 258=over 4
a8c28920 259
6c83150b 260=item *
a8c28920 261
af8a293f 262XXX
054383b6 263
af8a293f
SL
264=back
265
266=head1 Testing
267
268XXX Any significant changes to the testing of a freshly built perl should be
269listed here. Changes which create B<new> files in F<t/> go here as do any
270large changes to the testing harness (e.g. when parallel testing was added).
271Changes to existing files in F<t/> aren't worth summarizing, although the bugs
272that they represent may be covered elsewhere.
f83db990 273
af8a293f
SL
274[ List each test improvement as a =item entry ]
275
276=over 4
eabfc7bc 277
0dafb1ce 278=item *
eabfc7bc 279
af8a293f 280XXX
5ea25977 281
b3c290c2
TC
282=item *
283
284The GNU Make makefile for Win32 now supports parallel builds. [perl #126632]
285
286=item *
287
288You can now build perl with MSVC++ on Win32 using GNU Make. [perl #126632]
289
b26bd9b0 290=back
5ea25977 291
6c83150b
A
292=head1 Platform Support
293
af8a293f
SL
294XXX 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
297changes as paragraphs below it. ]
298
299=head2 New Platforms
300
301XXX List any platforms that this version of perl compiles on, that previous
302versions did not. These will either be enabled by new files in the F<hints/>
303directories, or new subdirectories and F<README> files at the top level of the
304source tree.
0517ed38 305
6c83150b 306=over 4
0517ed38 307
af8a293f 308=item XXX-some-platform
b3d7d865 309
af8a293f 310XXX
b3d7d865 311
af8a293f 312=back
d9d208b8 313
af8a293f 314=head2 Discontinued Platforms
48fbd301 315
af8a293f 316XXX List any platforms that this version of perl no longer compiles on.
48fbd301 317
af8a293f 318=over 4
f4240379 319
af8a293f 320=item XXX-some-platform
f4240379 321
af8a293f 322XXX
6c83150b 323
1d6d94ad
DG
324=back
325
af8a293f
SL
326=head2 Platform-Specific Notes
327
328XXX List any changes for specific platforms. This could include configuration
329and compilation changes or changes in portability/compatibility. However,
330changes within modules for platforms should generally be listed in the
331L</Modules and Pragmata> section.
d89ea360 332
054383b6 333=over 4
0efe3111 334
022b5ce0 335=item Win32
0efe3111 336
022b5ce0
TC
337Builds using Microsoft Visual C++ 2003 and earlier no longer produce
338an "INTERNAL COMPILER ERROR" message. [perl #126045]
206e921d 339
af8a293f 340=back
206e921d 341
af8a293f 342=head1 Internal Changes
d9d208b8 343
af8a293f
SL
344XXX Changes which affect the interface available to C<XS> code go here. Other
345significant internal changes for future core maintainers should be noted as
346well.
347
348[ List each change as a =item entry ]
d9d208b8 349
af8a293f 350=over 4
d9d208b8
DG
351
352=item *
353
d7745c5b
DM
354The implementation of perl's context stack system, and its internal API,
355have been heavily reworked. Note that no significant changes have been
d7c7f8cb 356made to any external APIs, but XS code which relies on such internal
d7745c5b
DM
357details may need to be fixed. The main changes are:
358
359=over 4
360
361=item *
362
363The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
364inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
365function args rather than implicitly relying on local vars such as
366C<gimme> and C<newsp> being available. Also their functionality has
367changed: in particular, C<cx_popblock()> no longer decrements
368C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
369involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
370documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
371details on how to use them.
372
373=item *
374
375Various macros, which now consistently have a CX_ prefix, have been added:
376
485bf8f9 377 CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
d7745c5b
DM
378
379or renamed:
380
485bf8f9 381 CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST() ,CX_POPSUBST()
d7745c5b
DM
382
383=item *
384
385C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
386CMpp_enter*> and C<pp_leave*> no longer do
387
388 ENTER; SAVETMPS; ....; LEAVE
389
390=item *
391
392C<cx_popblock()> now also restores C<PL_curpm>.
393
394=item *
395
396In C<dounwind()> for every context type, the current savestack frame is
d7c7f8cb 397now processed before each context is popped; formerly this was only done
d7745c5b
DM
398for sub-like context frames. This action has been removed from
399C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
400must be called before C<cx_popsub()> etc.
401
402C<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
407The temps stack is now freed on scope exit; previously, temps created
408during the last statement of a block wouldn't be freed until the next
409C<nextstate> following the block (apart from an existing hack that did
410this for recursive subs in scalar context); and in something like
411C<f(g())>, the temps created by the last statement in C<g()> would
412formerly not be freed until the statement following the return from
413C<f()>.
414
415=item *
416
417Most values that were saved on the savestack on scope entry are now
418saved in suitable new fields in the context struct, and saved and
419restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
420faster.
421
422=item *
423
424Various context struct fields have been added, removed or modified.
425
426=item *
427
428The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
429considerably tidied up, including removing the C<argarray> field from the
430context struct, and extracting out some common (but rarely used) code into
431a separate function, C<clear_defarray()>. Also, useful subsets of
432C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
433gathered into the new functions C<cx_popsub_args()> and
434C<cx_popsub_common()>.
435
436=item *
437
438C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
439of the C<pp_leave*>'s to process return args.
440
441=item *
442
443C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
444C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
445
446=item *
447
448Some variables formerly declared by C<dMULTICALL> (but not documented) have
449been removed.
450
451=back
452
d9d208b8 453
d89ea360
DD
454=back
455
b26bd9b0 456=head1 Selected Bug Fixes
eabfc7bc 457
af8a293f
SL
458XXX Important bug fixes in the core language are summarized here. Bug fixes in
459files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
acedda6e 460
af8a293f 461[ List each fix as a =item entry ]
bc5be890 462
af8a293f 463=over 4
acedda6e 464
c7052e96
TC
465=item *
466
2ff6ae51 467Line numbers larger than 2**31-1 but less than 2**32 are no longer
d15ad02e 468returned by caller() as negative numbers. [perl #126991]
c7052e96 469
2ff6ae51
TC
470=item *
471
472C<< unless ( I<assignment> ) >> now properly warns when syntax
473warnings are enabled. [perl #127122]
474
42d92f4a
TC
475=item *
476
477Setting an C<ISA> glob to an array reference now properly adds
478C<isaelem> magic to any existing elements. Previously modifying such
479an element would not update the ISA cache, so method calls would call
480the wrong function. Perl would also crash if the C<ISA> glob was
481destroyed, since new code added in 5.23.7 would try to release the
482C<isaelem> magic from the elements. [perl #127351]
483
19b46ab5
TC
484=item *
485
486If a here-doc was found while parsing another operator, the parser had
487already read end of file, and the here-doc was not terminated, perl
488could produce an assertion or a segmentation fault. This now reliably
489complains about the unterminated here-doc. [perl #125540]
490
af8a293f 491=back
3c84cb84 492
af8a293f 493=head1 Known Problems
d005d3c3 494
af8a293f
SL
495XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
496tests that had to be C<TODO>ed for the release would be noted here. Unfixed
497platform specific bugs also go here.
d43e55a3 498
af8a293f 499[ List each fix as a =item entry ]
e685831a 500
af8a293f 501=over 4
e685831a 502
0701ff00
JH
503=item *
504
af8a293f 505XXX
0701ff00 506
054383b6 507=back
d9d208b8 508
af8a293f 509=head1 Errata From Previous Releases
0057cacf
SL
510
511=over 4
512
513=item *
514
af8a293f
SL
515XXX Add anything here that we forgot to add, or were mistaken about, in
516the perldelta of a previous release.
0057cacf
SL
517
518=back
519
af8a293f 520=head1 Obituary
5a74572e 521
af8a293f
SL
522XXX If any significant core contributor has died, we've added a short obituary
523here.
5a74572e 524
af8a293f 525=head1 Acknowledgements
e1ad135d 526
af8a293f 527XXX Generate this with:
e1ad135d 528
af8a293f 529 perl Porting/acknowledgements.pl v5.23.7..HEAD
f5b73711 530
44691e6f
AB
531=head1 Reporting Bugs
532
e08634c5
SH
533If you find what you think is a bug, you might check the articles recently
534posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
535L<https://rt.perl.org/> . There may also be information at
536L<http://www.perl.org/> , the Perl Home Page.
44691e6f 537
e08634c5
SH
538If you believe you have an unreported bug, please run the L<perlbug> program
539included with your release. Be sure to trim your bug down to a tiny but
540sufficient test case. Your bug report, along with the output of C<perl -V>,
541will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
542
543If the bug you are reporting has security implications, which make it
e08634c5
SH
544inappropriate to send to a publicly archived mailing list, then please send it
545to perl5-security-report@perl.org. This points to a closed subscription
546unarchived mailing list, which includes all the core committers, who will be
547able to help assess the impact of issues, figure out a resolution, and help
f9001595 548co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
549platforms on which Perl is supported. Please only use this address for
550security issues in the Perl core, not for modules independently distributed on
551CPAN.
44691e6f
AB
552
553=head1 SEE ALSO
554
e08634c5
SH
555The F<Changes> file for an explanation of how to view exhaustive details on
556what changed.
44691e6f
AB
557
558The F<INSTALL> file for how to build Perl.
559
560The F<README> file for general stuff.
561
562The F<Artistic> and F<Copying> files for copyright information.
563
564=cut