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