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