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