This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Merge branch 'data-dumper-trailingcomma' into blead
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
6c83150b
A
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.23.6
eabfc7bc 9
2cfe9b50 10=head1 DESCRIPTION
eabfc7bc 11
6c83150b 12This document describes differences between the 5.23.5 release and the 5.23.6
2cfe9b50 13release.
eabfc7bc 14
6c83150b
A
15If you are upgrading from an earlier release such as 5.23.4, first read
16L<perl5235delta>, which describes differences between 5.23.4 and 5.23.5.
a43707ab 17
6c83150b 18=head1 Notice
f83db990 19
6c83150b 20XXX Any important notices here
f83db990 21
6c83150b 22=head1 Core Enhancements
f83db990 23
6c83150b
A
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.
83144be3 27
6c83150b 28[ List each enhancement as a =head2 entry ]
f83db990 29
6c83150b 30=head1 Security
f83db990 31
6c83150b
A
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.
83144be3 35
6c83150b 36[ List each security issue as a =head2 entry ]
f83db990 37
6c83150b 38=head1 Incompatible Changes
f83db990 39
394609a5
KW
40=head2 Some regular expression patterns that had runtime errors now
41don't compile at all
42
43This should have been in the perldelta for 5.23.4, but was omitted.
44
45Almost all Unicode properties using the C<\p{}> and C<\P{}> regular
46expression pattern constructs are now checked for validity at pattern
47compilation time, and invalid ones will cause the program to not
48compile. In earlier releases, this check was often deferred until run
49time. Whenever an error check is moved from run- to compile time,
50erroneous code is caught 100% of the time, whereas before it would only
51get caught if and when the offending portion actually gets executed,
52which for unreachable code might be never.
f83db990 53
6c83150b 54=head1 Deprecations
f83db990 55
6c83150b 56XXX Any deprecated features, syntax, modules etc. should be listed here.
f83db990 57
6c83150b 58=head2 Module removals
f83db990 59
6c83150b 60XXX Remove this section if inapplicable.
f83db990 61
6c83150b
A
62The following modules will be removed from the core distribution in a
63future release, and will at that time need to be installed from CPAN.
64Distributions on CPAN which require these modules will need to list them as
65prerequisites.
f83db990 66
6c83150b
A
67The core versions of these modules will now issue C<"deprecated">-category
68warnings to alert you to this fact. To silence these deprecation warnings,
69install the modules in question from CPAN.
f83db990 70
6c83150b
A
71Note that these are (with rare exceptions) fine modules that you are encouraged
72to continue to use. Their disinclusion from core primarily hinges on their
73necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
74not usually on concerns over their design.
f83db990 75
6c83150b 76=over
f83db990 77
6c83150b 78=item XXX
f83db990 79
6c83150b
A
80XXX Note that deprecated modules should be listed here even if they are listed
81as an updated module in the L</Modules and Pragmata> section.
a8c28920 82
6c83150b 83=back
f83db990 84
6c83150b 85[ List each other deprecation as a =head2 entry ]
f83db990 86
d61acc4d
KW
87=head2 Using code points above the platform's C<IV_MAX> is now
88deprecated
89
90Unicode defines code points in the range C<0..0x10FFFF>. Some standards
91at one time defined them up to 2**31 - 1, but Perl has allowed them to
92be as high as anything that will fit in a word on the platform being
93used. However, use of those above the platform's C<IV_MAX> is broken in
94some constructs, notably C<tr///>, regular expression patterns involving
95quantifiers, and in some arithmetic and comparison operations, such as
96being the upper limit of a loop. Now the use of such code points raises
97a deprecation warning, unless that warning category is turned off.
98C<IV_MAX> is typically 2**31 -1 on 32-bit platforms, and 2**63-1 on
9964-bit ones.
100
6c83150b 101=head1 Performance Enhancements
a8c28920 102
6c83150b
A
103XXX Changes which enhance performance without changing behaviour go here.
104There may well be none in a stable release.
a8c28920 105
6c83150b 106[ List each enhancement as a =item entry ]
a8c28920 107
6c83150b 108=over 4
a8c28920
A
109
110=item *
111
6c83150b 112XXX
a8c28920 113
6c83150b 114=back
a8c28920 115
6c83150b 116=head1 Modules and Pragmata
a8c28920 117
6c83150b
A
118XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
119go here. If Module::CoreList is updated, generate an initial draft of the
120following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
121for important changes should then be added by hand. In an ideal world,
122dual-life modules would have a F<Changes> file that could be cribbed.
a8c28920 123
6c83150b 124[ Within each section, list entries as a =item entry ]
a8c28920 125
6c83150b 126=head2 New Modules and Pragmata
a8c28920 127
6c83150b 128=over 4
a8c28920
A
129
130=item *
131
6c83150b 132XXX
a8c28920 133
6c83150b 134=back
a8c28920 135
6c83150b 136=head2 Updated Modules and Pragmata
a8c28920 137
6c83150b 138=over 4
a8c28920
A
139
140=item *
141
e70037f2
TC
142L<DynaLoader> has been upgraded from version 1.36 to 1.37.
143
144Fixed an else nesting issue in dynamic loading support for OS/390 (and
145similar systems) that was introduced in 1.36.
a8c28920 146
fb733bf0
TC
147=item *
148
149L<utf8> has been upgraded from 1.17 to 1.18.
150
151Partly reverted a micro-optimization to F<lib/utf_heavy.pl> that
152caused self-recursion when it was loaded with C<${^ENCODING}> set.
153[perl #126593]
154
273b29a4
KW
155=item *
156
157The modules L<sigtrap>, L<DB>, and the perl debugger could have under
158rare circumstances, without you expecting it, output containing raw
159control characters. This has been fixed.
160
6c83150b 161=back
a8c28920 162
6c83150b 163=head2 Removed Modules and Pragmata
a8c28920 164
6c83150b 165=over 4
a8c28920
A
166
167=item *
168
6c83150b 169XXX
a8c28920 170
6c83150b 171=back
a8c28920 172
6c83150b 173=head1 Documentation
a8c28920 174
6c83150b
A
175XXX Changes to files in F<pod/> go here. Consider grouping entries by
176file and be sure to link to the appropriate page, e.g. L<perlfunc>.
a8c28920 177
6c83150b 178=head2 New Documentation
a8c28920 179
6c83150b 180XXX Changes which create B<new> files in F<pod/> go here.
a8c28920 181
6c83150b 182=head3 L<XXX>
a8c28920 183
6c83150b 184XXX Description of the purpose of the new file here
a8c28920 185
6c83150b 186=head2 Changes to Existing Documentation
a8c28920 187
6c83150b
A
188XXX Changes which significantly change existing files in F<pod/> go here.
189However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
190section.
a8c28920 191
6c83150b 192=head3 L<XXX>
a8c28920 193
6c83150b 194=over 4
a8c28920
A
195
196=item *
197
6c83150b 198XXX Description of the change here
a8c28920 199
6c83150b 200=back
a8c28920 201
6c83150b 202=head1 Diagnostics
a8c28920 203
6c83150b
A
204The following additions or changes have been made to diagnostic output,
205including warnings and fatal error messages. For the complete list of
206diagnostic messages, see L<perldiag>.
a8c28920 207
6c83150b
A
208XXX New or changed warnings emitted by the core's C<C> code go here. Also
209include any changes in L<perldiag> that reconcile it to the C<C> code.
a8c28920 210
6c83150b 211=head2 New Diagnostics
a8c28920 212
6c83150b
A
213XXX Newly added diagnostic messages go under here, separated into New Errors
214and New Warnings
a8c28920 215
6c83150b 216=head3 New Errors
a8c28920 217
6c83150b 218=over 4
a8c28920 219
6c83150b 220=item *
a8c28920 221
29d76410
TC
222L<message|perldiag/"Invalid number '%s' for -C option.">
223
224(F) You supplied a number to the -C option that either has extra leading
225zeroes or overflows perl's unsigned integer representation.
226
a8c28920 227
6c83150b 228=back
a8c28920 229
6c83150b 230=head3 New Warnings
a8c28920 231
6c83150b 232=over 4
a8c28920
A
233
234=item *
235
6c83150b 236XXX L<message|perldiag/"message">
a8c28920 237
6c83150b 238=back
a8c28920 239
6c83150b 240=head2 Changes to Existing Diagnostics
a8c28920 241
6c83150b 242XXX Changes (i.e. rewording) of diagnostic messages go here
a8c28920 243
6c83150b 244=over 4
a8c28920
A
245
246=item *
247
6c83150b 248XXX Describe change here
a8c28920 249
6c83150b 250=back
a8c28920 251
6c83150b 252=head1 Utility Changes
a8c28920 253
6c83150b
A
254XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
255Most of these are built within the directory F<utils>.
a8c28920 256
6c83150b
A
257[ List utility changes as a =head2 entry for each utility and =item
258entries for each change
259Use L<XXX> with program names to get proper documentation linking. ]
a8c28920 260
6c83150b 261=head2 L<XXX>
a8c28920 262
6c83150b 263=over 4
f83db990
SH
264
265=item *
266
6c83150b 267XXX
f83db990 268
b6af474d 269=back
f83db990 270
6c83150b 271=head1 Configuration and Compilation
f83db990 272
6c83150b
A
273XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
274go here. Any other changes to the Perl build process should be listed here.
275However, any platform-specific changes should be listed in the
276L</Platform Support> section, instead.
f83db990 277
6c83150b 278[ List changes as a =item entry ].
b26bd9b0
PM
279
280=over 4
eabfc7bc 281
0dafb1ce 282=item *
eabfc7bc 283
94153ec7
TC
284F<make_ext.pl> is no longer inappropriately silent. This was caused
285by an operator precedence error introduced in 5.23.4.
5ea25977 286
b26bd9b0 287=back
5ea25977 288
6c83150b
A
289=head1 Testing
290
291XXX Any significant changes to the testing of a freshly built perl should be
292listed here. Changes which create B<new> files in F<t/> go here as do any
293large changes to the testing harness (e.g. when parallel testing was added).
294Changes to existing files in F<t/> aren't worth summarizing, although the bugs
295that they represent may be covered elsewhere.
296
297[ List each test improvement as a =item entry ]
a43707ab 298
b26bd9b0 299=over 4
5ea25977
MH
300
301=item *
302
6c83150b 303XXX
f282dc56 304
b26bd9b0 305=back
f282dc56 306
6c83150b
A
307=head1 Platform Support
308
309XXX Any changes to platform support should be listed in the sections below.
310
311[ Within the sections, list each platform as a =item entry with specific
312changes as paragraphs below it. ]
313
314=head2 New Platforms
315
316XXX List any platforms that this version of perl compiles on, that previous
317versions did not. These will either be enabled by new files in the F<hints/>
318directories, or new subdirectories and F<README> files at the top level of the
319source tree.
b26bd9b0 320
b6af474d 321=over 4
cf73ceda 322
6c83150b 323=item XXX-some-platform
f282dc56 324
6c83150b 325XXX
cf73ceda 326
6c83150b 327=back
0b8e4842 328
6c83150b 329=head2 Discontinued Platforms
4b951711 330
6c83150b 331XXX List any platforms that this version of perl no longer compiles on.
f83db990 332
6c83150b 333=over 4
f83db990 334
6c83150b 335=item XXX-some-platform
f83db990 336
6c83150b 337XXX
f83db990
SH
338
339=back
340
83144be3 341=head2 Platform-Specific Notes
0517ed38 342
6c83150b
A
343XXX List any changes for specific platforms. This could include configuration
344and compilation changes or changes in portability/compatibility. However,
345changes within modules for platforms should generally be listed in the
346L</Modules and Pragmata> section.
6937817d 347
6c83150b 348=over 4
0517ed38 349
c0236afe
KW
350=item EBCDIC platforms, such as z/OS
351
352UTF-EBCDIC is like UTF-8, but for EBCDIC platforms. It now has been
353extended so that it can represent code points up to 2 ** 64 - 1 on
354platforms with 64-bit words. This brings it into parity with UTF-8.
355This enhancement requires an incompatible change to the representation
356of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
357previous maximum representable code point). This means that a file that
358contains one of these code points, written out with previous versions of
359perl cannot be read in, without conversion, by a perl containing this
360change. We do not believe any such files are in existence, but if you
361do have one, submit a ticket at L<mailto:perlbug@perl.org>, and we will
362write a conversion script for you.
0517ed38 363
b26bd9b0 364=back
f4240379 365
b26bd9b0 366=head1 Internal Changes
f4240379 367
6c83150b
A
368XXX Changes which affect the interface available to C<XS> code go here. Other
369significant internal changes for future core maintainers should be noted as
370well.
371
372[ List each change as a =item entry ]
373
b6af474d 374=over 4
d89ea360 375
0efe3111
DM
376=item *
377
bb40cb3a
JH
378Perl core code and the threads extension have been annotated so that
379if Perl is configured to use threads, during compile-time clang (3.6
380or later) will warn about suspicious uses of mutexes.
381See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
382information.
0efe3111 383
d89ea360
DD
384=back
385
b26bd9b0 386=head1 Selected Bug Fixes
eabfc7bc 387
6c83150b
A
388XXX Important bug fixes in the core language are summarized here. Bug fixes in
389files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
8ca3d7d7 390
6c83150b 391[ List each fix as a =item entry ]
8ca3d7d7 392
6c83150b 393=over 4
0efe3111 394
a82f4918
KW
395=item *
396
3bca37e2
DM
397C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
398of characters from the start of the regex, perl needs to count back that
399many characters from the current C<pos()> position and start matching from
400there. However, it was counting back bytes rather than characters, which
401could lead to panics on utf8 strings.
a82f4918 402
acedda6e
TC
403=item *
404
405In some cases operators that return integers would return negative
406integers as large positive integers. [perl #126635]
407
079bf24b
TC
408=item *
409
410The pipe() operator would assert for DEBUGGING builds instead of
411producing the correct error message. The condition asserted on is
412detected and reported on correctly without the assertions, so the
413assertions were removed. [perl #126480]
414
d43e55a3
TC
415=item *
416
417In some cases, failing to parse a here-doc would attempt to use freed
418memory. This was caused by a pointer not being restored correctly.
419[perl #126443]
420
6c83150b 421=back
f83db990 422
6c83150b 423=head1 Known Problems
f83db990 424
6c83150b
A
425XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
426tests that had to be C<TODO>ed for the release would be noted here. Unfixed
427platform specific bugs also go here.
f83db990 428
6c83150b 429[ List each fix as a =item entry ]
133117f5 430
6c83150b 431=over 4
133117f5 432
83144be3 433=item *
9a7bb2f7 434
6c83150b 435XXX
5a74572e 436
6c83150b 437=back
5a74572e 438
6c83150b 439=head1 Errata From Previous Releases
5a74572e 440
6c83150b 441=over 4
5a74572e 442
6c83150b 443=item *
04924b39 444
6c83150b
A
445XXX Add anything here that we forgot to add, or were mistaken about, in
446the perldelta of a previous release.
e1ad135d 447
6c83150b 448=back
e1ad135d 449
6c83150b 450=head1 Obituary
e1ad135d 451
6c83150b
A
452XXX If any significant core contributor has died, we've added a short obituary
453here.
e1ad135d 454
6c83150b 455=head1 Acknowledgements
e1ad135d 456
6c83150b 457XXX Generate this with:
e1ad135d 458
6c83150b 459 perl Porting/acknowledgements.pl v5.23.5..HEAD
f5b73711 460
44691e6f
AB
461=head1 Reporting Bugs
462
e08634c5
SH
463If you find what you think is a bug, you might check the articles recently
464posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
465L<https://rt.perl.org/> . There may also be information at
466L<http://www.perl.org/> , the Perl Home Page.
44691e6f 467
e08634c5
SH
468If you believe you have an unreported bug, please run the L<perlbug> program
469included with your release. Be sure to trim your bug down to a tiny but
470sufficient test case. Your bug report, along with the output of C<perl -V>,
471will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
472
473If the bug you are reporting has security implications, which make it
e08634c5
SH
474inappropriate to send to a publicly archived mailing list, then please send it
475to perl5-security-report@perl.org. This points to a closed subscription
476unarchived mailing list, which includes all the core committers, who will be
477able to help assess the impact of issues, figure out a resolution, and help
f9001595 478co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
479platforms on which Perl is supported. Please only use this address for
480security issues in the Perl core, not for modules independently distributed on
481CPAN.
44691e6f
AB
482
483=head1 SEE ALSO
484
e08634c5
SH
485The F<Changes> file for an explanation of how to view exhaustive details on
486what changed.
44691e6f
AB
487
488The F<INSTALL> file for how to build Perl.
489
490The F<README> file for general stuff.
491
492The F<Artistic> and F<Copying> files for copyright information.
493
494=cut