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