This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for bf4a926a2937
[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
57b3a6b6 320As of Perl 5.25.9, all new deprecations will come with a version in
7ca0bfc4
A
321which the feature will disappear. And with a few exceptions, most
322existing deprecations will state when they'll disappear. As such, most
323deprecation messages have changed.
3ce6a296
S
324
325=over 4
bd5630ab 326
107db227 327=item *
2c4879e2 328
7ca0bfc4
A
329Attribute "locked" is deprecated, and will disappear in Perl 5.28
330
331=item *
332
333Attribute "unique" is deprecated, and will disappear in Perl 5.28
334
335=item *
336
337"\c%c" is more clearly written simply as "%s". This will be a fatal error
338in Perl 5.28
339
340=item *
341
342Constants from lexical variables potentially modified elsewhere are
343deprecated. This will not be allowed in Perl 5.32
344
345=item *
346
347Deprecated use of my() in false conditional. This will be a fatal error
348in Perl 5.30
349
350=item *
351
352dump() better written as CORE::dump(). dump() will no longer be available
353in Perl 5.30
354
355=item *
356
357${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28
358
359=item *
360
361File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsd_glob()
362instead.
363
364=item *
365
366%s() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30
367
368=item *
369
370$* is no longer supported. Its use will be fatal in Perl 5.30
371
372=item *
373
374$* is no longer supported. Its use will be fatal in Perl 5.30
375
376=item *
377
378Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28
379
380=item *
381
382Opening filehandle %s also as a directory. This will be a fatal
383error in Perl 5.28
384
385=item *
386
387Setting $/ to a reference to %s as a form of slurp is deprecated,
388treating as undef. This will be fatal in Perl 5.28
389
390=item *
391
392Unescaped left brace in regex is deprecated here (and will be fatal
393in Perl 5.30), passed through in regex; marked by S<<-- HERE> in m/%s/
394
395=item *
396
397Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28
398
399=item *
400
401Use of bare << to mean <<"" is deprecated. Its use will be fatal in Perl 5.28
402
403=item *
404
405Use of code point 0x%s is deprecated; the permissible max is 0x%s.
406This will be fatal in Perl 5.28
407
408=item *
409
410Use of comma-less variable list is deprecated. Its use will be fatal
411in Perl 5.28
412
413=item *
414
415Use of inherited AUTOLOAD for non-method %s() is deprecated. This
416will be fatal in Perl 5.28
417
418=item *
419
420Use of strings with code points over 0xFF as arguments to %s operator
421is deprecated. This will be a fatal error in Perl 5.28
3ce6a296
S
422
423=back
424
425=head1 Utility Changes
426
427XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
428Most of these are built within the directory F<utils>.
429
430[ List utility changes as a =head2 entry for each utility and =item
431entries for each change
432Use L<XXX> with program names to get proper documentation linking. ]
433
434=head2 L<XXX>
435
436=over 4
a09f502b 437
107db227 438=item *
8bbdbfcb 439
3ce6a296
S
440XXX
441
442=back
443
444=head1 Configuration and Compilation
445
446XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
447go here. Any other changes to the Perl build process should be listed here.
448However, any platform-specific changes should be listed in the
449L</Platform Support> section, instead.
450
451[ List changes as a =item entry ].
452
453=over 4
8bbdbfcb 454
107db227 455=item *
8bbdbfcb 456
1e671560
TC
457The C<dtrace> build process has further changes:
458
459=over
460
461=item *
462
463If the C<-xnolibs> is available, use that so a F<dtrace> perl can be
464built within a FreeBSD jail.
465
466=item *
467
468On systems that build a dtrace object file (FreeBSD, Solaris and
469SystemTap's dtrace emulation), copy the input objects to a separate
470directory and process them there, and use those objects in the link,
471since C<dtrace -G> also modifies these objects.
472
473=item *
474
475Add libelf to the build on FreeBSD 10.x, since dtrace adds references
476to libelf symbols.
477
478=item *
479
480Generate a dummy dtrace_main.o if C<dtrace -G> fails to build it. A
481default build on Solaris generates probes from the unused inline
482functions, while they don't on FreeBSD, which causes C<dtrace -G> to
483fail.
484
485=back
486
487[perl #130108]
3ce6a296 488
8f7edc68
TC
489=item *
490
491You can now disable perl's use of the PERL_HASH_SEED and
492PERL_PERTURB_KEYS environment variables by configureing perl with
493C<-Accflags=NO_PERL_HASH_ENV>.
494
495=item *
496
497You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment
498variable by configuring perl with
499C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>.
500
3ce6a296
S
501=back
502
503=head1 Testing
504
505XXX Any significant changes to the testing of a freshly built perl should be
506listed here. Changes which create B<new> files in F<t/> go here as do any
507large changes to the testing harness (e.g. when parallel testing was added).
508Changes to existing files in F<t/> aren't worth summarizing, although the bugs
509that they represent may be covered elsewhere.
510
511[ List each test improvement as a =item entry ]
512
513=over 4
8bbdbfcb
CG
514
515=item *
516
3ce6a296 517XXX
07cfdfcc 518
262514fd 519=back
2c4879e2 520
3ce6a296
S
521=head1 Platform Support
522
523XXX Any changes to platform support should be listed in the sections below.
524
525[ Within the sections, list each platform as a =item entry with specific
526changes as paragraphs below it. ]
527
528=head2 New Platforms
529
530XXX List any platforms that this version of perl compiles on, that previous
531versions did not. These will either be enabled by new files in the F<hints/>
532directories, or new subdirectories and F<README> files at the top level of the
533source tree.
534
535=over 4
536
537=item XXX-some-platform
538
539XXX
540
541=back
542
543=head2 Discontinued Platforms
544
545XXX List any platforms that this version of perl no longer compiles on.
546
547=over 4
548
549=item XXX-some-platform
550
551XXX
552
553=back
554
555=head2 Platform-Specific Notes
556
557XXX List any changes for specific platforms. This could include configuration
558and compilation changes or changes in portability/compatibility. However,
559changes within modules for platforms should generally be listed in the
560L</Modules and Pragmata> section.
561
562=over 4
563
564=item XXX-some-platform
565
566XXX
567
568=back
569
570=head1 Internal Changes
571
572XXX Changes which affect the interface available to C<XS> code go here. Other
573significant internal changes for future core maintainers should be noted as
574well.
575
576[ List each change as a =item entry ]
a09f502b 577
733dba2b 578=over 4
a09f502b 579
a07f6112 580=item *
a09f502b 581
a239b1e2
KW
582New versions of macros like C<isALPHA_utf8> and C<toLOWER_utf8> have
583been added, each with the
da8c1a98
KW
584suffix C<_safe>, like C<isSPACE_utf8_safe>. These take an extra
585parameter, giving an upper limit of how far into the string it is safe
586to read. Using the old versions could cause attempts to read beyond the
607313a1
KW
587end of the input buffer if the UTF-8 is not well-formed, and ther use
588now raises a deprecation warning. Details are at
da8c1a98
KW
589L<perlapi/Character classification>.
590
591=item *
592
86ae6e94
KW
593Calling macros like C<isALPHA_utf8> on malformed UTF-8 have issued a
594deprecation warning since Perl v5.18. They now die.
fa8ab374 595Similarly, macros like C<toLOWER_utf8> on malformed UTF-8 now die.
3ce6a296 596
d1f8d421
KW
597=item *
598
599Calling the functions C<utf8n_to_uvchr> and its derivatives, while
5a48568d
KW
600passing a string length of 0 is now asserted against in DEBUGGING
601builds, and otherwise returns the Unicode REPLACEMENT CHARACTER. If
602you have nothing to decode, you shouldn't call the decode function.
d1f8d421 603
94953955
KW
604=item *
605
606The functions C<utf8n_to_uvchr> and its derivatives now return the
607Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong
608malformation, and that malformation is allowed by the input parameters.
609This malformation is where the UTF-8 looks valid syntactically, but
610there is a shorter sequence that yields the same code point. This has
611been forbidden since Unicode version 3.1.
612
d60baaa7
KW
613=item *
614
615The functions C<utf8n_to_uvchr> and its derivatives now accept an input
616flag to allow the overflow malformation. This malformation is when the
617UTF-8 may be syntactically valid, but the code point it represents is
618not capable of being represented in the word length on the platform.
619What "allowed" means in this case is that the function doesn't return an
620error, and advances the parse pointer to beyond the UTF-8 in question,
621but it returns the Unicode REPLACEMENT CHARACTER as the value of the
622code point (since the real value is not representable).
623
3ce6a296
S
624=back
625
626=head1 Selected Bug Fixes
627
628XXX Important bug fixes in the core language are summarized here. Bug fixes in
629files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
630
631[ List each fix as a =item entry ]
632
633=over 4
a09f502b 634
36cabe94
YO
635=item *
636
6cdc5cd8
KW
637Under C<use utf8>, the entire Perl program is now checked that the UTF-8
638is wellformed. This resolves [perl #126310].
3ce6a296 639
d6c970c7
AC
640=item *
641
642The range operator C<..> on strings now handles its arguments correctly when in
643the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >>
644feature. The previous behaviour was sufficiently unexpected that we believe no
645correct program could have made use of it.
646
14ebef5f
TC
647=item *
648
649The S<split> operator did not ensure enough space was allocated for
650its return value in scalar context. It could then write a single
651pointer immediately beyond the end of the memory block allocated for
652the stack. [perl #130262]
653
8ecef801
TC
654=item *
655
656Using a large code point with the C<W> pack template character with
657the current output position aligned at just the right point could
658cause a write a single zero byte immediately beyond the end of an
659allocated buffer. [perl #129149]
660
3ce6a296
S
661=back
662
663=head1 Known Problems
664
665XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
666tests that had to be C<TODO>ed for the release would be noted here. Unfixed
667platform specific bugs also go here.
36cabe94 668
3ce6a296
S
669[ List each fix as a =item entry ]
670
671=over 4
672
673=item *
674
675XXX
36cabe94 676
a07f6112 677=back
7d897bd0 678
3ce6a296
S
679=head1 Errata From Previous Releases
680
681=over 4
8bbdbfcb 682
3ce6a296
S
683=item *
684
685XXX Add anything here that we forgot to add, or were mistaken about, in
686the perldelta of a previous release.
8bbdbfcb 687
3ce6a296 688=back
262514fd 689
3ce6a296 690=head1 Obituary
a6a32e96 691
3ce6a296
S
692XXX If any significant core contributor has died, we've added a short obituary
693here.
262514fd 694
3ce6a296 695=head1 Acknowledgements
226eba01 696
3ce6a296 697XXX Generate this with:
24528e8e 698
3ce6a296 699 perl Porting/acknowledgements.pl v5.25.5..HEAD
f5b73711 700
44691e6f
AB
701=head1 Reporting Bugs
702
c0ea3294
SH
703If you find what you think is a bug, you might check the perl bug database
704at L<https://rt.perl.org/> . There may also be information at
4b8803f0 705L<http://www.perl.org/> , the Perl Home Page.
44691e6f 706
e08634c5
SH
707If you believe you have an unreported bug, please run the L<perlbug> program
708included with your release. Be sure to trim your bug down to a tiny but
709sufficient test case. Your bug report, along with the output of C<perl -V>,
710will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 711
87c118b9
DM
712If the bug you are reporting has security implications which make it
713inappropriate to send to a publicly archived mailing list, then see
c0ea3294
SH
714L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
715for details of how to report the issue.
44691e6f
AB
716
717=head1 SEE ALSO
718
e08634c5
SH
719The F<Changes> file for an explanation of how to view exhaustive details on
720what changed.
44691e6f
AB
721
722The F<INSTALL> file for how to build Perl.
723
724The F<README> file for general stuff.
725
726The F<Artistic> and F<Copying> files for copyright information.
727
728=cut