This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Improve handling of nested qr/(?[...])/
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
d1a156bb
MH
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.9
d407e309 9
862f380b 10=head1 DESCRIPTION
261e14b0 11
d1a156bb 12This document describes differences between the 5.31.8 release and the 5.31.9
862f380b 13release.
261e14b0 14
d1a156bb
MH
15If you are upgrading from an earlier release such as 5.31.7, first read
16L<perl5318delta>, which describes differences between 5.31.7 and 5.31.8.
9629ca98
N
17
18=head1 Notice
19
d1a156bb 20XXX Any important notices here
65c3f050 21
d1a156bb 22=head1 Core Enhancements
be2eb09e 23
d1a156bb
MH
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.
ced2c819 27
d1a156bb 28[ List each enhancement as a =head2 entry ]
ced2c819 29
b6dbf1d3
UC
30=head2 Unicode 13.0 (beta) is supported
31
32Using the beta causes us to participate in the soak cycle for
33Unicode. Final approval for the existing changes has been made by the
34Unicode consortium, and there are few possibilities that this could
35break existing programs, as there are few changes to already existing
36characters.
37
38Information about the changes is at
39L<https://unicode.org/versions/beta-13.0.0.html>.
40
f9c63363
KW
41=head2 New Unicode properties C<Identifier_Status> and C<Identifier_Type> supported
42
43Unicode is in the process of revising its regular expression
44requirements: L<https://www.unicode.org/draft/reports/tr18/tr18.html>.
45As part of that they are wanting more properties to be exposed, ones
46that aren't part of the strict UCD (Unicode character database). These
47two are used for examining inputs for security purposes. Details on
48their usage is at L<https://www.unicode.org/reports/tr39/proposed.html>.
49
673c254b
KW
50=head2 It is now possible to write C<qr/\p{Name=...}/>, or C<\p{Na=...}>
51
52The Unicode Name property is now accessible in regular expression
53patterns using the above syntaxes, as an alternative to C<\N{...}>.
54A comparison of the two methods is given in
55L<perlunicode/Comparison of \N{...} and \p{name=...}>.
56
d1a156bb 57=head1 Security
87fd4a59 58
d1a156bb
MH
59XXX Any security-related notices go here. In particular, any security
60vulnerabilities closed should be noted here rather than in the
61L</Selected Bug Fixes> section.
87fd4a59 62
d1a156bb 63[ List each security issue as a =head2 entry ]
87fd4a59 64
d1a156bb 65=head1 Incompatible Changes
87fd4a59 66
d1a156bb 67XXX For a release on a stable branch, this section aspires to be:
ced2c819 68
d1a156bb
MH
69 There are no changes intentionally incompatible with 5.XXX.XXX
70 If any exist, they are bugs, and we request that you submit a
71 report. See L</Reporting Bugs> below.
46a21c0a 72
d1a156bb 73[ List each incompatible change as a =head2 entry ]
65c3f050 74
666eb2cc
KW
75=head2 Stop pretending C<POSIX::mbstowcs> and C<POSIX::wcstombs> are
76supported
77
78These functions could never have worked due to a defective interface
79specification. There is clearly no demand for them, given that no one
80has ever complained in the many years the functions were claimed to be
81available, hence so-called "support" for them is now dropped.
82
d8d1dede
KW
83=head2 A bug fix for C<(?[...])> may have caused some patterns to no
84longer compile
85
86See L</Selected Bug Fixes>. The heuristics previously used may have let
87some constructs compile (perhaps not with the programmer's intended
88effect) that should have been errors. None are known, but it is
89possible that some erroneous constructs no longer compile.
90
d1a156bb 91=head1 Deprecations
149c28f9 92
d1a156bb 93XXX Any deprecated features, syntax, modules etc. should be listed here.
c40875b7 94
d1a156bb 95=head2 Module removals
cd42a730 96
d1a156bb 97XXX Remove this section if not applicable.
1945661d 98
d1a156bb
MH
99The following modules will be removed from the core distribution in a
100future release, and will at that time need to be installed from CPAN.
101Distributions on CPAN which require these modules will need to list them as
102prerequisites.
65c3f050 103
d1a156bb
MH
104The core versions of these modules will now issue C<"deprecated">-category
105warnings to alert you to this fact. To silence these deprecation warnings,
106install the modules in question from CPAN.
cd42a730 107
d1a156bb
MH
108Note that these are (with rare exceptions) fine modules that you are encouraged
109to continue to use. Their disinclusion from core primarily hinges on their
110necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
111not usually on concerns over their design.
ced2c819 112
d1a156bb 113=over
ced2c819 114
d1a156bb 115=item XXX
cf54f0ad 116
d1a156bb
MH
117XXX Note that deprecated modules should be listed here even if they are listed
118as an updated module in the L</Modules and Pragmata> section.
149c28f9 119
d1a156bb 120=back
ced2c819 121
d1a156bb 122[ List each other deprecation as a =head2 entry ]
cf54f0ad 123
d1a156bb 124=head1 Performance Enhancements
fcbec156 125
d1a156bb
MH
126XXX Changes which enhance performance without changing behaviour go here.
127There may well be none in a stable release.
b5599884 128
d1a156bb 129[ List each enhancement as an =item entry ]
77b20e67 130
d1a156bb 131=over 4
77b20e67 132
5c2513ee
JK
133=item *
134
d1a156bb 135XXX
5c2513ee 136
d1a156bb 137=back
a4aa12d5 138
d1a156bb 139=head1 Modules and Pragmata
bad3a436 140
d1a156bb
MH
141XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
142go here. If Module::CoreList is updated, generate an initial draft of the
143following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
144for important changes should then be added by hand. In an ideal world,
145dual-life modules would have a F<Changes> file that could be cribbed.
bad3a436 146
d1a156bb
MH
147The list of new and updated modules is modified automatically as part of
148preparing a Perl release, so the only reason to manually add entries here is if
149you're summarising the important changes in the module update. (Also, if the
150manually-added details don't match the automatically-generated ones, the
151release manager will have to investigate the situation carefully.)
cf54f0ad 152
d1a156bb 153[ Within each section, list entries as an =item entry ]
b5599884 154
d1a156bb 155=head2 New Modules and Pragmata
46a21c0a 156
d1a156bb 157=over 4
cf54f0ad
MH
158
159=item *
160
d1a156bb 161XXX Remove this section if not applicable.
336e728b 162
9629ca98 163=back
149c28f9 164
d1a156bb 165=head2 Updated Modules and Pragmata
87fd4a59
MH
166
167=over 4
168
169=item *
170
454fbc9b
TC
171L<IO> has been upgraded from version 1.42 to 1.43.
172
173L<IO::Socket> no longer caches a zero protocol value, since this
174indicates that the implementation will select a protocol. This means
175that on platforms that don't implement C<SO_PROTOCOL> for a given
176socket type the protocol method may return C<undef>.
177
178=item *
179
98c72b16 180L<Storable> has been upgraded from version 3.18 to 3.19.
87fd4a59 181
98c72b16
TC
182Use of note() from Test::More is now optional in tests. This works
183around a circular dependency with Test::More when installing on very
184old perls from CPAN.
87fd4a59 185
130bee0e
JK
186=item *
187
188L<threads> has been upgraded from version 2.23 to 2.24.
189
0b657b19
DIM
190=item *
191
192L<feature> has been upgraded from version 1.57 to 1.58.
193
194A new C<indirect> feature has been added, which is enabled by default
195but allows turning off L<indirect object syntax|perlobj/Indirect
196Object Syntax>.
197
d1a156bb 198=back
87fd4a59 199
d1a156bb 200=head2 Removed Modules and Pragmata
87fd4a59 201
d1a156bb 202=over 4
87fd4a59
MH
203
204=item *
205
d1a156bb 206XXX
87fd4a59
MH
207
208=back
209
d1a156bb 210=head1 Documentation
87fd4a59 211
d1a156bb
MH
212XXX Changes to files in F<pod/> go here. Consider grouping entries by
213file and be sure to link to the appropriate page, e.g. L<perlfunc>.
87fd4a59 214
d1a156bb 215=head2 New Documentation
87fd4a59 216
d1a156bb 217XXX Changes which create B<new> files in F<pod/> go here.
87fd4a59 218
d1a156bb 219=head3 L<XXX>
87fd4a59 220
d1a156bb 221XXX Description of the purpose of the new file here
87fd4a59 222
d1a156bb 223=head2 Changes to Existing Documentation
87fd4a59 224
d1a156bb
MH
225We have attempted to update the documentation to reflect the changes
226listed in this document. If you find any we have missed, open an issue
227at L<https://github.com/Perl/perl5/issues>.
87fd4a59 228
d1a156bb
MH
229XXX Changes which significantly change existing files in F<pod/> go here.
230However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
231section.
87fd4a59 232
d1a156bb 233Additionally, the following selected changes have been made:
cfbe7727 234
d1a156bb 235=head3 L<XXX>
87fd4a59
MH
236
237=over 4
238
239=item *
240
6c245260
TC
241Links to the now defunct L<https://search.cpan.org> site now point at
242the equivalent L<https://metacpan.org> URL. [GH #17393]
87fd4a59 243
d056cb55
TC
244=item *
245
246The man page for L<ExtUtils::XSSymSet> is now only installed on VMS,
247which is the only platform the module is installed on. [GH #17424]
248
87fd4a59
MH
249=back
250
d1a156bb 251=head1 Diagnostics
87fd4a59 252
d1a156bb
MH
253The following additions or changes have been made to diagnostic output,
254including warnings and fatal error messages. For the complete list of
255diagnostic messages, see L<perldiag>.
87fd4a59 256
d1a156bb
MH
257XXX New or changed warnings emitted by the core's C<C> code go here. Also
258include any changes in L<perldiag> that reconcile it to the C<C> code.
87fd4a59 259
d1a156bb 260=head2 New Diagnostics
87fd4a59 261
d1a156bb
MH
262XXX Newly added diagnostic messages go under here, separated into New Errors
263and New Warnings
87fd4a59 264
d1a156bb 265=head3 New Errors
87fd4a59
MH
266
267=over 4
268
269=item *
270
d1a156bb 271XXX L<message|perldiag/"message">
87fd4a59 272
d8d1dede
KW
273L<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>
274|perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>">
275
276This is a replacement for several error messages listed under
277L</Changes to Existing Diagnostics>.
278
87fd4a59
MH
279=back
280
d1a156bb 281=head3 New Warnings
87fd4a59
MH
282
283=over 4
284
285=item *
286
dc4a6683
KW
287L<Code point 0x%X is not Unicode, and not portable|perldiag/"Code point 0x%X is not Unicode, and not portable">
288
289This is actually not a new message, but it is now output when the
290warnings category C<portable> is enabled.
291
eb761011
KW
292When raised during regular expression pattern compilation, the warning
293has extra text added at the end marking where precisely in the pattern
294it occured.
295
dc4a6683
KW
296=item *
297
8d1e72f0
KW
298L<Non-hex character '%c' terminates \x early. Resolved as "%s"|perldiag/"Non-hex character '%c' terminates \x early. Resolved as "%s"">
299
300This replaces a warning that was much less specific, and which gave
301false information. This new warning parallels the similar
302already-existing one raised for C<\o{}>.
303
304=item *
305
dc4a6683 306L<message|perldiag/"message">
87fd4a59
MH
307
308=back
309
d1a156bb 310=head2 Changes to Existing Diagnostics
04d3d25b 311
d1a156bb 312XXX Changes (i.e. rewording) of diagnostic messages go here
04d3d25b 313
d1a156bb 314=over 4
87fd4a59
MH
315
316=item *
317
73351a71
KW
318L<Character following "\c" must be printable ASCII|perldiag/"Character following "\c" must be printable ASCII">
319
320now has extra text added at the end, when raised during regular
321expression pattern compilation, marking where precisely in the pattern
322it occured.
323
324=item *
325
326L<Use "%s" instead of "%s"|perldiag/"Use "%s" instead of "%s"">
327
328now has extra text added at the end, when raised during regular
329expression pattern compilation, marking where precisely in the pattern
330it occured.
331
332=item *
333
334L<Sequence "\c{" invalid|perldiag/"Sequence "\c{" invalid">
335
336now has extra text added at the end, when raised during regular
337expression pattern compilation, marking where precisely in the pattern
338it occured.
339
340=item *
341
342L<"\c%c" is more clearly written simply as "%s"|perldiag/""\c%c" is more clearly written simply as "%s"">
343
344now has extra text added at the end, when raised during regular
345expression pattern compilation, marking where precisely in the pattern
346it occured.
fcbec156 347
8d1e72f0
KW
348=item *
349
350L<Non-octal character '%c' terminates \o early. Resolved as "%s"|perldiag/"Non-octal character '%c' terminates \o early. Resolved as "%s"">
351
352now includes the phrase "terminates \o early", and has extra text added
353at the end, when raised during regular expression pattern compilation,
354marking where precisely in the pattern it occured. In some instances
355the text of the resolution has been clarified.
356
fcc04d73
KW
357=item *
358
359L<'%s' resolved to '\o{%s}%d'|perldiag/'%s' resolved to '\o{%s}%d'>
360
361As of Perl 5.32, this message is no longer generated. Instead,
362L<perldiag/Non-octal character '%c' terminates \o early. Resolved as "%s">
363is.
364
5b5e2c03
KW
365=item *
366
367
368L<Use of code point 0x%s is not allowed; the permissible max is 0x%X|perldiag/"Use of code point 0x%s is not allowed; the permissible max is 0x%X">
369
370Some instances of this message previously output the hex digits C<A>,
371C<B>, C<C>, C<D>, C<E>, and C<F> in lower case. Now they are all
372consistently upper case.
373
d8d1dede
KW
374=item *
375
376The following three diagnostics have been removed, and replaced by
377L<C<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>>
378|perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>">.
379C<Expecting close paren for nested extended charclass in regex; marked
380by <-- HERE in mE<sol>%sE<sol>>,
381C<Expecting close paren for wrapper for nested extended charclass in
382regex; marked by <-- HERE in mE<sol>%sE<sol>>,
383and
384C<Expecting '(?flags:(?[...' in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>>.
385
9629ca98 386=back
65c3f050 387
d1a156bb 388=head1 Utility Changes
46a21c0a 389
d1a156bb
MH
390XXX Changes to installed programs such as F<perldoc> and F<xsubpp> go here.
391Most of these are built within the directory F<utils>.
46a21c0a 392
d1a156bb
MH
393[ List utility changes as a =head2 entry for each utility and =item
394entries for each change
395Use L<XXX> with program names to get proper documentation linking. ]
396
397=head2 L<XXX>
9629ca98 398
65c3f050 399=over 4
74c14c97 400
9629ca98 401=item *
46a21c0a 402
d1a156bb 403XXX
65c3f050 404
9629ca98 405=back
46a21c0a 406
9629ca98 407=head1 Configuration and Compilation
46a21c0a 408
d1a156bb
MH
409XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
410go here. Any other changes to the Perl build process should be listed here.
411However, any platform-specific changes should be listed in the
412L</Platform Support> section, instead.
413
414[ List changes as an =item entry ].
415
149c28f9 416=over 4
74c14c97 417
9629ca98 418=item *
fcbec156 419
d1a156bb 420XXX
65c3f050 421
d1a156bb 422=back
65c3f050 423
d1a156bb 424=head1 Testing
65c3f050 425
d1a156bb
MH
426XXX Any significant changes to the testing of a freshly built perl should be
427listed here. Changes which create B<new> files in F<t/> go here as do any
428large changes to the testing harness (e.g. when parallel testing was added).
429Changes to existing files in F<t/> aren't worth summarizing, although the bugs
430that they represent may be covered elsewhere.
65c3f050 431
d1a156bb 432XXX If there were no significant test changes, say this:
65c3f050 433
d1a156bb
MH
434Tests were added and changed to reflect the other additions and changes
435in this release.
65c3f050 436
d1a156bb 437XXX If instead there were significant changes, say this:
9629ca98
N
438
439Tests were added and changed to reflect the other additions and
440changes in this release. Furthermore, these significant changes were
441made:
442
d1a156bb
MH
443[ List each test improvement as an =item entry ]
444
149c28f9 445=over 4
65c3f050 446
9629ca98 447=item *
65c3f050 448
d056cb55
TC
449F<t/run/switches.t> no longer uses (and re-uses) the F<tmpinplace/>
450directory under F<t/>. This may prevent spurious failures. [GH #17424]
65c3f050 451
149c28f9 452=back
65c3f050 453
9629ca98 454=head1 Platform Support
65c3f050 455
d1a156bb 456XXX Any changes to platform support should be listed in the sections below.
65c3f050 457
d1a156bb
MH
458[ Within the sections, list each platform as an =item entry with specific
459changes as paragraphs below it. ]
061637ca 460
d1a156bb 461=head2 New Platforms
285db695 462
d1a156bb
MH
463XXX List any platforms that this version of perl compiles on, that previous
464versions did not. These will either be enabled by new files in the F<hints/>
465directories, or new subdirectories and F<README> files at the top level of the
466source tree.
87fd4a59 467
d1a156bb 468=over 4
87fd4a59 469
d1a156bb 470=item XXX-some-platform
87fd4a59 471
d1a156bb 472XXX
46a21c0a 473
65c3f050
CBW
474=back
475
d1a156bb
MH
476=head2 Discontinued Platforms
477
478XXX List any platforms that this version of perl no longer compiles on.
65c3f050 479
9629ca98 480=over 4
f3496246 481
d1a156bb 482=item XXX-some-platform
149c28f9 483
d1a156bb 484XXX
65c3f050 485
149c28f9 486=back
65c3f050 487
d1a156bb
MH
488=head2 Platform-Specific Notes
489
490XXX List any changes for specific platforms. This could include configuration
491and compilation changes or changes in portability/compatibility. However,
492changes within modules for platforms should generally be listed in the
493L</Modules and Pragmata> section.
65c3f050 494
65c3f050 495=over 4
a1e5b700 496
74a32ed2
CB
497=item VMS
498
499With the release of the patch kit C99 V2.0, VSI has provided support for a
500number of previously-missing C99 features. On systems with that patch kit
501installed, Perl's configuration process will now detect the presence of the
502header C<stdint.h> and the following functions: C<fpclassify>, C<isblank>, C<isless>,
503C<llrint>, C<llrintl>, C<llround>, C<llroundl>, C<nearbyint>, C<round>, C<scalbn>,
504and C<scalbnl>.
87fd4a59 505
d1a156bb 506=back
87fd4a59 507
d1a156bb 508=head1 Internal Changes
87fd4a59 509
d1a156bb
MH
510XXX Changes which affect the interface available to C<XS> code go here. Other
511significant internal changes for future core maintainers should be noted as
512well.
87fd4a59 513
d1a156bb
MH
514[ List each change as an =item entry ]
515
516=over 4
87fd4a59
MH
517
518=item *
519
d1a156bb 520XXX
87fd4a59 521
d1a156bb 522=back
87fd4a59 523
d1a156bb
MH
524=head1 Selected Bug Fixes
525
526XXX Important bug fixes in the core language are summarized here. Bug fixes in
527files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
87fd4a59 528
d1a156bb 529[ List each fix as an =item entry ]
87fd4a59 530
d1a156bb 531=over 4
87fd4a59
MH
532
533=item *
534
7fba41dc
TC
535Previously L<perlfunc/require> would only treat the special built-in
536SV C<&PL_sv_undef> as a value in C<%INC> as if a previous C<require>
537has failed, treating other undefined SVs as if the previous C<require>
538has succeeded. This could cause unexpected success from C<require>
539eg. on C<local %INC = %INC;>. This has been fixed [GH #17428]
87fd4a59 540
464d81f9
HS
541=item *
542
543C<(?{...})> eval groups in regular expressions no longer unintentionally
544trigger "EVAL without pos change exceeded limit in regex" [GH #17490].
545
d8d1dede
KW
546=item *
547
548C<(?[...])> extended bracketed character classes do not wrongly raise an
549error on some cases where a previously-compiled such class is
550interpolated into another. The heuristics previously used have been
551replaced by a reliable method, and hence the diagnostics generated have
552changed. See L</Diagnostics>.
553
d1a156bb 554=back
87fd4a59 555
d1a156bb
MH
556=head1 Known Problems
557
558XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
559tests that had to be C<TODO>ed for the release would be noted here. Unfixed
560platform specific bugs also go here.
561
562[ List each fix as an =item entry ]
87fd4a59 563
d1a156bb
MH
564=over 4
565
566=item *
87fd4a59 567
d1a156bb 568XXX
a1e5b700 569
46a21c0a
SH
570=back
571
d1a156bb 572=head1 Errata From Previous Releases
f3d30b53 573
d1a156bb 574=over 4
2852b67a 575
d1a156bb 576=item *
2852b67a 577
d1a156bb
MH
578XXX Add anything here that we forgot to add, or were mistaken about, in
579the perldelta of a previous release.
2852b67a 580
d1a156bb 581=back
2852b67a 582
d1a156bb
MH
583=head1 Obituary
584
585XXX If any significant core contributor or member of the CPAN community has
586died, add a short obituary here.
587
588=head1 Acknowledgements
2852b67a 589
d1a156bb 590XXX Generate this with:
2852b67a 591
d1a156bb 592 perl Porting/acknowledgements.pl v5.31.8..HEAD
8424e368 593
44691e6f
AB
594=head1 Reporting Bugs
595
46a21c0a 596If you find what you think is a bug, you might check the perl bug database
8034715d 597at L<https://github.com/Perl/perl5/issues>. There may also be information at
46a21c0a 598L<http://www.perl.org/>, the Perl Home Page.
44691e6f 599
8166b4e0
DB
600If you believe you have an unreported bug, please open an issue at
601L<https://github.com/Perl/perl5/issues>. Be sure to trim your bug down to a
602tiny but sufficient test case.
44691e6f 603
87c118b9 604If the bug you are reporting has security implications which make it
8166b4e0 605inappropriate to send to a public issue tracker, then see
46a21c0a
SH
606L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
607for details of how to report the issue.
44691e6f 608
390ae6f9
S
609=head1 Give Thanks
610
46a21c0a
SH
611If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
612you can do so by running the C<perlthanks> program:
390ae6f9
S
613
614 perlthanks
615
616This will send an email to the Perl 5 Porters list with your show of thanks.
617
44691e6f
AB
618=head1 SEE ALSO
619
e08634c5
SH
620The F<Changes> file for an explanation of how to view exhaustive details on
621what changed.
44691e6f
AB
622
623The F<INSTALL> file for how to build Perl.
624
625The F<README> file for general stuff.
626
627The F<Artistic> and F<Copying> files for copyright information.
628
629=cut