This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
c53fae42da5e1c85d024037d589534f3302a2a22
[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 =head2 Subroutines no longer need typeglobs
83
84 Perl 5.22.0 introduced an optimization allowing subroutines to be stored in
85 packages as simple sub refs, not requiring a full typeglob (thus
86 potentially saving large amounts of memeory).  However, the optimization
87 was flawed: it only applied to the main package.
88
89 This optimization has now been extended to all packages.  This may break
90 compatibility with introspection code that looks inside stashes and expects
91 everything in them to be a typeglob.
92
93 When this optimization happens, the typeglob still notionally exists, so
94 accessing it will cause the stash entry to be upgraded to a typeglob.  The
95 optimization does not apply to XSUBs or exported subroutines, and calling a
96 method will undo it, since method calls cache things in typeglobs.
97
98 [perl #129916] [perl #132252]
99
100 =head2 Sort algorithm can no longer be specified
101
102 Since Perl 5.8, the L<sort> pragma has had subpragmata C<_mergesort>,
103 C<_quicksort>, and C<_qsort> that can be used to specify which algorithm
104 perl should use to implement the L<sort|perlfunc/sort> builtin.
105 This was always considered a dubious feature that might not last,
106 hence the underscore spellings, and they were documented as not being
107 portable beyond Perl 5.8.  These subpragmata have now been deleted,
108 and any attempt to use them is an error.  The L<sort> pragma otherwise
109 remains, and the algorithm-neutral C<stable> subpragma can be used to
110 control sorting behaviour.
111
112 =head1 Deprecations
113
114 XXX Any deprecated features, syntax, modules etc. should be listed here.
115
116 =head2 Module removals
117
118 XXX Remove this section if inapplicable.
119
120 The following modules will be removed from the core distribution in a
121 future release, and will at that time need to be installed from CPAN.
122 Distributions on CPAN which require these modules will need to list them as
123 prerequisites.
124
125 The core versions of these modules will now issue C<"deprecated">-category
126 warnings to alert you to this fact.  To silence these deprecation warnings,
127 install the modules in question from CPAN.
128
129 Note that these are (with rare exceptions) fine modules that you are encouraged
130 to continue to use.  Their disinclusion from core primarily hinges on their
131 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
132 not usually on concerns over their design.
133
134 =over
135
136 =item XXX
137
138 XXX Note that deprecated modules should be listed here even if they are listed
139 as an updated module in the L</Modules and Pragmata> section.
140
141 =back
142
143 [ List each other deprecation as a =head2 entry ]
144
145 =head1 Performance Enhancements
146
147 XXX Changes which enhance performance without changing behaviour go here.
148 There may well be none in a stable release.
149
150 [ List each enhancement as an =item entry ]
151
152 =over 4
153
154 =item *
155
156 Many string concatenation expressions are now considerably faster, due
157 to the introduction internally of a C<multiconcat> opcode which combines
158 multiple concatenations, and optionally a C<=> or C<.=>, into a single
159 action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this
160 whole expression is now handled as a single op:
161
162     $s .= "a=$a b=$b\n"
163
164 As a special case, if the LHS of an assign is a lexical variable or
165 C<my $s>, the op itself handles retrieving the lexical variable, which
166 is faster.
167
168 In general, the more the expression includes a mix of constant strings and
169 variable expressions, the longer the expression, and the more it mixes
170 together non-utf8 and utf8 strings, the more marked the performance
171 improvement. For example on a C<x86_64> system, this code has been
172 benchmarked running four times faster:
173
174     my $s;
175     my $a = "ab\x{100}cde";
176     my $b = "fghij";
177     my $c = "\x{101}klmn";
178
179     for my $i (1..10_000_000) {
180         $s = "\x{100}wxyz";
181         $s .= "foo=$a bar=$b baz=$c";
182     }
183
184 In addition, C<sprintf> expressions which have a constant format
185 containing only C<%s> and C<%%> format elements, and which have a fixed
186 number of arguments, are now also optimised into a C<multiconcat> op.
187
188 =item *
189
190 Subroutines in packages no longer need to be stored in typeglobs, saving
191 large amounts of memory.  See L</Subroutines no longer need typeglobs>
192 under L</Incompatible Changes>, above.
193
194 =back
195
196 =head1 Modules and Pragmata
197
198 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
199 go here.  If Module::CoreList is updated, generate an initial draft of the
200 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
201 for important changes should then be added by hand.  In an ideal world,
202 dual-life modules would have a F<Changes> file that could be cribbed.
203
204 The list of new and updated modules is modified automatically as part of
205 preparing a Perl release, so the only reason to manually add entries here is if
206 you're summarising the important changes in the module update. (Also, if the
207 manually-added details don't match the automatically-generated ones, the
208 release manager will have to investigate the situation carefully.)
209
210 [ Within each section, list entries as an =item entry ]
211
212 =head2 Removal of use vars
213
214 =over 4
215
216 The usage of "use vars" has been discouraged since the introduction of our in
217 Perl 5.6.0. Where possible the usage of this pragma has now been removed from
218 the Perl source code.
219
220 This had a slight effect (for the better) on the output of WARNING_BITS in B::Deparse.
221
222 =back
223
224 =head2 New Modules and Pragmata
225
226 =over 4
227
228 =item *
229
230 XXX
231
232 =back
233
234 =head2 Updated Modules and Pragmata
235
236 =over 4
237
238 =item *
239
240 L<Carp> has been upgraded from version 1.43 to 1.44.
241
242 If a package on the call stack contains a constant named C<ISA>, Carp no
243 longer throws a "Not a GLOB reference" error.
244
245 =item *
246
247 L<File::Copy> has been upgraded from version 2.32 to 2.33.  It will now use
248 Time::HiRes utime where available (RT #132401).
249
250 =item *
251
252 To address a security vulnerability in older versions of the 'zlib' library
253 (which is bundled with Compress-Raw-Zlib), L<Compress::Raw::Zlib> has been
254 upgraded to CPAN version 2.075.
255
256 =item *
257
258 L<Test::Simple> has been upgraded from version 1.302103 to 1.302111.
259
260 =back
261
262 =head2 Removed Modules and Pragmata
263
264 =over 4
265
266 =item *
267
268 XXX
269
270 =back
271
272 =head1 Documentation
273
274 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
275 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
276
277 =head2 New Documentation
278
279 XXX Changes which create B<new> files in F<pod/> go here.
280
281 =head3 L<XXX>
282
283 XXX Description of the purpose of the new file here
284
285 =head2 Changes to Existing Documentation
286
287 We have attempted to update the documentation to reflect the changes
288 listed in this document.  If you find any we have missed, send email
289 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
290
291 XXX Changes which significantly change existing files in F<pod/> go here.
292 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
293 section.
294
295 Additionally, the following selected changes have been made:
296
297 =over 4
298
299 =item * L<perldiag/Variable length lookbehind not implemented in regex m/%s/>
300
301 This now gives more ideas as to workarounds to the issue that was
302 introduced in Perl 5.18 (but not documented explicitly in its perldelta)
303 for the fact that some Unicode C</i> rules cause a few sequences such as
304
305  (?<!st)
306
307 to be considered variable length, and hence disallowed.
308
309 =item *
310
311 The section on reference counting in L<perlguts> has been heavily revised,
312 to describe references in the way a programmer needs to think about them
313 rather than in terms of the physical data structures.
314
315 =item *
316
317 The section "Truth and Falsehood" in L<perlsyn> has been removed from
318 that document, where it didn't belong, and merged into the existing
319 paragraph on the same topic in L<perldata>.
320
321 =item *
322
323 The description of the C<x> operator in L<perlop> has been clarified.
324
325 =item *
326
327 XXX Description of the change here
328
329 =back
330
331 =head1 Diagnostics
332
333 The following additions or changes have been made to diagnostic output,
334 including warnings and fatal error messages.  For the complete list of
335 diagnostic messages, see L<perldiag>.
336
337 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
338 include any changes in L<perldiag> that reconcile it to the C<C> code.
339
340 =head2 New Diagnostics
341
342 XXX Newly added diagnostic messages go under here, separated into New Errors
343 and New Warnings
344
345 =head3 New Errors
346
347 =over 4
348
349 =item *
350
351 XXX L<message|perldiag/"message">
352
353 =back
354
355 =head3 New Warnings
356
357 =over 4
358
359 =item *
360
361 XXX L<message|perldiag/"message">
362
363 =back
364
365 =head2 Changes to Existing Diagnostics
366
367 XXX Changes (i.e. rewording) of diagnostic messages go here
368
369 =over 4
370
371 =item *
372
373 The diagnostic C<Initialization of state variables in list context
374 currently forbidden> has changed to C<Initialization of state variables
375 in list currently forbidden>, because list-context initialization of
376 single aggregate state variables is now permitted.
377
378 =item *
379
380 XXX Describe change here
381
382 =back
383
384 =head1 Utility Changes
385
386 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
387 Most of these are built within the directory F<utils>.
388
389 [ List utility changes as a =head2 entry for each utility and =item
390 entries for each change
391 Use L<XXX> with program names to get proper documentation linking. ]
392
393 =head2 L<XXX>
394
395 =over 4
396
397 =item *
398
399 XXX
400
401 =back
402
403 =head1 Configuration and Compilation
404
405 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
406 go here.  Any other changes to the Perl build process should be listed here.
407 However, any platform-specific changes should be listed in the
408 L</Platform Support> section, instead.
409
410 [ List changes as an =item entry ].
411
412 =over 4
413
414 =item C89 requirement
415
416 Perl has been documented as requiring a C89 compiler to build since October
417 1998.  A variety of simplifications have now been made to Perl's internals to
418 rely on the features specified by the C89 standard. We believe that this
419 internal change hasn't altered the set of platforms that Perl builds on, but
420 please report a bug if Perl now has new problems building on your platform.
421
422 =item New probes
423
424 =over 2
425
426 =item HAS_BUILTIN_ADD_OVERFLOW
427
428 =item HAS_BUILTIN_MUL_OVERFLOW
429
430 =item HAS_BUILTIN_SUB_OVERFLOW
431
432 =item HAS_THREAD_SAFE_NL_LANGINFO_L
433
434 =item HAS_LOCALECONV_L
435
436 =item HAS_MBRLEN
437
438 =item HAS_MBRTOWC
439
440 =item HAS_MEMRCHR
441
442 =item HAS_NANOSLEEP
443
444 =item HAS_STRNLEN
445
446 =item HAS_STRTOLD_L
447
448 =item I_WCHAR
449
450 =back
451
452 =back
453
454 =head1 Testing
455
456 XXX Any significant changes to the testing of a freshly built perl should be
457 listed here.  Changes which create B<new> files in F<t/> go here as do any
458 large changes to the testing harness (e.g. when parallel testing was added).
459 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
460 that they represent may be covered elsewhere.
461
462 XXX If there were no significant test changes, say this:
463
464 Tests were added and changed to reflect the other additions and changes
465 in this release.
466
467 XXX If instead there were significant changes, say this:
468
469 Tests were added and changed to reflect the other additions and
470 changes in this release.  Furthermore, these significant changes were
471 made:
472
473 [ List each test improvement as an =item entry ]
474
475 =over 4
476
477 =item *
478
479 XXX
480
481 =back
482
483 =head1 Platform Support
484
485 XXX Any changes to platform support should be listed in the sections below.
486
487 [ Within the sections, list each platform as an =item entry with specific
488 changes as paragraphs below it. ]
489
490 =head2 New Platforms
491
492 XXX List any platforms that this version of perl compiles on, that previous
493 versions did not.  These will either be enabled by new files in the F<hints/>
494 directories, or new subdirectories and F<README> files at the top level of the
495 source tree.
496
497 =over 4
498
499 =item XXX-some-platform
500
501 XXX
502
503 =back
504
505 =head2 Discontinued Platforms
506
507 XXX List any platforms that this version of perl no longer compiles on.
508
509 =over 4
510
511 =item XXX-some-platform
512
513 XXX
514
515 =back
516
517 =head2 Platform-Specific Notes
518
519 XXX List any changes for specific platforms.  This could include configuration
520 and compilation changes or changes in portability/compatibility.  However,
521 changes within modules for platforms should generally be listed in the
522 L</Modules and Pragmata> section.
523
524 =over 4
525
526 =item Windows
527
528 Visual C++ compiler version detection has been improved to work on non-English
529 language systems.
530
531 =back
532
533 =head1 Internal Changes
534
535 XXX Changes which affect the interface available to C<XS> code go here.  Other
536 significant internal changes for future core maintainers should be noted as
537 well.
538
539 [ List each change as an =item entry ]
540
541 =over 4
542
543 =item *
544
545 A new optimisation phase has been added to the compiler,
546 C<optimize_optree()>, which does a top-down scan of a complete optree
547 just before the peephole optimiser is run. This phase is not currently
548 hookable.
549
550 =item *
551
552 An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a
553 chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an
554 C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single
555 C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array
556 contains the argument count, plus a pointer to a constant string and a set
557 of segment lengths. For example with
558
559     my $x = "foo=$foo, bar=$bar\n";
560
561 the constant string would be C<"foo=, bar=\n"> and the segment lengths
562 would be (4,6,1). If the string contains characters such as C<\x80>, whose
563 representation changes under utf8, two sets of strings plus lengths are
564 precomputed and stored.
565
566 =item *
567
568 Direct access to L<C<PL_keyword_plugin>|perlapi/PL_keyword_plugin> is not
569 safe in the presence of multithreading. A new
570 L<C<wrap_keyword_plugin>|perlapi/wrap_keyword_plugin> function has been
571 added to allow XS modules to safely define custom keywords even when
572 loaded from a thread, analoguous to L<C<PL_check>|perlapi/PL_check> /
573 L<C<wrap_op_checker>|perlapi/wrap_op_checker>.
574
575 =back
576
577 =head1 Selected Bug Fixes
578
579 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
580 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
581
582 [ List each fix as an =item entry ]
583
584 =over 4
585
586 =item *
587
588 C<stat()>, C<lstat()>, and file test operators now fail if given a
589 filename containing a nul character, in the same way that C<open()>
590 already fails.
591
592 =item *
593
594 C<stat()>, C<lstat()>, and file test operators now reliably set C<$!> when
595 failing due to being applied to a closed or otherwise invalid file handle.
596
597 =item *
598
599 File test operators for Unix permission bits that don't exist on a
600 particular platform, such as C<-k> (sticky bit) on Windows, now check that
601 the file being tested exists before returning the blanket false result,
602 and yield the appropriate errors if the argument doesn't refer to a file.
603
604 =item *
605
606 The in-place reverse optimisation now correctly strengthens weak
607 references using the L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken>
608 API function.
609
610 =item *
611
612 Fixed a read before buffer when parsing a range starting with C<\N{}>
613 at the beginning of the character set for the transliteration
614 operator.  [perl #132245]
615
616 =item *
617
618 Fixed a leaked SV when parsing an empty C<\N{}> at compile-time.
619 [perl #132245]
620
621 =item *
622
623 Calling C<do $path> on a directory or block device now yields a meaningful
624 error code in C<$!>.  [perl #125774]
625
626 =item *
627
628 Lexical sub declarations in C<do> blocks such as C<do { my sub lex; 123 }>
629 could corrupt the stack, erasing items already on the stack in the
630 enclosing statement.  This has been fixed.  [perl #132442]
631
632 =back
633
634 =head1 Known Problems
635
636 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
637 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
638 platform specific bugs also go here.
639
640 [ List each fix as an =item entry ]
641
642 =over 4
643
644 =item *
645
646 XXX
647
648 =back
649
650 =head1 Errata From Previous Releases
651
652 =over 4
653
654 =item *
655
656 XXX Add anything here that we forgot to add, or were mistaken about, in
657 the perldelta of a previous release.
658
659 =back
660
661 =head1 Obituary
662
663 XXX If any significant core contributor has died, we've added a short obituary
664 here.
665
666 =head1 Acknowledgements
667
668 XXX Generate this with:
669
670   perl Porting/acknowledgements.pl v5.27.5..HEAD
671
672 =head1 Reporting Bugs
673
674 If you find what you think is a bug, you might check the perl bug database
675 at L<https://rt.perl.org/> .  There may also be information at
676 L<http://www.perl.org/> , the Perl Home Page.
677
678 If you believe you have an unreported bug, please run the L<perlbug> program
679 included with your release.  Be sure to trim your bug down to a tiny but
680 sufficient test case.  Your bug report, along with the output of C<perl -V>,
681 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
682
683 If the bug you are reporting has security implications which make it
684 inappropriate to send to a publicly archived mailing list, then see
685 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
686 for details of how to report the issue.
687
688 =head1 Give Thanks
689
690 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
691 you can do so by running the C<perlthanks> program:
692
693     perlthanks
694
695 This will send an email to the Perl 5 Porters list with your show of thanks.
696
697 =head1 SEE ALSO
698
699 The F<Changes> file for an explanation of how to view exhaustive details on
700 what changed.
701
702 The F<INSTALL> file for how to build Perl.
703
704 The F<README> file for general stuff.
705
706 The F<Artistic> and F<Copying> files for copyright information.
707
708 =cut