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