This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Mention the clang thread safety analysis.
[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
6c83150b 155=back
a8c28920 156
6c83150b 157=head2 Removed Modules and Pragmata
a8c28920 158
6c83150b 159=over 4
a8c28920
A
160
161=item *
162
6c83150b 163XXX
a8c28920 164
6c83150b 165=back
a8c28920 166
6c83150b 167=head1 Documentation
a8c28920 168
6c83150b
A
169XXX Changes to files in F<pod/> go here. Consider grouping entries by
170file and be sure to link to the appropriate page, e.g. L<perlfunc>.
a8c28920 171
6c83150b 172=head2 New Documentation
a8c28920 173
6c83150b 174XXX Changes which create B<new> files in F<pod/> go here.
a8c28920 175
6c83150b 176=head3 L<XXX>
a8c28920 177
6c83150b 178XXX Description of the purpose of the new file here
a8c28920 179
6c83150b 180=head2 Changes to Existing Documentation
a8c28920 181
6c83150b
A
182XXX Changes which significantly change existing files in F<pod/> go here.
183However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
184section.
a8c28920 185
6c83150b 186=head3 L<XXX>
a8c28920 187
6c83150b 188=over 4
a8c28920
A
189
190=item *
191
6c83150b 192XXX Description of the change here
a8c28920 193
6c83150b 194=back
a8c28920 195
6c83150b 196=head1 Diagnostics
a8c28920 197
6c83150b
A
198The following additions or changes have been made to diagnostic output,
199including warnings and fatal error messages. For the complete list of
200diagnostic messages, see L<perldiag>.
a8c28920 201
6c83150b
A
202XXX New or changed warnings emitted by the core's C<C> code go here. Also
203include any changes in L<perldiag> that reconcile it to the C<C> code.
a8c28920 204
6c83150b 205=head2 New Diagnostics
a8c28920 206
6c83150b
A
207XXX Newly added diagnostic messages go under here, separated into New Errors
208and New Warnings
a8c28920 209
6c83150b 210=head3 New Errors
a8c28920 211
6c83150b 212=over 4
a8c28920 213
6c83150b 214=item *
a8c28920 215
29d76410
TC
216L<message|perldiag/"Invalid number '%s' for -C option.">
217
218(F) You supplied a number to the -C option that either has extra leading
219zeroes or overflows perl's unsigned integer representation.
220
a8c28920 221
6c83150b 222=back
a8c28920 223
6c83150b 224=head3 New Warnings
a8c28920 225
6c83150b 226=over 4
a8c28920
A
227
228=item *
229
6c83150b 230XXX L<message|perldiag/"message">
a8c28920 231
6c83150b 232=back
a8c28920 233
6c83150b 234=head2 Changes to Existing Diagnostics
a8c28920 235
6c83150b 236XXX Changes (i.e. rewording) of diagnostic messages go here
a8c28920 237
6c83150b 238=over 4
a8c28920
A
239
240=item *
241
6c83150b 242XXX Describe change here
a8c28920 243
6c83150b 244=back
a8c28920 245
6c83150b 246=head1 Utility Changes
a8c28920 247
6c83150b
A
248XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
249Most of these are built within the directory F<utils>.
a8c28920 250
6c83150b
A
251[ List utility changes as a =head2 entry for each utility and =item
252entries for each change
253Use L<XXX> with program names to get proper documentation linking. ]
a8c28920 254
6c83150b 255=head2 L<XXX>
a8c28920 256
6c83150b 257=over 4
f83db990
SH
258
259=item *
260
6c83150b 261XXX
f83db990 262
b6af474d 263=back
f83db990 264
6c83150b 265=head1 Configuration and Compilation
f83db990 266
6c83150b
A
267XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
268go here. Any other changes to the Perl build process should be listed here.
269However, any platform-specific changes should be listed in the
270L</Platform Support> section, instead.
f83db990 271
6c83150b 272[ List changes as a =item entry ].
b26bd9b0
PM
273
274=over 4
eabfc7bc 275
0dafb1ce 276=item *
eabfc7bc 277
94153ec7
TC
278F<make_ext.pl> is no longer inappropriately silent. This was caused
279by an operator precedence error introduced in 5.23.4.
5ea25977 280
b26bd9b0 281=back
5ea25977 282
6c83150b
A
283=head1 Testing
284
285XXX Any significant changes to the testing of a freshly built perl should be
286listed here. Changes which create B<new> files in F<t/> go here as do any
287large changes to the testing harness (e.g. when parallel testing was added).
288Changes to existing files in F<t/> aren't worth summarizing, although the bugs
289that they represent may be covered elsewhere.
290
291[ List each test improvement as a =item entry ]
a43707ab 292
b26bd9b0 293=over 4
5ea25977
MH
294
295=item *
296
6c83150b 297XXX
f282dc56 298
b26bd9b0 299=back
f282dc56 300
6c83150b
A
301=head1 Platform Support
302
303XXX Any changes to platform support should be listed in the sections below.
304
305[ Within the sections, list each platform as a =item entry with specific
306changes as paragraphs below it. ]
307
308=head2 New Platforms
309
310XXX List any platforms that this version of perl compiles on, that previous
311versions did not. These will either be enabled by new files in the F<hints/>
312directories, or new subdirectories and F<README> files at the top level of the
313source tree.
b26bd9b0 314
b6af474d 315=over 4
cf73ceda 316
6c83150b 317=item XXX-some-platform
f282dc56 318
6c83150b 319XXX
cf73ceda 320
6c83150b 321=back
0b8e4842 322
6c83150b 323=head2 Discontinued Platforms
4b951711 324
6c83150b 325XXX List any platforms that this version of perl no longer compiles on.
f83db990 326
6c83150b 327=over 4
f83db990 328
6c83150b 329=item XXX-some-platform
f83db990 330
6c83150b 331XXX
f83db990
SH
332
333=back
334
83144be3 335=head2 Platform-Specific Notes
0517ed38 336
6c83150b
A
337XXX List any changes for specific platforms. This could include configuration
338and compilation changes or changes in portability/compatibility. However,
339changes within modules for platforms should generally be listed in the
340L</Modules and Pragmata> section.
6937817d 341
6c83150b 342=over 4
0517ed38 343
c0236afe
KW
344=item EBCDIC platforms, such as z/OS
345
346UTF-EBCDIC is like UTF-8, but for EBCDIC platforms. It now has been
347extended so that it can represent code points up to 2 ** 64 - 1 on
348platforms with 64-bit words. This brings it into parity with UTF-8.
349This enhancement requires an incompatible change to the representation
350of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
351previous maximum representable code point). This means that a file that
352contains one of these code points, written out with previous versions of
353perl cannot be read in, without conversion, by a perl containing this
354change. We do not believe any such files are in existence, but if you
355do have one, submit a ticket at L<mailto:perlbug@perl.org>, and we will
356write a conversion script for you.
0517ed38 357
b26bd9b0 358=back
f4240379 359
b26bd9b0 360=head1 Internal Changes
f4240379 361
6c83150b
A
362XXX Changes which affect the interface available to C<XS> code go here. Other
363significant internal changes for future core maintainers should be noted as
364well.
365
366[ List each change as a =item entry ]
367
b6af474d 368=over 4
d89ea360 369
0efe3111
DM
370=item *
371
bb40cb3a
JH
372Perl core code and the threads extension have been annotated so that
373if Perl is configured to use threads, during compile-time clang (3.6
374or later) will warn about suspicious uses of mutexes.
375See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
376information.
0efe3111 377
d89ea360
DD
378=back
379
b26bd9b0 380=head1 Selected Bug Fixes
eabfc7bc 381
6c83150b
A
382XXX Important bug fixes in the core language are summarized here. Bug fixes in
383files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
8ca3d7d7 384
6c83150b 385[ List each fix as a =item entry ]
8ca3d7d7 386
6c83150b 387=over 4
0efe3111 388
a82f4918
KW
389=item *
390
3bca37e2
DM
391C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
392of characters from the start of the regex, perl needs to count back that
393many characters from the current C<pos()> position and start matching from
394there. However, it was counting back bytes rather than characters, which
395could lead to panics on utf8 strings.
a82f4918 396
acedda6e
TC
397=item *
398
399In some cases operators that return integers would return negative
400integers as large positive integers. [perl #126635]
401
079bf24b
TC
402=item *
403
404The pipe() operator would assert for DEBUGGING builds instead of
405producing the correct error message. The condition asserted on is
406detected and reported on correctly without the assertions, so the
407assertions were removed. [perl #126480]
408
d43e55a3
TC
409=item *
410
411In some cases, failing to parse a here-doc would attempt to use freed
412memory. This was caused by a pointer not being restored correctly.
413[perl #126443]
414
6c83150b 415=back
f83db990 416
6c83150b 417=head1 Known Problems
f83db990 418
6c83150b
A
419XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
420tests that had to be C<TODO>ed for the release would be noted here. Unfixed
421platform specific bugs also go here.
f83db990 422
6c83150b 423[ List each fix as a =item entry ]
133117f5 424
6c83150b 425=over 4
133117f5 426
83144be3 427=item *
9a7bb2f7 428
6c83150b 429XXX
5a74572e 430
6c83150b 431=back
5a74572e 432
6c83150b 433=head1 Errata From Previous Releases
5a74572e 434
6c83150b 435=over 4
5a74572e 436
6c83150b 437=item *
04924b39 438
6c83150b
A
439XXX Add anything here that we forgot to add, or were mistaken about, in
440the perldelta of a previous release.
e1ad135d 441
6c83150b 442=back
e1ad135d 443
6c83150b 444=head1 Obituary
e1ad135d 445
6c83150b
A
446XXX If any significant core contributor has died, we've added a short obituary
447here.
e1ad135d 448
6c83150b 449=head1 Acknowledgements
e1ad135d 450
6c83150b 451XXX Generate this with:
e1ad135d 452
6c83150b 453 perl Porting/acknowledgements.pl v5.23.5..HEAD
f5b73711 454
44691e6f
AB
455=head1 Reporting Bugs
456
e08634c5
SH
457If you find what you think is a bug, you might check the articles recently
458posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
459L<https://rt.perl.org/> . There may also be information at
460L<http://www.perl.org/> , the Perl Home Page.
44691e6f 461
e08634c5
SH
462If you believe you have an unreported bug, please run the L<perlbug> program
463included with your release. Be sure to trim your bug down to a tiny but
464sufficient test case. Your bug report, along with the output of C<perl -V>,
465will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
466
467If the bug you are reporting has security implications, which make it
e08634c5
SH
468inappropriate to send to a publicly archived mailing list, then please send it
469to perl5-security-report@perl.org. This points to a closed subscription
470unarchived mailing list, which includes all the core committers, who will be
471able to help assess the impact of issues, figure out a resolution, and help
f9001595 472co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
473platforms on which Perl is supported. Please only use this address for
474security issues in the Perl core, not for modules independently distributed on
475CPAN.
44691e6f
AB
476
477=head1 SEE ALSO
478
e08634c5
SH
479The F<Changes> file for an explanation of how to view exhaustive details on
480what changed.
44691e6f
AB
481
482The F<INSTALL> file for how to build Perl.
483
484The F<README> file for general stuff.
485
486The F<Artistic> and F<Copying> files for copyright information.
487
488=cut