This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Avoid an extra SV when creating $] and $^V
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
d2006265
FC
3=for comment
4This has been completed up to 527d644b124fe.
5
44691e6f
AB
6=head1 NAME
7
63ac71b9
RS
8[ this is a template for a new perldelta file. Any text flagged as
9XXX needs to be processed before release. ]
10
f25d4e05 11perldelta - what is new for perl v5.15.3
760696b8 12
5438d4b8 13=head1 DESCRIPTION
5cd408a2 14
f25d4e05
RS
15This document describes differences between the 5.15.2 release and
16the 5.15.3 release.
5cd408a2 17
f25d4e05
RS
18If you are upgrading from an earlier release such as 5.15.1, first read
19L<perl5152delta>, which describes differences between 5.15.1 and
205.15.2.
062678b2 21
63ac71b9 22=head1 Notice
4185c919 23
63ac71b9 24XXX Any important notices here
0afed34d 25
63ac71b9 26=head1 Core Enhancements
0afed34d 27
63ac71b9
RS
28XXX New core language features go here. Summarise user-visible core language
29enhancements. Particularly prominent performance optimisations could go
30here, but most should go in the L</Performance Enhancements> section.
0afed34d 31
63ac71b9 32[ List each enhancement as a =head2 entry ]
0afed34d 33
d2006265
FC
34=head2 More CORE subs are callable through references
35
c148612c 36Perl 5.15.2 introduced subroutines in the CORE namespace. Most of them
d2006265
FC
37could only be called as barewords; i.e., they could be aliased at compile
38time and then inlined under new names.
39
2702a50a
FC
40Almost all of these functions can now be called through references and via
41C<&foo()> syntax, bypassing the prototype. See L<CORE> for a list of the
42exceptions.
d2006265 43
63ac71b9 44=head1 Security
0afed34d 45
63ac71b9
RS
46XXX Any security-related notices go here. In particular, any security
47vulnerabilities closed should be noted here rather than in the
48L</Selected Bug Fixes> section.
135c0b08 49
63ac71b9 50[ List each security issue as a =head2 entry ]
135c0b08 51
5438d4b8 52=head1 Incompatible Changes
7818c927 53
5d1892be 54=head2 User-defined case changing operations.
7b2b001e 55
5d1892be
KW
56This feature was deprecated in Perl 5.14, and has now been removed.
57The CPAN module L<Unicode::Casing> provides better functionality without
58the drawbacks that this feature had, as are detailed in the 5.14
59documentation:
60L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
bdb9ba77 61
7ec04da5
SM
62=head2 XSUBs are now 'static'
63
64XSUB C functions are now 'static', that is, they are not visible from
65outside the compilation unit. For the exceedingly rare case where
66this is not desired, a new public macro C<XS_EXTERNAL(name)> can be
67used in place of C<XS(name)>. C<ExtUtils::ParseXS> (C<xsubpp>)
68can be made to declare XSUBs with C<XS_EXTERNAL> using the
69C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
70
63ac71b9 71=head1 Deprecations
760696b8 72
63ac71b9
RS
73XXX Any deprecated features, syntax, modules etc. should be listed here.
74In particular, deprecated modules should be listed here even if they are
75listed as an updated module in the L</Modules and Pragmata> section.
760696b8 76
63ac71b9 77[ List each deprecation as a =head2 entry ]
760696b8 78
63ac71b9 79=head1 Performance Enhancements
115ff745 80
63ac71b9
RS
81XXX Changes which enhance performance without changing behaviour go here. There
82may well be none in a stable release.
115ff745 83
63ac71b9 84[ List each enhancement as a =item entry ]
115ff745 85
63ac71b9 86=over 4
4ea805df
CBW
87
88=item *
89
63ac71b9 90XXX
1ba7a2fb 91
63ac71b9 92=back
730e5b5b 93
63ac71b9 94=head1 Modules and Pragmata
730e5b5b 95
63ac71b9
RS
96XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
97go here. If Module::CoreList is updated, generate an initial draft of the
98following sections using F<Porting/corelist-perldelta.pl>, which prints stub
99entries to STDOUT. Results can be pasted in place of the '=head2' entries
100below. A paragraph summary for important changes should then be added by hand.
101In an ideal world, dual-life modules would have a F<Changes> file that could be
102cribbed.
730e5b5b 103
63ac71b9 104[ Within each section, list entries as a =item entry ]
730e5b5b 105
63ac71b9 106=head2 New Modules and Pragmata
a30cae0b 107
63ac71b9 108=over 4
a30cae0b
CBW
109
110=item *
111
63ac71b9 112XXX
bbc28bfc 113
63ac71b9 114=back
bbc28bfc 115
63ac71b9 116=head2 Updated Modules and Pragmata
e46d9735 117
63ac71b9 118=over 4
e46d9735
CBW
119
120=item *
121
aefcd4a2 122L<Archive::Extract> has been upgraded from version 0.52 to version 0.56
4afdee4c
CBW
123
124Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
57126352 125
d93f0209
FC
126=item *
127
d2006265
FC
128L<diagnostics> has been upgraded from version 1.24 to 1.25.
129
130It now strips out C<SZ<><...>> formatting codes before displaying
131descriptions [perl #94488].
132
133=item *
134
d93f0209
FC
135L<Math::BigRat> has been upgraded from version 0.2602 to 0.2603.
136
137C<int()> on a Math::BigRat object containing -1/2 now creates a
138Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even
139support negative zero, so the resulting object was actually malformed
140[perl #95530].
141
60527824
FR
142=item *
143
144L<Pod::Simple> has been upgraded from version 3.18 to 3.19.
145
63ac71b9 146=back
259925f6 147
63ac71b9 148=head2 Removed Modules and Pragmata
6252d2e2 149
63ac71b9 150=over 4
9840cdee
CBW
151
152=item *
153
63ac71b9 154XXX
54e02335 155
63ac71b9 156=back
310913d4 157
63ac71b9 158=head1 Documentation
310913d4 159
63ac71b9
RS
160XXX Changes to files in F<pod/> go here. Consider grouping entries by
161file and be sure to link to the appropriate page, e.g. L<perlfunc>.
7b2b001e 162
63ac71b9 163=head2 New Documentation
7b2b001e 164
63ac71b9 165XXX Changes which create B<new> files in F<pod/> go here.
7b2b001e 166
63ac71b9 167=head3 L<XXX>
2df9265e 168
63ac71b9 169XXX Description of the purpose of the new file here
2df9265e 170
63ac71b9 171=head2 Changes to Existing Documentation
2df9265e 172
63ac71b9
RS
173XXX Changes which significantly change existing files in F<pod/> go here.
174However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
175section.
dc80b0c6 176
63ac71b9 177=head3 L<XXX>
dc80b0c6 178
63ac71b9 179=over 4
83b32788
CBW
180
181=item *
182
63ac71b9 183XXX Description of the change here
4eb81ef2 184
63ac71b9 185=back
4eb81ef2 186
63ac71b9 187=head1 Diagnostics
4eb81ef2 188
63ac71b9
RS
189The following additions or changes have been made to diagnostic output,
190including warnings and fatal error messages. For the complete list of
191diagnostic messages, see L<perldiag>.
82eefd8a 192
63ac71b9
RS
193XXX New or changed warnings emitted by the core's C<C> code go here. Also
194include any changes in L<perldiag> that reconcile it to the C<C> code.
82eefd8a 195
63ac71b9
RS
196[ Within each section, list entries as a =item entry that links to perldiag,
197 e.g.
6252d2e2 198
63ac71b9 199 =item *
6252d2e2 200
63ac71b9
RS
201 L<Invalid version object|perldiag/"Invalid version object">
202]
5213914c 203
63ac71b9 204=head2 New Diagnostics
5213914c 205
63ac71b9 206XXX Newly added diagnostic messages go here
5213914c 207
63ac71b9 208=head3 New Errors
17609435 209
63ac71b9 210=over 4
17609435 211
69f26f52
CBW
212=item *
213
63ac71b9 214XXX L<message|perldiag/"message">
69f26f52 215
5438d4b8 216=back
77ccfaeb 217
63ac71b9 218=head3 New Warnings
c69a30ec 219
63ac71b9
RS
220=over 4
221
222=item *
7c420290 223
63ac71b9 224XXX L<message|perldiag/"message">
7818c927 225
63ac71b9 226=back
7818c927 227
63ac71b9 228=head2 Changes to Existing Diagnostics
dd413713 229
63ac71b9 230XXX Changes (i.e. rewording) of diagnostic messages go here
7818c927 231
5438d4b8 232=over 4
7818c927
FC
233
234=item *
235
63ac71b9 236XXX Describe change here
5aeca1f7 237
5438d4b8 238=back
5aeca1f7 239
63ac71b9 240=head1 Utility Changes
0cb4637e 241
63ac71b9
RS
242XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
243here. Most of these are built within the directories F<utils> and F<x2p>.
0cb4637e 244
63ac71b9
RS
245[ List utility changes as a =head3 entry for each utility and =item
246entries for each change
247Use L<XXX> with program names to get proper documentation linking. ]
4abaf918 248
63ac71b9 249=head3 L<XXX>
4abaf918 250
5438d4b8 251=over 4
4abaf918
Z
252
253=item *
254
63ac71b9 255XXX
8b00e523 256
e8e35311
FC
257=back
258
63ac71b9 259=head1 Configuration and Compilation
b908e258 260
63ac71b9
RS
261XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
262go here. Any other changes to the Perl build process should be listed here.
263However, any platform-specific changes should be listed in the
264L</Platform Support> section, instead.
b908e258 265
63ac71b9 266[ List changes as a =item entry ].
b908e258 267
63ac71b9 268=over 4
71449ad0
DG
269
270=item *
271
5ecd28b8
NC
272The file F<global.sym> is no longer needed, and has been removed. It
273contained a list of all exported functions, one of the files generated by
274F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
275has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
276now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
277store the list of exported functions in an intermediate file.
278
279As F<global.sym> was never installed, this change will not be visible
280outside the build process.
b908e258 281
6693394d
FC
282=back
283
63ac71b9 284=head1 Testing
bbc28bfc 285
63ac71b9
RS
286XXX Any significant changes to the testing of a freshly built perl should be
287listed here. Changes which create B<new> files in F<t/> go here as do any
288large changes to the testing harness (e.g. when parallel testing was added).
289Changes to existing files in F<t/> aren't worth summarising, although the bugs
290that they represent may be covered elsewhere.
bbc28bfc 291
63ac71b9 292[ List each test improvement as a =item entry ]
b7188eb5 293
34dc2ec0 294=over 4
42a91c97 295
6693394d 296=item *
42a91c97 297
c752c500
FC
298F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
299F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
300previously was it was possible to inadvertently commit changes that worked
301perfectly locally, but broke the build on Win32.
310913d4 302
d2006265
FC
303=item *
304
305F<t/op/unlink.t> has been added to test the C<unlink> function.
306
34dc2ec0 307=back
42a91c97 308
0890f1a5 309=head1 Platform Support
975dff8c 310
63ac71b9 311XXX Any changes to platform support should be listed in the sections below.
9cfd094e 312
63ac71b9
RS
313[ Within the sections, list each platform as a =item entry with specific
314changes as paragraphs below it. ]
9cfd094e 315
63ac71b9 316=head2 New Platforms
9cfd094e 317
63ac71b9
RS
318XXX List any platforms that this version of perl compiles on, that previous
319versions did not. These will either be enabled by new files in the F<hints/>
320directories, or new subdirectories and F<README> files at the top level of the
321source tree.
7c4c6e7c 322
5438d4b8 323=over 4
95f7e41f 324
63ac71b9 325=item XXX-some-platform
95f7e41f 326
63ac71b9 327XXX
df5b44bd 328
63ac71b9 329=back
310913d4 330
63ac71b9 331=head2 Discontinued Platforms
310913d4 332
63ac71b9 333XXX List any platforms that this version of perl no longer compiles on.
310913d4 334
63ac71b9
RS
335=over 4
336
337=item XXX-some-platform
338
339XXX
310913d4 340
5438d4b8 341=back
df5b44bd 342
63ac71b9
RS
343=head2 Platform-Specific Notes
344
345XXX List any changes for specific platforms. This could include configuration
346and compilation changes or changes in portability/compatibility. However,
347changes within modules for platforms should generally be listed in the
348L</Modules and Pragmata> section.
e22e289d 349
5438d4b8 350=over 4
7818c927 351
63ac71b9 352=item XXX-some-platform
7818c927 353
63ac71b9 354XXX
f79aa60b 355
63ac71b9 356=back
7818c927 357
63ac71b9 358=head1 Internal Changes
3fdd840f 359
63ac71b9
RS
360XXX Changes which affect the interface available to C<XS> code go here.
361Other significant internal changes for future core maintainers should
362be noted as well.
3fdd840f 363
63ac71b9 364[ List each change as a =item entry ]
7ffa7e75 365
63ac71b9 366=over 4
7ffa7e75 367
862b2c43
FC
368=item *
369
63ac71b9 370XXX
862b2c43 371
63ac71b9 372=back
c973bd4f 373
63ac71b9 374=head1 Selected Bug Fixes
a6cefd81 375
63ac71b9
RS
376XXX Important bug fixes in the core language are summarised here.
377Bug fixes in files in F<ext/> and F<lib/> are best summarised in
378L</Modules and Pragmata>.
a6cefd81 379
63ac71b9 380[ List each fix as a =item entry ]
c4499eff 381
63ac71b9 382=over 4
c4499eff 383
bbc28bfc
FC
384=item *
385
d2006265
FC
386In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
387variable had not been used yet. This has been fixed.
388
389=item *
390
23496c6e
FC
391C<defined(${"..."})> used to return true for most built-in defined
392variables, but not others, if they had not been used yet. Many times that
393new built-in variables have been added in past versions, this construct was
394not taken into account, so this affected C<${^GLOBAL_PHASE}> and
395C<${^UTF8CACHE}>, among others.
396
397=item *
398
d2006265
FC
399Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
400represents the name of a built-in global variable used to return false if
401the variable had never been used before, but only on the I<first> call.
402This, too, has been fixed.
403
404=item *
405
406Various functions that take a filehandle argument in rvalue context
407(C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
408was a tied variable, and warn twice, if it was C<undef> [perl #97482].
409
410=item *
411
412C<close> and similar filehandle functions, when called on built-in global
413variables (like C<$+>), used to die if the variable happened to hold the
414undefined value, instead of producing the usual "Use of uninitialized
415value" warning.
416
417=item *
418
419When autovivified file handles were introduced in Perl 5.6.0, C<readline>
420was inadvertently made to autovivify when called as C<readline($foo)> (but
421not as C<< <$foo> >>). It has now been fixed never to autovivify.
422
423=item *
424
425C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
426now calls it just once.
427
428=item *
429
430Some cases of dereferencing a complex expression, such as
431C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
432it once.
433
434=item *
435
436For a tied variable returning a package name, C<< $tied->method >> used to
437call C<FETCH> multiple times (even up to six!), and sometimes would
438fail to call the method, due to memory corruption.
439
440=item *
441
442Calling an undefined anonymous subroutine (e.g., what $x holds after
443C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
444has been corrected to "Undefined subroutine called" [perl #71154].
bbc28bfc 445
e1a80902
FC
446=item *
447
448Causing C<@DB::args> to be freed between uses of C<caller> no longer
449results in a crash [perl #93320].
450
fdd313f4
FC
451=item *
452
453Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
454values. It would die in strict mode or lvalue context for most undefined
455values, but would be treated as the empty string (with a warning) for the
456specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This
457has been corrected. C<undef()> is now treated like other undefined
458scalars, as in Perl 5.005.
459
01433346
FC
460=item *
461
462It used to be possible to free the typeglob of a localised array or hash
463(e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
464
88d69532
FC
465=item *
466
467C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
468C<setpgrp> was ignoring its argument if there was just one. Now it is
469equivalent to C<setpgrp($foo,0)>.
470
63ac71b9 471=back
bbc28bfc 472
63ac71b9 473=head1 Known Problems
bbc28bfc 474
63ac71b9
RS
475XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
476tests that had to be C<TODO>ed for the release would be noted here, unless
477they were specific to a particular platform (see below).
bbc28bfc 478
63ac71b9
RS
479This is a list of some significant unfixed bugs, which are regressions
480from either 5.XXX.XXX or 5.XXX.XXX.
bbc28bfc 481
63ac71b9 482[ List each fix as a =item entry ]
bbc28bfc 483
63ac71b9 484=over 4
bbc28bfc 485
bad4ae38
FC
486=item *
487
63ac71b9 488XXX
bad4ae38 489
63ac71b9 490=back
ab6ce8ea 491
63ac71b9 492=head1 Obituary
ab6ce8ea 493
63ac71b9
RS
494XXX If any significant core contributor has died, we've added a short obituary
495here.
c62f68e3 496
44691e6f
AB
497=head1 Acknowledgements
498
63ac71b9
RS
499XXX Generate this with:
500
501 perl Porting/acknowledgements.pl v5.15.2..HEAD
29cf780c 502
44691e6f
AB
503=head1 Reporting Bugs
504
505If you find what you think is a bug, you might check the articles
34dc2ec0 506recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
507bug database at http://rt.perl.org/perlbug/ . There may also be
508information at http://www.perl.org/ , the Perl Home Page.
509
510If you believe you have an unreported bug, please run the L<perlbug>
511program included with your release. Be sure to trim your bug down
512to a tiny but sufficient test case. Your bug report, along with the
513output of C<perl -V>, will be sent off to perlbug@perl.org to be
514analysed by the Perl porting team.
515
516If the bug you are reporting has security implications, which make it
517inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 518it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
519unarchived mailing list, which includes
520all the core committers, who will be able
44691e6f
AB
521to help assess the impact of issues, figure out a resolution, and help
522co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
523platforms on which Perl is supported. Please only use this address for
524security issues in the Perl core, not for modules independently
44691e6f
AB
525distributed on CPAN.
526
527=head1 SEE ALSO
528
529The F<Changes> file for an explanation of how to view exhaustive details
530on what changed.
531
532The F<INSTALL> file for how to build Perl.
533
534The F<README> file for general stuff.
535
536The F<Artistic> and F<Copying> files for copyright information.
537
538=cut