This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta entry for perlguts revision
[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 The section on reference counting in L<perlguts> has been heavily revised,
259 to describe references in the way a programmer needs to think about them
260 rather than in terms of the physical data structures.
261
262 =item *
263
264 XXX Description of the change here
265
266 =back
267
268 =head1 Diagnostics
269
270 The following additions or changes have been made to diagnostic output,
271 including warnings and fatal error messages.  For the complete list of
272 diagnostic messages, see L<perldiag>.
273
274 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
275 include any changes in L<perldiag> that reconcile it to the C<C> code.
276
277 =head2 New Diagnostics
278
279 XXX Newly added diagnostic messages go under here, separated into New Errors
280 and New Warnings
281
282 =head3 New Errors
283
284 =over 4
285
286 =item *
287
288 XXX L<message|perldiag/"message">
289
290 =back
291
292 =head3 New Warnings
293
294 =over 4
295
296 =item *
297
298 XXX L<message|perldiag/"message">
299
300 =back
301
302 =head2 Changes to Existing Diagnostics
303
304 XXX Changes (i.e. rewording) of diagnostic messages go here
305
306 =over 4
307
308 =item *
309
310 The diagnostic C<Initialization of state variables in list context
311 currently forbidden> has changed to C<Initialization of state variables
312 in list currently forbidden>, because list-context initialization of
313 single aggregate state variables is now permitted.
314
315 =item *
316
317 XXX Describe change here
318
319 =back
320
321 =head1 Utility Changes
322
323 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
324 Most of these are built within the directory F<utils>.
325
326 [ List utility changes as a =head2 entry for each utility and =item
327 entries for each change
328 Use L<XXX> with program names to get proper documentation linking. ]
329
330 =head2 L<XXX>
331
332 =over 4
333
334 =item *
335
336 XXX
337
338 =back
339
340 =head1 Configuration and Compilation
341
342 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
343 go here.  Any other changes to the Perl build process should be listed here.
344 However, any platform-specific changes should be listed in the
345 L</Platform Support> section, instead.
346
347 [ List changes as an =item entry ].
348
349 =over 4
350
351 =item New probes
352
353 =over 2
354
355 =item HAS_BUILTIN_ADD_OVERFLOW
356
357 =item HAS_BUILTIN_MUL_OVERFLOW
358
359 =item HAS_BUILTIN_SUB_OVERFLOW
360
361 =item HAS_THREAD_SAFE_NL_LANGINFO_L
362
363 =item HAS_LOCALECONV_L
364
365 =item HAS_MBRLEN
366
367 =item HAS_MBRTOWC
368
369 =item HAS_MEMRCHR
370
371 =item HAS_NANOSLEEP
372
373 =item HAS_STRNLEN
374
375 =item HAS_STRTOLD_L
376
377 =item I_WCHAR
378
379 =back
380
381 =back
382
383 =head1 Testing
384
385 XXX Any significant changes to the testing of a freshly built perl should be
386 listed here.  Changes which create B<new> files in F<t/> go here as do any
387 large changes to the testing harness (e.g. when parallel testing was added).
388 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
389 that they represent may be covered elsewhere.
390
391 XXX If there were no significant test changes, say this:
392
393 Tests were added and changed to reflect the other additions and changes
394 in this release.
395
396 XXX If instead there were significant changes, say this:
397
398 Tests were added and changed to reflect the other additions and
399 changes in this release.  Furthermore, these significant changes were
400 made:
401
402 [ List each test improvement as an =item entry ]
403
404 =over 4
405
406 =item *
407
408 XXX
409
410 =back
411
412 =head1 Platform Support
413
414 XXX Any changes to platform support should be listed in the sections below.
415
416 [ Within the sections, list each platform as an =item entry with specific
417 changes as paragraphs below it. ]
418
419 =head2 New Platforms
420
421 XXX List any platforms that this version of perl compiles on, that previous
422 versions did not.  These will either be enabled by new files in the F<hints/>
423 directories, or new subdirectories and F<README> files at the top level of the
424 source tree.
425
426 =over 4
427
428 =item XXX-some-platform
429
430 XXX
431
432 =back
433
434 =head2 Discontinued Platforms
435
436 XXX List any platforms that this version of perl no longer compiles on.
437
438 =over 4
439
440 =item XXX-some-platform
441
442 XXX
443
444 =back
445
446 =head2 Platform-Specific Notes
447
448 XXX List any changes for specific platforms.  This could include configuration
449 and compilation changes or changes in portability/compatibility.  However,
450 changes within modules for platforms should generally be listed in the
451 L</Modules and Pragmata> section.
452
453 =over 4
454
455 =item XXX-some-platform
456
457 XXX
458
459 =back
460
461 =head1 Internal Changes
462
463 XXX Changes which affect the interface available to C<XS> code go here.  Other
464 significant internal changes for future core maintainers should be noted as
465 well.
466
467 [ List each change as an =item entry ]
468
469 =over 4
470
471 =item *
472
473 A new optimisation phase has been added to the compiler,
474 C<optimize_optree()>, which does a top-down scan of a complete optree
475 just before the peephole optimiser is run. This phase is not currently
476 hookable.
477
478 =item *
479
480 An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a
481 chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an
482 C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single
483 C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array
484 contains the argument count, plus a pointer to a constant string and a set
485 of segment lengths. For example with
486
487     my $x = "foo=$foo, bar=$bar\n";
488
489 the constant string would be C<"foo=, bar=\n"> and the segment lengths
490 would be (4,6,1). If the string contains characters such as C<\x80>, whose
491 representation changes under utf8, two sets of strings plus lengths are
492 precomputed and stored.
493
494 =item *
495
496 Direct access to L<C<PL_keyword_plugin>|perlapi/PL_keyword_plugin> is not
497 safe in the presence of multithreading. A new
498 L<C<wrap_keyword_plugin>|perlapi/wrap_keyword_plugin> function has been
499 added to allow XS modules to safely define custom keywords even when
500 loaded from a thread, analoguous to L<C<PL_check>|perlapi/PL_check> /
501 L<C<wrap_op_checker>|perlapi/wrap_op_checker>.
502
503 =back
504
505 =head1 Selected Bug Fixes
506
507 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
508 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
509
510 [ List each fix as an =item entry ]
511
512 =over 4
513
514 =item *
515
516 C<stat()>, C<lstat()>, and file test operators now fail if given a
517 filename containing a nul character, in the same way that C<open()>
518 already fails.
519
520 =item *
521
522 The in-place reverse optimisation now correctly strengthens weak
523 references using the L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken>
524 API function.
525
526 =item *
527
528 Fixed a read before buffer when parsing a range starting with C<\N{}>
529 at the beginning of the character set for the transliteration
530 operator.  [perl #132245]
531
532 =item *
533
534 Fixed a leaked SV when parsing an empty C<\N{}> at compile-time.
535 [perl #132245]
536
537 =back
538
539 =head1 Known Problems
540
541 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
542 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
543 platform specific bugs also go here.
544
545 [ List each fix as an =item entry ]
546
547 =over 4
548
549 =item *
550
551 XXX
552
553 =back
554
555 =head1 Errata From Previous Releases
556
557 =over 4
558
559 =item *
560
561 XXX Add anything here that we forgot to add, or were mistaken about, in
562 the perldelta of a previous release.
563
564 =back
565
566 =head1 Obituary
567
568 XXX If any significant core contributor has died, we've added a short obituary
569 here.
570
571 =head1 Acknowledgements
572
573 XXX Generate this with:
574
575   perl Porting/acknowledgements.pl v5.27.5..HEAD
576
577 =head1 Reporting Bugs
578
579 If you find what you think is a bug, you might check the perl bug database
580 at L<https://rt.perl.org/> .  There may also be information at
581 L<http://www.perl.org/> , the Perl Home Page.
582
583 If you believe you have an unreported bug, please run the L<perlbug> program
584 included with your release.  Be sure to trim your bug down to a tiny but
585 sufficient test case.  Your bug report, along with the output of C<perl -V>,
586 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
587
588 If the bug you are reporting has security implications which make it
589 inappropriate to send to a publicly archived mailing list, then see
590 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
591 for details of how to report the issue.
592
593 =head1 Give Thanks
594
595 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
596 you can do so by running the C<perlthanks> program:
597
598     perlthanks
599
600 This will send an email to the Perl 5 Porters list with your show of thanks.
601
602 =head1 SEE ALSO
603
604 The F<Changes> file for an explanation of how to view exhaustive details on
605 what changed.
606
607 The F<INSTALL> file for how to build Perl.
608
609 The F<README> file for general stuff.
610
611 The F<Artistic> and F<Copying> files for copyright information.
612
613 =cut