This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta entry for da5a0da22e
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
8424e368
S
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.31.1
d407e309 9
862f380b 10=head1 DESCRIPTION
261e14b0 11
8424e368 12This document describes differences between the 5.31.0 release and the 5.31.1
862f380b 13release.
261e14b0 14
8424e368
S
15If you are upgrading from an earlier release such as 5.30.0, first read
16L<perl5310delta>, which describes differences between 5.30.0 and 5.31.0.
17
18=head1 Notice
19
20XXX Any important notices here
21
22=head1 Core Enhancements
23
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.
27
28[ List each enhancement as a =head2 entry ]
29
30=head1 Security
31
32XXX Any security-related notices go here. In particular, any security
33vulnerabilities closed should be noted here rather than in the
34L</Selected Bug Fixes> section.
35
36[ List each security issue as a =head2 entry ]
37
38=head1 Incompatible Changes
39
54e2fcd9 40=head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is forbidden
8424e368 41
54e2fcd9
KE
42Such strings are represented internally in UTF-8, and C<vec> is a
43bit-oriented operation that will likely give unexpected results on those
44strings. This was deprecated in perl 5.28.0.
8424e368
S
45
46=head1 Deprecations
47
48XXX Any deprecated features, syntax, modules etc. should be listed here.
49
50=head2 Module removals
51
52XXX Remove this section if not applicable.
53
54The following modules will be removed from the core distribution in a
55future release, and will at that time need to be installed from CPAN.
56Distributions on CPAN which require these modules will need to list them as
57prerequisites.
58
59The core versions of these modules will now issue C<"deprecated">-category
60warnings to alert you to this fact. To silence these deprecation warnings,
61install the modules in question from CPAN.
62
63Note that these are (with rare exceptions) fine modules that you are encouraged
64to continue to use. Their disinclusion from core primarily hinges on their
65necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
66not usually on concerns over their design.
67
68=over
69
70=item XXX
71
72XXX Note that deprecated modules should be listed here even if they are listed
73as an updated module in the L</Modules and Pragmata> section.
74
75=back
76
77[ List each other deprecation as a =head2 entry ]
78
79=head1 Performance Enhancements
80
81XXX Changes which enhance performance without changing behaviour go here.
82There may well be none in a stable release.
83
84[ List each enhancement as an =item entry ]
85
86=over 4
87
88=item *
89
90XXX
91
92=back
261e14b0 93
862f380b 94=head1 Modules and Pragmata
d407e309 95
8424e368
S
96XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
97go here. If Module::CoreList is updated, generate an initial draft of the
98following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
99for important changes should then be added by hand. In an ideal world,
100dual-life modules would have a F<Changes> file that could be cribbed.
101
102The list of new and updated modules is modified automatically as part of
103preparing a Perl release, so the only reason to manually add entries here is if
104you're summarising the important changes in the module update. (Also, if the
105manually-added details don't match the automatically-generated ones, the
106release manager will have to investigate the situation carefully.)
107
108[ Within each section, list entries as an =item entry ]
109
110=head2 New Modules and Pragmata
111
112=over 4
113
114=item *
115
116XXX Remove this section if not applicable.
117
118=back
119
862f380b 120=head2 Updated Modules and Pragmata
7b97bf55 121
ab6f2e91 122=over 4
7b97bf55 123
9409f532 124=item *
7b97bf55 125
cc1cbb06
TC
126L<IO> has been upgraded from version 1.40 to 1.41.
127
da1830f5
TC
128The supplied I<TO> is now always honoured on calls to the send()
129method. [perl #133936]
cc1cbb06
TC
130
131=item *
132
a04f48a5 133L<Storable> has been upgraded from version 3.15 to 3.16.
8424e368 134
a04f48a5
TC
135Regular expressions objects weren't properly counted for object id
136purposes on retrieve. This would corrupt the resulting structure, or
137cause a runtime error in some cases. [perl #134179]
8424e368
S
138
139=back
140
141=head2 Removed Modules and Pragmata
142
143=over 4
144
145=item *
146
c57372c9
KW
147Pod::Parser has been removed from the core distribution.
148It still is available for download from CPAN. This resolves [perl
149#119439].
8424e368
S
150
151=back
152
153=head1 Documentation
154
155XXX Changes to files in F<pod/> go here. Consider grouping entries by
156file and be sure to link to the appropriate page, e.g. L<perlfunc>.
157
158=head2 New Documentation
159
160XXX Changes which create B<new> files in F<pod/> go here.
161
162=head3 L<XXX>
163
164XXX Description of the purpose of the new file here
165
166=head2 Changes to Existing Documentation
167
168We have attempted to update the documentation to reflect the changes
169listed in this document. If you find any we have missed, send email
170to L<perlbug@perl.org|mailto:perlbug@perl.org>.
171
172XXX Changes which significantly change existing files in F<pod/> go here.
173However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
174section.
175
176Additionally, the following selected changes have been made:
177
aee7952a 178=head3 L<perlpod>
8424e368
S
179
180=over 4
d407e309 181
d407e309
S
182=item *
183
aee7952a 184Advice has been added regarding the usage of C<< Z<> >>.
8424e368
S
185
186=back
187
188=head1 Diagnostics
189
190The following additions or changes have been made to diagnostic output,
191including warnings and fatal error messages. For the complete list of
192diagnostic messages, see L<perldiag>.
193
194XXX New or changed warnings emitted by the core's C<C> code go here. Also
195include any changes in L<perldiag> that reconcile it to the C<C> code.
196
197=head2 New Diagnostics
198
199XXX Newly added diagnostic messages go under here, separated into New Errors
200and New Warnings
201
202=head3 New Errors
203
204=over 4
d407e309
S
205
206=item *
207
8424e368 208XXX L<message|perldiag/"message">
d407e309 209
862f380b 210=back
d407e309 211
8424e368
S
212=head3 New Warnings
213
214=over 4
215
216=item *
217
218XXX L<message|perldiag/"message">
219
220=back
221
222=head2 Changes to Existing Diagnostics
223
224XXX Changes (i.e. rewording) of diagnostic messages go here
225
226=over 4
227
228=item *
229
230XXX Describe change here
231
232=back
233
234=head1 Utility Changes
235
236XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
237Most of these are built within the directory F<utils>.
238
239[ List utility changes as a =head2 entry for each utility and =item
240entries for each change
241Use L<XXX> with program names to get proper documentation linking. ]
242
243=head2 L<XXX>
244
245=over 4
246
247=item *
248
249XXX
250
251=back
252
253=head1 Configuration and Compilation
254
255XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
256go here. Any other changes to the Perl build process should be listed here.
257However, any platform-specific changes should be listed in the
258L</Platform Support> section, instead.
259
260[ List changes as an =item entry ].
261
262=over 4
263
264=item *
265
266XXX
267
268=back
269
270=head1 Testing
271
272XXX Any significant changes to the testing of a freshly built perl should be
273listed here. Changes which create B<new> files in F<t/> go here as do any
274large changes to the testing harness (e.g. when parallel testing was added).
275Changes to existing files in F<t/> aren't worth summarizing, although the bugs
276that they represent may be covered elsewhere.
277
278XXX If there were no significant test changes, say this:
279
280Tests were added and changed to reflect the other additions and changes
281in this release.
282
283XXX If instead there were significant changes, say this:
284
285Tests were added and changed to reflect the other additions and
286changes in this release. Furthermore, these significant changes were
287made:
288
289[ List each test improvement as an =item entry ]
290
291=over 4
292
293=item *
294
295XXX
296
297=back
298
299=head1 Platform Support
300
301XXX Any changes to platform support should be listed in the sections below.
302
303[ Within the sections, list each platform as an =item entry with specific
304changes as paragraphs below it. ]
305
306=head2 New Platforms
307
308XXX List any platforms that this version of perl compiles on, that previous
309versions did not. These will either be enabled by new files in the F<hints/>
310directories, or new subdirectories and F<README> files at the top level of the
311source tree.
312
313=over 4
314
315=item XXX-some-platform
316
317XXX
318
319=back
320
321=head2 Discontinued Platforms
322
8424e368
S
323=over 4
324
2b8a1552 325=item Windows CE
8424e368 326
2b8a1552 327Support for building perl on Windows CE has now been removed.
8424e368
S
328
329=back
330
331=head2 Platform-Specific Notes
332
333XXX List any changes for specific platforms. This could include configuration
334and compilation changes or changes in portability/compatibility. However,
335changes within modules for platforms should generally be listed in the
336L</Modules and Pragmata> section.
337
338=over 4
339
340=item XXX-some-platform
341
342XXX
343
344=back
345
346=head1 Internal Changes
347
348XXX Changes which affect the interface available to C<XS> code go here. Other
349significant internal changes for future core maintainers should be noted as
350well.
351
352[ List each change as an =item entry ]
353
354=over 4
355
356=item *
357
fb55ce6b
TC
358L<eval_pv()|perlapi/eval_pv> no longer stringifies the exception when
359C<croak_on_error> is true. [perl #134175]
8424e368
S
360
361=back
362
363=head1 Selected Bug Fixes
364
365XXX Important bug fixes in the core language are summarized here. Bug fixes in
366files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
367
368[ List each fix as an =item entry ]
369
370=over 4
371
372=item *
373
09b83c41 374Setting C<$)> now properly sets supplementary group ids if you have
b9d9f9ab
TC
375the necessary privileges. [perl #134169]
376
377=item *
378
fd0b39e2
TC
379close() on a pipe now preemptively clears the PerlIO object from the
380IO SV. This prevents a second attempt to close the already closed
381PerlIO object if a signal handler calls die() or exit() while close()
382is waiting for the child process to complete. [perl #122112]
8424e368 383
ddf10889
TC
384=item *
385
386C<< sprintf("%.*a", -10000, $x) >> would cause a buffer overflow due
387to mishandling of the negative precision value. [perl #134008]
388
755e4cab
TC
389=item *
390
391scalar() on a reference could cause an erroneous assertion failure
392during compilation. [perl #134045]
393
fef47ada
TC
394=item *
395
09b83c41
TC
396C<%{^CAPTURE_ALL}> is now an alias to C<%-> as documented, rather than
397incorrectly an alias for C<%+>. [perl #131867]
398
399=item *
400
401C<%{^CAPTURE}> didn't work if C<@{^CAPTURE}> was mentioned first.
ee45064d 402Similarly for C<%{^CAPTURE_ALL}> and C<@{^CAPTURE_ALL}>, though
09b83c41
TC
403C<@{^CAPTURE_ALL}> currently isn't used. [perl #131193]
404
405=item *
406
fef47ada
TC
407Extraordinarily large (over 2GB) floating point format widths could
408cause an integer overflow in the underlying call to snprintf(),
409resulting in an assertion. Formatted floating point widths are now
410limited to the range of int, the return value of snprintf(). [perl
411#133913]
412
4ec3954c
TC
413=item *
414
415Parsing the following constructs within a sub-parse (such as with
416C<"${code here}"> or C<s/.../code here/e>) has changed to match how
417they're parsed normally:
418
419=over
420
421=item *
422
423C<print $fh ...> no longer produces a syntax error.
424
425=item *
426
427Code like C<s/.../ ${time} /e> now properly produces an "Ambiguous use
428of ${time} resolved to $time at ..." warning when warnings are enabled.
429
430=item *
431
432C<@x {"a"}> (with the space) in a sub-parse now properly produces a
433"better written as" warning when warnings are enabled.
434
435=item *
436
437attributes can now be used in a sub-parse.
438
439=back
440
441[perl #133850]
442
2dd5ef16
TC
443=item *
444
445Incomplete hex and binary literals like C<0x> and C<0b> are now
446treated as if the C<x> or C<b> is part of the next token. [perl
447#134125]
448
5b2f1ba6
TC
449=item *
450
451A spurious C<)> in a subparse, such as in C<s/.../code here/e> or
452C<"...${code here}">, no longer confuses the parser.
453
454Previously a subparse was bracketed with generated C<(> and C<)>
455tokens, so a spurious C<)> would close the construct without doing the
456normal subparse clean up, confusing the parser and possible causing an
457assertion failure.
458
459Such constructs are now surrounded by artificial tokens that can't be
460included in the source. [perl #130585]
461
0367cc1a
TC
462=item *
463
464Reference assignment of a sub, such as C<\&foo = \&bar;>, silently did
465nothing in the C<main::> package. [perl #134072]
466
84ab3b69
TC
467=item *
468
469sv_gets() now recovers better if the target SV is modified by a signal
470handler. [perl #134035]
471
fa068f6d
TC
472=item *
473
474C<readline @foo> now evaluates C<@foo> in scalar context. Previously
475it would be evalauted in list context, and since readline() pops only
476one argument from the stack, the stack could underflow, or be left
477with unexpected values on the stack. [perl #133989]
478
8424e368
S
479=back
480
481=head1 Known Problems
482
483XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
484tests that had to be C<TODO>ed for the release would be noted here. Unfixed
485platform specific bugs also go here.
486
487[ List each fix as an =item entry ]
488
489=over 4
490
491=item *
492
493XXX
494
495=back
496
497=head1 Errata From Previous Releases
498
499=over 4
500
501=item *
502
503XXX Add anything here that we forgot to add, or were mistaken about, in
504the perldelta of a previous release.
505
506=back
507
508=head1 Obituary
509
510XXX If any significant core contributor or member of the CPAN community has
511died, add a short obituary here.
512
513=head1 Acknowledgements
514
515XXX Generate this with:
516
517 perl Porting/acknowledgements.pl v5.31.0..HEAD
518
44691e6f
AB
519=head1 Reporting Bugs
520
373fec1e 521If you find what you think is a bug, you might check the perl bug database
15f62f05
KE
522at L<https://rt.perl.org/>. There may also be information at
523L<http://www.perl.org/>, the Perl Home Page.
44691e6f 524
e08634c5
SH
525If you believe you have an unreported bug, please run the L<perlbug> program
526included with your release. Be sure to trim your bug down to a tiny but
527sufficient test case. Your bug report, along with the output of C<perl -V>,
0e18d1c4 528will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 529
87c118b9
DM
530If the bug you are reporting has security implications which make it
531inappropriate to send to a publicly archived mailing list, then see
373fec1e
SH
532L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
533for details of how to report the issue.
44691e6f 534
390ae6f9
S
535=head1 Give Thanks
536
373fec1e
SH
537If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
538you can do so by running the C<perlthanks> program:
390ae6f9
S
539
540 perlthanks
541
542This will send an email to the Perl 5 Porters list with your show of thanks.
543
44691e6f
AB
544=head1 SEE ALSO
545
e08634c5
SH
546The F<Changes> file for an explanation of how to view exhaustive details on
547what changed.
44691e6f
AB
548
549The F<INSTALL> file for how to build Perl.
550
551The F<README> file for general stuff.
552
553The F<Artistic> and F<Copying> files for copyright information.
554
555=cut