This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: Move MAD notice to "Config" section
[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
09edd811
KW
30=head2 Unicode 7.0 is now supported
31
32For details on what is in this release, see
33L<http://www.unicode.org/versions/Unicode7.0.0/>.
34
7e957246
MH
35=head2 Experimental C Backtrace API
36
37Starting from Perl 5.21.1, on some platforms Perl supports retrieving
38the C level backtrace (similar to what symbolic debuggers like gdb do).
39
40The backtrace returns the stack trace of the C call frames,
41with the symbol names (function names), the object names (like "perl"),
42and if it can, also the source code locations (file:line).
43
44The supported platforms are Linux and OS X (some *BSD might work at
45least partly, but they have not yet been tested).
46
47The feature needs to be enabled with C<Configure -Dusecbacktrace>.
48
49Also included is a C API to retrieve backtraces.
50
51See L<perlhacktips/"C backtrace"> for more information.
52
8373491a
KW
53=head2 C<qr/foo/x> now ignores any Unicode pattern white space
54
55The C</x> regular expression modifier allows the pattern to contain
56white space and comments, both of which are ignored, for improved
57readability. Until now, not all the white space characters that Unicode
58designates for this purpose were handled. The additional ones now
59recognized are
60U+0085 NEXT LINE,
61U+200E LEFT-TO-RIGHT MARK,
62U+200F RIGHT-TO-LEFT MARK,
63U+2028 LINE SEPARATOR,
64and
65U+2029 PARAGRAPH SEPARATOR.
66
d6ded950
KW
67=head2 S<C<use locale>> can restrict which locale categories are affected
68
69It is now possible to pass a parameter to S<C<use locale>> to specify
70a subset of locale categories to be locale-aware, with the remaining
71ones unaffected. See L<perllocale/The "use locale" pragma> for details.
72
7065301c
RS
73=head1 Security
74
75XXX Any security-related notices go here. In particular, any security
76vulnerabilities closed should be noted here rather than in the
77L</Selected Bug Fixes> section.
78
79[ List each security issue as a =head2 entry ]
80
81=head1 Incompatible Changes
82
83XXX For a release on a stable branch, this section aspires to be:
84
85 There are no changes intentionally incompatible with 5.XXX.XXX
86 If any exist, they are bugs, and we request that you submit a
87 report. See L</Reporting Bugs> below.
88
98b7895c
MH
89=head2 C<\N{}> with a sequence of multiple spaces is now a fatal error.
90
91This has been deprecated since v5.18.
92
7357bd17
KW
93=head2 In double-quotish C<\cI<X>>, I<X> must now be a printable ASCII character
94
95In prior releases, failure to do this raised a deprecation warning.
7065301c 96
cd209d9d
KW
97=head2 Splitting the tokens C<(?> and C<(*> in regular expressions is
98now a fatal compilation error.
99
100These had been deprecated since v5.18.
101
8373491a
KW
102=head2 5 additional characters are treated as white space under C</x> in
103regex patterns (unless escaped)
104
105The use of these characters with C</x> outside bracketed character
106classes and when not preceeded by a backslash has raised a deprecation
107warning since v5.18. Now they will be ignored. See L</qrE<sol>fooE<sol>x>
108for the list of the five characters.
109
110=head2 Comment lines within S<C<(?[ ])>> now are ended only by a C<\n>
111
112S<C<(?[ ])>> is an experimental feature, introduced in v5.18. It operates
113as if C</x> is always enabled. But there was a difference, comment
114lines (following a C<#> character) were terminated by anything matching
115C<\R> which includes all vertical whitespace, such as form feeds. For
116consistency, this is now changed to match what terminates comment lines
117outside S<C<(?[ ])>>, namely a C<\n> (even if escaped), which is the
118same as what terminates a heredoc string and formats.
119
b5adc3e5
DIM
120=head2 Omitting % and @ on hash and array names is no longer permitted
121
122Really old Perl let you omit the @ on array names and the % on hash
123names in some spots. This has issued a deprecation warning since Perl
1245.0, and is no longer permitted.
125
2c6ee1a7
KW
126=head2 C<"$!"> text is now in English outside C<"use locale"> scope
127
128Previously, the text, unlike almost everything else, always came out
129based on the current underlying locale of the program. (Also affected
130on some systems is C<"$^E>".) For programs that are unprepared to
131handle locale, this can cause garbage text to be displayed. It's better
132to display text that is translatable via some tool than garbage text
133which is much harder to figure out.
134
5320b60d
KW
135=head2 C<"$!"> text will be returned in UTF-8 when appropriate
136
137The stringification of C<$!> and C<$^E> will have the UTF-8 flag set
138when the text is actually non-ASCII UTF-8. This will enable programs
139that are set up to be locale-aware to properly output messages in the
140user's native language. Code that needs to continue the 5.20 and
141earlier behavior can do the stringification within the scopes of both
142'use bytes' and 'use locale ":messages". No other Perl operations will
143be affected by locale; only C<$!> and C<$^E> stringification. The
144'bytes' pragma causes the UTF-8 flag to not be set, just as in previous
145Perl releases. This resolves [perl #112208].
146
c3383756
DIM
147=head2 Support for C<?PATTERN?> without explicit operator has been removed
148
149Starting regular expressions matching only once directly with the
150question mark delimiter is now a syntax error, so that the question mark
151can be available for use in new operators. Write C<m?PATTERN?> instead,
152explicitly using the C<m> operator: the question mark delimiter still
153invokes match-once behaviour.
154
7065301c
RS
155=head1 Deprecations
156
157XXX Any deprecated features, syntax, modules etc. should be listed here.
158
df758df2
KW
159=head2 Using a NO-BREAK space in a character alias for C<\N{...}> is now
160deprecated
161
162This non-graphic character is essentially indistinguishable from a
163regular space, and so should not be allowed. See
164L<charnames/CUSTOM ALIASES>.
165
412f55bb
KW
166=head2 A literal C<"{"> should now be escaped in a pattern
167
168If you want a literal left curly bracket (also called a left brace) in a
169regular expression pattern, you should now escape it by either
170preceding it with a backslash (C<"\{">) or enclosing it within square
171brackets C<"[{]">, or by using C<\Q>; otherwise a deprecation warning
172will be raised. This was first announced as forthcoming in the v5.16
173release; it will allow future extensions to the language to happen.
174
7065301c
RS
175=head2 Module removals
176
177XXX Remove this section if inapplicable.
178
179The following modules will be removed from the core distribution in a
180future release, and will at that time need to be installed from CPAN.
181Distributions on CPAN which require these modules will need to list them as
182prerequisites.
183
184The core versions of these modules will now issue C<"deprecated">-category
185warnings to alert you to this fact. To silence these deprecation warnings,
186install the modules in question from CPAN.
187
188Note that these are (with rare exceptions) fine modules that you are encouraged
189to continue to use. Their disinclusion from core primarily hinges on their
190necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
191not usually on concerns over their design.
192
193=over
194
195=item XXX
196
197XXX Note that deprecated modules should be listed here even if they are listed
198as an updated module in the L</Modules and Pragmata> section.
199
200=back
201
202[ List each other deprecation as a =head2 entry ]
203
204=head1 Performance Enhancements
205
206XXX Changes which enhance performance without changing behaviour go here.
207There may well be none in a stable release.
208
209[ List each enhancement as a =item entry ]
210
211=over 4
212
213=item *
214
8a16341a
MH
215Many internal functions have been refactored to improve performance and reduce
216their memory footprints.
d133a3dd
MH
217
218L<[perl #121436]|https://rt.perl.org/Ticket/Display.html?id=121436>
8a16341a
MH
219L<[perl #121906]|https://rt.perl.org/Ticket/Display.html?id=121906>
220L<[perl #121969]|https://rt.perl.org/Ticket/Display.html?id=121969>
7065301c 221
6bb82be0
MH
222=item *
223
224C<-T> and C<-B> filetests will return sooner when an empty file is detected.
225
226L<perl #121489|https://rt.perl.org/Ticket/Display.html?id=121489>
227
7065301c
RS
228=back
229
7ef8b31d 230=head1 Modules and Pragmata
f6f3144e 231
7065301c
RS
232XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
233go here. If Module::CoreList is updated, generate an initial draft of the
234following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
235for important changes should then be added by hand. In an ideal world,
236dual-life modules would have a F<Changes> file that could be cribbed.
237
238[ Within each section, list entries as a =item entry ]
239
240=head2 New Modules and Pragmata
24a38d90
RS
241
242=over 4
243
244=item *
245
7065301c
RS
246XXX
247
248=back
249
250=head2 Updated Modules and Pragmata
251
252=over 4
24a38d90
RS
253
254=item *
255
56cdf413
TC
256L<Carp> has been upgraded from version 1.3301 to 1.34.
257
258Carp::Heavy now ignores version mismatches with Carp if Carp is newer
259than 1.12, since Carp::Heavy's guts were merged into Carp at that
260point.
261L<[perl #121574]|https://rt.perl.org/Ticket/Display.html?id=121574>
262
263=item *
264
f9dc9a54
TC
265L<Data::Dumper> has been upgraded from version 2.151 to 2.152.
266
267Changes to resolve Coverity issues.
268
269XS dumps incorrectly stored the name of code references stored in a
270GLOB.
271L<[perl #122070]|https://rt.perl.org/Ticket/Display.html?id=122070>
272
273=item *
274
28e02325
SH
275L<Encode> has been upgraded from version 2.60_01 to 2.62.
276
277B<piconv> now has better error handling when the encoding name is nonexistent,
278and a build breakage when upgrading L<Encode> in perl-5.8.2 and earlier has
279been fixed.
280
281=item *
282
cb526893
TC
283L<Hash::Util> has been upgraded from version 0.16 to 0.17.
284
285Minor bug fixes and documentation fixes to Hash::Util::hash_stats()
286
287=item *
288
5abafd4c
SH
289The libnet collection of modules has been upgraded from version 1.25 to 1.27.
290
291There are only whitespace changes to the installed files.
292
293=item *
294
7a945bf5
SH
295The Locale-Codes collection of modules has been upgraded from vesion 3.30 to 3.31.
296
297Fixed a bug in the scripts used to extract data from spreadsheets that
298prevented the SHP currency code from being found.
299L<[cpan #94229]|https://rt.cpan.org/Ticket/Display.html?id=94229>
300
301=item *
302
4ed8f5ed
TC
303L<Math::BigInt> has been upgraded from version 1.9993 to 1.9994.
304
305Synchronize POD changes from the CPAN release.
306
ee15bb65
TC
307C<< Math::BigFloat->blog(x) >> would sometimes return blog(2*x) when
308the accuracy was greater than 70 digits.
309
310The result of C<< Math::BigFloat->bdiv() >> in list context now
311satisfies C<< x = quotient * divisor + remainder >>.
312
4ed8f5ed
TC
313=item *
314
234105dd
TC
315L<Math::BigRat> has been upgraded from version 0.2606 to 0.2607.
316
317Synchronize POD changes from the CPAN release.
318
319=item *
320
f97d984b 321L<Module::Metadata> has been upgraded from version 1.000022 to 1.000024.
b9beed70
SH
322
323Support installations on older perls with an L<ExtUtils::MakeMaker> earlier
324than 6.63_03
325
326=item *
327
f9dc9a54
TC
328L<OS2::Process> has been upgraded from version 1.09 to 1.10.
329
330=item *
331
c13fd1a2
TC
332L<perl5db.pl> has been upgraded from version 1.44 to 1.45.
333
334fork() in the debugger under C<tmux> will now create a new window for
891822fa
TC
335the forked process. L<[perl
336#121333]|https://rt.perl.org/Ticket/Display.html?id=121333>
337
338The debugger now saves the current working directory on startup and
339restores it when you restart your program with C<R> or <rerun>. L<[perl
340#121509]|https://rt.perl.org/Ticket/Display.html?id=121509>
24a38d90 341
cb526893
TC
342=item *
343
f9dc9a54
TC
344L<PerlIO::encoding> has been upgraded from version 0.18 to 0.19.
345
346No changes in behaviour.
347
348=item *
349
350L<PerlIO::mmap> has been upgraded from version 0.012 to 0.013.
351
352No changes in behaviour.
353
354=item *
355
356L<PerlIO::scalar> has been upgraded from version 0.18 to 0.19.
357
358No changes in behaviour.
359
360=item *
361
f8187d97
SH
362L<Unicode::Collate> has been upgraded from version 1.04 to 1.07.
363
364Version 0.67's improved discontiguous contractions is invalidated by default
365and is supported as a parameter 'long_contraction'.
366
95f3e8d2
SH
367=item *
368
369L<Unicode::Normalize> has been upgraded from version 1.17 to 1.18.
370
371The XSUB implementation has been removed in favour of pure Perl.
372
3eaa3d14
YO
373=item *
374
cb526893
TC
375A mismatch between the documentation and the code in utf8::downgrade()
376was fixed in favour of the documentation. The optional second argument
377is now correctly treated as a perl boolean (true/false semantics) and
378not as an integer.
3eaa3d14 379
238894db 380=back
24a38d90 381
92fa985e 382=head2 Removed Modules and Pragmata
24a38d90 383
238894db 384=over 4
24a38d90
RS
385
386=item *
387
7065301c
RS
388XXX
389
390=back
391
392=head1 Documentation
393
394XXX Changes to files in F<pod/> go here. Consider grouping entries by
395file and be sure to link to the appropriate page, e.g. L<perlfunc>.
396
397=head2 New Documentation
398
399XXX Changes which create B<new> files in F<pod/> go here.
400
401=head3 L<XXX>
402
403XXX Description of the purpose of the new file here
404
405=head2 Changes to Existing Documentation
406
407XXX Changes which significantly change existing files in F<pod/> go here.
408However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
409section.
410
9c0f2733 411=head3 L<perlfunc>
7065301c
RS
412
413=over 4
414
415=item *
416
9c0f2733
MH
417C<-l> now notes that it will return false if symlinks aren't supported by the
418file system.
419
420L<[perl #121523]|https://rt.perl.org/Ticket/Display.html?id=121523>
7065301c 421
902c1f75
MH
422=item *
423
424Note that C<exec LIST> and C<system LIST> may fall back to the shell on
425Win32. Only C<exec PROGRAM LIST> and C<system PROGRAM LIST> indirect object
426syntax will reliably avoid using the shell.
427
428This has also been noted in L<perlport>.
429
430L<[perl #122046]|https://rt.perl.org/Ticket/Display.html?id=122046>
431
7065301c
RS
432=back
433
58f25ac1
MH
434=head3 L<perlapi>
435
436=over 4
437
438=item *
439
2402c6dd
MH
440Note that C<SvSetSV> doesn't do set magic.
441
442=item *
443
58f25ac1
MH
444C<sv_usepvn_flags> - Fix documentation to mention the use of C<NewX> instead of
445C<malloc>.
446
447L<[perl #121869]|https://rt.perl.org/Ticket/Display.html?id=121869>
448
4c6609d3
MH
449=item *
450
451Clarify where C<NUL> may be embedded or is required to terminate a string.
452
5bafdaa4
MH
453=item *
454
455Previously missing documentation due to formatting errors are now included.
456
457=item *
458
459Entries are now organized into groups rather than by file where they are found.
460
461=item *
462
463Alphabetical sorting of entries is now handled by the POD generator to make
464entries easier to find when scanning.
465
58f25ac1
MH
466=back
467
12042f24
MH
468=head3 L<perlhacktips>
469
470=over 4
471
472=item *
473
474Updated documentation for the C<test.valgrind> C<make> target.
475
476L<[perl #121431]|https://rt.perl.org/Ticket/Display.html?id=121431>
477
478=back
479
2705070b
MH
480=head3 L<perlre>
481
482=over 4
483
484=item *
485
486The C</x> modifier has been clarified to note that comments cannot be continued
487onto the next line by escaping them.
488
489=back
490
b10906fb
MH
491=head3 L<Unicode::UCD>
492
493=over 4
494
495=item *
496
497The documentation includes many clarifications and fixes.
498
499=back
500
7065301c
RS
501=head1 Diagnostics
502
503The following additions or changes have been made to diagnostic output,
504including warnings and fatal error messages. For the complete list of
505diagnostic messages, see L<perldiag>.
506
507XXX New or changed warnings emitted by the core's C<C> code go here. Also
508include any changes in L<perldiag> that reconcile it to the C<C> code.
509
510=head2 New Diagnostics
511
512XXX Newly added diagnostic messages go under here, separated into New Errors
513and New Warnings
514
515=head3 New Errors
516
517=over 4
24a38d90
RS
518
519=item *
520
28462159
MH
521L<In '(?...)', the '(' and '?' must be adjacent in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"In '(?...)', the '(' and '?' must be adjacent in regex; marked by <-- HERE in m/%s/">
522
523(F) The two-character sequence C<"(?"> in
524this context in a regular expression pattern should be an
525indivisible token, with nothing intervening between the C<"(">
526and the C<"?">, but you separated them.
527
528=item *
529
530L<In '(*VERB...)', the '(' and '*' must be adjacent in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"In '(*VERB...)', the '(' and '*' must be adjacent in regex; marked by <-- HERE in m/%s/">
531
532(F) The two-character sequence C<"(*"> in
533this context in a regular expression pattern should be an
534indivisible token, with nothing intervening between the C<"(">
535and the C<"*">, but you separated them.
536
537=item *
538
539L<charnames alias definitions may not contain a sequence of multiple spaces|perldiag/"charnames alias definitions may not contain a sequence of multiple spaces">
540
541(F) You defined a character name which had multiple space
542 characters in a row. Change them to single spaces. Usually these
543 names are defined in the C<:alias> import argument to C<use charnames>, but
544 they could be defined by a translator installed into C<$^H{charnames}>.
545 See L<charnames/CUSTOM ALIASES>.
546
547=item *
548
549L<charnames alias definitions may not contain trailing white-space|perldiag/"charnames alias definitions may not contain trailing white-space">
550
551(F) You defined a character name which ended in a space
552character. Remove the trailing space(s). Usually these names are
553defined in the C<:alias> import argument to C<use charnames>, but they
554could be defined by a translator installed into C<$^H{charnames}>.
555See L<charnames/CUSTOM ALIASES>.
556
557=item *
558
559L<Can't use a hash as a reference|perldiag/"Can't use a hash as a reference">
560
561(F) You tried to use a hash as a reference, as in
562C<< %foo->{"bar"} >> or C<< %$ref->{"hello"} >>. Versions of perl <= 5.6.1
563used to allow this syntax, but shouldn't have.
564
565=item *
566
567L<Can't use an array as a reference|perldiag/"Can't use an array as a reference">
568
569(F) You tried to use an array as a reference, as in
570C<< @foo->[23] >> or C<< @$ref->[99] >>. Versions of perl <= 5.6.1 used to
571allow this syntax, but shouldn't have.
572
573=item *
574
575L<Can't use 'defined(@array)' (Maybe you should just omit the defined()?)|perldiag/"Can't use 'defined(@array)' (Maybe you should just omit the defined()?)">
576
577(F) defined() is not useful on arrays because it
578checks for an undefined I<scalar> value. If you want to see if the
579array is empty, just use C<if (@array) { # not empty }> for example.
580
581=item *
582
583L<Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)|perldiag/"Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)">
584
585(F) C<defined()> is not usually right on hashes.
586
587Although C<defined %hash> is false on a plain not-yet-used hash, it
588becomes true in several non-obvious circumstances, including iterators,
589weak references, stash names, even remaining true after C<undef %hash>.
590These things make C<defined %hash> fairly useless in practice, so it now
591generates a fatal error.
592
593If a check for non-empty is what you wanted then just put it in boolean
594context (see L<perldata/Scalar values>):
595
596 if (%hash) {
597 # not empty
598 }
599
600If you had C<defined %Foo::Bar::QUUX> to check whether such a package
601variable exists then that's never really been reliable, and isn't
602a good way to enquire about the features of a package, or whether
603it's loaded, etc.
604
605=item *
606
607L<Illegal suidscript|perldiag/"Illegal suidscript">
608
609(F) The script run under suidperl was somehow illegal.
7065301c
RS
610
611=back
612
613=head3 New Warnings
614
615=over 4
24a38d90
RS
616
617=item *
618
28462159
MH
619L<Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%s/">
620
621(D deprecated, regexp) You used a literal C<"{"> character in a regular
622expression pattern. You should change to use C<"\{"> instead, because a future
623version of Perl (tentatively v5.26) will consider this to be a syntax error. If
624the pattern delimiters are also braces, any matching right brace
625(C<"}">) should also be escaped to avoid confusing the parser, for
626example,
627
628 qr{abc\{def\}ghi}
629
630=item *
631
632L<NO-BREAK SPACE in a charnames alias definition is deprecated|perldiag/"NO-BREAK SPACE in a charnames alias definition is deprecated">
633
634(D deprecated) You defined a character name which contained a no-break
635space character. Change it to a regular space. Usually these names are
636defined in the C<:alias> import argument to C<use charnames>, but they
637could be defined by a translator installed into C<$^H{charnames}>. See
638L<charnames/CUSTOM ALIASES>.
639
640=item *
641
642L<PerlIO layer ':win32' is experimental|perldiag/"PerlIO layer ':win32' is experimental">
643
644(S experimental::win32_perlio) The C<:win32> PerlIO layer is
645experimental. If you want to take the risk of using this layer,
646simply disable this warning:
647
648 no warnings "experimental::win32_perlio";
649
650=item *
651
652L<Negative repeat count does nothing|perldiag/"Negative repeat count does nothing">
653
654(W numeric) You tried to execute the
655L<C<x>|perlop/Multiplicative Operators> repetition operator fewer than 0
656times, which doesn't make sense.
657
658=item *
659
660L<localtime(%f) failed|perldiag/"localtime(%f) failed">
661
662(W overflow) You called C<localtime> with a number that it could not handle:
663too large, too small, or NaN. The returned value is C<undef>.
664
665=item *
666
667L<gmtime(%f) failed|perldiag/"gmtime(%f) failed">
668
669(W overflow) You called C<gmtime> with a number that it could not handle:
670too large, too small, or NaN. The returned value is C<undef>.
671
672=item *
673
097675bf
TC
674L<PerlIO layer ':win32' is experimental|perldiag/"PerlIO layer ':win32' is experimental">:
675
676(S experimental::win32_perlio) The C<:win32> PerlIO layer is
677experimental. If you want to take the risk of using this layer,
678simply disable this warning:
679
680 no warnings "experimental::win32_perlio";
24a38d90 681
28462159 682=item *
b3211734
KW
683
684L<Negative repeat count does nothing|perldiag/Negative repeat count does nothing>
685
686(W numeric) This warns when the repeat count of the
687L<C<x>|perlop/Multiplicative Operators> repetition operator is
688negative.
689
690This warning may be changed or removed if it turn out that it was
691unwise to have added it.
692
238894db 693=back
24a38d90 694
7065301c 695=head2 Changes to Existing Diagnostics
24a38d90 696
7065301c 697XXX Changes (i.e. rewording) of diagnostic messages go here
24a38d90 698
7065301c
RS
699=over 4
700
701=item *
702
b08d439a
MH
703L<Variable length lookbehind not implemented in regex mE<sol>%sE<sol>|perldiag/"Variable length lookbehind not implemented in regex m/%s/">
704
705Information about Unicode behaviour has been added.
706
707=item *
708
747b6130
MH
709<> should be quotes
710
711This warning has been changed to
712L<< <> at require-statement should be quotes|perldiag/"<> at require-statement should be quotes" >>
713to make the issue more identifiable.
714
715=item *
716
723edb96
TC
717L<Unsuccessful %s on filename containing newline|perldiag/"Unsuccessful %s on filename containing newline">
718
719This warning is now only produced when the newline is at the end of
720the filename.
7065301c
RS
721
722=back
723
724=head1 Utility Changes
725
726XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
eb561242 727Most of these are built within the directory F<utils>.
7065301c
RS
728
729[ List utility changes as a =head2 entry for each utility and =item
730entries for each change
731Use L<XXX> with program names to get proper documentation linking. ]
732
eb561242 733=head2 F<x2p/>
7065301c
RS
734
735=over 4
736
737=item *
24a38d90 738
eb561242
MH
739The F<x2p/> directory has been removed from the Perl core.
740
741This removes find2perl, s2p and a2p. They have all been released to CPAN as
742separate distributions (App::find2perl, App::s2p, App::a2p).
7065301c
RS
743
744=back
745
746=head1 Configuration and Compilation
747
748XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
749go here. Any other changes to the Perl build process should be listed here.
750However, any platform-specific changes should be listed in the
751L</Platform Support> section, instead.
752
753[ List changes as a =item entry ].
754
755=over 4
756
757=item *
758
12042f24
MH
759C<make test.valgrind> now supports parallel testing.
760
761For example:
762
763 TEST_JOBS=9 make test.valgrind
764
765See L<perlhacktips/valgrind> for more information.
766
767L<[perl #121431]|https://rt.perl.org/Ticket/Display.html?id=121431>
7065301c 768
b2e61987
KW
769=item *
770
771The MAD (Misc Attribute Decoration) build option has been removed
772
773This was an unmaintained attempt at preserving
774the Perl parse tree more faithfully so that automatic conversion of
775Perl 5 to Perl 6 would have been easier.
776
777This build-time configuration option had been unmaintained for years,
778and had probably seriously diverged on both Perl 5 and Perl 6 sides.
779
7065301c
RS
780=back
781
782=head1 Testing
783
784XXX Any significant changes to the testing of a freshly built perl should be
785listed here. Changes which create B<new> files in F<t/> go here as do any
786large changes to the testing harness (e.g. when parallel testing was added).
787Changes to existing files in F<t/> aren't worth summarizing, although the bugs
788that they represent may be covered elsewhere.
789
790[ List each test improvement as a =item entry ]
791
792=over 4
793
794=item *
795
796XXX
797
798=back
799
800=head1 Platform Support
801
802XXX Any changes to platform support should be listed in the sections below.
803
804[ Within the sections, list each platform as a =item entry with specific
805changes as paragraphs below it. ]
806
807=head2 New Platforms
808
809XXX List any platforms that this version of perl compiles on, that previous
810versions did not. These will either be enabled by new files in the F<hints/>
811directories, or new subdirectories and F<README> files at the top level of the
812source tree.
813
814=over 4
815
816=item XXX-some-platform
817
818XXX
819
820=back
821
822=head2 Discontinued Platforms
823
824XXX List any platforms that this version of perl no longer compiles on.
825
826=over 4
827
f05550c0 828=item NeXTSTEP/OPENSTEP
7065301c 829
f05550c0
BF
830NeXTSTEP was proprietary OS bundled with NeXT's workstations in the early
831to mid 90's; OPENSTEP was an API specification that provided a NeXTSTEP-like
832environment on a non-NeXTSTEP system. Both are now long dead, so support
833for building Perl on them has been removed.
7065301c
RS
834
835=back
836
837=head2 Platform-Specific Notes
838
839XXX List any changes for specific platforms. This could include configuration
840and compilation changes or changes in portability/compatibility. However,
841changes within modules for platforms should generally be listed in the
842L</Modules and Pragmata> section.
843
844=over 4
845
846=item XXX-some-platform
847
848XXX
849
7d0ccdba
MH
850=item OpenBSD
851
852On OpenBSD, Perl will now default to using the system C<malloc> due to the
853security features it provides. Perl's own malloc wrapper has been in use
854since v5.14 due to performance reasons, but the OpenBSD project believes
855the tradeoff is worth it and would prefer that users who need the speed
856specifically ask for it.
857
858L<[perl #122000]|https://rt.perl.org/Ticket/Display.html?id=122000>.
859
7065301c
RS
860=back
861
862=head1 Internal Changes
863
864XXX Changes which affect the interface available to C<XS> code go here. Other
865significant internal changes for future core maintainers should be noted as
866well.
867
7065301c
RS
868=over 4
869
870=item *
871
8dab3ba5 872The deprecated variable C<PL_sv_objcount> has been removed.
7065301c 873
4c28b29c
KW
874=item *
875
876Perl now tries to keep the locale category C<LC_NUMERIC> set to "C"
877except around operations that need it to be set to the program's
878underlying locale. This protects the many XS modules that cannot cope
879with the decimal radix character not being a dot. Prior to this
880release, Perl initialized this category to "C", but a call to
881C<POSIX::setlocale()> would change it. Now such a call will change the
882underlying locale of the C<LC_NUMERIC> category for the program, but the
883locale exposed to XS code will remain "C". There is an API under
884development for those relatively few modules that need to use the
885underlying locale. This API will be nailed down during the course of
886developing v5.21. Send email to L<mailto:perl5-porters@perl.org> for
887guidance.
888
c9fcb674
KW
889=item *
890
891A new macro L<C<isUTF8_CHAR>|perlapi/isUTF8_CHAR> has been written which
892efficiently determines if the string given by its parameters begins
893with a well-formed UTF-8 encoded character.
894
7065301c
RS
895=back
896
897=head1 Selected Bug Fixes
898
899XXX Important bug fixes in the core language are summarized here. Bug fixes in
900files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
901
902[ List each fix as a =item entry ]
903
904=over 4
905
906=item *
907
30536d4a
TC
908index() and rindex() no longer crash when used on strings over 2GB in
909size.
910L<[perl #121562]|https://rt.perl.org/Ticket/Display.html?id=121562>.
7065301c 911
0c2c57a8
DD
912=item *
913
914A small previously intentional memory leak in PERL_SYS_INIT/PERL_SYS_INIT3 on
915Win32 builds was fixed. This might affect embedders who repeatedly create and
916destroy perl engines within the same process.
917
a835cd47
KW
918=item *
919
920C<POSIX::localeconv()> now returns the data for the program's underlying
921locale even when called from outside the scope of S<C<use locale>>.
922
03ceeedf
KW
923=item *
924
925C<POSIX::localeconv()> now works properly on platforms which don't have
926C<LC_NUMERIC> and/or C<LC_MONETARY>, or for which Perl has been compiled
927to disregard either or both of these locale categories. In such
928circumstances, there are now no entries for the corresponding values in
929the hash returned by C<localeconv()>.
930
c1284011
KW
931=item *
932
933C<POSIX::localeconv()> now marks appropriately the values it returns as
934UTF-8 or not. Previously they were always returned as a bytes, even if
935they were supposed to be encoded as UTF-8.
936
375f5f06
KW
937=item *
938
939On Microsoft Windows, within the scope of C<S<use locale>>, the following
940POSIX character classes gave results for many locales that did not
941conform to the POSIX standard:
942C<[[:alnum:]]>,
943C<[[:alpha:]]>,
944C<[[:blank:]]>,
945C<[[:digit:]]>,
946C<[[:graph:]]>,
947C<[[:lower:]]>,
948C<[[:print:]]>,
949C<[[:punct:]]>,
950C<[[:upper:]]>,
951C<[[:word:]]>,
952and
953C<[[:xdigit:]]>.
954These are because the underlying Microsoft implementation does not
955follow the standard. Perl now takes special precautions to correct for
956this.
957
2884baee
MH
958=item *
959
960Many issues have been detected by L<Coverity|http://www.coverity.com/> and
961fixed.
962
5af51eb4
BF
963=item *
964
965system() and friends should now work properly on more Android builds.
966
967Due to an oversight, the value specified through -Dtargetsh to Configure
968would end up being ignored by some of the build process. This caused perls
969cross-compiled for Android to end up with defective versions of system(),
970exec() and backticks: the commands would end up looking for C</bin/sh>
971instead of C</system/bin/sh>, and so would fail for the vast majority
972of devices, leaving C<$!> as C<ENOENT>.
973
412f55bb
KW
974=item *
975
976C<qr(...\(...\)...)>,
977C<qr[...\[...\]...]>,
978and
979C<qr{...\{...\}...}>
980now work. Previously it was impossible to escape these three
981left-characters with a backslash within a regular expression pattern
982where otherwise they would be considered metacharacters, and the pattern
983opening delimiter was the character, and the closing delimiter was its
984mirror character.
985
7065301c
RS
986=back
987
988=head1 Known Problems
989
990XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
991tests that had to be C<TODO>ed for the release would be noted here. Unfixed
992platform specific bugs also go here.
993
994[ List each fix as a =item entry ]
995
996=over 4
997
998=item *
999
1000XXX
1001
1002=back
1003
1004=head1 Errata From Previous Releases
1005
1006=over 4
1007
1008=item *
1009
1010XXX Add anything here that we forgot to add, or were mistaken about, in
1011the perldelta of a previous release.
1012
1013=back
1014
1015=head1 Obituary
1016
1017XXX If any significant core contributor has died, we've added a short obituary
1018here.
1019
1020=head1 Acknowledgements
24a38d90 1021
7065301c 1022XXX Generate this with:
52e02e68 1023
7065301c 1024 perl Porting/acknowledgements.pl v5.21.1..HEAD
f5b73711 1025
44691e6f
AB
1026=head1 Reporting Bugs
1027
e08634c5
SH
1028If you find what you think is a bug, you might check the articles recently
1029posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 1030https://rt.perl.org/ . There may also be information at
7ef8b31d 1031http://www.perl.org/ , the Perl Home Page.
44691e6f 1032
e08634c5
SH
1033If you believe you have an unreported bug, please run the L<perlbug> program
1034included with your release. Be sure to trim your bug down to a tiny but
1035sufficient test case. Your bug report, along with the output of C<perl -V>,
1036will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
1037
1038If the bug you are reporting has security implications, which make it
e08634c5
SH
1039inappropriate to send to a publicly archived mailing list, then please send it
1040to perl5-security-report@perl.org. This points to a closed subscription
1041unarchived mailing list, which includes all the core committers, who will be
1042able to help assess the impact of issues, figure out a resolution, and help
f9001595 1043co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
1044platforms on which Perl is supported. Please only use this address for
1045security issues in the Perl core, not for modules independently distributed on
1046CPAN.
44691e6f
AB
1047
1048=head1 SEE ALSO
1049
e08634c5
SH
1050The F<Changes> file for an explanation of how to view exhaustive details on
1051what changed.
44691e6f
AB
1052
1053The F<INSTALL> file for how to build Perl.
1054
1055The F<README> file for general stuff.
1056
1057The F<Artistic> and F<Copying> files for copyright information.
1058
1059=cut