This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
configure.com update for newlocale, freelocale, and uselocale.
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
6fee6573
S
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.9
eabfc7bc 9
2cfe9b50 10=head1 DESCRIPTION
eabfc7bc 11
6fee6573 12This document describes differences between the 5.23.8 release and the 5.23.9
2cfe9b50 13release.
eabfc7bc 14
6fee6573
S
15If you are upgrading from an earlier release such as 5.23.7, first read
16L<perl5238delta>, which describes differences between 5.23.7 and 5.23.8.
394609a5 17
6fee6573 18=head1 Notice
a8c28920 19
6fee6573 20XXX Any important notices here
cdfe2e65 21
6fee6573 22=head1 Core Enhancements
cdfe2e65 23
df0d64c4 24=head2 perl will now croak when closing an in-place output file fails
a8c28920 25
df0d64c4
RS
26Until now, failure to close the output file for an in-place edit was not
27detected, meaning that the input file could be clobbered without the edit being
28successfully completed. Now, when the output file cannot be closed
29successfully, an exception is raised.
a8c28920 30
6fee6573 31=head1 Security
07450df7 32
6fee6573
S
33XXX Any security-related notices go here. In particular, any security
34vulnerabilities closed should be noted here rather than in the
35L</Selected Bug Fixes> section.
07450df7 36
6fee6573 37[ List each security issue as a =head2 entry ]
a8c28920 38
c0883d63 39=head1 Incompatible Changes
a8c28920 40
6fee6573 41XXX For a release on a stable branch, this section aspires to be:
a7e63acd 42
6fee6573
S
43 There are no changes intentionally incompatible with 5.XXX.XXX
44 If any exist, they are bugs, and we request that you submit a
45 report. See L</Reporting Bugs> below.
a7e63acd 46
6fee6573 47[ List each incompatible change as a =head2 entry ]
d7745c5b 48
6fee6573 49=head1 Deprecations
a7e63acd 50
6fee6573 51XXX Any deprecated features, syntax, modules etc. should be listed here.
d7a7ed74 52
6fee6573 53=head2 Module removals
d7a7ed74 54
6fee6573 55XXX Remove this section if inapplicable.
a7e63acd 56
6fee6573
S
57The following modules will be removed from the core distribution in a
58future release, and will at that time need to be installed from CPAN.
59Distributions on CPAN which require these modules will need to list them as
60prerequisites.
a7e63acd 61
6fee6573
S
62The core versions of these modules will now issue C<"deprecated">-category
63warnings to alert you to this fact. To silence these deprecation warnings,
64install the modules in question from CPAN.
f909f9f7 65
6fee6573
S
66Note that these are (with rare exceptions) fine modules that you are encouraged
67to continue to use. Their disinclusion from core primarily hinges on their
68necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
69not usually on concerns over their design.
a7e63acd 70
6fee6573 71=over
a7e63acd 72
6fee6573 73=item XXX
a7e63acd 74
6fee6573
S
75XXX Note that deprecated modules should be listed here even if they are listed
76as an updated module in the L</Modules and Pragmata> section.
34e79b75 77
6fee6573 78=back
34e79b75 79
6fee6573 80[ List each other deprecation as a =head2 entry ]
34e79b75 81
6fee6573 82=head1 Performance Enhancements
fc9da770 83
6fee6573
S
84XXX Changes which enhance performance without changing behaviour go here.
85There may well be none in a stable release.
df539208 86
6fee6573 87[ List each enhancement as a =item entry ]
df539208 88
6fee6573 89=over 4
df539208
S
90
91=item *
92
6fee6573 93XXX
df539208 94
6fee6573 95=back
df539208 96
6fee6573 97=head1 Modules and Pragmata
df539208 98
6fee6573
S
99XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
100go here. If Module::CoreList is updated, generate an initial draft of the
101following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
102for important changes should then be added by hand. In an ideal world,
103dual-life modules would have a F<Changes> file that could be cribbed.
fc9da770 104
6fee6573 105[ Within each section, list entries as a =item entry ]
df539208 106
6fee6573 107=head2 New Modules and Pragmata
df539208 108
6fee6573 109=over 4
df539208 110
fc9da770
S
111=item *
112
6fee6573 113XXX
fc9da770 114
6fee6573 115=back
df539208 116
6fee6573 117=head2 Updated Modules and Pragmata
df539208 118
6fee6573 119=over 4
df539208
S
120
121=item *
122
6fee6573 123L<XXX> has been upgraded from version A.xx to B.yy.
fc9da770 124
28192377
S
125=item *
126
127L<Module::CoreList> has been upgraded from version 5.20160121 to
1285.20160221.
129
6fee6573 130=back
df539208 131
6fee6573 132=head2 Removed Modules and Pragmata
331b9876 133
6fee6573 134=over 4
fc9da770
S
135
136=item *
137
6fee6573 138XXX
331b9876 139
af8a293f 140=back
a7e63acd 141
c0883d63
SL
142=head1 Documentation
143
6fee6573
S
144XXX Changes to files in F<pod/> go here. Consider grouping entries by
145file and be sure to link to the appropriate page, e.g. L<perlfunc>.
d9d208b8 146
6fee6573 147=head2 New Documentation
d9d208b8 148
6fee6573 149XXX Changes which create B<new> files in F<pod/> go here.
fd12b912 150
6fee6573 151=head3 L<XXX>
fd12b912 152
6fee6573 153XXX Description of the purpose of the new file here
fd12b912 154
6fee6573 155=head2 Changes to Existing Documentation
d9d208b8 156
6fee6573
S
157XXX Changes which significantly change existing files in F<pod/> go here.
158However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
159section.
160
161=head3 L<XXX>
986b8b49
JK
162
163=over 4
164
165=item *
166
6fee6573 167XXX Description of the change here
986b8b49
JK
168
169=back
170
af8a293f 171=head1 Diagnostics
d9d208b8 172
af8a293f
SL
173The following additions or changes have been made to diagnostic output,
174including warnings and fatal error messages. For the complete list of
175diagnostic messages, see L<perldiag>.
d9d208b8 176
6fee6573
S
177XXX New or changed warnings emitted by the core's C<C> code go here. Also
178include any changes in L<perldiag> that reconcile it to the C<C> code.
179
af8a293f 180=head2 New Diagnostics
fd12b912 181
6fee6573
S
182XXX Newly added diagnostic messages go under here, separated into New Errors
183and New Warnings
184
af8a293f 185=head3 New Errors
c0883d63 186
af8a293f 187=over 4
fd12b912 188
c0883d63 189=item *
d9d208b8 190
6fee6573 191XXX L<message|perldiag/"message">
df539208 192
c0883d63 193=back
fd12b912 194
af8a293f 195=head3 New Warnings
fd12b912 196
054383b6 197=over 4
fd12b912
DG
198
199=item *
200
6fee6573 201XXX L<message|perldiag/"message">
a8c28920 202
6c83150b 203=back
a8c28920 204
6fee6573 205=head2 Changes to Existing Diagnostics
c5b0f62d 206
6fee6573 207XXX Changes (i.e. rewording) of diagnostic messages go here
c5b0f62d 208
6fee6573 209=over 4
054383b6 210
df539208
S
211=item *
212
6fee6573 213XXX Describe change here
df539208 214
af8a293f
SL
215=back
216
6fee6573 217=head1 Utility Changes
02dd1325 218
6fee6573
S
219XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
220Most of these are built within the directory F<utils>.
02dd1325 221
6fee6573
S
222[ List utility changes as a =head2 entry for each utility and =item
223entries for each change
224Use L<XXX> with program names to get proper documentation linking. ]
02dd1325 225
6fee6573 226=head2 L<XXX>
af8a293f 227
6fee6573 228=over 4
02dd1325
CB
229
230=item *
231
6fee6573 232XXX
206e921d 233
af8a293f 234=back
206e921d 235
6fee6573 236=head1 Configuration and Compilation
d9d208b8 237
6fee6573
S
238XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
239go here. Any other changes to the Perl build process should be listed here.
240However, any platform-specific changes should be listed in the
241L</Platform Support> section, instead.
d9d208b8 242
6fee6573 243[ List changes as a =item entry ].
d7745c5b
DM
244
245=over 4
246
247=item *
248
4511cd77
TC
249Dtrace builds now build sucessfully on systems with a newer dtrace
250that require an input object file that uses the probes in the F<.d>
251file.
252
253Previously the probe would fail and cause a build failure. [perl
254#122287]
d7745c5b 255
6fee6573 256=back
d7745c5b 257
6fee6573 258=head1 Testing
d7745c5b 259
6fee6573
S
260XXX Any significant changes to the testing of a freshly built perl should be
261listed here. Changes which create B<new> files in F<t/> go here as do any
262large changes to the testing harness (e.g. when parallel testing was added).
263Changes to existing files in F<t/> aren't worth summarizing, although the bugs
264that they represent may be covered elsewhere.
d7745c5b 265
6fee6573 266[ List each test improvement as a =item entry ]
d7745c5b 267
6fee6573 268=over 4
d7745c5b
DM
269
270=item *
271
6fee6573 272XXX
d7745c5b 273
6fee6573 274=back
d7745c5b 275
6fee6573 276=head1 Platform Support
d7745c5b 277
6fee6573 278XXX Any changes to platform support should be listed in the sections below.
d7745c5b 279
6fee6573
S
280[ Within the sections, list each platform as a =item entry with specific
281changes as paragraphs below it. ]
d7745c5b 282
6fee6573 283=head2 New Platforms
d7745c5b 284
6fee6573
S
285XXX List any platforms that this version of perl compiles on, that previous
286versions did not. These will either be enabled by new files in the F<hints/>
287directories, or new subdirectories and F<README> files at the top level of the
288source tree.
d7745c5b 289
6fee6573 290=over 4
d7745c5b 291
6fee6573 292=item XXX-some-platform
d7745c5b 293
6fee6573 294XXX
d7745c5b 295
6fee6573 296=back
d7745c5b 297
6fee6573 298=head2 Discontinued Platforms
d7745c5b 299
6fee6573 300XXX List any platforms that this version of perl no longer compiles on.
d7745c5b 301
6fee6573 302=over 4
d7745c5b 303
6fee6573 304=item XXX-some-platform
d7745c5b 305
6fee6573
S
306XXX
307
308=back
d7745c5b 309
6fee6573 310=head2 Platform-Specific Notes
d7745c5b 311
6fee6573
S
312XXX List any changes for specific platforms. This could include configuration
313and compilation changes or changes in portability/compatibility. However,
314changes within modules for platforms should generally be listed in the
315L</Modules and Pragmata> section.
d7745c5b 316
6fee6573 317=over 4
d7745c5b 318
e90a17ab 319=item Win32
d7745c5b 320
756bd853
SH
321=over
322
323=item *
324
e1ad4fbb
DIM
325Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
326result in an invalid C<$Config{archname}> for the resulting perl.
e90a17ab 327[perl #127584]
d7745c5b 328
756bd853
SH
329=item *
330
331Errors set by Winsock functions are now put directly into C<$^E>, and the
332relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
333modules for testing this against.
334
335The previous behaviour of putting the errors (converted to POSIX-style C<E*>
336error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
337of like-named Winsock and POSIX error constants, a relationship between which
338has unfortunately been established in one way or another since Perl 5.8.0.
339
340The new behaviour provides a much more robust solution for checking Winsock
341errors in portable software without accidentally matching POSIX tests that were
342intended for other OSes and may have different meanings for Winsock.
343
344The old behaviour is currently retained, warts and all, for backwards
345compatibility, but users are encouraged to change any code that tests C<$!>
346against C<E*> constants for Winsock errors to instead test C<$^E> against
347C<WSAE*> constants. After a suitable deprecation period, the old behaviour may
348be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
349possible confusion over which error variable to check.
350
351=back
352
d7745c5b
DM
353=back
354
6fee6573 355=head1 Internal Changes
d89ea360 356
6fee6573
S
357XXX Changes which affect the interface available to C<XS> code go here. Other
358significant internal changes for future core maintainers should be noted as
359well.
360
361[ List each change as a =item entry ]
eabfc7bc 362
af8a293f 363=over 4
acedda6e 364
c7052e96
TC
365=item *
366
6fee6573 367XXX
2ff6ae51 368
6fee6573 369=back
2ff6ae51 370
6fee6573 371=head1 Selected Bug Fixes
42d92f4a 372
6fee6573
S
373XXX Important bug fixes in the core language are summarized here. Bug fixes in
374files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
42d92f4a 375
6fee6573 376[ List each fix as a =item entry ]
19b46ab5 377
6fee6573 378=over 4
19b46ab5 379
23b4d8d6
TC
380=item *
381
710d3eb3
KW
382It now works properly to specify a user-defined property, such as
383
384 qr/\p{mypkg1::IsMyProperty}/i
385
386with C</i> caseless matching, an explicit package name, and
4fc43451 387I<IsMyProperty> not defined at the time of the pattern compilation.
23b4d8d6 388
2aade621
TC
389=item *
390
391Perl's memcpy(), memmove(), memset() and memcmp() fallbacks are now
392more compatible with the originals. [perl #127619]
393
7febee86
KW
394=item *
395
396The peak memory usage when compiling some regular expression patterns is
397now significantly smaller. [perl #127392]
398
399=item *
400
401A case has been fixed in which malformed UTF-8 in the source of a Perl
402script caused an assertion failure instead of an error message. [perl
403#127262]
404
6fee6573 405=back
002a7765 406
6fee6573 407=head1 Known Problems
84279daf 408
6fee6573
S
409XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
410tests that had to be C<TODO>ed for the release would be noted here. Unfixed
411platform specific bugs also go here.
84279daf 412
6fee6573 413[ List each fix as a =item entry ]
84279daf 414
6fee6573 415=over 4
84279daf 416
54e70d91
TC
417=item *
418
6fee6573 419XXX
46d34d0e 420
6fee6573 421=back
46d34d0e 422
6fee6573 423=head1 Errata From Previous Releases
ac33c516 424
6fee6573 425=over 4
ac33c516 426
9857cc20
S
427=item *
428
6fee6573
S
429XXX Add anything here that we forgot to add, or were mistaken about, in
430the perldelta of a previous release.
9857cc20 431
af8a293f 432=back
3c84cb84 433
6fee6573 434=head1 Obituary
0057cacf 435
6fee6573
S
436XXX If any significant core contributor has died, we've added a short obituary
437here.
5a74572e 438
6fee6573 439=head1 Acknowledgements
e1ad135d 440
6fee6573 441XXX Generate this with:
e1ad135d 442
6fee6573 443 perl Porting/acknowledgements.pl v5.23.8..HEAD
f5b73711 444
44691e6f
AB
445=head1 Reporting Bugs
446
e08634c5
SH
447If you find what you think is a bug, you might check the articles recently
448posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
449L<https://rt.perl.org/> . There may also be information at
450L<http://www.perl.org/> , the Perl Home Page.
44691e6f 451
e08634c5
SH
452If you believe you have an unreported bug, please run the L<perlbug> program
453included with your release. Be sure to trim your bug down to a tiny but
454sufficient test case. Your bug report, along with the output of C<perl -V>,
455will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
456
457If the bug you are reporting has security implications, which make it
e08634c5
SH
458inappropriate to send to a publicly archived mailing list, then please send it
459to perl5-security-report@perl.org. This points to a closed subscription
460unarchived mailing list, which includes all the core committers, who will be
461able to help assess the impact of issues, figure out a resolution, and help
f9001595 462co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
463platforms on which Perl is supported. Please only use this address for
464security issues in the Perl core, not for modules independently distributed on
465CPAN.
44691e6f
AB
466
467=head1 SEE ALSO
468
e08634c5
SH
469The F<Changes> file for an explanation of how to view exhaustive details on
470what changed.
44691e6f
AB
471
472The F<INSTALL> file for how to build Perl.
473
474The F<README> file for general stuff.
475
476The F<Artistic> and F<Copying> files for copyright information.
477
478=cut