This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 572cd850,406d5545 (signbit)
[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
87e05d1a
KW
101=head2 Doing bitwise operations on strings containing code points above
1020xFF is deprecated
103
104The string bitwise operators treat their operands as strings of bytes,
105and values beyond 0xFF are nonsensical in this context. To operate on
106encoded bytes, first encode the strings. To operate on code points'
107numeric values, use C<split> and C<map ord>. In the future, this
108warning will be replaced by an exception.
109
6c83150b 110=head1 Performance Enhancements
a8c28920 111
6c83150b
A
112XXX Changes which enhance performance without changing behaviour go here.
113There may well be none in a stable release.
a8c28920 114
6c83150b 115[ List each enhancement as a =item entry ]
a8c28920 116
6c83150b 117=over 4
a8c28920
A
118
119=item *
120
6c83150b 121XXX
a8c28920 122
6c83150b 123=back
a8c28920 124
6c83150b 125=head1 Modules and Pragmata
a8c28920 126
6c83150b
A
127XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
128go here. If Module::CoreList is updated, generate an initial draft of the
129following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
130for important changes should then be added by hand. In an ideal world,
131dual-life modules would have a F<Changes> file that could be cribbed.
a8c28920 132
6c83150b 133[ Within each section, list entries as a =item entry ]
a8c28920 134
6c83150b 135=head2 New Modules and Pragmata
a8c28920 136
6c83150b 137=over 4
a8c28920
A
138
139=item *
140
6c83150b 141XXX
a8c28920 142
6c83150b 143=back
a8c28920 144
6c83150b 145=head2 Updated Modules and Pragmata
a8c28920 146
6c83150b 147=over 4
a8c28920
A
148
149=item *
150
37fb51ad 151L<Data::Dumper> has been upgraded from version 2.158 to 2.159.
1257ab89
AC
152
153This adds a "Trailingcomma" option, which when enabled adds a trailing comma
154after the last element of dumped arrays and hashes that would otherwise be
155followed immediately by a line break. [perl #126813]
156
157=item *
158
e70037f2
TC
159L<DynaLoader> has been upgraded from version 1.36 to 1.37.
160
161Fixed an else nesting issue in dynamic loading support for OS/390 (and
162similar systems) that was introduced in 1.36.
a8c28920 163
fb733bf0
TC
164=item *
165
166L<utf8> has been upgraded from 1.17 to 1.18.
167
168Partly reverted a micro-optimization to F<lib/utf_heavy.pl> that
169caused self-recursion when it was loaded with C<${^ENCODING}> set.
170[perl #126593]
171
273b29a4
KW
172=item *
173
174The modules L<sigtrap>, L<DB>, and the perl debugger could have under
175rare circumstances, without you expecting it, output containing raw
176control characters. This has been fixed.
177
6c83150b 178=back
a8c28920 179
6c83150b 180=head2 Removed Modules and Pragmata
a8c28920 181
6c83150b 182=over 4
a8c28920
A
183
184=item *
185
6c83150b 186XXX
a8c28920 187
6c83150b 188=back
a8c28920 189
6c83150b 190=head1 Documentation
a8c28920 191
6c83150b
A
192XXX Changes to files in F<pod/> go here. Consider grouping entries by
193file and be sure to link to the appropriate page, e.g. L<perlfunc>.
a8c28920 194
6c83150b 195=head2 New Documentation
a8c28920 196
6c83150b 197XXX Changes which create B<new> files in F<pod/> go here.
a8c28920 198
6c83150b 199=head3 L<XXX>
a8c28920 200
6c83150b 201XXX Description of the purpose of the new file here
a8c28920 202
6c83150b 203=head2 Changes to Existing Documentation
a8c28920 204
6c83150b
A
205XXX Changes which significantly change existing files in F<pod/> go here.
206However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
207section.
a8c28920 208
6c83150b 209=head3 L<XXX>
a8c28920 210
6c83150b 211=over 4
a8c28920
A
212
213=item *
214
6c83150b 215XXX Description of the change here
a8c28920 216
6c83150b 217=back
a8c28920 218
6c83150b 219=head1 Diagnostics
a8c28920 220
6c83150b
A
221The following additions or changes have been made to diagnostic output,
222including warnings and fatal error messages. For the complete list of
223diagnostic messages, see L<perldiag>.
a8c28920 224
6c83150b
A
225XXX New or changed warnings emitted by the core's C<C> code go here. Also
226include any changes in L<perldiag> that reconcile it to the C<C> code.
a8c28920 227
6c83150b 228=head2 New Diagnostics
a8c28920 229
6c83150b
A
230XXX Newly added diagnostic messages go under here, separated into New Errors
231and New Warnings
a8c28920 232
6c83150b 233=head3 New Errors
a8c28920 234
6c83150b 235=over 4
a8c28920 236
6c83150b 237=item *
a8c28920 238
29d76410
TC
239L<message|perldiag/"Invalid number '%s' for -C option.">
240
241(F) You supplied a number to the -C option that either has extra leading
242zeroes or overflows perl's unsigned integer representation.
243
a8c28920 244
6c83150b 245=back
a8c28920 246
6c83150b 247=head3 New Warnings
a8c28920 248
6c83150b 249=over 4
a8c28920
A
250
251=item *
252
6c83150b 253XXX L<message|perldiag/"message">
a8c28920 254
6c83150b 255=back
a8c28920 256
6c83150b 257=head2 Changes to Existing Diagnostics
a8c28920 258
6c83150b 259XXX Changes (i.e. rewording) of diagnostic messages go here
a8c28920 260
6c83150b 261=over 4
a8c28920
A
262
263=item *
264
6c83150b 265XXX Describe change here
a8c28920 266
6c83150b 267=back
a8c28920 268
6c83150b 269=head1 Utility Changes
a8c28920 270
6c83150b
A
271XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
272Most of these are built within the directory F<utils>.
a8c28920 273
6c83150b
A
274[ List utility changes as a =head2 entry for each utility and =item
275entries for each change
276Use L<XXX> with program names to get proper documentation linking. ]
a8c28920 277
6c83150b 278=head2 L<XXX>
a8c28920 279
6c83150b 280=over 4
f83db990
SH
281
282=item *
283
6c83150b 284XXX
f83db990 285
b6af474d 286=back
f83db990 287
6c83150b 288=head1 Configuration and Compilation
f83db990 289
6c83150b
A
290XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
291go here. Any other changes to the Perl build process should be listed here.
292However, any platform-specific changes should be listed in the
293L</Platform Support> section, instead.
f83db990 294
6c83150b 295[ List changes as a =item entry ].
b26bd9b0
PM
296
297=over 4
eabfc7bc 298
0dafb1ce 299=item *
eabfc7bc 300
94153ec7
TC
301F<make_ext.pl> is no longer inappropriately silent. This was caused
302by an operator precedence error introduced in 5.23.4.
5ea25977 303
b26bd9b0 304=back
5ea25977 305
6c83150b
A
306=head1 Testing
307
308XXX Any significant changes to the testing of a freshly built perl should be
309listed here. Changes which create B<new> files in F<t/> go here as do any
310large changes to the testing harness (e.g. when parallel testing was added).
311Changes to existing files in F<t/> aren't worth summarizing, although the bugs
312that they represent may be covered elsewhere.
313
314[ List each test improvement as a =item entry ]
a43707ab 315
b26bd9b0 316=over 4
5ea25977
MH
317
318=item *
319
6c83150b 320XXX
f282dc56 321
b26bd9b0 322=back
f282dc56 323
6c83150b
A
324=head1 Platform Support
325
326XXX Any changes to platform support should be listed in the sections below.
327
328[ Within the sections, list each platform as a =item entry with specific
329changes as paragraphs below it. ]
330
c2f91764
JH
331=over 4
332
333=item All Solaris now builds shared libperl
334
335Solaris and variants like OpenIndiana now always build with the shared
336Perl library (Configure -Duseshrplib). This was required for the
337OpenIndiana builds, but this has also been the setting for Oracle/Sun
338Perl builds for several years.
339
340=back
341
6c83150b
A
342=head2 New Platforms
343
344XXX List any platforms that this version of perl compiles on, that previous
345versions did not. These will either be enabled by new files in the F<hints/>
346directories, or new subdirectories and F<README> files at the top level of the
347source tree.
b26bd9b0 348
b6af474d 349=over 4
cf73ceda 350
c2f91764 351=item OpenIndiana
f282dc56 352
c2f91764
JH
353OpenIndiana (continuation of OpenSolaris) builds were not working due
354to problems with the Perl shared library. This should be working now.
355L<[perl #126958]|https://rt.perl.org/Ticket/Display.html?id=126958>
cf73ceda 356
6c83150b 357=back
0b8e4842 358
6c83150b 359=head2 Discontinued Platforms
4b951711 360
6c83150b 361XXX List any platforms that this version of perl no longer compiles on.
f83db990 362
6c83150b 363=over 4
f83db990 364
6c83150b 365=item XXX-some-platform
f83db990 366
6c83150b 367XXX
f83db990
SH
368
369=back
370
83144be3 371=head2 Platform-Specific Notes
0517ed38 372
6c83150b
A
373XXX List any changes for specific platforms. This could include configuration
374and compilation changes or changes in portability/compatibility. However,
375changes within modules for platforms should generally be listed in the
376L</Modules and Pragmata> section.
6937817d 377
6c83150b 378=over 4
0517ed38 379
c0236afe
KW
380=item EBCDIC platforms, such as z/OS
381
382UTF-EBCDIC is like UTF-8, but for EBCDIC platforms. It now has been
383extended so that it can represent code points up to 2 ** 64 - 1 on
384platforms with 64-bit words. This brings it into parity with UTF-8.
385This enhancement requires an incompatible change to the representation
386of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
387previous maximum representable code point). This means that a file that
388contains one of these code points, written out with previous versions of
389perl cannot be read in, without conversion, by a perl containing this
390change. We do not believe any such files are in existence, but if you
391do have one, submit a ticket at L<mailto:perlbug@perl.org>, and we will
392write a conversion script for you.
0517ed38 393
b3d7d865
TC
394=item OS X/Darwin
395
396Builds with both -DDEBUGGING and threading enabled would fail with a
397"panic: free from wrong pool" error when built or tested from Terminal
398on OS X. This was caused by perl's internal management of the
399environment conflicting with an atfork handler using the libc
400setenv() function to update the environment.
401
402Perl now uses setenv()/unsetenv() to update the environment on OS X.
403[perl #126240]
404
48fbd301
JH
405=item ppc64el floating point
406
407The floating point format of ppc64el (Debian naming for little-endian
408PowerPC) is now detected correctly.
409
b26bd9b0 410=back
f4240379 411
b26bd9b0 412=head1 Internal Changes
f4240379 413
6c83150b
A
414XXX Changes which affect the interface available to C<XS> code go here. Other
415significant internal changes for future core maintainers should be noted as
416well.
417
418[ List each change as a =item entry ]
419
b6af474d 420=over 4
d89ea360 421
0efe3111
DM
422=item *
423
bb40cb3a
JH
424Perl core code and the threads extension have been annotated so that
425if Perl is configured to use threads, during compile-time clang (3.6
426or later) will warn about suspicious uses of mutexes.
427See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
428information.
0efe3111 429
206e921d
JH
430=item *
431
432The signbit() emulation has been enhanced. This will help older
433and/or more exotic platforms or configurations.
434
d89ea360
DD
435=back
436
b26bd9b0 437=head1 Selected Bug Fixes
eabfc7bc 438
6c83150b
A
439XXX Important bug fixes in the core language are summarized here. Bug fixes in
440files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
8ca3d7d7 441
6c83150b 442[ List each fix as a =item entry ]
8ca3d7d7 443
6c83150b 444=over 4
0efe3111 445
a82f4918
KW
446=item *
447
3bca37e2
DM
448C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
449of characters from the start of the regex, perl needs to count back that
450many characters from the current C<pos()> position and start matching from
451there. However, it was counting back bytes rather than characters, which
452could lead to panics on utf8 strings.
a82f4918 453
acedda6e
TC
454=item *
455
456In some cases operators that return integers would return negative
457integers as large positive integers. [perl #126635]
458
079bf24b
TC
459=item *
460
461The pipe() operator would assert for DEBUGGING builds instead of
462producing the correct error message. The condition asserted on is
463detected and reported on correctly without the assertions, so the
464assertions were removed. [perl #126480]
465
d43e55a3
TC
466=item *
467
468In some cases, failing to parse a here-doc would attempt to use freed
469memory. This was caused by a pointer not being restored correctly.
470[perl #126443]
471
e685831a
TC
472=item *
473
474C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP
475for *a before restoring its SV slot. [perl #124097]
476
0701ff00
JH
477=item *
478
479Multiple problems with the new hexadecimal floating point printf
480format C<%a> were fixed:
481L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>,
482L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>,
483L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822>
484
6c83150b 485=back
f83db990 486
6c83150b 487=head1 Known Problems
f83db990 488
6c83150b
A
489XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
490tests that had to be C<TODO>ed for the release would be noted here. Unfixed
491platform specific bugs also go here.
f83db990 492
6c83150b 493[ List each fix as a =item entry ]
133117f5 494
6c83150b 495=over 4
133117f5 496
83144be3 497=item *
9a7bb2f7 498
6c83150b 499XXX
5a74572e 500
6c83150b 501=back
5a74572e 502
6c83150b 503=head1 Errata From Previous Releases
5a74572e 504
6c83150b 505=over 4
5a74572e 506
6c83150b 507=item *
04924b39 508
6c83150b
A
509XXX Add anything here that we forgot to add, or were mistaken about, in
510the perldelta of a previous release.
e1ad135d 511
6c83150b 512=back
e1ad135d 513
6c83150b 514=head1 Obituary
e1ad135d 515
6c83150b
A
516XXX If any significant core contributor has died, we've added a short obituary
517here.
e1ad135d 518
6c83150b 519=head1 Acknowledgements
e1ad135d 520
6c83150b 521XXX Generate this with:
e1ad135d 522
6c83150b 523 perl Porting/acknowledgements.pl v5.23.5..HEAD
f5b73711 524
44691e6f
AB
525=head1 Reporting Bugs
526
e08634c5
SH
527If you find what you think is a bug, you might check the articles recently
528posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
529L<https://rt.perl.org/> . There may also be information at
530L<http://www.perl.org/> , the Perl Home Page.
44691e6f 531
e08634c5
SH
532If you believe you have an unreported bug, please run the L<perlbug> program
533included with your release. Be sure to trim your bug down to a tiny but
534sufficient test case. Your bug report, along with the output of C<perl -V>,
535will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
536
537If the bug you are reporting has security implications, which make it
e08634c5
SH
538inappropriate to send to a publicly archived mailing list, then please send it
539to perl5-security-report@perl.org. This points to a closed subscription
540unarchived mailing list, which includes all the core committers, who will be
541able to help assess the impact of issues, figure out a resolution, and help
f9001595 542co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
543platforms on which Perl is supported. Please only use this address for
544security issues in the Perl core, not for modules independently distributed on
545CPAN.
44691e6f
AB
546
547=head1 SEE ALSO
548
e08634c5
SH
549The F<Changes> file for an explanation of how to view exhaustive details on
550what changed.
44691e6f
AB
551
552The F<INSTALL> file for how to build Perl.
553
554The F<README> file for general stuff.
555
556The F<Artistic> and F<Copying> files for copyright information.
557
558=cut