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