This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 2ba1f20ac3a (loopex prec docs)
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
4eabcf70
TC
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
417a992d 7
4eabcf70 8perldelta - what is new for perl v5.17.3
e128ab2c 9
4eabcf70 10=head1 DESCRIPTION
6db9054f 11
4eabcf70
TC
12This document describes differences between the 5.17.2 release and
13the 5.17.3 release.
6db9054f 14
4eabcf70
TC
15If you are upgrading from an earlier release such as 5.17.1, first read
16L<perl5172delta>, which describes differences between 5.17.1 and
175.17.2.
ef7131e9 18
4eabcf70 19=head1 Notice
ff3f295c 20
4eabcf70 21XXX Any important notices here
95c6c5c5 22
4eabcf70 23=head1 Core Enhancements
95c6c5c5 24
4eabcf70
TC
25XXX New core language features go here. Summarise user-visible core language
26enhancements. Particularly prominent performance optimisations could go
27here, but most should go in the L</Performance Enhancements> section.
4c77591b 28
4eabcf70 29[ List each enhancement as a =head2 entry ]
c506fc7e 30
4eabcf70 31=head1 Security
36ab1671 32
4eabcf70
TC
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.
36ab1671 36
4eabcf70 37[ List each security issue as a =head2 entry ]
36ab1671 38
4eabcf70 39=head1 Incompatible Changes
df2c1bb8 40
613c63b4 41[ List each incompatible change as a =head2 entry ]
df2c1bb8 42
613c63b4 43=head2 C<$ENV{foo} = undef> deletes value from environ, like C<delete $ENV{foo}>
df2c1bb8 44
613c63b4
CS
45This facilitates use of C<local()> with C<%ENV> entries. In previous
46versions of Perl, C<undef> was converted to the empty string.
47
48=head2 Defined values stored in environment are forced to byte strings
49
50A value stored in an environment variable has always been stringified. In
51this release, it is converted to be only a byte string. First, it is forced
52to be a only a string. Then if the string is utf8 and the equivalent of
53C<utf8::downgrade> works, that result is used; otherwise, the equivalent of
54C<utf8::encode> is used, and a warning is issued about wide characters
55(L</Diagnostics>).
7ab2ea42 56
4eabcf70 57=head1 Deprecations
7ab2ea42 58
4eabcf70
TC
59XXX Any deprecated features, syntax, modules etc. should be listed here.
60In particular, deprecated modules should be listed here even if they are
61listed as an updated module in the L</Modules and Pragmata> section.
7ab2ea42 62
4eabcf70 63[ List each deprecation as a =head2 entry ]
7ab2ea42 64
4eabcf70 65=head1 Performance Enhancements
3be135d8 66
4eabcf70
TC
67XXX Changes which enhance performance without changing behaviour go here. There
68may well be none in a stable release.
3be135d8 69
4eabcf70 70[ List each enhancement as a =item entry ]
6db9054f 71
4eabcf70 72=over 4
6db9054f 73
7ca04d94
TC
74=item *
75
4eabcf70 76XXX
7ca04d94 77
e96e0834 78=back
c506fc7e 79
4eabcf70 80=head1 Modules and Pragmata
95c6c5c5 81
4eabcf70
TC
82XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
83go here. If Module::CoreList is updated, generate an initial draft of the
84following sections using F<Porting/corelist-perldelta.pl>, which prints stub
85entries to STDOUT. Results can be pasted in place of the '=head2' entries
86below. A paragraph summary for important changes should then be added by hand.
87In an ideal world, dual-life modules would have a F<Changes> file that could be
88cribbed.
95c6c5c5 89
4eabcf70
TC
90[ Within each section, list entries as a =item entry ]
91
92=head2 New Modules and Pragmata
95c6c5c5 93
e96e0834 94=over 4
95c6c5c5
JL
95
96=item *
97
4eabcf70 98XXX
95c6c5c5 99
e96e0834 100=back
95c6c5c5 101
4eabcf70 102=head2 Updated Modules and Pragmata
95c6c5c5 103
e96e0834 104=over 4
95c6c5c5 105
95c6c5c5
JL
106=item *
107
6b1793dd
NC
108L<B> has been upgraded from version 1.36 to version 1.37. All C<CVf_*> and
109C<GVf_*> and more SV-related flag values are now provided as constants in
110the C<B::> namespace and available for export. The default export list has
111not changed.
b8a55fe7 112
e96e0834 113=back
95c6c5c5 114
4eabcf70 115=head2 Removed Modules and Pragmata
95c6c5c5 116
e96e0834 117=over 4
95c6c5c5 118
95c6c5c5
JL
119=item *
120
4eabcf70 121XXX
4f85bc45 122
4eabcf70 123=back
72267260 124
4eabcf70 125=head1 Documentation
72267260 126
4eabcf70
TC
127XXX Changes to files in F<pod/> go here. Consider grouping entries by
128file and be sure to link to the appropriate page, e.g. L<perlfunc>.
4f85bc45 129
4eabcf70 130=head2 New Documentation
7d101ed1 131
4eabcf70 132XXX Changes which create B<new> files in F<pod/> go here.
e013ada0 133
4eabcf70 134=head3 L<XXX>
4f85bc45 135
4eabcf70 136XXX Description of the purpose of the new file here
e013ada0 137
4eabcf70 138=head2 Changes to Existing Documentation
95c6c5c5 139
4eabcf70
TC
140XXX Changes which significantly change existing files in F<pod/> go here.
141However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
142section.
95c6c5c5 143
be28af6e 144=head3 L<perlfunc>, L<perlop>
95c6c5c5 145
e96e0834 146=over 4
95c6c5c5
JL
147
148=item *
149
be28af6e
FC
150Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have
151always had the same precedence as assignment operators, but this was never
152documented until now.
95c6c5c5 153
e96e0834 154=back
95c6c5c5 155
4eabcf70 156=head1 Diagnostics
05c8f9ed 157
4eabcf70
TC
158The following additions or changes have been made to diagnostic output,
159including warnings and fatal error messages. For the complete list of
160diagnostic messages, see L<perldiag>.
ceb0881c 161
4eabcf70
TC
162XXX New or changed warnings emitted by the core's C<C> code go here. Also
163include any changes in L<perldiag> that reconcile it to the C<C> code.
0998713f 164
4eabcf70
TC
165[ Within each section, list entries as a =item entry that links to perldiag,
166 e.g.
112b6866 167
4eabcf70 168 =item *
112b6866 169
4eabcf70
TC
170 L<Invalid version object|perldiag/"Invalid version object">
171]
42d72fc5 172
4eabcf70 173=head2 New Diagnostics
42d72fc5 174
4eabcf70 175XXX Newly added diagnostic messages go here
8e125188 176
613c63b4
CS
177=over 4
178
179=item *
180
181Attempts to put wide characters into environment variables via %ENV provoke
182the warning "Wide character in setenv".
183
184=back
185
4eabcf70 186=head3 New Errors
8e125188 187
e96e0834 188=over 4
e128ab2c 189
e2f0c3bb
FC
190=item *
191
4eabcf70 192XXX L<message|perldiag/"message">
16e4fcbf 193
4eabcf70 194=back
e2f0c3bb 195
4eabcf70 196=head3 New Warnings
90519d0f 197
4eabcf70 198=over 4
90519d0f
FC
199
200=item *
201
4eabcf70 202XXX L<message|perldiag/"message">
90519d0f 203
61174fb5 204=back
422287bf 205
4eabcf70
TC
206=head2 Changes to Existing Diagnostics
207
208XXX Changes (i.e. rewording) of diagnostic messages go here
2de6ba8d 209
e128ab2c
DM
210=over 4
211
212=item *
213
4eabcf70 214XXX Describe change here
e128ab2c 215
4eabcf70 216=back
8b1adbab 217
4eabcf70 218=head1 Utility Changes
8b1adbab 219
4eabcf70
TC
220XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
221here. Most of these are built within the directories F<utils> and F<x2p>.
83f29afa 222
4eabcf70
TC
223[ List utility changes as a =head3 entry for each utility and =item
224entries for each change
225Use L<XXX> with program names to get proper documentation linking. ]
83f29afa 226
4eabcf70 227=head3 L<XXX>
0938f143 228
4eabcf70 229=over 4
0938f143 230
72267260
JL
231=item *
232
4eabcf70 233XXX
7a251f7a 234
4eabcf70 235=back
7a251f7a 236
4eabcf70 237=head1 Configuration and Compilation
21247d85 238
4eabcf70
TC
239XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
240go here. Any other changes to the Perl build process should be listed here.
241However, any platform-specific changes should be listed in the
242L</Platform Support> section, instead.
21247d85 243
4eabcf70 244[ List changes as a =item entry ].
2e4f8b82 245
4eabcf70 246=over 4
c95d4104 247
788505db
FC
248=item *
249
4eabcf70 250XXX
788505db 251
4eabcf70 252=back
2c2b9cf4 253
4eabcf70 254=head1 Testing
3cd56aaa 255
4eabcf70
TC
256XXX Any significant changes to the testing of a freshly built perl should be
257listed here. Changes which create B<new> files in F<t/> go here as do any
258large changes to the testing harness (e.g. when parallel testing was added).
259Changes to existing files in F<t/> aren't worth summarising, although the bugs
260that they represent may be covered elsewhere.
3cd56aaa 261
4eabcf70 262[ List each test improvement as a =item entry ]
3cd56aaa 263
4eabcf70 264=over 4
3cd56aaa
TC
265
266=item *
267
4eabcf70 268XXX
3cd56aaa 269
4eabcf70 270=back
3cd56aaa 271
4eabcf70 272=head1 Platform Support
3cd56aaa 273
4eabcf70 274XXX Any changes to platform support should be listed in the sections below.
3cd56aaa 275
4eabcf70
TC
276[ Within the sections, list each platform as a =item entry with specific
277changes as paragraphs below it. ]
3cd56aaa 278
4eabcf70 279=head2 New Platforms
3cd56aaa 280
4eabcf70
TC
281XXX List any platforms that this version of perl compiles on, that previous
282versions did not. These will either be enabled by new files in the F<hints/>
283directories, or new subdirectories and F<README> files at the top level of the
284source tree.
3cd56aaa 285
4eabcf70 286=over 4
3cd56aaa 287
4eabcf70 288=item XXX-some-platform
3cd56aaa 289
4eabcf70 290XXX
c0c19433 291
4eabcf70 292=back
c0c19433 293
4eabcf70 294=head2 Discontinued Platforms
7ab2ea42 295
4eabcf70 296XXX List any platforms that this version of perl no longer compiles on.
7ab2ea42 297
4eabcf70 298=over 4
7ab2ea42 299
4eabcf70 300=item XXX-some-platform
7ab2ea42 301
4eabcf70 302XXX
90519d0f 303
4eabcf70 304=back
90519d0f 305
4eabcf70 306=head2 Platform-Specific Notes
90519d0f 307
4eabcf70
TC
308XXX List any changes for specific platforms. This could include configuration
309and compilation changes or changes in portability/compatibility. However,
310changes within modules for platforms should generally be listed in the
311L</Modules and Pragmata> section.
90519d0f 312
4eabcf70 313=over 4
90519d0f 314
4eabcf70 315=item XXX-some-platform
90519d0f 316
4eabcf70 317XXX
90519d0f 318
4eabcf70 319=back
90519d0f 320
4eabcf70 321=head1 Internal Changes
90519d0f 322
4eabcf70
TC
323XXX Changes which affect the interface available to C<XS> code go here.
324Other significant internal changes for future core maintainers should
325be noted as well.
90519d0f 326
4eabcf70 327[ List each change as a =item entry ]
90519d0f 328
4eabcf70 329=over 4
90519d0f
FC
330
331=item *
332
4eabcf70 333XXX
90519d0f 334
4eabcf70 335=back
90519d0f 336
4eabcf70 337=head1 Selected Bug Fixes
90519d0f 338
4eabcf70
TC
339XXX Important bug fixes in the core language are summarised here.
340Bug fixes in files in F<ext/> and F<lib/> are best summarised in
341L</Modules and Pragmata>.
90519d0f 342
4eabcf70 343[ List each fix as a =item entry ]
90519d0f 344
4eabcf70 345=over 4
90519d0f
FC
346
347=item *
348
7a4d6ad6
KW
349C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and
350U+200D (ZERO WIDTH JOINER). C<\W> no longer matches these. This change
351is because Unicode corrected their definition of what C<\w> should match.
90519d0f 352
77f5d539
FC
353=item *
354
355C<dump LABEL> no longer leaks its label.
356
3e81bef2
FC
357=item *
358
359Constant folding no longer changes the behaviour of functions like C<stat>
360and C<truncate> that can take either filenames or handles.
361C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is
362an arbitrary expression), rather than the handle "foo".
363
e9f497c4
FC
364=item *
365
366C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name
367if the filehandle has been deleted. This was broken in Perl 5.16.0.
368
d7f7c515
FC
369=item *
370
371Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
372longer cause double frees or panic messages.
373
4eabcf70 374=back
90519d0f 375
4eabcf70 376=head1 Known Problems
b8a55fe7 377
4eabcf70
TC
378XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
379tests that had to be C<TODO>ed for the release would be noted here. Unfixed
380platform specific bugs also go here.
b8a55fe7 381
4eabcf70 382[ List each fix as a =item entry ]
b8a55fe7 383
4eabcf70 384=over 4
b8a55fe7
FC
385
386=item *
387
4eabcf70 388XXX
b8a55fe7 389
4eabcf70 390=back
5073ffbd 391
4eabcf70 392=head1 Obituary
5073ffbd 393
4eabcf70
TC
394XXX If any significant core contributor has died, we've added a short obituary
395here.
e128ab2c 396
61174fb5 397=head1 Acknowledgements
d5dc7001 398
4eabcf70
TC
399XXX Generate this with:
400
401 perl Porting/acknowledgements.pl v5.17.2..HEAD
29cf780c 402
44691e6f
AB
403=head1 Reporting Bugs
404
405If you find what you think is a bug, you might check the articles
52deee2e 406recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
407bug database at http://rt.perl.org/perlbug/ . There may also be
408information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
409
410If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
411program included with your release. Be sure to trim your bug down
412to a tiny but sufficient test case. Your bug report, along with the
413output of C<perl -V>, will be sent off to perlbug@perl.org to be
414analysed by the Perl porting team.
44691e6f
AB
415
416If the bug you are reporting has security implications, which make it
f9001595
RS
417inappropriate to send to a publicly archived mailing list, then please send
418it to perl5-security-report@perl.org. This points to a closed subscription
419unarchived mailing list, which includes
420all the core committers, who will be able
421to help assess the impact of issues, figure out a resolution, and help
422co-ordinate the release of patches to mitigate or fix the problem across all
423platforms on which Perl is supported. Please only use this address for
424security issues in the Perl core, not for modules independently
425distributed on CPAN.
44691e6f
AB
426
427=head1 SEE ALSO
428
52deee2e
DR
429The F<Changes> file for an explanation of how to view exhaustive details
430on what changed.
44691e6f
AB
431
432The F<INSTALL> file for how to build Perl.
433
434The F<README> file for general stuff.
435
436The F<Artistic> and F<Copying> files for copyright information.
437
438=cut