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