This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add comment to explain why we want to probe for statfs() et al
[perl5.git] / pod / perldelta.pod
CommitLineData
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
6to be processed before release. ]
7
8perldelta - what is new for perl v5.27.6
89853d76 9
b5cbfe35 10=head1 DESCRIPTION
89853d76 11
e6a2e5ca 12This document describes differences between the 5.27.5 release and the 5.27.6
b5cbfe35 13release.
89853d76 14
e6a2e5ca
SH
15If you are upgrading from an earlier release such as 5.27.4, first read
16L<perl5275delta>, which describes differences between 5.27.4 and 5.27.5.
17
18=head1 Notice
19
20XXX Any important notices here
21
22=head1 Core Enhancements
23
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
27
28[ List each enhancement as a =head2 entry ]
29
30=head1 Security
31
32XXX Any security-related notices go here. In particular, any security
33vulnerabilities closed should be noted here rather than in the
34L</Selected Bug Fixes> section.
35
36[ List each security issue as a =head2 entry ]
37
38=head1 Incompatible Changes
39
40XXX 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
50XXX Any deprecated features, syntax, modules etc. should be listed here.
51
52=head2 Module removals
53
54XXX Remove this section if inapplicable.
55
56The following modules will be removed from the core distribution in a
57future release, and will at that time need to be installed from CPAN.
58Distributions on CPAN which require these modules will need to list them as
59prerequisites.
60
61The core versions of these modules will now issue C<"deprecated">-category
62warnings to alert you to this fact. To silence these deprecation warnings,
63install the modules in question from CPAN.
64
65Note that these are (with rare exceptions) fine modules that you are encouraged
66to continue to use. Their disinclusion from core primarily hinges on their
67necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
68not usually on concerns over their design.
69
70=over
71
72=item XXX
73
74XXX Note that deprecated modules should be listed here even if they are listed
75as 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
83XXX Changes which enhance performance without changing behaviour go here.
84There 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
92Many string concatenation expressions are now considerably faster, due
93to the introduction internally of a C<multiconcat> opcode which combines
94multiple concatenations, and optionally a C<=> or C<.=>, into a single
95action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this
96whole expression is now handled as a single op:
97
98 $s .= "a=$a b=$b\n"
99
100As a special case, if the LHS of an assign is a lexical variable or
101C<my $s>, the op itself handles retrieving the lexical variable, which
102is faster.
103
104In general, the more the expression includes a mix of constant strings and
105variable expressions, the longer the expression, and the more it mixes
106together non-utf8 and utf8 strings, the more marked the performance
107improvement. For example on a C<x86_64> system, this code has been
108benchmarked 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
120In addition, C<sprintf> expressions which have a constant format
121containing only C<%s> and C<%%> format elements, and which have a fixed
122number 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
128XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
129go here. If Module::CoreList is updated, generate an initial draft of the
130following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
131for important changes should then be added by hand. In an ideal world,
132dual-life modules would have a F<Changes> file that could be cribbed.
133
134The list of new and updated modules is modified automatically as part of
135preparing a Perl release, so the only reason to manually add entries here is if
136you're summarising the important changes in the module update. (Also, if the
137manually-added details don't match the automatically-generated ones, the
138release 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 148XXX
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
158L<Carp> has been upgraded from version 1.43 to 1.44.
159
160If a package on the call stack contains a constant named C<ISA>, Carp no
161longer 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 171XXX
64b9a139 172
e6a2e5ca 173=back
64b9a139 174
e6a2e5ca 175=head1 Documentation
64b9a139 176
e6a2e5ca
SH
177XXX Changes to files in F<pod/> go here. Consider grouping entries by
178file and be sure to link to the appropriate page, e.g. L<perlfunc>.
64b9a139 179
e6a2e5ca 180=head2 New Documentation
64b9a139 181
e6a2e5ca 182XXX Changes which create B<new> files in F<pod/> go here.
64b9a139 183
e6a2e5ca 184=head3 L<XXX>
64b9a139 185
e6a2e5ca 186XXX Description of the purpose of the new file here
64b9a139 187
e6a2e5ca 188=head2 Changes to Existing Documentation
64b9a139 189
e6a2e5ca
SH
190We have attempted to update the documentation to reflect the changes
191listed in this document. If you find any we have missed, send email
192to L<perlbug@perl.org|mailto:perlbug@perl.org>.
64b9a139 193
e6a2e5ca
SH
194XXX Changes which significantly change existing files in F<pod/> go here.
195However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
196section.
64b9a139 197
e6a2e5ca
SH
198Additionally, the following selected changes have been made:
199
754dd754
KW
200=head3 L<perldiag/Variable length lookbehind not implemented in regex m/%s/>
201
202This now gives more ideas as to workarounds to the issue that was
203introduced in Perl 5.18 (but not documented explicitly in its perldelta)
204for the fact that some Unicode C</i> rules cause a few sequences such as
205
206 (?<!st)
207
208to be considered variable length, and hence disallowed.
64b9a139 209
e6a2e5ca 210=over 4
64b9a139
SH
211
212=item *
213
e6a2e5ca 214XXX Description of the change here
64b9a139 215
e6a2e5ca 216=back
64b9a139 217
e6a2e5ca 218=head1 Diagnostics
64b9a139 219
e6a2e5ca
SH
220The following additions or changes have been made to diagnostic output,
221including warnings and fatal error messages. For the complete list of
222diagnostic messages, see L<perldiag>.
64b9a139 223
e6a2e5ca
SH
224XXX New or changed warnings emitted by the core's C<C> code go here. Also
225include any changes in L<perldiag> that reconcile it to the C<C> code.
64b9a139 226
e6a2e5ca 227=head2 New Diagnostics
64b9a139 228
e6a2e5ca
SH
229XXX Newly added diagnostic messages go under here, separated into New Errors
230and New Warnings
64b9a139 231
e6a2e5ca 232=head3 New Errors
64b9a139 233
e6a2e5ca 234=over 4
64b9a139
SH
235
236=item *
237
e6a2e5ca 238XXX 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 248XXX L<message|perldiag/"message">
64b9a139 249
e6a2e5ca
SH
250=back
251
252=head2 Changes to Existing Diagnostics
64b9a139 253
e6a2e5ca
SH
254XXX Changes (i.e. rewording) of diagnostic messages go here
255
256=over 4
64b9a139
SH
257
258=item *
259
e6a2e5ca
SH
260XXX Describe change here
261
262=back
263
264=head1 Utility Changes
265
266XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
267Most of these are built within the directory F<utils>.
268
269[ List utility changes as a =head2 entry for each utility and =item
270entries for each change
271Use 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
279XXX
280
281=back
282
283=head1 Configuration and Compilation
284
285XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
286go here. Any other changes to the Perl build process should be listed here.
287However, any platform-specific changes should be listed in the
288L</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
328XXX Any significant changes to the testing of a freshly built perl should be
329listed here. Changes which create B<new> files in F<t/> go here as do any
330large changes to the testing harness (e.g. when parallel testing was added).
331Changes to existing files in F<t/> aren't worth summarizing, although the bugs
332that they represent may be covered elsewhere.
333
334XXX If there were no significant test changes, say this:
335
336Tests were added and changed to reflect the other additions and changes
337in this release.
338
339XXX If instead there were significant changes, say this:
340
341Tests were added and changed to reflect the other additions and
342changes in this release. Furthermore, these significant changes were
343made:
344
345[ List each test improvement as an =item entry ]
346
347=over 4
64b9a139
SH
348
349=item *
350
e6a2e5ca 351XXX
cf663f87 352
a8ba758d
JSA
353=back
354
a8ba758d 355=head1 Platform Support
cf663f87 356
e6a2e5ca
SH
357XXX 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
360changes as paragraphs below it. ]
361
362=head2 New Platforms
363
364XXX List any platforms that this version of perl compiles on, that previous
365versions did not. These will either be enabled by new files in the F<hints/>
366directories, or new subdirectories and F<README> files at the top level of the
367source tree.
368
369=over 4
370
371=item XXX-some-platform
372
373XXX
374
375=back
376
377=head2 Discontinued Platforms
378
379XXX List any platforms that this version of perl no longer compiles on.
380
381=over 4
382
383=item XXX-some-platform
384
385XXX
386
387=back
388
a8ba758d
JSA
389=head2 Platform-Specific Notes
390
e6a2e5ca
SH
391XXX List any changes for specific platforms. This could include configuration
392and compilation changes or changes in portability/compatibility. However,
393changes within modules for platforms should generally be listed in the
394L</Modules and Pragmata> section.
395
a8ba758d 396=over 4
9ef07b78 397
e6a2e5ca 398=item XXX-some-platform
a8ba758d 399
e6a2e5ca 400XXX
a8ba758d
JSA
401
402=back
403
e6a2e5ca
SH
404=head1 Internal Changes
405
406XXX Changes which affect the interface available to C<XS> code go here. Other
407significant internal changes for future core maintainers should be noted as
408well.
409
410[ List each change as an =item entry ]
a8ba758d 411
a8ba758d 412=over 4
cf663f87 413
21741043 414=item *
c83a3d01 415
8ed1839e
DM
416A new optimisation phase has been added to the compiler,
417C<optimize_optree()>, which does a top-down scan of a complete optree
418just before the peephole optimiser is run. This phase is not currently
419hookable.
420
421=item *
422
423An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a
424chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an
425C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single
426C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array
427contains the argument count, plus a pointer to a constant string and a set
428of segment lengths. For example with
429
430 my $x = "foo=$foo, bar=$bar\n";
431
432the constant string would be C<"foo=, bar=\n"> and the segment lengths
433would be (4,6,1). If the string contains characters such as C<\x80>, whose
434representation changes under utf8, two sets of strings plus lengths are
435precomputed and stored.
a8ba758d 436
e6a2e5ca
SH
437=back
438
439=head1 Selected Bug Fixes
440
441XXX Important bug fixes in the core language are summarized here. Bug fixes in
442files 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
450C<stat()>, C<lstat()>, and file test operators now fail if given a
451filename containing a nul character, in the same way that C<open()>
452already fails.
453
454=item *
455
5bad3c4f
DIM
456The in-place reverse optimisation now correctly strengthens weak
457references using the L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken>
458API function.
e6a2e5ca 459
4faa3060
TC
460=item *
461
462Fixed a read before buffer when parsing a range starting with C<\N{}>
463at the beginning of the character set for the transliteration
464operator. [perl #132245]
465
466=item *
467
468Fixed 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
475XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
476tests that had to be C<TODO>ed for the release would be noted here. Unfixed
477platform 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 485XXX
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
495XXX Add anything here that we forgot to add, or were mistaken about, in
496the perldelta of a previous release.
8abafd33 497
e6a2e5ca 498=back
b2e49ab9 499
e6a2e5ca 500=head1 Obituary
b2e49ab9 501
e6a2e5ca
SH
502XXX If any significant core contributor has died, we've added a short obituary
503here.
b2e49ab9 504
e6a2e5ca 505=head1 Acknowledgements
b2e49ab9 506
e6a2e5ca 507XXX 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
513If you find what you think is a bug, you might check the perl bug database
514at L<https://rt.perl.org/> . There may also be information at
515L<http://www.perl.org/> , the Perl Home Page.
44691e6f 516
e08634c5
SH
517If you believe you have an unreported bug, please run the L<perlbug> program
518included with your release. Be sure to trim your bug down to a tiny but
519sufficient test case. Your bug report, along with the output of C<perl -V>,
b5cbfe35 520will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 521
87c118b9
DM
522If the bug you are reporting has security implications which make it
523inappropriate to send to a publicly archived mailing list, then see
c0ea3294
SH
524L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
525for details of how to report the issue.
44691e6f 526
390ae6f9
S
527=head1 Give Thanks
528
529If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
530you can do so by running the C<perlthanks> program:
531
532 perlthanks
533
534This 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
538The F<Changes> file for an explanation of how to view exhaustive details on
539what changed.
44691e6f
AB
540
541The F<INSTALL> file for how to build Perl.
542
543The F<README> file for general stuff.
544
545The F<Artistic> and F<Copying> files for copyright information.
546
547=cut