This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
some perldelta fixes
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
7065301c
RS
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.21.1
c68523cb 9
238894db 10=head1 DESCRIPTION
c68523cb 11
7065301c 12This document describes differences between the 5.21.0 release and the 5.21.1
238894db 13release.
c68523cb 14
7065301c
RS
15If you are upgrading from an earlier release such as 5.20.0, first read
16L<perl5210delta>, which describes differences between 5.20.0 and 5.21.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
8373491a
KW
30=head2 C<qr/foo/x> now ignores any Unicode pattern white space
31
32The C</x> regular expression modifier allows the pattern to contain
33white space and comments, both of which are ignored, for improved
34readability. Until now, not all the white space characters that Unicode
35designates for this purpose were handled. The additional ones now
36recognized are
37U+0085 NEXT LINE,
38U+200E LEFT-TO-RIGHT MARK,
39U+200F RIGHT-TO-LEFT MARK,
40U+2028 LINE SEPARATOR,
41and
42U+2029 PARAGRAPH SEPARATOR.
43
d6ded950
KW
44=head2 S<C<use locale>> can restrict which locale categories are affected
45
46It is now possible to pass a parameter to S<C<use locale>> to specify
47a subset of locale categories to be locale-aware, with the remaining
48ones unaffected. See L<perllocale/The "use locale" pragma> for details.
49
7065301c
RS
50=head1 Security
51
52XXX Any security-related notices go here. In particular, any security
53vulnerabilities closed should be noted here rather than in the
54L</Selected Bug Fixes> section.
55
56[ List each security issue as a =head2 entry ]
57
58=head1 Incompatible Changes
59
60XXX For a release on a stable branch, this section aspires to be:
61
62 There are no changes intentionally incompatible with 5.XXX.XXX
63 If any exist, they are bugs, and we request that you submit a
64 report. See L</Reporting Bugs> below.
65
98b7895c
MH
66=head2 C<\N{}> with a sequence of multiple spaces is now a fatal error.
67
68This has been deprecated since v5.18.
69
7357bd17
KW
70=head2 In double-quotish C<\cI<X>>, I<X> must now be a printable ASCII character
71
72In prior releases, failure to do this raised a deprecation warning.
7065301c 73
cd209d9d
KW
74=head2 Splitting the tokens C<(?> and C<(*> in regular expressions is
75now a fatal compilation error.
76
77These had been deprecated since v5.18.
78
8373491a
KW
79=head2 5 additional characters are treated as white space under C</x> in
80regex patterns (unless escaped)
81
82The use of these characters with C</x> outside bracketed character
83classes and when not preceeded by a backslash has raised a deprecation
84warning since v5.18. Now they will be ignored. See L</qrE<sol>fooE<sol>x>
85for the list of the five characters.
86
87=head2 Comment lines within S<C<(?[ ])>> now are ended only by a C<\n>
88
89S<C<(?[ ])>> is an experimental feature, introduced in v5.18. It operates
90as if C</x> is always enabled. But there was a difference, comment
91lines (following a C<#> character) were terminated by anything matching
92C<\R> which includes all vertical whitespace, such as form feeds. For
93consistency, this is now changed to match what terminates comment lines
94outside S<C<(?[ ])>>, namely a C<\n> (even if escaped), which is the
95same as what terminates a heredoc string and formats.
96
b5adc3e5
DIM
97=head2 Omitting % and @ on hash and array names is no longer permitted
98
99Really old Perl let you omit the @ on array names and the % on hash
100names in some spots. This has issued a deprecation warning since Perl
1015.0, and is no longer permitted.
102
2c6ee1a7
KW
103=head2 C<"$!"> text is now in English outside C<"use locale"> scope
104
105Previously, the text, unlike almost everything else, always came out
106based on the current underlying locale of the program. (Also affected
107on some systems is C<"$^E>".) For programs that are unprepared to
108handle locale, this can cause garbage text to be displayed. It's better
109to display text that is translatable via some tool than garbage text
110which is much harder to figure out.
111
5320b60d
KW
112=head2 C<"$!"> text will be returned in UTF-8 when appropriate
113
114The stringification of C<$!> and C<$^E> will have the UTF-8 flag set
115when the text is actually non-ASCII UTF-8. This will enable programs
116that are set up to be locale-aware to properly output messages in the
117user's native language. Code that needs to continue the 5.20 and
118earlier behavior can do the stringification within the scopes of both
119'use bytes' and 'use locale ":messages". No other Perl operations will
120be affected by locale; only C<$!> and C<$^E> stringification. The
121'bytes' pragma causes the UTF-8 flag to not be set, just as in previous
122Perl releases. This resolves [perl #112208].
123
7065301c
RS
124=head1 Deprecations
125
126XXX Any deprecated features, syntax, modules etc. should be listed here.
127
df758df2
KW
128=head2 Using a NO-BREAK space in a character alias for C<\N{...}> is now
129deprecated
130
131This non-graphic character is essentially indistinguishable from a
132regular space, and so should not be allowed. See
133L<charnames/CUSTOM ALIASES>.
134
7065301c
RS
135=head2 Module removals
136
137XXX Remove this section if inapplicable.
138
139The following modules will be removed from the core distribution in a
140future release, and will at that time need to be installed from CPAN.
141Distributions on CPAN which require these modules will need to list them as
142prerequisites.
143
144The core versions of these modules will now issue C<"deprecated">-category
145warnings to alert you to this fact. To silence these deprecation warnings,
146install the modules in question from CPAN.
147
148Note that these are (with rare exceptions) fine modules that you are encouraged
149to continue to use. Their disinclusion from core primarily hinges on their
150necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
151not usually on concerns over their design.
152
153=over
154
155=item XXX
156
157XXX Note that deprecated modules should be listed here even if they are listed
158as an updated module in the L</Modules and Pragmata> section.
159
160=back
161
162[ List each other deprecation as a =head2 entry ]
163
164=head1 Performance Enhancements
165
166XXX Changes which enhance performance without changing behaviour go here.
167There may well be none in a stable release.
168
169[ List each enhancement as a =item entry ]
170
171=over 4
172
173=item *
174
8a16341a
MH
175Many internal functions have been refactored to improve performance and reduce
176their memory footprints.
d133a3dd
MH
177
178L<[perl #121436]|https://rt.perl.org/Ticket/Display.html?id=121436>
8a16341a
MH
179L<[perl #121906]|https://rt.perl.org/Ticket/Display.html?id=121906>
180L<[perl #121969]|https://rt.perl.org/Ticket/Display.html?id=121969>
7065301c 181
6bb82be0
MH
182=item *
183
184C<-T> and C<-B> filetests will return sooner when an empty file is detected.
185
186L<perl #121489|https://rt.perl.org/Ticket/Display.html?id=121489>
187
7065301c
RS
188=back
189
7ef8b31d 190=head1 Modules and Pragmata
f6f3144e 191
7065301c
RS
192XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
193go here. If Module::CoreList is updated, generate an initial draft of the
194following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
195for important changes should then be added by hand. In an ideal world,
196dual-life modules would have a F<Changes> file that could be cribbed.
197
198[ Within each section, list entries as a =item entry ]
199
200=head2 New Modules and Pragmata
24a38d90
RS
201
202=over 4
203
204=item *
205
7065301c
RS
206XXX
207
208=back
209
210=head2 Updated Modules and Pragmata
211
212=over 4
24a38d90
RS
213
214=item *
215
56cdf413
TC
216L<Carp> has been upgraded from version 1.3301 to 1.34.
217
218Carp::Heavy now ignores version mismatches with Carp if Carp is newer
219than 1.12, since Carp::Heavy's guts were merged into Carp at that
220point.
221L<[perl #121574]|https://rt.perl.org/Ticket/Display.html?id=121574>
222
223=item *
224
28e02325
SH
225L<Encode> has been upgraded from version 2.60_01 to 2.62.
226
227B<piconv> now has better error handling when the encoding name is nonexistent,
228and a build breakage when upgrading L<Encode> in perl-5.8.2 and earlier has
229been fixed.
230
231=item *
232
cb526893
TC
233L<Hash::Util> has been upgraded from version 0.16 to 0.17.
234
235Minor bug fixes and documentation fixes to Hash::Util::hash_stats()
236
237=item *
238
5abafd4c
SH
239The libnet collection of modules has been upgraded from version 1.25 to 1.27.
240
241There are only whitespace changes to the installed files.
242
243=item *
244
7a945bf5
SH
245The Locale-Codes collection of modules has been upgraded from vesion 3.30 to 3.31.
246
247Fixed a bug in the scripts used to extract data from spreadsheets that
248prevented the SHP currency code from being found.
249L<[cpan #94229]|https://rt.cpan.org/Ticket/Display.html?id=94229>
250
251=item *
252
4ed8f5ed
TC
253L<Math::BigInt> has been upgraded from version 1.9993 to 1.9994.
254
255Synchronize POD changes from the CPAN release.
256
ee15bb65
TC
257C<< Math::BigFloat->blog(x) >> would sometimes return blog(2*x) when
258the accuracy was greater than 70 digits.
259
260The result of C<< Math::BigFloat->bdiv() >> in list context now
261satisfies C<< x = quotient * divisor + remainder >>.
262
4ed8f5ed
TC
263=item *
264
234105dd
TC
265L<Math::BigRat> has been upgraded from version 0.2606 to 0.2607.
266
267Synchronize POD changes from the CPAN release.
268
269=item *
270
f97d984b 271L<Module::Metadata> has been upgraded from version 1.000022 to 1.000024.
b9beed70
SH
272
273Support installations on older perls with an L<ExtUtils::MakeMaker> earlier
274than 6.63_03
275
276=item *
277
c13fd1a2
TC
278L<perl5db.pl> has been upgraded from version 1.44 to 1.45.
279
280fork() in the debugger under C<tmux> will now create a new window for
891822fa
TC
281the forked process. L<[perl
282#121333]|https://rt.perl.org/Ticket/Display.html?id=121333>
283
284The debugger now saves the current working directory on startup and
285restores it when you restart your program with C<R> or <rerun>. L<[perl
286#121509]|https://rt.perl.org/Ticket/Display.html?id=121509>
24a38d90 287
cb526893
TC
288=item *
289
f8187d97
SH
290L<Unicode::Collate> has been upgraded from version 1.04 to 1.07.
291
292Version 0.67's improved discontiguous contractions is invalidated by default
293and is supported as a parameter 'long_contraction'.
294
95f3e8d2
SH
295=item *
296
297L<Unicode::Normalize> has been upgraded from version 1.17 to 1.18.
298
299The XSUB implementation has been removed in favour of pure Perl.
300
3eaa3d14
YO
301=item *
302
cb526893
TC
303A mismatch between the documentation and the code in utf8::downgrade()
304was fixed in favour of the documentation. The optional second argument
305is now correctly treated as a perl boolean (true/false semantics) and
306not as an integer.
3eaa3d14 307
238894db 308=back
24a38d90 309
92fa985e 310=head2 Removed Modules and Pragmata
24a38d90 311
238894db 312=over 4
24a38d90
RS
313
314=item *
315
7065301c
RS
316XXX
317
318=back
319
320=head1 Documentation
321
322XXX Changes to files in F<pod/> go here. Consider grouping entries by
323file and be sure to link to the appropriate page, e.g. L<perlfunc>.
324
325=head2 New Documentation
326
327XXX Changes which create B<new> files in F<pod/> go here.
328
329=head3 L<XXX>
330
331XXX Description of the purpose of the new file here
332
333=head2 Changes to Existing Documentation
334
335XXX Changes which significantly change existing files in F<pod/> go here.
336However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
337section.
338
9c0f2733 339=head3 L<perlfunc>
7065301c
RS
340
341=over 4
342
343=item *
344
9c0f2733
MH
345C<-l> now notes that it will return false if symlinks aren't supported by the
346file system.
347
348L<[perl #121523]|https://rt.perl.org/Ticket/Display.html?id=121523>
7065301c
RS
349
350=back
351
58f25ac1
MH
352=head3 L<perlapi>
353
354=over 4
355
356=item *
357
358C<sv_usepvn_flags> - Fix documentation to mention the use of C<NewX> instead of
359C<malloc>.
360
361L<[perl #121869]|https://rt.perl.org/Ticket/Display.html?id=121869>
362
4c6609d3
MH
363=item *
364
365Clarify where C<NUL> may be embedded or is required to terminate a string.
366
58f25ac1
MH
367=back
368
12042f24
MH
369=head3 L<perlhacktips>
370
371=over 4
372
373=item *
374
375Updated documentation for the C<test.valgrind> C<make> target.
376
377L<[perl #121431]|https://rt.perl.org/Ticket/Display.html?id=121431>
378
379=back
380
2705070b
MH
381=head3 L<perlre>
382
383=over 4
384
385=item *
386
387The C</x> modifier has been clarified to note that comments cannot be continued
388onto the next line by escaping them.
389
390=back
391
b10906fb
MH
392=head3 L<Unicode::UCD>
393
394=over 4
395
396=item *
397
398The documentation includes many clarifications and fixes.
399
400=back
401
7065301c
RS
402=head1 Diagnostics
403
404The following additions or changes have been made to diagnostic output,
405including warnings and fatal error messages. For the complete list of
406diagnostic messages, see L<perldiag>.
407
408XXX New or changed warnings emitted by the core's C<C> code go here. Also
409include any changes in L<perldiag> that reconcile it to the C<C> code.
410
411=head2 New Diagnostics
412
413XXX Newly added diagnostic messages go under here, separated into New Errors
414and New Warnings
415
416=head3 New Errors
417
418=over 4
24a38d90
RS
419
420=item *
421
7065301c
RS
422XXX L<message|perldiag/"message">
423
424=back
425
426=head3 New Warnings
427
428=over 4
24a38d90
RS
429
430=item *
431
097675bf
TC
432L<PerlIO layer ':win32' is experimental|perldiag/"PerlIO layer ':win32' is experimental">:
433
434(S experimental::win32_perlio) The C<:win32> PerlIO layer is
435experimental. If you want to take the risk of using this layer,
436simply disable this warning:
437
438 no warnings "experimental::win32_perlio";
24a38d90 439
238894db 440=back
24a38d90 441
7065301c 442=head2 Changes to Existing Diagnostics
24a38d90 443
7065301c 444XXX Changes (i.e. rewording) of diagnostic messages go here
24a38d90 445
7065301c
RS
446=over 4
447
448=item *
449
747b6130
MH
450<> should be quotes
451
452This warning has been changed to
453L<< <> at require-statement should be quotes|perldiag/"<> at require-statement should be quotes" >>
454to make the issue more identifiable.
455
456=item *
457
723edb96
TC
458L<Unsuccessful %s on filename containing newline|perldiag/"Unsuccessful %s on filename containing newline">
459
460This warning is now only produced when the newline is at the end of
461the filename.
7065301c
RS
462
463=back
464
465=head1 Utility Changes
466
467XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
eb561242 468Most of these are built within the directory F<utils>.
7065301c
RS
469
470[ List utility changes as a =head2 entry for each utility and =item
471entries for each change
472Use L<XXX> with program names to get proper documentation linking. ]
473
eb561242 474=head2 F<x2p/>
7065301c
RS
475
476=over 4
477
478=item *
24a38d90 479
eb561242
MH
480The F<x2p/> directory has been removed from the Perl core.
481
482This removes find2perl, s2p and a2p. They have all been released to CPAN as
483separate distributions (App::find2perl, App::s2p, App::a2p).
7065301c
RS
484
485=back
486
487=head1 Configuration and Compilation
488
489XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
490go here. Any other changes to the Perl build process should be listed here.
491However, any platform-specific changes should be listed in the
492L</Platform Support> section, instead.
493
494[ List changes as a =item entry ].
495
496=over 4
497
498=item *
499
12042f24
MH
500C<make test.valgrind> now supports parallel testing.
501
502For example:
503
504 TEST_JOBS=9 make test.valgrind
505
506See L<perlhacktips/valgrind> for more information.
507
508L<[perl #121431]|https://rt.perl.org/Ticket/Display.html?id=121431>
7065301c
RS
509
510=back
511
512=head1 Testing
513
514XXX Any significant changes to the testing of a freshly built perl should be
515listed here. Changes which create B<new> files in F<t/> go here as do any
516large changes to the testing harness (e.g. when parallel testing was added).
517Changes to existing files in F<t/> aren't worth summarizing, although the bugs
518that they represent may be covered elsewhere.
519
520[ List each test improvement as a =item entry ]
521
522=over 4
523
524=item *
525
526XXX
527
528=back
529
530=head1 Platform Support
531
532XXX Any changes to platform support should be listed in the sections below.
533
534[ Within the sections, list each platform as a =item entry with specific
535changes as paragraphs below it. ]
536
537=head2 New Platforms
538
539XXX List any platforms that this version of perl compiles on, that previous
540versions did not. These will either be enabled by new files in the F<hints/>
541directories, or new subdirectories and F<README> files at the top level of the
542source tree.
543
544=over 4
545
546=item XXX-some-platform
547
548XXX
549
550=back
551
552=head2 Discontinued Platforms
553
554XXX List any platforms that this version of perl no longer compiles on.
555
556=over 4
557
f05550c0 558=item NeXTSTEP/OPENSTEP
7065301c 559
f05550c0
BF
560NeXTSTEP was proprietary OS bundled with NeXT's workstations in the early
561to mid 90's; OPENSTEP was an API specification that provided a NeXTSTEP-like
562environment on a non-NeXTSTEP system. Both are now long dead, so support
563for building Perl on them has been removed.
7065301c
RS
564
565=back
566
567=head2 Platform-Specific Notes
568
569XXX List any changes for specific platforms. This could include configuration
570and compilation changes or changes in portability/compatibility. However,
571changes within modules for platforms should generally be listed in the
572L</Modules and Pragmata> section.
573
574=over 4
575
576=item XXX-some-platform
577
578XXX
579
580=back
581
582=head1 Internal Changes
583
584XXX Changes which affect the interface available to C<XS> code go here. Other
585significant internal changes for future core maintainers should be noted as
586well.
587
7065301c
RS
588=over 4
589
590=item *
591
8dab3ba5 592The deprecated variable C<PL_sv_objcount> has been removed.
7065301c 593
4c28b29c
KW
594=item *
595
596Perl now tries to keep the locale category C<LC_NUMERIC> set to "C"
597except around operations that need it to be set to the program's
598underlying locale. This protects the many XS modules that cannot cope
599with the decimal radix character not being a dot. Prior to this
600release, Perl initialized this category to "C", but a call to
601C<POSIX::setlocale()> would change it. Now such a call will change the
602underlying locale of the C<LC_NUMERIC> category for the program, but the
603locale exposed to XS code will remain "C". There is an API under
604development for those relatively few modules that need to use the
605underlying locale. This API will be nailed down during the course of
606developing v5.21. Send email to L<mailto:perl5-porters@perl.org> for
607guidance.
608
7065301c
RS
609=back
610
611=head1 Selected Bug Fixes
612
613XXX Important bug fixes in the core language are summarized here. Bug fixes in
614files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
615
616[ List each fix as a =item entry ]
617
618=over 4
619
620=item *
621
30536d4a
TC
622index() and rindex() no longer crash when used on strings over 2GB in
623size.
624L<[perl #121562]|https://rt.perl.org/Ticket/Display.html?id=121562>.
7065301c 625
0c2c57a8
DD
626=item *
627
628A small previously intentional memory leak in PERL_SYS_INIT/PERL_SYS_INIT3 on
629Win32 builds was fixed. This might affect embedders who repeatedly create and
630destroy perl engines within the same process.
631
a835cd47
KW
632=item *
633
634C<POSIX::localeconv()> now returns the data for the program's underlying
635locale even when called from outside the scope of S<C<use locale>>.
636
03ceeedf
KW
637=item *
638
639C<POSIX::localeconv()> now works properly on platforms which don't have
640C<LC_NUMERIC> and/or C<LC_MONETARY>, or for which Perl has been compiled
641to disregard either or both of these locale categories. In such
642circumstances, there are now no entries for the corresponding values in
643the hash returned by C<localeconv()>.
644
c1284011
KW
645=item *
646
647C<POSIX::localeconv()> now marks appropriately the values it returns as
648UTF-8 or not. Previously they were always returned as a bytes, even if
649they were supposed to be encoded as UTF-8.
650
375f5f06
KW
651=item *
652
653On Microsoft Windows, within the scope of C<S<use locale>>, the following
654POSIX character classes gave results for many locales that did not
655conform to the POSIX standard:
656C<[[:alnum:]]>,
657C<[[:alpha:]]>,
658C<[[:blank:]]>,
659C<[[:digit:]]>,
660C<[[:graph:]]>,
661C<[[:lower:]]>,
662C<[[:print:]]>,
663C<[[:punct:]]>,
664C<[[:upper:]]>,
665C<[[:word:]]>,
666and
667C<[[:xdigit:]]>.
668These are because the underlying Microsoft implementation does not
669follow the standard. Perl now takes special precautions to correct for
670this.
671
2884baee
MH
672=item *
673
674Many issues have been detected by L<Coverity|http://www.coverity.com/> and
675fixed.
676
7065301c
RS
677=back
678
679=head1 Known Problems
680
681XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
682tests that had to be C<TODO>ed for the release would be noted here. Unfixed
683platform specific bugs also go here.
684
685[ List each fix as a =item entry ]
686
687=over 4
688
689=item *
690
691XXX
692
693=back
694
695=head1 Errata From Previous Releases
696
697=over 4
698
699=item *
700
701XXX Add anything here that we forgot to add, or were mistaken about, in
702the perldelta of a previous release.
703
704=back
705
706=head1 Obituary
707
708XXX If any significant core contributor has died, we've added a short obituary
709here.
710
711=head1 Acknowledgements
24a38d90 712
7065301c 713XXX Generate this with:
52e02e68 714
7065301c 715 perl Porting/acknowledgements.pl v5.21.1..HEAD
f5b73711 716
44691e6f
AB
717=head1 Reporting Bugs
718
e08634c5
SH
719If you find what you think is a bug, you might check the articles recently
720posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 721https://rt.perl.org/ . There may also be information at
7ef8b31d 722http://www.perl.org/ , the Perl Home Page.
44691e6f 723
e08634c5
SH
724If you believe you have an unreported bug, please run the L<perlbug> program
725included with your release. Be sure to trim your bug down to a tiny but
726sufficient test case. Your bug report, along with the output of C<perl -V>,
727will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
728
729If the bug you are reporting has security implications, which make it
e08634c5
SH
730inappropriate to send to a publicly archived mailing list, then please send it
731to perl5-security-report@perl.org. This points to a closed subscription
732unarchived mailing list, which includes all the core committers, who will be
733able to help assess the impact of issues, figure out a resolution, and help
f9001595 734co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
735platforms on which Perl is supported. Please only use this address for
736security issues in the Perl core, not for modules independently distributed on
737CPAN.
44691e6f
AB
738
739=head1 SEE ALSO
740
e08634c5
SH
741The F<Changes> file for an explanation of how to view exhaustive details on
742what changed.
44691e6f
AB
743
744The F<INSTALL> file for how to build Perl.
745
746The F<README> file for general stuff.
747
748The F<Artistic> and F<Copying> files for copyright information.
749
750=cut