This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #93638] $ENV{LS_COLORS} causes miniperl glob failure
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
d2006265 3=for comment
d6cf2367
FC
4This has been completed up to 84c2f6fdcb.
5
d2006265 6
44691e6f
AB
7=head1 NAME
8
63ac71b9
RS
9[ this is a template for a new perldelta file. Any text flagged as
10XXX needs to be processed before release. ]
11
f25d4e05 12perldelta - what is new for perl v5.15.3
760696b8 13
5438d4b8 14=head1 DESCRIPTION
5cd408a2 15
f25d4e05
RS
16This document describes differences between the 5.15.2 release and
17the 5.15.3 release.
5cd408a2 18
f25d4e05
RS
19If you are upgrading from an earlier release such as 5.15.1, first read
20L<perl5152delta>, which describes differences between 5.15.1 and
215.15.2.
062678b2 22
63ac71b9 23=head1 Notice
4185c919 24
63ac71b9 25XXX Any important notices here
0afed34d 26
63ac71b9 27=head1 Core Enhancements
0afed34d 28
63ac71b9
RS
29XXX New core language features go here. Summarise user-visible core language
30enhancements. Particularly prominent performance optimisations could go
31here, but most should go in the L</Performance Enhancements> section.
0afed34d 32
63ac71b9 33[ List each enhancement as a =head2 entry ]
0afed34d 34
d2006265
FC
35=head2 More CORE subs are callable through references
36
c148612c 37Perl 5.15.2 introduced subroutines in the CORE namespace. Most of them
d2006265
FC
38could only be called as barewords; i.e., they could be aliased at compile
39time and then inlined under new names.
40
2702a50a
FC
41Almost all of these functions can now be called through references and via
42C<&foo()> syntax, bypassing the prototype. See L<CORE> for a list of the
43exceptions.
d2006265 44
d6cf2367
FC
45=head2 New debugger commands
46
47The debugger now has C<disable> and C<enable> commands for disabling
48existing breakpoints and reënabling them. See L<perldebug>.
49
63ac71b9 50=head1 Security
0afed34d 51
63ac71b9
RS
52XXX Any security-related notices go here. In particular, any security
53vulnerabilities closed should be noted here rather than in the
54L</Selected Bug Fixes> section.
135c0b08 55
63ac71b9 56[ List each security issue as a =head2 entry ]
135c0b08 57
46661105
CB
58=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
59
60Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would
61cause an access violation / segfault. A Perl program that accepts a flags value from
62an external source could expose itself to denial of service or arbitrary code
63execution attacks. There are no known exploits in the wild. The problem has been
64corrected by explicitly disabling all unsupported flags and setting unused function
65pointers to null. Bug reported by Clément Lecigne.
66
5438d4b8 67=head1 Incompatible Changes
7818c927 68
e1dccc0d
Z
69=head2 $[ has been removed
70
71The array/string index offsetting mechanism, controlled by the C<$[> magic
72variable, has been removed. C<$[> now always reads as zero. Writing a
73zero to it is still permitted, but writing a non-zero value causes an
74exception. Those hopelessly addicted to FORTRAN-style 1-based indexing
75may wish to use the module L<Array::Base>, which provides an independent
76implementation of the index offsetting concept, or L<Classic::Perl>,
77which allows L<Array::Base> to be controlled through assignment to C<$[>.
78
5d1892be 79=head2 User-defined case changing operations.
7b2b001e 80
5d1892be
KW
81This feature was deprecated in Perl 5.14, and has now been removed.
82The CPAN module L<Unicode::Casing> provides better functionality without
83the drawbacks that this feature had, as are detailed in the 5.14
84documentation:
85L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
bdb9ba77 86
7ec04da5
SM
87=head2 XSUBs are now 'static'
88
89XSUB C functions are now 'static', that is, they are not visible from
404452ea
SM
90outside the compilation unit. Users can use the new C<XS_EXTERNAL(name)>
91and C<XS_INTERNAL(name)> macros to pick the desired linking behaviour.
92The ordinary C<XS(name)> declaration for XSUBs will continue to declare
93non-'static' XSUBs for compatibility, but the XS compiler,
94C<ExtUtils::ParseXS> (C<xsubpp>) will emit 'static' XSUBs by default.
95C<ExtUtils::ParseXS>'s behaviour can be reconfigured from XS using the
7ec04da5
SM
96C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
97
d6cf2367
FC
98=head2 Borland compiler
99
100All support for the Borland compiler has been dropped. The code had not
101worked for a long time anyway.
102
5d4ff231
FC
103=head2 Weakening read-only references
104
105Weakening read-only references is no longer permitted. It should never
106hove worked anyway, and in some cases could result in crashes.
107
63ac71b9 108=head1 Deprecations
760696b8 109
63ac71b9
RS
110XXX Any deprecated features, syntax, modules etc. should be listed here.
111In particular, deprecated modules should be listed here even if they are
112listed as an updated module in the L</Modules and Pragmata> section.
760696b8 113
63ac71b9 114[ List each deprecation as a =head2 entry ]
760696b8 115
63ac71b9 116=head1 Performance Enhancements
115ff745 117
63ac71b9
RS
118XXX Changes which enhance performance without changing behaviour go here. There
119may well be none in a stable release.
115ff745 120
63ac71b9 121[ List each enhancement as a =item entry ]
115ff745 122
63ac71b9 123=over 4
4ea805df
CBW
124
125=item *
126
63ac71b9 127XXX
1ba7a2fb 128
63ac71b9 129=back
730e5b5b 130
63ac71b9 131=head1 Modules and Pragmata
730e5b5b 132
63ac71b9
RS
133XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
134go here. If Module::CoreList is updated, generate an initial draft of the
135following sections using F<Porting/corelist-perldelta.pl>, which prints stub
136entries to STDOUT. Results can be pasted in place of the '=head2' entries
137below. A paragraph summary for important changes should then be added by hand.
138In an ideal world, dual-life modules would have a F<Changes> file that could be
139cribbed.
730e5b5b 140
63ac71b9 141[ Within each section, list entries as a =item entry ]
730e5b5b 142
63ac71b9 143=head2 New Modules and Pragmata
a30cae0b 144
63ac71b9 145=over 4
a30cae0b
CBW
146
147=item *
148
63ac71b9 149XXX
bbc28bfc 150
63ac71b9 151=back
bbc28bfc 152
63ac71b9 153=head2 Updated Modules and Pragmata
e46d9735 154
63ac71b9 155=over 4
e46d9735
CBW
156
157=item *
158
5f8b5b70
NC
159L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01.
160
161This is only a minor documentation update.
162
163=item *
164
43c6b706 165L<Archive::Extract> has been upgraded from version 0.52 to version 0.56.
4afdee4c
CBW
166
167Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
57126352 168
d93f0209
FC
169=item *
170
93e94d8a
CBW
171L<Archive::Tar> has been upgraded from version 1.76 to version 1.78.
172
173=item *
174
13975bd1
CBW
175L<CPAN::Meta> has been upgraded from version 2.112150 to version 2.112580.
176
177=item *
178
53b10071
CBW
179L<CPAN::Meta::YAML> has been upgraded from version 0.003 to version 0.004.
180
181=item *
182
891b5d1e 183L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9111.
755f12e5
NC
184
185=item *
186
50b3d220
CBW
187L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58.
188
189=item *
190
49ef49fe
CBW
191L<Devel::PPPort> has been upgraded from version 3.19 to version 3.20.
192
193=item *
194
43c6b706 195L<diagnostics> has been upgraded from version 1.24 to version 1.25.
d2006265
FC
196
197It now strips out C<SZ<><...>> formatting codes before displaying
198descriptions [perl #94488].
199
200=item *
201
4bbdbd51
NC
202L<Data::Dumper> has been upgraded from version 2.133 to version 2.134.
203
204The XS code for sorting hash keys has been simplified slightly.
205
206=item *
207
f87cd9fa
CBW
208L<Exporter> has been upgraded from version 5.64_03 to version 5.65.
209
210=item *
211
404452ea 212L<ExtUtils::ParseXS> has been upgraded from version 3.03_01 to version 3.04_04.
98e61122
NC
213
214The handling of C<dVAR> in the generated XS code has been simplified.
215
404452ea
SM
216The previously broken "INCLUDE: ... |" functionality has been repaired
217(CPAN RT #70213).
218
219A compatibility-workaround for modules that cannot
220live with the new XSUB staticness (see I<XSUBs are now static> above)
221has been implemented with the C<PERL_EUPXS_ALWAYS_EXPORT> and
222C<PERL_EUPXS_NEVER_EXPORT> preprocessor defines.
223
224The compiler warnings when -except option is used with F<xsubpp>
225have been fixed.
226
227The XSUB.h changes to make C<XS(name)> use C<XS_INTERNAL(name)>
228by default (which were in the 5.15.2 dev release of perl)
229have been reverted since too many CPAN modules expect to
230be able to refer to XSUBs declared with C<XS(name)>.
231Instead, C<ExtUtils::ParseXS> will define a copy of the
232C<XS_INTERNAL>/C<XS_EXTERNAL> macros as necessary going back to
233perl 5.10.0. By default, ExtUtils::ParseXS will use
234C<XS_INTERNAL(name)> instead of C<XS(name)>.
235
236Fixed regression for input-typemap override in XS argument
237list (CPAN RT #70448).
238
239C<ExtUtils::Typemaps> now properly strips trailing semicolons
240from inputmaps. These could previously trigger warnings (errors
241in strict C89 compilers) due to additional semicolons being
242interpreted as empty statements.
243
244Now detects and throws a warning if there is a C<CODE> section using
245C<RETVAL>, but no C<OUTPUT> section (CPAN RT #69536).
246
98e61122
NC
247=item *
248
43c6b706
CBW
249L<Locale::Codes> has been upgraded from version 3.17 to version 3.18.
250
251The CIA world added non-standard values, so this is no longer used as a source
252of data.
253
254=item *
255
46661105
CB
256L<File::Glob> has been upgraded from version 1.12 to version 1.13.
257
d6cf2367
FC
258On Windows, tilde (~) expansion now checks the C<USERPROFILE> environment
259variable, after checking C<HOME>.
260
261See also L</Security>.
46661105
CB
262
263=item *
264
0b2be169
FC
265L<Filter::Simple> has been upgrade from version 0.87 to 0.88.
266
267It is now better at detecting the end of a pod section. It always checks
268for =cut, instead of checking for =end (if the pod begins with =begin) or
269the end of the paragraph (if the pod begins with =for) [perl #92436].
270
828d6195
FC
271It is also better at detecting variables. A method call on a variable is
272no longer considered part of the variable name, so strings passed to a
273method are now hidden from filters that do not want to deal with strings
274[perl #92436].
275
0b2be169
FC
276=item *
277
43c6b706 278L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603.
d93f0209
FC
279
280C<int()> on a Math::BigRat object containing -1/2 now creates a
281Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even
282support negative zero, so the resulting object was actually malformed
283[perl #95530].
284
60527824
FR
285=item *
286
d6cf2367
FC
287L<Module::CoreList> has been upgraded from version 2.55 to 2.56.
288
289It was missing a few entries: L<DB_File> in 5.8.2, L<Errno> in 5.6.0 and
2905.6.1, and L<VMS::Filespec> in 5.12.3.
291
292=item *
293
d6ee8587 294L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007.
d39de893
CBW
295
296=item *
297
39afdc5a
CBW
298L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46.
299
300=item *
301
666c7ca6
NC
302L<ODBM_File> has been upgraded from version 1.11 to version 1.12.
303
304This is only a minor refactoring of the XS code to bring it closer to the
305other C<?DBM_File> modules.
306
307=item *
308
d6cf2367
FC
309L<open> has been upgraded from version 1.08 to 1.09.
310
311It no longer turns of layers on standard handles when invoked without the
312":std" directive. Similarly, when invoked I<with> the ":std" directive, it
313now clears layers on STDERR before applying the new ones, and not just on
314STDIN and STDOUT [perl #92728].
315
316=item *
317
c56bc1f6 318L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150034.
a9feb6cb
CBW
319
320=item *
321
43c6b706 322L<Pod::Simple> has been upgraded from version 3.18 to version 3.19.
60527824 323
7ac26854
NC
324=item *
325
326L<POSIX> has been upgraded from version 1.24 to version 1.25.
327
328L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this
329implementation detail was buggy, and may fail as a result of this change.
330The module's Perl code has been considerably simplified, roughly halving
29d1ad9e
NC
331the number of lines, with no change in functionality. The XS code has
332been refactored to reduce the size of the shared object by about 12%,
333with no change in functionality. More POSIX functions now have tests.
7ac26854 334
518487b2
NC
335C<POSIX::Termios::setattr> now defaults the third argument to C<TCSANOW>,
336instead of 0. On most platforms C<TCSANOW> is defined as 0, but on some
3370 is not a valid parameter, which caused a call with defaults to fail.
338
daef35db
NC
339=item *
340
b420b12a
NC
341L<Storable> has been upgraded from version 2.31 to version 2.32.
342
343XS code which duplicates functionality of F<ppport.h> has been removed.
344Tests should now pass on older versions of L<Test::More>. Storable now
345builds and passes tests back to perl 5.004.
346
347=item *
348
d6cf2367
FC
349L<threads::shared> has been upgraded from version 1.38 to 1.40.
350
351Destructors on shared objects used to be ignored sometimes if the objects
352were referenced only by shared data structures. This has been mostly
353fixed, but destructors may still be ignored if the objects still exist at
354global destruction time [perl #98204].
355
356=item *
357
daef35db
NC
358L<XSLoader> has been upgraded from version 0.15 to version 0.16.
359
63ac71b9 360=back
259925f6 361
63ac71b9 362=head2 Removed Modules and Pragmata
6252d2e2 363
63ac71b9 364=over 4
9840cdee
CBW
365
366=item *
367
63ac71b9 368XXX
54e02335 369
63ac71b9 370=back
310913d4 371
63ac71b9 372=head1 Documentation
310913d4 373
63ac71b9
RS
374XXX Changes to files in F<pod/> go here. Consider grouping entries by
375file and be sure to link to the appropriate page, e.g. L<perlfunc>.
7b2b001e 376
63ac71b9 377=head2 New Documentation
7b2b001e 378
b89e9b0d 379=head3 L<perlootut>
7b2b001e 380
b89e9b0d
DR
381This a new OO tutorial. It focuses on basic OO concepts, and then recommends
382that readers choose an OO framework from CPAN.
2df9265e 383
63ac71b9 384=head2 Changes to Existing Documentation
2df9265e 385
b89e9b0d 386=head3 L<perlobj>
dc80b0c6 387
63ac71b9 388=over 4
83b32788
CBW
389
390=item *
391
b89e9b0d
DR
392This document has been rewritten from scratch, and its coverage of various OO
393concepts has been expanded.
4eb81ef2 394
63ac71b9 395=back
4eb81ef2 396
d6cf2367
FC
397=head3 L<perlpragma>
398
399=over 4
400
401=item *
402
403There is now a standard convention for naming keys in the C<%^H>,
404documented under L<Key naming|perlpragma/Key naming>.
405
406=back
407
b89e9b0d
DR
408=head2 Removed Documentation
409
410=head3 Old OO Documentation
411
412All the old OO tutorials, perltoot, perltooc, and perlboot, have been
d6cf2367
FC
413removed. The perlbot (bag of object tricks) document has been removed as well.
414
415=head3 Development Deltas
416
417The old perldelta files for development cycles prior to 5.15 have been
418removed.
b89e9b0d 419
63ac71b9 420=head1 Diagnostics
4eb81ef2 421
63ac71b9
RS
422The following additions or changes have been made to diagnostic output,
423including warnings and fatal error messages. For the complete list of
424diagnostic messages, see L<perldiag>.
82eefd8a 425
63ac71b9
RS
426XXX New or changed warnings emitted by the core's C<C> code go here. Also
427include any changes in L<perldiag> that reconcile it to the C<C> code.
82eefd8a 428
63ac71b9
RS
429[ Within each section, list entries as a =item entry that links to perldiag,
430 e.g.
6252d2e2 431
63ac71b9 432 =item *
6252d2e2 433
63ac71b9
RS
434 L<Invalid version object|perldiag/"Invalid version object">
435]
5213914c 436
63ac71b9 437=head2 New Diagnostics
5213914c 438
63ac71b9 439XXX Newly added diagnostic messages go here
5213914c 440
63ac71b9 441=head3 New Errors
17609435 442
63ac71b9 443=over 4
17609435 444
69f26f52
CBW
445=item *
446
63ac71b9 447XXX L<message|perldiag/"message">
69f26f52 448
5438d4b8 449=back
77ccfaeb 450
63ac71b9 451=head3 New Warnings
c69a30ec 452
63ac71b9
RS
453=over 4
454
455=item *
7c420290 456
63ac71b9 457XXX L<message|perldiag/"message">
7818c927 458
63ac71b9 459=back
7818c927 460
63ac71b9 461=head2 Changes to Existing Diagnostics
dd413713 462
63ac71b9 463XXX Changes (i.e. rewording) of diagnostic messages go here
7818c927 464
5438d4b8 465=over 4
7818c927
FC
466
467=item *
468
63ac71b9 469XXX Describe change here
5aeca1f7 470
5438d4b8 471=back
5aeca1f7 472
63ac71b9 473=head1 Utility Changes
0cb4637e 474
63ac71b9
RS
475XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
476here. Most of these are built within the directories F<utils> and F<x2p>.
0cb4637e 477
63ac71b9
RS
478[ List utility changes as a =head3 entry for each utility and =item
479entries for each change
480Use L<XXX> with program names to get proper documentation linking. ]
4abaf918 481
63ac71b9 482=head3 L<XXX>
4abaf918 483
5438d4b8 484=over 4
4abaf918
Z
485
486=item *
487
63ac71b9 488XXX
8b00e523 489
e8e35311
FC
490=back
491
63ac71b9 492=head1 Configuration and Compilation
b908e258 493
63ac71b9
RS
494XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
495go here. Any other changes to the Perl build process should be listed here.
496However, any platform-specific changes should be listed in the
497L</Platform Support> section, instead.
b908e258 498
63ac71b9 499[ List changes as a =item entry ].
b908e258 500
63ac71b9 501=over 4
71449ad0
DG
502
503=item *
504
5ecd28b8
NC
505The file F<global.sym> is no longer needed, and has been removed. It
506contained a list of all exported functions, one of the files generated by
507F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
508has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
509now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
510store the list of exported functions in an intermediate file.
511
512As F<global.sym> was never installed, this change will not be visible
513outside the build process.
b908e258 514
6693394d
FC
515=back
516
63ac71b9 517=head1 Testing
bbc28bfc 518
63ac71b9
RS
519XXX Any significant changes to the testing of a freshly built perl should be
520listed here. Changes which create B<new> files in F<t/> go here as do any
521large changes to the testing harness (e.g. when parallel testing was added).
522Changes to existing files in F<t/> aren't worth summarising, although the bugs
523that they represent may be covered elsewhere.
bbc28bfc 524
63ac71b9 525[ List each test improvement as a =item entry ]
b7188eb5 526
34dc2ec0 527=over 4
42a91c97 528
6693394d 529=item *
42a91c97 530
c752c500
FC
531F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
532F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
533previously was it was possible to inadvertently commit changes that worked
534perfectly locally, but broke the build on Win32.
310913d4 535
d2006265
FC
536=item *
537
538F<t/op/unlink.t> has been added to test the C<unlink> function.
539
34dc2ec0 540=back
42a91c97 541
0890f1a5 542=head1 Platform Support
975dff8c 543
63ac71b9 544XXX Any changes to platform support should be listed in the sections below.
9cfd094e 545
63ac71b9
RS
546[ Within the sections, list each platform as a =item entry with specific
547changes as paragraphs below it. ]
9cfd094e 548
63ac71b9 549=head2 New Platforms
9cfd094e 550
63ac71b9
RS
551XXX List any platforms that this version of perl compiles on, that previous
552versions did not. These will either be enabled by new files in the F<hints/>
553directories, or new subdirectories and F<README> files at the top level of the
554source tree.
7c4c6e7c 555
5438d4b8 556=over 4
95f7e41f 557
63ac71b9 558=item XXX-some-platform
95f7e41f 559
63ac71b9 560XXX
df5b44bd 561
63ac71b9 562=back
310913d4 563
63ac71b9 564=head2 Discontinued Platforms
310913d4 565
63ac71b9 566XXX List any platforms that this version of perl no longer compiles on.
310913d4 567
63ac71b9
RS
568=over 4
569
570=item XXX-some-platform
571
572XXX
310913d4 573
5438d4b8 574=back
df5b44bd 575
63ac71b9
RS
576=head2 Platform-Specific Notes
577
578XXX List any changes for specific platforms. This could include configuration
579and compilation changes or changes in portability/compatibility. However,
580changes within modules for platforms should generally be listed in the
581L</Modules and Pragmata> section.
e22e289d 582
5438d4b8 583=over 4
7818c927 584
63ac71b9 585=item XXX-some-platform
7818c927 586
63ac71b9 587XXX
f79aa60b 588
63ac71b9 589=back
7818c927 590
63ac71b9 591=head1 Internal Changes
3fdd840f 592
63ac71b9
RS
593XXX Changes which affect the interface available to C<XS> code go here.
594Other significant internal changes for future core maintainers should
595be noted as well.
3fdd840f 596
63ac71b9 597[ List each change as a =item entry ]
7ffa7e75 598
63ac71b9 599=over 4
7ffa7e75 600
862b2c43
FC
601=item *
602
c39e29ea
FC
603The C<is_gv_magical_sv> function has been eliminated and merged with
604C<gv_fetchpvn_flags>. It used to be called to determine whether a GV
605should be autovivified in rvalue context. Now it has been replaced with a
606new C<GV_ADDMG> flag (not part of the API).
607
608=item *
609
610Padlists are now marked C<AvREAL>; i.e., reference-counted. They have
611always been reference-counted, but were not marked real, because F<pad.c>
612did its own clean-up, instead of using the usual clean-up code in F<sv.c>.
613That caused problems in thread cloning, so now the C<AvREAL> flag is on,
614but is turned off in F<pad.c> right before the padlist is freed (after
615F<pad.c> has done its custom freeing of the pads).
862b2c43 616
d6cf2367
FC
617=item *
618
619All the C files that make up the Perl core have been converted to UTF-8.
620
63ac71b9 621=back
c973bd4f 622
63ac71b9 623=head1 Selected Bug Fixes
a6cefd81 624
63ac71b9
RS
625XXX Important bug fixes in the core language are summarised here.
626Bug fixes in files in F<ext/> and F<lib/> are best summarised in
627L</Modules and Pragmata>.
a6cefd81 628
63ac71b9 629[ List each fix as a =item entry ]
c4499eff 630
63ac71b9 631=over 4
c4499eff 632
bbc28bfc
FC
633=item *
634
d2006265
FC
635In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
636variable had not been used yet. This has been fixed.
637
638=item *
639
b4155db2
FC
640C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to
641return true for most, but not all built-in variables, if
642they had not been used yet. Many times that new built-in
643variables were added in past versions, this construct was
23496c6e 644not taken into account, so this affected C<${^GLOBAL_PHASE}> and
b4155db2
FC
645C<${^UTF8CACHE}>, among others. It also used to return false if the
646package name was given as well (C<${"::!"}>) and for subroutines in the
647CORE package [perl #97978] [perl #97492] [perl #97484].
23496c6e
FC
648
649=item *
650
d2006265
FC
651Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
652represents the name of a built-in global variable used to return false if
653the variable had never been used before, but only on the I<first> call.
654This, too, has been fixed.
655
656=item *
657
658Various functions that take a filehandle argument in rvalue context
659(C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
660was a tied variable, and warn twice, if it was C<undef> [perl #97482].
661
662=item *
663
664C<close> and similar filehandle functions, when called on built-in global
665variables (like C<$+>), used to die if the variable happened to hold the
666undefined value, instead of producing the usual "Use of uninitialized
667value" warning.
668
669=item *
670
671When autovivified file handles were introduced in Perl 5.6.0, C<readline>
672was inadvertently made to autovivify when called as C<readline($foo)> (but
673not as C<< <$foo> >>). It has now been fixed never to autovivify.
674
675=item *
676
677C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
678now calls it just once.
679
680=item *
681
682Some cases of dereferencing a complex expression, such as
683C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
684it once.
685
686=item *
687
688For a tied variable returning a package name, C<< $tied->method >> used to
689call C<FETCH> multiple times (even up to six!), and sometimes would
690fail to call the method, due to memory corruption.
691
692=item *
693
694Calling an undefined anonymous subroutine (e.g., what $x holds after
695C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
696has been corrected to "Undefined subroutine called" [perl #71154].
bbc28bfc 697
e1a80902
FC
698=item *
699
700Causing C<@DB::args> to be freed between uses of C<caller> no longer
701results in a crash [perl #93320].
702
fdd313f4
FC
703=item *
704
705Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
706values. It would die in strict mode or lvalue context for most undefined
707values, but would be treated as the empty string (with a warning) for the
708specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This
709has been corrected. C<undef()> is now treated like other undefined
710scalars, as in Perl 5.005.
711
01433346
FC
712=item *
713
714It used to be possible to free the typeglob of a localised array or hash
715(e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
716
88d69532
FC
717=item *
718
719C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
720C<setpgrp> was ignoring its argument if there was just one. Now it is
721equivalent to C<setpgrp($foo,0)>.
722
33d4ef81
FC
723=item *
724
8d4393cf
FC
725Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH
726only once.
33d4ef81 727
93564729
FC
728=item *
729
d6cf2367
FC
730C<chdir>, C<chmod>, C<chown>, C<utime>, C<truncate>, C<stat>, C<lstat> and the filetest ops (C<-r>, C<-x>, etc.)
731now always call FETCH if passed a tied
93564729
FC
732variable as the last argument. They used to ignore tiedness if the last
733thing return from or assigned to the variable was a typeglob or reference
734to a typeglob.
735
c39e29ea
FC
736=item *
737
738Perl 5.15.1 inadvertently stopped C<*foo =~ s/\*//r> from working, as it
739would try to force the *foo glob into a string. This has been fixed
740[perl #97954].
741
742=item *
743
744If things were arranged in memory the right way, it was possible for
745thread joining to emit "Attempt to free unreferenced scalar" warnings if
746C<caller> had been used from the C<DB> package prior to thread creation,
747due to the way pads were reference-counted and cloned [perl #98092].
748
749=item *
750
751CORE:: subs were introduced in the previous development release, but
752C<defined &{"CORE::..."}> did not return true. That has been rectified
753[perl #97484].
754
755=item *
756
757Lvalue subroutines were made to autovivify in 5.15.0, but it did not work
758in some cases involving an intervening list operator between the
759dereference operator and the subroutine call (C<${(), lvsub()}>)
760[perl #98184].
761
d6cf2367
FC
762=item *
763
764A bug has been fixed that occurs when a tied variable is used as a
765subroutine reference: if the last thing assigned to or returned from the
766variable was a reference or typeglob, the C<\&$tied> could either crash or
767return the wrong subroutine. The reference case is a regression introduced
768in Perl 5.10.0. For typeglobs, it has probably never worked till now.
769
770=item *
771
772C<given> was not scoping its implicit $_ properly, resulting in memory
773leaks or "Variable is not available" warnings [perl #94682].
774
775=item *
776
777C<-l> followed by a bareword no longer "eats" the previous argument to
778the list operator in whose argument list it resides. In less convoluted
779English: C<print "bar", -l foo> now actually prints "bar", because C<-l>
780on longer eats it.
781
782=item *
783
784In 5.14.0, filetest ops (C<-r>, C<-x>, etc.) started calling FETCH on a
785tied argument belonging to the previous argument to a list operator, if
786called with a bareword argument or no argument at all. This has been
787fixed, so C<push @foo, $tied, -r> no longer calls FETCH on C<$tied>.
788
789=item *
790
791C<shmread> was not setting the scalar flags correctly when reading from
792shared memory, causing the existing cached numeric representation in the
793scalar to persist [perl #98480].
794
5d4ff231
FC
795=item *
796
797Weakening the first argument to an automatically-invoked C<DESTROY> method
798could result in erroneous "DESTROY created new reference" errors or
799crashes. Now it is an error to weaken a read-only reference.
800
a3342be3
FC
801=item *
802
803Under miniperl (used to configure modules when perl itself is built),
804C<glob> now clears %ENV before calling csh, since the latter croaks on some
805systems if it does not like the contents of the LS_COLORS enviroment
806variable [perl #98662].
807
63ac71b9 808=back
bbc28bfc 809
63ac71b9 810=head1 Known Problems
bbc28bfc 811
63ac71b9
RS
812XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
813tests that had to be C<TODO>ed for the release would be noted here, unless
814they were specific to a particular platform (see below).
bbc28bfc 815
63ac71b9
RS
816This is a list of some significant unfixed bugs, which are regressions
817from either 5.XXX.XXX or 5.XXX.XXX.
bbc28bfc 818
63ac71b9 819[ List each fix as a =item entry ]
bbc28bfc 820
63ac71b9 821=over 4
bbc28bfc 822
bad4ae38
FC
823=item *
824
63ac71b9 825XXX
bad4ae38 826
63ac71b9 827=back
ab6ce8ea 828
63ac71b9 829=head1 Obituary
ab6ce8ea 830
63ac71b9
RS
831XXX If any significant core contributor has died, we've added a short obituary
832here.
c62f68e3 833
44691e6f
AB
834=head1 Acknowledgements
835
63ac71b9
RS
836XXX Generate this with:
837
838 perl Porting/acknowledgements.pl v5.15.2..HEAD
29cf780c 839
44691e6f
AB
840=head1 Reporting Bugs
841
842If you find what you think is a bug, you might check the articles
34dc2ec0 843recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
844bug database at http://rt.perl.org/perlbug/ . There may also be
845information at http://www.perl.org/ , the Perl Home Page.
846
847If you believe you have an unreported bug, please run the L<perlbug>
848program included with your release. Be sure to trim your bug down
849to a tiny but sufficient test case. Your bug report, along with the
850output of C<perl -V>, will be sent off to perlbug@perl.org to be
851analysed by the Perl porting team.
852
853If the bug you are reporting has security implications, which make it
854inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 855it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
856unarchived mailing list, which includes
857all the core committers, who will be able
44691e6f
AB
858to help assess the impact of issues, figure out a resolution, and help
859co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
860platforms on which Perl is supported. Please only use this address for
861security issues in the Perl core, not for modules independently
44691e6f
AB
862distributed on CPAN.
863
864=head1 SEE ALSO
865
866The F<Changes> file for an explanation of how to view exhaustive details
867on what changed.
868
869The F<INSTALL> file for how to build Perl.
870
871The F<README> file for general stuff.
872
873The F<Artistic> and F<Copying> files for copyright information.
874
875=cut