This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Warn on unescaped /[]}]/ under re strict
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
3ce6a296
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.25.9
eabfc7bc 9
2cfe9b50 10=head1 DESCRIPTION
eabfc7bc 11
3ce6a296 12This document describes differences between the 5.25.8 release and the 5.25.9
4b8803f0 13release.
f3ed8cbf 14
3ce6a296
S
15If you are upgrading from an earlier release such as 5.25.7, first read
16L<perl5258delta>, which describes differences between 5.25.7 and 5.25.8.
17
18=head1 Notice
19
20XXX Any important notices here
8bbdbfcb 21
733dba2b 22=head1 Core Enhancements
ce6646d7 23
3ce6a296
S
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
77c8f263
KW
28=head2 New regular expression modifier C</xx>
29
30Specifying two C<x> characters to modify a regular expression pattern
31does everything that a single one does, but additionally TAB and SPACE
32characters within a bracketed character class are generally ignored and
33can be added to improve readability, like
34S<C</[ ^ A-Z d-f p-x ]/xx>>. Details are at
35L<perlre/E<sol>x and E<sol>xx>.
3ce6a296
S
36
37=head1 Security
38
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.
42
43[ List each security issue as a =head2 entry ]
44
45=head1 Incompatible Changes
46
47XXX 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
94749a5e
KW
57=head2 String delimiters that aren't stand-alone graphemes are now
58deprecated
59
60In order for Perl to eventually allow string delimiters to be Unicode
61grapheme clusters (which look like a single character, but may be
62a sequence of several ones), we have to stop allowing a single char
63delimiter that isn't a grapheme by itself. These are unlikely to exist
64in actual code, as they would typically display as attached to the
65character in front of them.
3ce6a296
S
66
67=head2 Module removals
68
69XXX Remove this section if inapplicable.
70
71The following modules will be removed from the core distribution in a
72future release, and will at that time need to be installed from CPAN.
73Distributions on CPAN which require these modules will need to list them as
74prerequisites.
75
76The core versions of these modules will now issue C<"deprecated">-category
77warnings to alert you to this fact. To silence these deprecation warnings,
78install the modules in question from CPAN.
79
80Note that these are (with rare exceptions) fine modules that you are encouraged
81to continue to use. Their disinclusion from core primarily hinges on their
82necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
83not usually on concerns over their design.
eaed4a85 84
3ce6a296 85=over
eaed4a85 86
3ce6a296
S
87=item XXX
88
89XXX Note that deprecated modules should be listed here even if they are listed
90as an updated module in the L</Modules and Pragmata> section.
91
92=back
93
94[ List each other deprecation as a =head2 entry ]
eaed4a85 95
733dba2b 96=head1 Performance Enhancements
226eba01 97
3ce6a296
S
98XXX Changes which enhance performance without changing behaviour go here.
99There may well be none in a stable release.
8bbdbfcb 100
3ce6a296 101[ List each enhancement as a =item entry ]
8bbdbfcb 102
3ce6a296 103=over 4
8bbdbfcb 104
3ce6a296 105=item *
dd3d2a3f 106
3ce6a296 107XXX
dd3d2a3f 108
8bbdbfcb
CG
109=back
110
733dba2b 111=head1 Modules and Pragmata
8bbdbfcb 112
3ce6a296
S
113XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
114go here. If Module::CoreList is updated, generate an initial draft of the
115following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
116for important changes should then be added by hand. In an ideal world,
117dual-life modules would have a F<Changes> file that could be cribbed.
118
119[ Within each section, list entries as a =item entry ]
120
121=head2 New Modules and Pragmata
8bbdbfcb
CG
122
123=over 4
124
125=item *
126
3ce6a296 127XXX
8bbdbfcb 128
3ce6a296
S
129=back
130
131=head2 Updated Modules and Pragmata
ff10d69b 132
3ce6a296 133=over 4
ff10d69b 134
76ea8b6a
JK
135=item *
136
3ce6a296 137L<XXX> has been upgraded from version A.xx to B.yy.
8bbdbfcb 138
d4151a23
S
139=item *
140
a4368cc3
KW
141L<re> has been upgraded from version 0.33 to 0.34;
142
143This adds support for the new L<C</xx>|perlre/E<sol>x and E<sol>xx>
144regular expression pattern modifier, and a change to the L<S<C<use re
145'strict'>>|re/'strict' mode> experimental feature. When S<C<re
146'strict'>> is enabled, a warning now will be generated for all
147unescaped uses of the two characters C<}> and C<]> in regular
148expression patterns (outside bracketed character classes) that are taken
149literally. This brings them more in line with the C<)> character which
150is always a metacharacter unless escaped. Being a metacharacter only
151sometimes, depending on action at a distance, can lead to silently
152having the pattern mean something quite different than was intended,
153which the S<C<re 'strict'>> mode is intended to minimize.
154
155=item *
156
ec34c8a4
JK
157L<B::Xref> has been upgraded from version 1.05 to 1.06.
158
159=item *
160
e34fc33f
JK
161L<Compress::Raw::Bzip2> has been upgraded from version 2.069 to 2.070.
162
163=item *
164
19f0376b
JK
165L<Compress::Raw::Zlib> has been upgraded from version 2.069 to 2.070.
166
167=item *
168
1146f1f7 169L<DB_File> has been upgraded from version 1.838 to 1.840.
ec34c8a4
JK
170
171=item *
172
1146f1f7 173L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06.
ec34c8a4
JK
174
175=item *
176
1146f1f7 177L<diagnostics> has been upgraded from version 1.35 to 1.36.
ec34c8a4
JK
178
179=item *
180
181L<DynaLoader> has been upgraded from version 1.40 to 1.41.
182
183=item *
184
185L<Errno> has been upgraded from version 1.27 to 1.28.
186
187=item *
188
189L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34.
190
191=item *
192
193L<I18N::LangTags> has been upgraded from version 0.41 to 0.42.
194
195=item *
196
197L<lib> has been upgraded from version 0.63 to 0.64.
198
199=item *
200
59aeb939 201L<Module::CoreList> has been upgraded from version 5.20161220 to 5.20170120.
d4151a23 202
ec34c8a4
JK
203=item *
204
4ee2b8db 205L<OS2::Process> has been upgraded from version 1.11 to 1.12.
ec34c8a4
JK
206
207=item *
208
209L<perl5db.pl> has been upgraded from version 1.50 to 1.51.
210
211=item *
212
74ef8fd9 213L<Storable> has been upgraded from version 2.59 to 2.61.
ec34c8a4
JK
214
215=item *
216
217L<Symbol> has been upgraded from version 1.07 to 1.08.
218
219=item *
220
221L<Term::ReadLine> has been upgraded from version 1.15 to 1.16.
222
223=item *
224
225L<Test> has been upgraded from version 1.29 to 1.30.
226
227=item *
228
58e76350
JH
229L<threads::shared> has been upgraded from version 1.52 to 1.53.
230
231=item *
232
ec34c8a4
JK
233L<Unicode::UCD> has been upgraded from version 0.67 to 0.68.
234
235=item *
236
1146f1f7
JK
237L<VMS::DCLsym> has been upgraded from version 1.07 to 1.08.
238
239=item *
240
ec34c8a4
JK
241L<XSLoader> has been upgraded from version 0.24 to 0.26.
242
3ce6a296 243=back
8bbdbfcb 244
3ce6a296
S
245=head2 Removed Modules and Pragmata
246
247=over 4
8bbdbfcb
CG
248
249=item *
250
3ce6a296 251XXX
8bbdbfcb 252
3ce6a296 253=back
8bbdbfcb 254
3ce6a296 255=head1 Documentation
8bbdbfcb 256
3ce6a296
S
257XXX Changes to files in F<pod/> go here. Consider grouping entries by
258file and be sure to link to the appropriate page, e.g. L<perlfunc>.
8bbdbfcb 259
3ce6a296 260=head2 New Documentation
8bbdbfcb 261
3ce6a296 262XXX Changes which create B<new> files in F<pod/> go here.
8bbdbfcb 263
3ce6a296 264=head3 L<XXX>
8bbdbfcb 265
3ce6a296 266XXX Description of the purpose of the new file here
8bbdbfcb 267
3ce6a296 268=head2 Changes to Existing Documentation
8bbdbfcb 269
3ce6a296
S
270XXX Changes which significantly change existing files in F<pod/> go here.
271However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
272section.
273
274=head3 L<XXX>
8bbdbfcb 275
3ce6a296 276=over 4
8bbdbfcb 277
107db227 278=item *
8bbdbfcb 279
3ce6a296 280XXX Description of the change here
8bbdbfcb 281
3ce6a296 282=back
8bbdbfcb 283
3ce6a296 284=head1 Diagnostics
8bbdbfcb 285
3ce6a296
S
286The following additions or changes have been made to diagnostic output,
287including warnings and fatal error messages. For the complete list of
288diagnostic messages, see L<perldiag>.
289
290XXX New or changed warnings emitted by the core's C<C> code go here. Also
291include any changes in L<perldiag> that reconcile it to the C<C> code.
8c3f6b0b 292
3ce6a296
S
293=head2 New Diagnostics
294
295XXX Newly added diagnostic messages go under here, separated into New Errors
296and New Warnings
297
298=head3 New Errors
299
300=over 4
a09f502b 301
107db227 302=item *
2c4879e2 303
3ce6a296
S
304XXX L<message|perldiag/"message">
305
306=back
307
308=head3 New Warnings
309
310=over 4
8bbdbfcb
CG
311
312=item *
313
3ce6a296
S
314XXX L<message|perldiag/"message">
315
316=back
317
318=head2 Changes to Existing Diagnostics
319
320XXX Changes (i.e. rewording) of diagnostic messages go here
321
322=over 4
bd5630ab 323
107db227 324=item *
2c4879e2 325
3ce6a296
S
326XXX Describe change here
327
328=back
329
330=head1 Utility Changes
331
332XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
333Most of these are built within the directory F<utils>.
334
335[ List utility changes as a =head2 entry for each utility and =item
336entries for each change
337Use L<XXX> with program names to get proper documentation linking. ]
338
339=head2 L<XXX>
340
341=over 4
a09f502b 342
107db227 343=item *
8bbdbfcb 344
3ce6a296
S
345XXX
346
347=back
348
349=head1 Configuration and Compilation
350
351XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
352go here. Any other changes to the Perl build process should be listed here.
353However, any platform-specific changes should be listed in the
354L</Platform Support> section, instead.
355
356[ List changes as a =item entry ].
357
358=over 4
8bbdbfcb 359
107db227 360=item *
8bbdbfcb 361
1e671560
TC
362The C<dtrace> build process has further changes:
363
364=over
365
366=item *
367
368If the C<-xnolibs> is available, use that so a F<dtrace> perl can be
369built within a FreeBSD jail.
370
371=item *
372
373On systems that build a dtrace object file (FreeBSD, Solaris and
374SystemTap's dtrace emulation), copy the input objects to a separate
375directory and process them there, and use those objects in the link,
376since C<dtrace -G> also modifies these objects.
377
378=item *
379
380Add libelf to the build on FreeBSD 10.x, since dtrace adds references
381to libelf symbols.
382
383=item *
384
385Generate a dummy dtrace_main.o if C<dtrace -G> fails to build it. A
386default build on Solaris generates probes from the unused inline
387functions, while they don't on FreeBSD, which causes C<dtrace -G> to
388fail.
389
390=back
391
392[perl #130108]
3ce6a296 393
8f7edc68
TC
394=item *
395
396You can now disable perl's use of the PERL_HASH_SEED and
397PERL_PERTURB_KEYS environment variables by configureing perl with
398C<-Accflags=NO_PERL_HASH_ENV>.
399
400=item *
401
402You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment
403variable by configuring perl with
404C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>.
405
3ce6a296
S
406=back
407
408=head1 Testing
409
410XXX Any significant changes to the testing of a freshly built perl should be
411listed here. Changes which create B<new> files in F<t/> go here as do any
412large changes to the testing harness (e.g. when parallel testing was added).
413Changes to existing files in F<t/> aren't worth summarizing, although the bugs
414that they represent may be covered elsewhere.
415
416[ List each test improvement as a =item entry ]
417
418=over 4
8bbdbfcb
CG
419
420=item *
421
3ce6a296 422XXX
07cfdfcc 423
262514fd 424=back
2c4879e2 425
3ce6a296
S
426=head1 Platform Support
427
428XXX Any changes to platform support should be listed in the sections below.
429
430[ Within the sections, list each platform as a =item entry with specific
431changes as paragraphs below it. ]
432
433=head2 New Platforms
434
435XXX List any platforms that this version of perl compiles on, that previous
436versions did not. These will either be enabled by new files in the F<hints/>
437directories, or new subdirectories and F<README> files at the top level of the
438source tree.
439
440=over 4
441
442=item XXX-some-platform
443
444XXX
445
446=back
447
448=head2 Discontinued Platforms
449
450XXX List any platforms that this version of perl no longer compiles on.
451
452=over 4
453
454=item XXX-some-platform
455
456XXX
457
458=back
459
460=head2 Platform-Specific Notes
461
462XXX List any changes for specific platforms. This could include configuration
463and compilation changes or changes in portability/compatibility. However,
464changes within modules for platforms should generally be listed in the
465L</Modules and Pragmata> section.
466
467=over 4
468
469=item XXX-some-platform
470
471XXX
472
473=back
474
475=head1 Internal Changes
476
477XXX Changes which affect the interface available to C<XS> code go here. Other
478significant internal changes for future core maintainers should be noted as
479well.
480
481[ List each change as a =item entry ]
a09f502b 482
733dba2b 483=over 4
a09f502b 484
a07f6112 485=item *
a09f502b 486
a239b1e2
KW
487New versions of macros like C<isALPHA_utf8> and C<toLOWER_utf8> have
488been added, each with the
da8c1a98
KW
489suffix C<_safe>, like C<isSPACE_utf8_safe>. These take an extra
490parameter, giving an upper limit of how far into the string it is safe
491to read. Using the old versions could cause attempts to read beyond the
607313a1
KW
492end of the input buffer if the UTF-8 is not well-formed, and ther use
493now raises a deprecation warning. Details are at
da8c1a98
KW
494L<perlapi/Character classification>.
495
496=item *
497
86ae6e94
KW
498Calling macros like C<isALPHA_utf8> on malformed UTF-8 have issued a
499deprecation warning since Perl v5.18. They now die.
fa8ab374 500Similarly, macros like C<toLOWER_utf8> on malformed UTF-8 now die.
3ce6a296 501
d1f8d421
KW
502=item *
503
504Calling the functions C<utf8n_to_uvchr> and its derivatives, while
5a48568d
KW
505passing a string length of 0 is now asserted against in DEBUGGING
506builds, and otherwise returns the Unicode REPLACEMENT CHARACTER. If
507you have nothing to decode, you shouldn't call the decode function.
d1f8d421 508
94953955
KW
509=item *
510
511The functions C<utf8n_to_uvchr> and its derivatives now return the
512Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong
513malformation, and that malformation is allowed by the input parameters.
514This malformation is where the UTF-8 looks valid syntactically, but
515there is a shorter sequence that yields the same code point. This has
516been forbidden since Unicode version 3.1.
517
d60baaa7
KW
518=item *
519
520The functions C<utf8n_to_uvchr> and its derivatives now accept an input
521flag to allow the overflow malformation. This malformation is when the
522UTF-8 may be syntactically valid, but the code point it represents is
523not capable of being represented in the word length on the platform.
524What "allowed" means in this case is that the function doesn't return an
525error, and advances the parse pointer to beyond the UTF-8 in question,
526but it returns the Unicode REPLACEMENT CHARACTER as the value of the
527code point (since the real value is not representable).
528
3ce6a296
S
529=back
530
531=head1 Selected Bug Fixes
532
533XXX Important bug fixes in the core language are summarized here. Bug fixes in
534files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
535
536[ List each fix as a =item entry ]
537
538=over 4
a09f502b 539
36cabe94
YO
540=item *
541
6cdc5cd8
KW
542Under C<use utf8>, the entire Perl program is now checked that the UTF-8
543is wellformed. This resolves [perl #126310].
3ce6a296 544
d6c970c7
AC
545=item *
546
547The range operator C<..> on strings now handles its arguments correctly when in
548the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >>
549feature. The previous behaviour was sufficiently unexpected that we believe no
550correct program could have made use of it.
551
3ce6a296
S
552=back
553
554=head1 Known Problems
555
556XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
557tests that had to be C<TODO>ed for the release would be noted here. Unfixed
558platform specific bugs also go here.
36cabe94 559
3ce6a296
S
560[ List each fix as a =item entry ]
561
562=over 4
563
564=item *
565
566XXX
36cabe94 567
a07f6112 568=back
7d897bd0 569
3ce6a296
S
570=head1 Errata From Previous Releases
571
572=over 4
8bbdbfcb 573
3ce6a296
S
574=item *
575
576XXX Add anything here that we forgot to add, or were mistaken about, in
577the perldelta of a previous release.
8bbdbfcb 578
3ce6a296 579=back
262514fd 580
3ce6a296 581=head1 Obituary
a6a32e96 582
3ce6a296
S
583XXX If any significant core contributor has died, we've added a short obituary
584here.
262514fd 585
3ce6a296 586=head1 Acknowledgements
226eba01 587
3ce6a296 588XXX Generate this with:
24528e8e 589
3ce6a296 590 perl Porting/acknowledgements.pl v5.25.5..HEAD
f5b73711 591
44691e6f
AB
592=head1 Reporting Bugs
593
c0ea3294
SH
594If you find what you think is a bug, you might check the perl bug database
595at L<https://rt.perl.org/> . There may also be information at
4b8803f0 596L<http://www.perl.org/> , the Perl Home Page.
44691e6f 597
e08634c5
SH
598If you believe you have an unreported bug, please run the L<perlbug> program
599included with your release. Be sure to trim your bug down to a tiny but
600sufficient test case. Your bug report, along with the output of C<perl -V>,
601will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 602
87c118b9
DM
603If the bug you are reporting has security implications which make it
604inappropriate to send to a publicly archived mailing list, then see
c0ea3294
SH
605L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
606for details of how to report the issue.
44691e6f
AB
607
608=head1 SEE ALSO
609
e08634c5
SH
610The F<Changes> file for an explanation of how to view exhaustive details on
611what changed.
44691e6f
AB
612
613The F<INSTALL> file for how to build Perl.
614
615The F<README> file for general stuff.
616
617The F<Artistic> and F<Copying> files for copyright information.
618
619=cut