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