This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Pod-Simple 3.23
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
e08634c5
SH
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
417a992d 7
4eabcf70 8perldelta - what is new for perl v5.17.3
e128ab2c 9
4eabcf70 10=head1 DESCRIPTION
6db9054f 11
e08634c5
SH
12This document describes differences between the 5.17.2 release and the 5.17.3
13release.
6db9054f 14
4eabcf70 15If you are upgrading from an earlier release such as 5.17.1, first read
e08634c5 16L<perl5172delta>, which describes differences between 5.17.1 and 5.17.2.
ef7131e9 17
4eabcf70 18=head1 Notice
ff3f295c 19
4eabcf70 20XXX Any important notices here
95c6c5c5 21
4eabcf70 22=head1 Core Enhancements
95c6c5c5 23
e08634c5
SH
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
4eabcf70 26here, but most should go in the L</Performance Enhancements> section.
4c77591b 27
4eabcf70 28[ List each enhancement as a =head2 entry ]
c506fc7e 29
6ed07037
FC
30=head2 Computed Labels
31
32The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
33operator, now allow arbitrary expressions to be used to compute labels at
34run time. Previously, any argument that was not a constant was treated as
35the empty string.
36
4eabcf70 37=head1 Security
36ab1671 38
4eabcf70
TC
39XXX Any security-related notices go here. In particular, any security
40vulnerabilities closed should be noted here rather than in the
41L</Selected Bug Fixes> section.
36ab1671 42
4eabcf70 43[ List each security issue as a =head2 entry ]
36ab1671 44
4eabcf70 45=head1 Incompatible Changes
df2c1bb8 46
613c63b4 47[ List each incompatible change as a =head2 entry ]
df2c1bb8 48
613c63b4 49=head2 C<$ENV{foo} = undef> deletes value from environ, like C<delete $ENV{foo}>
df2c1bb8 50
613c63b4
CS
51This facilitates use of C<local()> with C<%ENV> entries. In previous
52versions of Perl, C<undef> was converted to the empty string.
53
54=head2 Defined values stored in environment are forced to byte strings
55
56A value stored in an environment variable has always been stringified. In
57this release, it is converted to be only a byte string. First, it is forced
58to be a only a string. Then if the string is utf8 and the equivalent of
9c5f5e7a
SH
59C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
60C<utf8::encode()> is used, and a warning is issued about wide characters
613c63b4 61(L</Diagnostics>).
7ab2ea42 62
9c5f5e7a 63=head2 C<given> now aliases the global C<$_>
e7d41eaa 64
9c5f5e7a
SH
65Instead of assigning to an implicit lexical C<$_>, C<given> now makes the
66global C<$_> an alias for its argument, just like C<foreach>. However, it
67still uses lexical C<$_> if there is lexical C<$_> in scope (again, just like
e7d41eaa
FC
68C<foreach>).
69
4eabcf70 70=head1 Deprecations
7ab2ea42 71
e08634c5
SH
72XXX Any deprecated features, syntax, modules etc. should be listed here. In
73particular, deprecated modules should be listed here even if they are listed as
74an updated module in the L</Modules and Pragmata> section.
7ab2ea42 75
4eabcf70 76[ List each deprecation as a =head2 entry ]
7ab2ea42 77
4eabcf70 78=head1 Performance Enhancements
3be135d8 79
e08634c5
SH
80XXX Changes which enhance performance without changing behaviour go here.
81There may well be none in a stable release.
3be135d8 82
4eabcf70 83[ List each enhancement as a =item entry ]
6db9054f 84
4eabcf70 85=over 4
6db9054f 86
7ca04d94
TC
87=item *
88
4eabcf70 89XXX
7ca04d94 90
e96e0834 91=back
c506fc7e 92
4eabcf70 93=head1 Modules and Pragmata
95c6c5c5 94
4eabcf70
TC
95XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
96go here. If Module::CoreList is updated, generate an initial draft of the
97following sections using F<Porting/corelist-perldelta.pl>, which prints stub
98entries to STDOUT. Results can be pasted in place of the '=head2' entries
99below. A paragraph summary for important changes should then be added by hand.
100In an ideal world, dual-life modules would have a F<Changes> file that could be
101cribbed.
95c6c5c5 102
4eabcf70
TC
103[ Within each section, list entries as a =item entry ]
104
105=head2 New Modules and Pragmata
95c6c5c5 106
e96e0834 107=over 4
95c6c5c5
JL
108
109=item *
110
4eabcf70 111XXX
95c6c5c5 112
e96e0834 113=back
95c6c5c5 114
4eabcf70 115=head2 Updated Modules and Pragmata
95c6c5c5 116
e96e0834 117=over 4
95c6c5c5 118
95c6c5c5
JL
119=item *
120
9c5f5e7a
SH
121L<B> has been upgraded from version 1.36 to 1.37. All C<CVf_*> and C<GVf_*>
122and more SV-related flag values are now provided as constants in the C<B::>
123namespace and available for export. The default export list has not changed.
124
125=item *
126
014bf826
SH
127L<B::Concise> has been upgraded from version 0.91 to 0.92. The C<-nobanner>
128option has been fixed, and C<format>s can now be dumped.
b8a55fe7 129
32ed16fc
FC
130=item *
131
132L<B::Deparse> has been upgraded from version 1.15 to 1.16. It now deparses
014bf826
SH
133loop controls with the correct precedence, and multiple statements in a
134C<format> line are also now deparsed correctly.
32ed16fc 135
63870e6d
FC
136=item *
137
014bf826
SH
138L<Compress::Raw::Bzip2> has been upgraded from version 2.05201 to 2.055. The
139misuse of Perl's "magic" API has been fixed.
9c5f5e7a
SH
140
141=item *
142
014bf826
SH
143L<Compress::Raw::Zlib> has been upgraded from version 2.05401 to 2.056. The
144misuse of Perl's "magic" API has been fixed.
9c5f5e7a
SH
145
146=item *
147
014bf826
SH
148L<Compress::Zlib> has been upgraded from version 2.052 to 2.055.
149C<compress()>, C<uncompress()>, C<memGzip()> and C<memGunzip()> have been
150speeded up by making parameter validation more efficient.
afae8808
SH
151
152=item *
153
9c5f5e7a
SH
154L<Data::Dumper> has been upgraded from version 2.135_06 to 2.135_07. It has
155been optimized to only build a seen-scalar hash as necessary, thereby speeding
156up serialization drastically.
157
158=item *
159
014bf826
SH
160L<Devel::Peek> has been upgraded from version 1.08 to 1.09. The only change has
161been to the test script, to account for changes to some flags in perl's
162internals.
9c5f5e7a
SH
163
164=item *
165
014bf826
SH
166L<Encode> has been upgraded from version 2.44 to 2.46. The Mac alias x-mac-ce
167has been added, and various bugs have been fixed in Encode::Unicode and
168Encode::UTF7.
9c5f5e7a
SH
169
170=item *
171
014bf826
SH
172L<Module::Build> has been upgraded from version 0.40 to 0.4002. A minor bug fix
173allows markup to be used around the leading "Name" in a POD "abstract" line, and
174some documentation improvements have been made.
9c5f5e7a
SH
175
176=item *
177
014bf826
SH
178L<Module::CoreList> has been upgraded from version 2.69 to 2.70. Version
179information is now stored as a delta, which greatly reduces the size of the
180F<CoreList.pm> file.
9c5f5e7a
SH
181
182=item *
183
014bf826
SH
184L<Module::Load::Conditional> has been upgraded from version 0.50 to 0.54.
185Various enhancements include the new use of Module::Metadata.
9c5f5e7a
SH
186
187=item *
188
014bf826
SH
189L<Module::Metadata> has been upgraded from version 1.000009 to 1.000010. The
190creation of a Module::Metadata object for a typical module file has been sped up
191by about 40%.
9c5f5e7a
SH
192
193=item *
194
0ace302a
SH
195L<Pod::Simple> has been upgraded from version 3.20 to 3.23. Numerous
196improvements have been made, mostly to Pod::Simple::XHTML, which also has a
197compatibility change: the C<codes_in_verbatim> option is now disabled by
198default. See F<cpan/Pod-Simple/ChangeLog> for the full details.
199
200=item *
201
014bf826
SH
202L<re> has been upgraded from version 0.21 to 0.22. Single character [class]es
203like C</[s]/> or C</[s]/i> are now optimized as if they did not have the
204brackets, i.e. C</s/> or C</s/i>.
9c5f5e7a
SH
205
206=item *
207
63870e6d
FC
208L<Storable> has been upgraded from version 2.37 to 2.38. It can now freeze
209and thaw vstrings correctly. This causes a slight incompatible change in
210the storage format, so the format version has increased to 2.9.
211
930a023a
S
212=item *
213
014bf826
SH
214L<Time::Local> has been upgraded from version 1.2000 to 1.2300. Seconds values
215greater than 59 but less than 60 no longer cause C<timegm()> and C<timelocal()>
216to croak.
9c5f5e7a
SH
217
218=item *
219
014bf826
SH
220L<Unicode::UCD> has been upgraded from version 0.44 to 0.45. This has been
221modified slightly for reasons of perl internal use only.
9c5f5e7a
SH
222
223=item *
224
014bf826
SH
225L<Win32CORE> has been upgraded from version 0.02 to 0.03. The use of
226PERL_NO_GET_CONTEXT here has resulted in smaller machine code.
4f85bc45 227
4eabcf70 228=back
72267260 229
4eabcf70 230=head1 Documentation
72267260 231
e08634c5
SH
232XXX Changes to files in F<pod/> go here. Consider grouping entries by file and
233be sure to link to the appropriate page, e.g. L<perlfunc>.
4f85bc45 234
4eabcf70 235=head2 New Documentation
7d101ed1 236
4eabcf70 237XXX Changes which create B<new> files in F<pod/> go here.
e013ada0 238
4eabcf70 239=head3 L<XXX>
4f85bc45 240
4eabcf70 241XXX Description of the purpose of the new file here
e013ada0 242
4eabcf70 243=head2 Changes to Existing Documentation
95c6c5c5 244
4eabcf70
TC
245XXX Changes which significantly change existing files in F<pod/> go here.
246However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
247section.
95c6c5c5 248
be28af6e 249=head3 L<perlfunc>, L<perlop>
95c6c5c5 250
e96e0834 251=over 4
95c6c5c5
JL
252
253=item *
254
be28af6e
FC
255Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have
256always had the same precedence as assignment operators, but this was never
257documented until now.
95c6c5c5 258
e96e0834 259=back
95c6c5c5 260
4eabcf70 261=head1 Diagnostics
05c8f9ed 262
4eabcf70
TC
263The following additions or changes have been made to diagnostic output,
264including warnings and fatal error messages. For the complete list of
265diagnostic messages, see L<perldiag>.
ceb0881c 266
e08634c5 267XXX New or changed warnings emitted by the core's C<C> code go here. Also
4eabcf70 268include any changes in L<perldiag> that reconcile it to the C<C> code.
0998713f 269
4eabcf70 270=head2 New Diagnostics
42d72fc5 271
e08634c5
SH
272XXX Newly added diagnostic messages go under here, separated into New Errors
273and New Warnings
613c63b4 274
4eabcf70 275=head3 New Errors
8e125188 276
e96e0834 277=over 4
e128ab2c 278
e2f0c3bb
FC
279=item *
280
08b2a930
FC
281L<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
282
9c5f5e7a
SH
283This message now occurs when a here document label has an initial quotation
284mark but the final quotation mark is missing.
08b2a930
FC
285
286This replaces a bogus and misleading error message about not finding the
287label itself [perl #114104].
16e4fcbf 288
4eabcf70 289=back
e2f0c3bb 290
4eabcf70 291=head3 New Warnings
90519d0f 292
4eabcf70 293=over 4
90519d0f
FC
294
295=item *
296
afae8808 297L<Wide character in setenv|perldiag/"Wide character in %s">
e08634c5
SH
298
299Attempts to put wide characters into environment variables via C<%ENV> now
300provoke this warning.
90519d0f 301
61174fb5 302=back
422287bf 303
4eabcf70
TC
304=head2 Changes to Existing Diagnostics
305
306XXX Changes (i.e. rewording) of diagnostic messages go here
2de6ba8d 307
e128ab2c
DM
308=over 4
309
310=item *
311
4eabcf70 312XXX Describe change here
e128ab2c 313
4eabcf70 314=back
8b1adbab 315
4eabcf70 316=head1 Utility Changes
8b1adbab 317
e08634c5
SH
318XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
319Most of these are built within the directories F<utils> and F<x2p>.
83f29afa 320
4eabcf70
TC
321[ List utility changes as a =head3 entry for each utility and =item
322entries for each change
323Use L<XXX> with program names to get proper documentation linking. ]
83f29afa 324
4eabcf70 325=head3 L<XXX>
0938f143 326
4eabcf70 327=over 4
0938f143 328
72267260
JL
329=item *
330
4eabcf70 331XXX
7a251f7a 332
4eabcf70 333=back
7a251f7a 334
4eabcf70 335=head1 Configuration and Compilation
21247d85 336
4eabcf70
TC
337XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
338go here. Any other changes to the Perl build process should be listed here.
339However, any platform-specific changes should be listed in the
340L</Platform Support> section, instead.
21247d85 341
4eabcf70 342[ List changes as a =item entry ].
2e4f8b82 343
4eabcf70 344=over 4
c95d4104 345
788505db
FC
346=item *
347
4eabcf70 348XXX
788505db 349
4eabcf70 350=back
2c2b9cf4 351
4eabcf70 352=head1 Testing
3cd56aaa 353
4eabcf70
TC
354XXX Any significant changes to the testing of a freshly built perl should be
355listed here. Changes which create B<new> files in F<t/> go here as do any
356large changes to the testing harness (e.g. when parallel testing was added).
e08634c5 357Changes to existing files in F<t/> aren't worth summarizing, although the bugs
4eabcf70 358that they represent may be covered elsewhere.
3cd56aaa 359
4eabcf70 360[ List each test improvement as a =item entry ]
3cd56aaa 361
4eabcf70 362=over 4
3cd56aaa
TC
363
364=item *
365
4eabcf70 366XXX
3cd56aaa 367
4eabcf70 368=back
3cd56aaa 369
4eabcf70 370=head1 Platform Support
3cd56aaa 371
4eabcf70 372XXX Any changes to platform support should be listed in the sections below.
3cd56aaa 373
4eabcf70
TC
374[ Within the sections, list each platform as a =item entry with specific
375changes as paragraphs below it. ]
3cd56aaa 376
4eabcf70 377=head2 New Platforms
3cd56aaa 378
4eabcf70 379XXX List any platforms that this version of perl compiles on, that previous
e08634c5 380versions did not . These will either be enabled by new files in the F<hints/>
4eabcf70
TC
381directories, or new subdirectories and F<README> files at the top level of the
382source tree.
3cd56aaa 383
4eabcf70 384=over 4
3cd56aaa 385
4eabcf70 386=item XXX-some-platform
3cd56aaa 387
4eabcf70 388XXX
c0c19433 389
4eabcf70 390=back
c0c19433 391
4eabcf70 392=head2 Discontinued Platforms
7ab2ea42 393
4eabcf70 394XXX List any platforms that this version of perl no longer compiles on.
7ab2ea42 395
4eabcf70 396=over 4
7ab2ea42 397
4eabcf70 398=item XXX-some-platform
7ab2ea42 399
4eabcf70 400XXX
90519d0f 401
4eabcf70 402=back
90519d0f 403
4eabcf70 404=head2 Platform-Specific Notes
90519d0f 405
e08634c5 406XXX List any changes for specific platforms. This could include configuration
4eabcf70
TC
407and compilation changes or changes in portability/compatibility. However,
408changes within modules for platforms should generally be listed in the
409L</Modules and Pragmata> section.
90519d0f 410
4eabcf70 411=over 4
90519d0f 412
4eabcf70 413=item XXX-some-platform
90519d0f 414
4eabcf70 415XXX
90519d0f 416
4eabcf70 417=back
90519d0f 418
4eabcf70 419=head1 Internal Changes
90519d0f 420
e08634c5
SH
421XXX Changes which affect the interface available to C<XS> code go here. Other
422significant internal changes for future core maintainers should be noted as
423well.
90519d0f 424
4eabcf70 425[ List each change as a =item entry ]
90519d0f 426
4eabcf70 427=over 4
90519d0f
FC
428
429=item *
430
4eabcf70 431XXX
90519d0f 432
4eabcf70 433=back
90519d0f 434
4eabcf70 435=head1 Selected Bug Fixes
90519d0f 436
e08634c5
SH
437XXX Important bug fixes in the core language are summarized here. Bug fixes in
438files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
90519d0f 439
4eabcf70 440[ List each fix as a =item entry ]
90519d0f 441
4eabcf70 442=over 4
90519d0f
FC
443
444=item *
445
7a4d6ad6
KW
446C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and
447U+200D (ZERO WIDTH JOINER). C<\W> no longer matches these. This change
448is because Unicode corrected their definition of what C<\w> should match.
90519d0f 449
77f5d539
FC
450=item *
451
452C<dump LABEL> no longer leaks its label.
453
3e81bef2
FC
454=item *
455
9c5f5e7a
SH
456Constant folding no longer changes the behaviour of functions like C<stat()>
457and C<truncate()> that can take either filenames or handles.
3e81bef2
FC
458C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is
459an arbitrary expression), rather than the handle "foo".
460
e9f497c4
FC
461=item *
462
463C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name
464if the filehandle has been deleted. This was broken in Perl 5.16.0.
465
d7f7c515
FC
466=item *
467
468Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
469longer cause double frees or panic messages.
470
afc04f16
FC
471=item *
472
473C<s///> now turns vstrings into plain strings when performing a
474substitution, even if the resulting string is the same (C<s/a/a/>).
475
b4cf37f5
FC
476=item *
477
478Prototype mismatch warnings no longer erroneously treat constant subs as
479having no prototype when they actually have "".
480
481=item *
482
483Constant subroutines and forward declarations no longer prevent prototype
484mismatch warnings from omitting the sub name.
485
ea9f761d
FC
486=item *
487
488C<undef> on a subroutine now clears call checkers.
489
70306497
FC
490=item *
491
492The C<ref> operator started leaking memory on blessed objects in Perl
4935.16.0. This has been fixed [perl #114340].
494
4eabcf70 495=back
90519d0f 496
4eabcf70 497=head1 Known Problems
b8a55fe7 498
e08634c5
SH
499XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
500tests that had to be C<TODO>ed for the release would be noted here. Unfixed
4eabcf70 501platform specific bugs also go here.
b8a55fe7 502
4eabcf70 503[ List each fix as a =item entry ]
b8a55fe7 504
4eabcf70 505=over 4
b8a55fe7
FC
506
507=item *
508
4eabcf70 509XXX
b8a55fe7 510
4eabcf70 511=back
5073ffbd 512
4eabcf70 513=head1 Obituary
5073ffbd 514
4eabcf70
TC
515XXX If any significant core contributor has died, we've added a short obituary
516here.
e128ab2c 517
61174fb5 518=head1 Acknowledgements
d5dc7001 519
4eabcf70
TC
520XXX Generate this with:
521
522 perl Porting/acknowledgements.pl v5.17.2..HEAD
29cf780c 523
44691e6f
AB
524=head1 Reporting Bugs
525
e08634c5
SH
526If you find what you think is a bug, you might check the articles recently
527posted to the comp.lang.perl.misc newsgroup and the perl bug database at
528http://rt.perl.org/perlbug/ . There may also be information at
529http://www.perl.org/ , the Perl Home Page.
44691e6f 530
e08634c5
SH
531If you believe you have an unreported bug, please run the L<perlbug> program
532included with your release. Be sure to trim your bug down to a tiny but
533sufficient test case. Your bug report, along with the output of C<perl -V>,
534will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
535
536If the bug you are reporting has security implications, which make it
e08634c5
SH
537inappropriate to send to a publicly archived mailing list, then please send it
538to perl5-security-report@perl.org. This points to a closed subscription
539unarchived mailing list, which includes all the core committers, who will be
540able to help assess the impact of issues, figure out a resolution, and help
f9001595 541co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
542platforms on which Perl is supported. Please only use this address for
543security issues in the Perl core, not for modules independently distributed on
544CPAN.
44691e6f
AB
545
546=head1 SEE ALSO
547
e08634c5
SH
548The F<Changes> file for an explanation of how to view exhaustive details on
549what changed.
44691e6f
AB
550
551The F<INSTALL> file for how to build Perl.
552
553The F<README> file for general stuff.
554
555The F<Artistic> and F<Copying> files for copyright information.
556
557=cut