Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
e6a2e5ca SH |
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.27.6 | |
89853d76 | 9 | |
b5cbfe35 | 10 | =head1 DESCRIPTION |
89853d76 | 11 | |
e6a2e5ca | 12 | This document describes differences between the 5.27.5 release and the 5.27.6 |
b5cbfe35 | 13 | release. |
89853d76 | 14 | |
e6a2e5ca SH |
15 | If you are upgrading from an earlier release such as 5.27.4, first read |
16 | L<perl5275delta>, which describes differences between 5.27.4 and 5.27.5. | |
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 | ||
30 | =head1 Security | |
31 | ||
32 | XXX Any security-related notices go here. In particular, any security | |
33 | vulnerabilities closed should be noted here rather than in the | |
34 | L</Selected Bug Fixes> section. | |
35 | ||
36 | [ List each security issue as a =head2 entry ] | |
37 | ||
38 | =head1 Incompatible Changes | |
39 | ||
40 | XXX For a release on a stable branch, this section aspires to be: | |
41 | ||
42 | There are no changes intentionally incompatible with 5.XXX.XXX | |
43 | If any exist, they are bugs, and we request that you submit a | |
44 | report. See L</Reporting Bugs> below. | |
45 | ||
46 | [ List each incompatible change as a =head2 entry ] | |
47 | ||
48 | =head1 Deprecations | |
49 | ||
50 | XXX Any deprecated features, syntax, modules etc. should be listed here. | |
51 | ||
52 | =head2 Module removals | |
53 | ||
54 | XXX Remove this section if inapplicable. | |
55 | ||
56 | The following modules will be removed from the core distribution in a | |
57 | future release, and will at that time need to be installed from CPAN. | |
58 | Distributions on CPAN which require these modules will need to list them as | |
59 | prerequisites. | |
60 | ||
61 | The core versions of these modules will now issue C<"deprecated">-category | |
62 | warnings to alert you to this fact. To silence these deprecation warnings, | |
63 | install the modules in question from CPAN. | |
64 | ||
65 | Note that these are (with rare exceptions) fine modules that you are encouraged | |
66 | to continue to use. Their disinclusion from core primarily hinges on their | |
67 | necessity to bootstrapping a fully functional, CPAN-capable Perl installation, | |
68 | not usually on concerns over their design. | |
69 | ||
70 | =over | |
71 | ||
72 | =item XXX | |
73 | ||
74 | XXX Note that deprecated modules should be listed here even if they are listed | |
75 | as an updated module in the L</Modules and Pragmata> section. | |
76 | ||
77 | =back | |
78 | ||
79 | [ List each other deprecation as a =head2 entry ] | |
a8ba758d | 80 | |
cf663f87 AC |
81 | =head1 Performance Enhancements |
82 | ||
e6a2e5ca SH |
83 | XXX Changes which enhance performance without changing behaviour go here. |
84 | There may well be none in a stable release. | |
85 | ||
86 | [ List each enhancement as an =item entry ] | |
87 | ||
1b510166 S |
88 | =over 4 |
89 | ||
90 | =item * | |
91 | ||
8ed1839e DM |
92 | Many string concatenation expressions are now considerably faster, due |
93 | to the introduction internally of a C<multiconcat> opcode which combines | |
94 | multiple concatenations, and optionally a C<=> or C<.=>, into a single | |
95 | action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this | |
96 | whole expression is now handled as a single op: | |
97 | ||
98 | $s .= "a=$a b=$b\n" | |
99 | ||
100 | As a special case, if the LHS of an assign is a lexical variable or | |
101 | C<my $s>, the op itself handles retrieving the lexical variable, which | |
102 | is faster. | |
103 | ||
104 | In general, the more the expression includes a mix of constant strings and | |
105 | variable expressions, the longer the expression, and the more it mixes | |
106 | together non-utf8 and utf8 strings, the more marked the performance | |
107 | improvement. For example on a C<x86_64> system, this code has been | |
108 | benchmarked running four times faster: | |
109 | ||
110 | my $s; | |
111 | my $a = "ab\x{100}cde"; | |
112 | my $b = "fghij"; | |
113 | my $c = "\x{101}klmn"; | |
114 | ||
115 | for my $i (1..10_000_000) { | |
116 | $s = "\x{100}wxyz"; | |
117 | $s .= "foo=$a bar=$b baz=$c"; | |
118 | } | |
119 | ||
120 | In addition, C<sprintf> expressions which have a constant format | |
121 | containing only C<%s> and C<%%> format elements, and which have a fixed | |
122 | number of arguments, are now also optimised into a C<multiconcat> op. | |
d912eab8 | 123 | |
c83a3d01 | 124 | =back |
d912eab8 | 125 | |
c83a3d01 | 126 | =head1 Modules and Pragmata |
af94b3ac | 127 | |
e6a2e5ca SH |
128 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
129 | go here. If Module::CoreList is updated, generate an initial draft of the | |
130 | following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary | |
131 | for important changes should then be added by hand. In an ideal world, | |
132 | dual-life modules would have a F<Changes> file that could be cribbed. | |
133 | ||
134 | The list of new and updated modules is modified automatically as part of | |
135 | preparing a Perl release, so the only reason to manually add entries here is if | |
136 | you're summarising the important changes in the module update. (Also, if the | |
137 | manually-added details don't match the automatically-generated ones, the | |
138 | release manager will have to investigate the situation carefully.) | |
139 | ||
140 | [ Within each section, list entries as an =item entry ] | |
141 | ||
142 | =head2 New Modules and Pragmata | |
a8ba758d JSA |
143 | |
144 | =over 4 | |
ba2fe89f AC |
145 | |
146 | =item * | |
147 | ||
e6a2e5ca | 148 | XXX |
64b9a139 | 149 | |
e6a2e5ca | 150 | =back |
64b9a139 | 151 | |
e6a2e5ca SH |
152 | =head2 Updated Modules and Pragmata |
153 | ||
154 | =over 4 | |
64b9a139 SH |
155 | |
156 | =item * | |
157 | ||
b5af74de FC |
158 | L<Carp> has been upgraded from version 1.43 to 1.44. |
159 | ||
160 | If a package on the call stack contains a constant named C<ISA>, Carp no | |
161 | longer throws a "Not a GLOB reference" error. | |
64b9a139 | 162 | |
e6a2e5ca | 163 | =back |
64b9a139 | 164 | |
e6a2e5ca SH |
165 | =head2 Removed Modules and Pragmata |
166 | ||
167 | =over 4 | |
64b9a139 SH |
168 | |
169 | =item * | |
170 | ||
e6a2e5ca | 171 | XXX |
64b9a139 | 172 | |
e6a2e5ca | 173 | =back |
64b9a139 | 174 | |
e6a2e5ca | 175 | =head1 Documentation |
64b9a139 | 176 | |
e6a2e5ca SH |
177 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
178 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
64b9a139 | 179 | |
e6a2e5ca | 180 | =head2 New Documentation |
64b9a139 | 181 | |
e6a2e5ca | 182 | XXX Changes which create B<new> files in F<pod/> go here. |
64b9a139 | 183 | |
e6a2e5ca | 184 | =head3 L<XXX> |
64b9a139 | 185 | |
e6a2e5ca | 186 | XXX Description of the purpose of the new file here |
64b9a139 | 187 | |
e6a2e5ca | 188 | =head2 Changes to Existing Documentation |
64b9a139 | 189 | |
e6a2e5ca SH |
190 | We have attempted to update the documentation to reflect the changes |
191 | listed in this document. If you find any we have missed, send email | |
192 | to L<perlbug@perl.org|mailto:perlbug@perl.org>. | |
64b9a139 | 193 | |
e6a2e5ca SH |
194 | XXX Changes which significantly change existing files in F<pod/> go here. |
195 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
196 | section. | |
64b9a139 | 197 | |
e6a2e5ca SH |
198 | Additionally, the following selected changes have been made: |
199 | ||
754dd754 KW |
200 | =head3 L<perldiag/Variable length lookbehind not implemented in regex m/%s/> |
201 | ||
202 | This now gives more ideas as to workarounds to the issue that was | |
203 | introduced in Perl 5.18 (but not documented explicitly in its perldelta) | |
204 | for the fact that some Unicode C</i> rules cause a few sequences such as | |
205 | ||
206 | (?<!st) | |
207 | ||
208 | to be considered variable length, and hence disallowed. | |
64b9a139 | 209 | |
e6a2e5ca | 210 | =over 4 |
64b9a139 SH |
211 | |
212 | =item * | |
213 | ||
e6a2e5ca | 214 | XXX Description of the change here |
64b9a139 | 215 | |
e6a2e5ca | 216 | =back |
64b9a139 | 217 | |
e6a2e5ca | 218 | =head1 Diagnostics |
64b9a139 | 219 | |
e6a2e5ca SH |
220 | The following additions or changes have been made to diagnostic output, |
221 | including warnings and fatal error messages. For the complete list of | |
222 | diagnostic messages, see L<perldiag>. | |
64b9a139 | 223 | |
e6a2e5ca SH |
224 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
225 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
64b9a139 | 226 | |
e6a2e5ca | 227 | =head2 New Diagnostics |
64b9a139 | 228 | |
e6a2e5ca SH |
229 | XXX Newly added diagnostic messages go under here, separated into New Errors |
230 | and New Warnings | |
64b9a139 | 231 | |
e6a2e5ca | 232 | =head3 New Errors |
64b9a139 | 233 | |
e6a2e5ca | 234 | =over 4 |
64b9a139 SH |
235 | |
236 | =item * | |
237 | ||
e6a2e5ca | 238 | XXX L<message|perldiag/"message"> |
64b9a139 | 239 | |
e6a2e5ca SH |
240 | =back |
241 | ||
242 | =head3 New Warnings | |
64b9a139 | 243 | |
e6a2e5ca | 244 | =over 4 |
64b9a139 SH |
245 | |
246 | =item * | |
247 | ||
e6a2e5ca | 248 | XXX L<message|perldiag/"message"> |
64b9a139 | 249 | |
e6a2e5ca SH |
250 | =back |
251 | ||
252 | =head2 Changes to Existing Diagnostics | |
64b9a139 | 253 | |
e6a2e5ca SH |
254 | XXX Changes (i.e. rewording) of diagnostic messages go here |
255 | ||
256 | =over 4 | |
64b9a139 SH |
257 | |
258 | =item * | |
259 | ||
e6a2e5ca SH |
260 | XXX Describe change here |
261 | ||
262 | =back | |
263 | ||
264 | =head1 Utility Changes | |
265 | ||
266 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here. | |
267 | Most of these are built within the directory F<utils>. | |
268 | ||
269 | [ List utility changes as a =head2 entry for each utility and =item | |
270 | entries for each change | |
271 | Use L<XXX> with program names to get proper documentation linking. ] | |
272 | ||
273 | =head2 L<XXX> | |
274 | ||
275 | =over 4 | |
64b9a139 SH |
276 | |
277 | =item * | |
278 | ||
e6a2e5ca SH |
279 | XXX |
280 | ||
281 | =back | |
282 | ||
283 | =head1 Configuration and Compilation | |
284 | ||
285 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools | |
286 | go here. Any other changes to the Perl build process should be listed here. | |
287 | However, any platform-specific changes should be listed in the | |
288 | L</Platform Support> section, instead. | |
289 | ||
290 | [ List changes as an =item entry ]. | |
291 | ||
292 | =over 4 | |
64b9a139 | 293 | |
dea26044 | 294 | =item New probes |
64b9a139 | 295 | |
dea26044 MB |
296 | =over 2 |
297 | ||
298 | =item HAS_BUILTIN_ADD_OVERFLOW | |
299 | ||
300 | =item HAS_BUILTIN_MUL_OVERFLOW | |
301 | ||
302 | =item HAS_BUILTIN_SUB_OVERFLOW | |
303 | ||
304 | =item HAS_THREAD_SAFE_NL_LANGINFO_L | |
305 | ||
306 | =item HAS_LOCALECONV_L | |
307 | ||
308 | =item HAS_MBRLEN | |
309 | ||
310 | =item HAS_MBRTOWC | |
311 | ||
312 | =item HAS_MEMRCHR | |
313 | ||
314 | =item HAS_NANOSLEEP | |
315 | ||
316 | =item HAS_STRNLEN | |
317 | ||
318 | =item HAS_STRTOLD_L | |
319 | ||
320 | =item I_WCHAR | |
321 | ||
322 | =back | |
e6a2e5ca SH |
323 | |
324 | =back | |
325 | ||
326 | =head1 Testing | |
327 | ||
328 | XXX Any significant changes to the testing of a freshly built perl should be | |
329 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
330 | large changes to the testing harness (e.g. when parallel testing was added). | |
331 | Changes to existing files in F<t/> aren't worth summarizing, although the bugs | |
332 | that they represent may be covered elsewhere. | |
333 | ||
334 | XXX If there were no significant test changes, say this: | |
335 | ||
336 | Tests were added and changed to reflect the other additions and changes | |
337 | in this release. | |
338 | ||
339 | XXX If instead there were significant changes, say this: | |
340 | ||
341 | Tests were added and changed to reflect the other additions and | |
342 | changes in this release. Furthermore, these significant changes were | |
343 | made: | |
344 | ||
345 | [ List each test improvement as an =item entry ] | |
346 | ||
347 | =over 4 | |
64b9a139 SH |
348 | |
349 | =item * | |
350 | ||
e6a2e5ca | 351 | XXX |
cf663f87 | 352 | |
a8ba758d JSA |
353 | =back |
354 | ||
a8ba758d | 355 | =head1 Platform Support |
cf663f87 | 356 | |
e6a2e5ca SH |
357 | XXX Any changes to platform support should be listed in the sections below. |
358 | ||
359 | [ Within the sections, list each platform as an =item entry with specific | |
360 | changes as paragraphs below it. ] | |
361 | ||
362 | =head2 New Platforms | |
363 | ||
364 | XXX List any platforms that this version of perl compiles on, that previous | |
365 | versions did not. These will either be enabled by new files in the F<hints/> | |
366 | directories, or new subdirectories and F<README> files at the top level of the | |
367 | source tree. | |
368 | ||
369 | =over 4 | |
370 | ||
371 | =item XXX-some-platform | |
372 | ||
373 | XXX | |
374 | ||
375 | =back | |
376 | ||
377 | =head2 Discontinued Platforms | |
378 | ||
379 | XXX List any platforms that this version of perl no longer compiles on. | |
380 | ||
381 | =over 4 | |
382 | ||
383 | =item XXX-some-platform | |
384 | ||
385 | XXX | |
386 | ||
387 | =back | |
388 | ||
a8ba758d JSA |
389 | =head2 Platform-Specific Notes |
390 | ||
e6a2e5ca SH |
391 | XXX List any changes for specific platforms. This could include configuration |
392 | and compilation changes or changes in portability/compatibility. However, | |
393 | changes within modules for platforms should generally be listed in the | |
394 | L</Modules and Pragmata> section. | |
395 | ||
a8ba758d | 396 | =over 4 |
9ef07b78 | 397 | |
e6a2e5ca | 398 | =item XXX-some-platform |
a8ba758d | 399 | |
e6a2e5ca | 400 | XXX |
a8ba758d JSA |
401 | |
402 | =back | |
403 | ||
e6a2e5ca SH |
404 | =head1 Internal Changes |
405 | ||
406 | XXX Changes which affect the interface available to C<XS> code go here. Other | |
407 | significant internal changes for future core maintainers should be noted as | |
408 | well. | |
409 | ||
410 | [ List each change as an =item entry ] | |
a8ba758d | 411 | |
a8ba758d | 412 | =over 4 |
cf663f87 | 413 | |
21741043 | 414 | =item * |
c83a3d01 | 415 | |
8ed1839e DM |
416 | A new optimisation phase has been added to the compiler, |
417 | C<optimize_optree()>, which does a top-down scan of a complete optree | |
418 | just before the peephole optimiser is run. This phase is not currently | |
419 | hookable. | |
420 | ||
421 | =item * | |
422 | ||
423 | An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a | |
424 | chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an | |
425 | C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single | |
426 | C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array | |
427 | contains the argument count, plus a pointer to a constant string and a set | |
428 | of segment lengths. For example with | |
429 | ||
430 | my $x = "foo=$foo, bar=$bar\n"; | |
431 | ||
432 | the constant string would be C<"foo=, bar=\n"> and the segment lengths | |
433 | would be (4,6,1). If the string contains characters such as C<\x80>, whose | |
434 | representation changes under utf8, two sets of strings plus lengths are | |
435 | precomputed and stored. | |
a8ba758d | 436 | |
e6a2e5ca SH |
437 | =back |
438 | ||
439 | =head1 Selected Bug Fixes | |
440 | ||
441 | XXX Important bug fixes in the core language are summarized here. Bug fixes in | |
442 | files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>. | |
834e1dc6 | 443 | |
e6a2e5ca SH |
444 | [ List each fix as an =item entry ] |
445 | ||
446 | =over 4 | |
77baf8eb SH |
447 | |
448 | =item * | |
449 | ||
a155eb05 TC |
450 | C<stat()>, C<lstat()>, and file test operators now fail if given a |
451 | filename containing a nul character, in the same way that C<open()> | |
452 | already fails. | |
453 | ||
454 | =item * | |
455 | ||
5bad3c4f DIM |
456 | The in-place reverse optimisation now correctly strengthens weak |
457 | references using the L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken> | |
458 | API function. | |
e6a2e5ca | 459 | |
4faa3060 TC |
460 | =item * |
461 | ||
462 | Fixed a read before buffer when parsing a range starting with C<\N{}> | |
463 | at the beginning of the character set for the transliteration | |
464 | operator. [perl #132245] | |
465 | ||
466 | =item * | |
467 | ||
468 | Fixed a leaked SV when parsing an empty C<\N{}> at compile-time. | |
469 | [perl #132245] | |
470 | ||
e6a2e5ca SH |
471 | =back |
472 | ||
473 | =head1 Known Problems | |
474 | ||
475 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any | |
476 | tests that had to be C<TODO>ed for the release would be noted here. Unfixed | |
477 | platform specific bugs also go here. | |
478 | ||
479 | [ List each fix as an =item entry ] | |
480 | ||
481 | =over 4 | |
77baf8eb SH |
482 | |
483 | =item * | |
484 | ||
e6a2e5ca | 485 | XXX |
834e1dc6 | 486 | |
a8ba758d JSA |
487 | =back |
488 | ||
e6a2e5ca SH |
489 | =head1 Errata From Previous Releases |
490 | ||
491 | =over 4 | |
8abafd33 | 492 | |
e6a2e5ca SH |
493 | =item * |
494 | ||
495 | XXX Add anything here that we forgot to add, or were mistaken about, in | |
496 | the perldelta of a previous release. | |
8abafd33 | 497 | |
e6a2e5ca | 498 | =back |
b2e49ab9 | 499 | |
e6a2e5ca | 500 | =head1 Obituary |
b2e49ab9 | 501 | |
e6a2e5ca SH |
502 | XXX If any significant core contributor has died, we've added a short obituary |
503 | here. | |
b2e49ab9 | 504 | |
e6a2e5ca | 505 | =head1 Acknowledgements |
b2e49ab9 | 506 | |
e6a2e5ca | 507 | XXX Generate this with: |
b2e49ab9 | 508 | |
cab780cc | 509 | perl Porting/acknowledgements.pl v5.27.5..HEAD |
f5b73711 | 510 | |
44691e6f AB |
511 | =head1 Reporting Bugs |
512 | ||
b5cbfe35 S |
513 | If you find what you think is a bug, you might check the perl bug database |
514 | at L<https://rt.perl.org/> . There may also be information at | |
515 | L<http://www.perl.org/> , the Perl Home Page. | |
44691e6f | 516 | |
e08634c5 SH |
517 | If you believe you have an unreported bug, please run the L<perlbug> program |
518 | included with your release. Be sure to trim your bug down to a tiny but | |
519 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
b5cbfe35 | 520 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. |
44691e6f | 521 | |
87c118b9 DM |
522 | If the bug you are reporting has security implications which make it |
523 | inappropriate to send to a publicly archived mailing list, then see | |
c0ea3294 SH |
524 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> |
525 | for details of how to report the issue. | |
44691e6f | 526 | |
390ae6f9 S |
527 | =head1 Give Thanks |
528 | ||
529 | If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, | |
530 | you can do so by running the C<perlthanks> program: | |
531 | ||
532 | perlthanks | |
533 | ||
534 | This will send an email to the Perl 5 Porters list with your show of thanks. | |
535 | ||
44691e6f AB |
536 | =head1 SEE ALSO |
537 | ||
e08634c5 SH |
538 | The F<Changes> file for an explanation of how to view exhaustive details on |
539 | what changed. | |
44691e6f AB |
540 | |
541 | The F<INSTALL> file for how to build Perl. | |
542 | ||
543 | The F<README> file for general stuff. | |
544 | ||
545 | The F<Artistic> and F<Copying> files for copyright information. | |
546 | ||
547 | =cut |