4 This has been completed up to 1a50d74bac4, except for:
5 8629c11317 smueller Escape double-quotes in generated #line directives
6 8dc67a69b shlomif perl -d: display lines inside subroutines.
7 3dfd1b5cd2 leont Export PerlIOBase_open
11 [ this is a template for a new perldelta file. Any text flagged as
12 XXX needs to be processed before release. ]
14 perldelta - what is new for perl v5.15.7
18 This document describes differences between the 5.15.6 release and
21 If you are upgrading from an earlier release such as 5.15.5, first read
22 L<perl5156delta>, which describes differences between 5.15.5 and
27 XXX Any important notices here
29 =head1 Core Enhancements
31 XXX New core language features go here. Summarise user-visible core language
32 enhancements. Particularly prominent performance optimisations could go
33 here, but most should go in the L</Performance Enhancements> section.
35 [ List each enhancement as a =head2 entry ]
37 =head2 C<use charnames> no longer needed for C<\N{I<name>}>
39 The C<charnames> module is now automatically loaded when needed as if
40 the C<:full> and C<:short> options had been specified. See
43 =head2 Improved performance for Unicode properties in regular expressions
45 Matching a code point against a Unicode property is now done via a
46 binary search instead of linear. This means for example that the worst
47 case for a 1000 item property is 10 probes instead of 1000. This
48 inefficiency has been compensated for in the past by permanently storing
49 in a hash the results of a given probe plus the results for the adjacent
50 64 code points, under the theory that near-by code points are likely to
51 be searched for. A separate hash was used for each mention of a Unicode
52 property in each regular expression. Thus, C<qr/\p{foo}abc\p{foo}/>
53 would generate two hashes. Any probes in one instance would be unknown
54 to the other, and the hashes could expand separately to be quite large
55 if the regular expression were used on many different widely-separated
56 code points. This can lead to running out of memory in extreme cases.
57 Now, however, there is just one hash shared by all instances of a given
58 property. This means that if C<\p{foo}> is matched against "A" in one
59 regular expression in a thread, the result will be known immediately to
60 all regular expressions, and the relentless march of using up memory is
65 XXX Any security-related notices go here. In particular, any security
66 vulnerabilities closed should be noted here rather than in the
67 L</Selected Bug Fixes> section.
69 [ List each security issue as a =head2 entry ]
71 =head1 Incompatible Changes
73 XXX For a release on a stable branch, this section aspires to be:
75 There are no changes intentionally incompatible with 5.XXX.XXX
76 If any exist, they are bugs, and we request that you submit a
77 report. See L</Reporting Bugs> below.
79 [ List each incompatible change as a =head2 entry ]
83 XXX Any deprecated features, syntax, modules etc. should be listed here.
84 In particular, deprecated modules should be listed here even if they are
85 listed as an updated module in the L</Modules and Pragmata> section.
87 [ List each deprecation as a =head2 entry ]
89 =head2 Deprecated Modules
93 =item L<Version::Requirements>
95 Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements,
96 which is a drop-in replacement. It will be deleted from perl.git blead
101 =head1 Performance Enhancements
103 XXX Changes which enhance performance without changing behaviour go here. There
104 may well be none in a stable release.
106 [ List each enhancement as a =item entry ]
112 Version declarations with the C<use> keyword (e.g., C<use 5.012>) are now
113 faster, as they enable features without loading F<feature.pm>.
117 C<local $_> is faster now, as it no longer iterates through magic that it
118 is not going to copy anyway.
122 =head1 Modules and Pragmata
124 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
125 go here. If Module::CoreList is updated, generate an initial draft of the
126 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
127 entries to STDOUT. Results can be pasted in place of the '=head2' entries
128 below. A paragraph summary for important changes should then be added by hand.
129 In an ideal world, dual-life modules would have a F<Changes> file that could be
132 [ Within each section, list entries as a =item entry ]
134 =head2 New Modules and Pragmata
144 =head2 Updated Modules and Pragmata
150 L<B::Deparse> has been upgraded from version 1.10 to version 1.11.
152 It now deparses C<open('random string')> correctly. It used to omit the
153 quotation marks, which did not work if the string were not a valid
154 identifier [perl #91416].
156 A similar bug also affected hash and array elements such as
157 C<< 'random string'->[0] >>, which would deparse as C<$random string[0]>.
160 Those same syntaxes used to drop the package name from variables beginning
161 with a punctuation mark, as in C<< "foo::]"->{$key} >>. This, too, has
164 B::Deparse no longer hangs when deparsing a program with stash
165 circularities, such as C<BEGIN { *Acme::Acme:: = *Acme:: }> [perl #91384].
167 C</$s[1]/> used to be deparsed as C<$s[1]> if @s were a lexical variable
168 [perl #81424]. Similarly, C</$#s/> would be deparsed as C<$#s> for both
169 lexical and package variables. These has been fixed.
171 The C</applaud> regular expression flags are no longer omitted.
173 Feature hints are now deparsed with C<use feature> rather than C<%^H>
176 A regression in 1.10 that caused C<ambient_pragmas> to disable strict mode
177 in obscure cases has been fixed.
179 Strict mode is now fully deparsed, including subs and vars [perl #24027].
181 The global variables C<$(>, C<$|> and C<$)> are now deparsed with braces
182 (i.e., C<${(}>) in regular expressions [perl #86060].
184 C<continue> blocks after C<for> loops are now deparsed correctly, as they
185 were back in 0.67 (included with Perl 5.8.5) [perl #108224]
189 L<CGI> has been upgraded from version 3.58 to version 3.59.
191 We no longer read from STDIN when the Content-Length is not set, preventing
192 requests with no Content-Length from freezing in some cases. This is consistent
193 with the CGI RFC 3875, and is also consistent with CGI::Simple. However, the old
194 behavior may have been expected by some command-line uses of CGI.pm.
198 L<CPAN::Meta> has been upgraded from version 2.112621 to version 2.113640.
200 Version::Requirements has now been merged as CPAN::Meta::Requirements.
204 L<CPANPLUS> has been upgraded from version 0.9113 to version 0.9116.
208 L<Data::Dumper> has been upgraded from version 2.135_01 to version
211 It can now dump vstrings [perl #101162].
213 The nameless typeglob (C<*{""}>) is now dumped properly.
217 L<diagnostics> has been upgraded from version 1.26 to version 1.27.
219 See the entry for splain in the L</Utility Changes> section, for the
220 changes. The diagnostics module and the splain utility are actually one
225 L<ExtUtils::Packlist> has been upgraded from version 1.45 to version 1.46.
227 It no longer produces "used once" warnings when the C<read> and C<write>
228 methods are called while the main program is still compiling (e.g., from
229 within a BEGIN block) [perl #107410] [rt.cpan.org #50315].
233 L<Locale::Maketext> has been upgraded from version 1.21 to version 1.22.
237 L<Module::Pluggable> has been upgraded from version 3.9 to version 4.0.
241 L<overload> has been upgraded from version 1.16 to version 1.17.
243 C<overload::Overloaded> no longer calls C<can> on the class, but uses
244 another means to determine whether the object has overloading. It was
245 never correct for it to call C<can>, as overloading does not respect
246 AUTOLOAD. So classes that autoload methods and implement C<can> no longer
247 have to account for overloading [perl #40333].
249 A warning is now produced for invalid arguments. See L</New Diagnostics>.
253 L<perlfaq> has been upgraded from version 5.0150036 to version 5.0150037.
257 L<PerlIO::scalar> has been upgraded from version 0.12 to version 0.13.
259 (This is the module that implements C<< open $fh, '>', \$scalar >>.)
261 It no longer assumes during C<seek> that $scalar is a string internally.
262 If it didn't crash, it was close to doing so [perl #92706].
264 Printing to an in-memory handle now works if the $scalar holds a reference,
265 stringifying the reference before modifying it. References used to be
266 treated as empty strings.
268 Printing to an in-memory handle no longer crashes if the $scalar happens to
269 hold a number internally, but no string buffer.
273 L<Pod::Html> has been upgraded from version 1.12 to 1.13
277 L<POSIX> has been upgraded from version 1.27 to version 1.29.
279 C<sigsuspend> and C<pause> now run signals handle before returning, as the
280 whole point of these two functions is to wait until a signal has
281 arrived, and then return I<after> it has been triggered. Delayed, or
282 "safe", signals were preventing that from happening, possibly resulting in
283 race conditions [perl #107216].
284 C<POSIX::sleep> is now a direct call into the underlying OS C<sleep>
285 function, instead of being a Perl wrapper on C<CORE::sleep>. C<POSIX::dup2>
286 now returns the correct value on Win32 (I<i.e.> the file descriptor).
287 C<POSIX::SigSet> C<sigsuspend> and C<sigpending> and C<POSIX::pause> now
288 dispatch safe signals immediately before returning to their caller.
292 L<Pod::Perldoc> has been upgraded from version 3.15_01 to version 3.15_15.
296 L<Term::UI> has been upgraded from version 0.26 to version 0.30.
300 L<Tie::File> has been upgraded from version 0.96 to version 0.98.
304 L<Unicode::UCD> has been upgraded from version 0.37 to version 0.38.
305 This changes the output of C<prop_invmap()> for the Name_Alias property
306 to reflect the changes that are planned for Unicode 6.1, so that there
307 won't be a format change when upgrading to 6.1. Briefly, a second
308 component of each alias is added that gives the type of alias it is.
309 Examples are at L<Unicode::UCD/prop_invmap()>.
313 L<Version::Requirements> has been upgraded from version 0.101020 to version 0.101021.
315 Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements,
316 which is a drop-in replacement.
320 =head2 Removed Modules and Pragmata
332 XXX Changes to files in F<pod/> go here. Consider grouping entries by
333 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
335 =head2 New Documentation
337 XXX Changes which create B<new> files in F<pod/> go here.
341 XXX Description of the purpose of the new file here
343 =head2 Changes to Existing Documentation
345 XXX Changes which significantly change existing files in F<pod/> go here.
346 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
355 C<dbmopen> treats a 0 mode as a special case, that prevents a nonexistent
356 file from being created. This has been the case since Perl 5.000, but was
357 never documented anywhere. Now the perlfunc entry mentions it
362 The entry for C<split> has been rewritten. It is now far clearer than
367 =head3 L<perlop> and L<perlsyn>
373 Documentation of the smartmatch operator has been reworked and moved from
374 perlsyn to perlop where it belongs.
378 Documentation of the ellipsis statement (C<...>) has been reworked and
379 moved from perlop to perlsyn.
385 The following additions or changes have been made to diagnostic output,
386 including warnings and fatal error messages. For the complete list of
387 diagnostic messages, see L<perldiag>.
389 XXX New or changed warnings emitted by the core's C<C> code go here. Also
390 include any changes in L<perldiag> that reconcile it to the C<C> code.
392 [ Within each section, list entries as a =item entry that links to perldiag,
397 L<Invalid version object|perldiag/"Invalid version object">
400 =head2 New Diagnostics
408 L<Cannot set tied @DB::args|perldiag/"Cannot set tied @DB::args">
410 This error occurs when C<caller> tries to set C<@DB::args> but finds it
411 tied. Before this error was added, it used to crash instead.
415 L<Cannot tie unreifiable array|perldiag/"Cannot tie unreifiable array">
417 This error is part of a safety check that the C<tie> operator does before
418 tying a special array like C<@_>. You should never see this message.
428 L<defined(@array) is deprecated|perldiag/"defined(@array) is deprecated">
430 The long-deprecated C<defined(@array)> now also warns for package variables.
431 Previously it only issued a warning for lexical variables.
435 L<Useless use of \E|perldiag/"Useless use of \E">
437 C<\E> does nothing unless preceded by C<\Q>, C<\L> or C<\U>.
441 L<overload arg '%s' is invalid|perldiag/"overload arg '%s' is invalid">
443 This warning, in the "overload" category, is produced when the overload
444 pragma is given an argument it doesn't recognize, presumably a mistyped
449 =head2 Changes to Existing Diagnostics
451 XXX Changes (i.e. rewording) of diagnostic messages go here
457 XXX Describe change here
467 "sort is now a reserved word"
469 This error used to occur when C<sort> was called without arguments, followed by C<;> or C<)>. (E.g., C<sort;> would die, but C<{sort}> was
470 OK.) This error message was added in Perl 3 to catch code like
471 C<close(sort)> which would no longer work. More than two decades later,
472 this message is no longer appropriate. Now C<sort> without arguments is
473 always allowed, and returns an empty list, as it did in those cases where
474 it was already allowed [perl #90030].
478 =head1 Utility Changes
480 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
481 here. Most of these are built within the directories F<utils> and F<x2p>.
483 [ List utility changes as a =head3 entry for each utility and =item
484 entries for each change
485 Use L<XXX> with program names to get proper documentation linking. ]
493 splain no longer emits backtraces with the first line number repeated.
496 Uncaught exception from user code:
497 Cannot fwiddle the fwuddle at -e line 1.
499 main::baz() called at -e line 1
500 main::bar() called at -e line 1
501 main::foo() called at -e line 1
505 Uncaught exception from user code:
506 Cannot fwiddle the fwuddle at -e line 1.
507 main::baz() called at -e line 1
508 main::bar() called at -e line 1
509 main::foo() called at -e line 1
513 Some error messages consist of multiple lines that are listed as separate
514 entries in L<perldiag>. splain has been taught to find the separate
515 entries in these cases, instead of simply failing to find the message.
519 =head1 Configuration and Compilation
521 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
522 go here. Any other changes to the Perl build process should be listed here.
523 However, any platform-specific changes should be listed in the
524 L</Platform Support> section, instead.
526 [ List changes as a =item entry ].
532 The Pod files for the perl FAQ, L<perlxs>, L<perlxstut> and L<perldoc>
533 are once again correctly installed in the same directory as the other core
536 =for 5.16.0 This isn't a regression from 5.14.x, so don't mention this.
542 XXX Any significant changes to the testing of a freshly built perl should be
543 listed here. Changes which create B<new> files in F<t/> go here as do any
544 large changes to the testing harness (e.g. when parallel testing was added).
545 Changes to existing files in F<t/> aren't worth summarising, although the bugs
546 that they represent may be covered elsewhere.
548 [ List each test improvement as a =item entry ]
554 F<t/porting/utils.t> now tests that various utility scripts compile cleanly.
555 During development, this avoids the embarrassment of inadvertently pushing a
556 commit which breaks code which isn't otherwise tested by the regression test
557 suite. For example, F<installperl> and F<installman>, needed by
558 C<make install>, are tested here.
562 =head1 Platform Support
564 XXX Any changes to platform support should be listed in the sections below.
566 [ Within the sections, list each platform as a =item entry with specific
567 changes as paragraphs below it. ]
571 XXX List any platforms that this version of perl compiles on, that previous
572 versions did not. These will either be enabled by new files in the F<hints/>
573 directories, or new subdirectories and F<README> files at the top level of the
578 =item XXX-some-platform
584 =head2 Discontinued Platforms
586 XXX List any platforms that this version of perl no longer compiles on.
590 =item XXX-some-platform
596 =head2 Platform-Specific Notes
598 XXX List any changes for specific platforms. This could include configuration
599 and compilation changes or changes in portability/compatibility. However,
600 changes within modules for platforms should generally be listed in the
601 L</Modules and Pragmata> section.
605 =item XXX-some-platform
611 =head1 Internal Changes
613 XXX Changes which affect the interface available to C<XS> code go here.
614 Other significant internal changes for future core maintainers should
617 [ List each change as a =item entry ]
623 There are now feature bundle hints in C<PL_hints> (C<$^H>) that version
624 declarations use, to avoid having to load F<feature.pm>. One setting of
625 the hint bits indicates a "custom" feature bundle, which means that the
626 entries in C<%^H> still apply. F<feature.pm> uses that.
628 The C<HINT_FEATURE_MASK> macro is defined in F<perl.h> along with other
629 hints. Other macros for setting and testing features and bundles are in
630 the new F<feature.h>. C<FEATURE_IS_ENABLED> (which has moved to
631 F<feature.h>) is no longer used throughout the codebase, but more specific
632 macros, e.g., C<FEATURE_SAY_IS_ENABLED>, that are defined in F<feature.h>.
636 F<lib/feature.pm> is now a generated file, created by the new
637 F<regen/feature.pl> script, which also generates F<feature.h>.
641 Tied arrays are now always C<AvREAL>. If C<@_> or C<DB::args> is tied, it
642 is reified first, to make sure this is always the case.
646 =head1 Selected Bug Fixes
648 XXX Important bug fixes in the core language are summarised here.
649 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
650 L</Modules and Pragmata>.
652 [ List each fix as a =item entry ]
656 =item * "b . COND" in the debugger has been fixed
658 Breaking on the current line with C<b . COND> was broken by previous work and
663 Tying C<%^H> no longer causes perl to crash or ignore
664 the contents of C<%^H> when entering a compilation
665 scope [perl #106282].
667 =item * C<~> on vstrings
669 The bitwise complement operator (and possibly other operators, too) when
670 passed a vstring would leave vstring magic attached to the return value,
671 even though the string had changed. This meant that
672 C<< version->new(~v1.2.3) >> would create a version looking like "v1.2.3"
673 even though the string passed to C<< version->new >> was actually
674 "\376\375\374". This also caused L<B::Deparse> to deparse C<~v1.2.3>
675 incorrectly, without the C<~> [perl #29070].
677 =item * Vstrings blowing away magic
679 Assigning a vstring to a magic (e.g., tied, C<$!>) variable and then
680 assigning something else used to blow away all the magic. This meant that
681 tied variables would come undone, C<$!> would stop getting updated on
682 failed system calls, C<$|> would stop setting autoflush, and other
683 mischief would take place. This has been fixed.
685 =item * C<newHVhv> and tied hashes
687 The C<newHVhv> XS function now works on tied hashes, instead of crashing or
688 returning an empty hash.
690 =item * Hashes will null elements
692 It is possible from XS code to create hashes with elements that have no
693 values. Perl itself sometimes creates such hashes, but they are rarely
694 visible to Perl code. The hash element and slice operators used to crash
695 when handling these in lvalue context. These have been fixed. They now
696 produce a "Modification of non-creatable hash value attempted" error
699 =item * No warning for C<open(foo::bar)>
701 When one writes C<open foo || die>, which used to work in Perl 4, a
702 "Precedence problem" warning is produced. This warning used erroneously to
703 apply to fully-qualified bareword handle names not followed by C<||>. This
706 =item * C<select> and package aliasing
708 After package aliasing (C<*foo:: = *bar::>), C<select> with 0 or 1 argument
709 would sometimes return a name that could not be used to refer to the
710 filehandle, or sometimes it would return C<undef> even when a filehandle
711 was selected. Now it returns a typeglob reference in such cases.
713 =item * C<PerlIO::get_layers> and tied variables
715 C<PerlIO::get_layers> no longer ignores FETCH on tied variables as it used
716 to most of the time [perl #97956].
718 =item * C<PerlIO::get_layers> and numbers
720 C<PerlIO::get_layers> no longer ignores some arguments that it thinks are
721 numeric, while treating others as filehandle names. It is now consistent
722 for flat scalars (i.e., not references).
724 =item * Lvalue subs and strict mode
726 Lvalue sub calls that are not determined to be such at compile time
727 (C<&$name> or &{"name"}) are no longer exempt from strict refs if they
728 occur in the last statement of an lvalue subroutine [perl #102486].
730 =item * Non-lvalue sub calls in potentially lvalue context
732 Sub calls whose subs are not visible at compile time, if
733 they occurred in the last statement of an lvalue subroutine,
734 would reject non-lvalue subroutines and die with "Can't modify non-lvalue
735 subroutine call" [perl #102486].
737 Non-lvalue sub calls whose subs I<are> visible at compile time exhibited
738 the opposite bug. If the call occurred in the last statement of an lvalue
739 subroutine, there would be no error when the lvalue sub was called in
740 lvalue context. Perl would blindly assign to the temporary value returned
741 by the non-lvalue subroutine.
743 =item * AUTOLOADing lvalue subs
745 C<AUTOLOAD> routines used to take precedence over the actual sub being
746 called (i.e., when autoloading wasn't needed), for sub calls in lvalue or
747 potential lvalue context, if the subroutine was not visible at compile
750 =item * C<caller> and tied C<@DB::args>
752 C<caller> sets C<@DB::args> to the subroutine arguments when called from
753 the DB package. It used to crash when doing so if C<@DB::args> happened to
754 be tied. Now it croaks instead.
758 Under debugging builds, this code:
760 sub TIEARRAY{bless[]}
766 use to produce an "av_reify called on tied array" warning. It doesn't any
769 =item * Unrecognised switches on C<#!> line
771 If a switch, such as B<-x>, that cannot occur on the C<#!> line is used
772 there, perl dies with "Can't emulate...".
774 It used to produce the same message for switches that perl did not
775 recognise at all, whether on the command line or the C<#!> line.
777 Now it produces the "Unrecognized switch" error message [perl #104288].
779 =item * C<system> and SIGCHLD
781 C<system> now temporarily blocks the SIGCHLD signal handler, to prevent the
782 signal handler from stealing the exit status [perl #105700].
784 =item * Deleting methods via C<delete>
786 Deletion of methods via C<delete $Class::{method}> syntax used to update
787 method caches if called in void context, but not scalar or list context.
788 Now it always updates those caches.
790 =item * Hash element deletion and destructors
792 When hash elements are deleted in void context, the internal hash entry is
793 now freed before the value is freed, to prevent destructors called by that
794 latter freeing from seeing the hash in an inconsistent state. It was
795 possible to cause double-frees if the destructor freed the hash itself
798 =item * C<(s)printf>'s %n formatting code
800 The %n formatting code, which causes the number of characters to be
801 assigned to the next argument to C<printf> or C<sprintf> now actually
802 assigns the number of characters, instead of the number of bytes.
804 It also works now with special lvalue functions like C<substr> and with
805 nonexistent hash and array elements [perl #103492].
807 =item * Typeglobs and threads
809 Typeglobs returned from threads are no longer cloned if the parent thread
810 already has a glob with the same name. This means that returned
811 subroutines will now assign to the right package variables [perl #107366].
815 In Perl 5.14, C<local $_> was changed to create a new variable not tied to
816 anything, even if $_ was tied before that. But, due to an oversight, it
817 would still call FETCH once on a tied $_ before replacing it with the new
818 variable. This has been fixed [perl #105912].
820 =item * Returning tied variables
822 When returning a value from a non-lvalue subroutine, Perl copies the value.
823 Sometimes it cheats for the sake of speed, and does not copy the value if
824 it makes no observable difference. This optimisation was erroneously
825 allowing the copy to be skipped on tied variables, causing a difference in
826 behaviour depending on the tied variable's reference count. This has been
829 =item * C<{@a = sort}> no longer crashes
831 This particular piece of code (C<sort> with no arguments assigned to an
832 array, inside a block with no C<;>) started crashing in an earlier 5.15.x
833 release. It has been fixed.
835 =item * C<utf8::decode> and read-only scalars
837 C<utf8::decode> now refuses to modify read-only scalars [perl #91850].
839 =item * C<dbmopen> with undefined mode
841 C<dbmopen> now only warns once, rather than three times, if the mode
842 argument is C<undef> [perl #90064].
844 =item * Freeing an aggregate during list assignment
846 If list assignment to a hash or array triggered destructors that freed the
847 hash or array itself, a crash would ensue. This is no longer the case
850 =item * Confused internal bookkeeping with @ISA arrays
852 Creating a weak reference to an @ISA array or accessing the array index
853 (C<$#ISA>) could result in confused internal bookkeeping for elements
854 subsequently added to the @ISA array. For instance, creating a weak
855 reference to the element itself could push that weak reference on to @ISA;
856 and elements added after use of C<$#ISA> would be ignored by method lookup
859 =item * DELETE on scalar ties
861 Tying an element of %ENV or C<%^H> and then deleting that element would
862 result in a call to the tie object's DELETE method, even though tying the
863 element itself is supposed to be equivalent to tying a scalar (the element
864 is, of course, a scalar) [perl #67490].
866 =item * Freeing $_ inside C<grep> or C<map>
868 Freeing $_ inside a C<grep> or C<map> block or a code block embedded in a
869 regular expression used to result in double frees [perl #92254, #92256].
871 =item * Warnings with C<+=>
873 The C<+=> operator does not usually warn when the left-hand side is
874 C<undef>, but it was doing so for tied variables. This has been fixed
877 =item * Tying and autovivification
879 When Perl autovivifies an element of a tied array or hash (which entails
880 calling STORE with a new reference), it now calls FETCH immediately after
881 the STORE, instead of assuming that FETCH would have returned the same
882 reference. This can make it easier to implement tied objects [perl #35865, #43011].
884 =item * C<@&> and C<$&>
886 Mentioning a variable named "&" other than C<$&> (i.e., C<@&> or C<%&>) no
887 longer stops C<$&> from working. The same applies to variables named "'"
888 and "`" [perl #24237].
890 =item * Stacked filetests
892 C<-T> and C<-B> now work when stacked up with other filetest operators
895 =item * Filetests and stat buffers
897 Perl keeps several internal variables to keep track of the last stat
898 buffer, from which file(handle) it originated, what type it was, and
899 whether the last stat succeeded.
901 There were various cases where these could get out of synch, resulting in
902 inconsistent or erratic behaviour in edge cases (every mention of C<-T>
903 applies to C<-B> as well):
909 C<-T I<HANDLE>>, even though it does a C<stat>, was not resetting the last
910 stat type, so an C<lstat _> following it would merrily return the wrong
911 results. Also, it was not setting the success status.
915 Freeing the handle last used by C<stat> or a filetest could result in
916 S<C<-T _>> using an unrelated handle.
920 C<stat> with an IO reference (as returned by C<*STDIO{IO}>, for instance)
921 would not reset the stat type.
925 C<stat> with an IO reference was not recording the filehandle for
930 The presence of fatal warnings could cause the stat buffer not to be reset
931 for a filetest operator on an unopened filehandle or C<-l> on any handle.
935 Fatal warnings would stop C<-T> from setting C<$!>.
939 When the last stat was on an unreadable file, C<-T _> is supposed to
940 return C<undef>, leaving the last stat buffer unchanged. But it was
941 setting the stat type, causing C<lstat _> to stop working.
945 C<-T I<FILENAME>> was not resetting the internal stat buffers for
950 These have all been fixed.
952 =item * C<defined *{"!"}>
954 An earlier 5.15.x release caused this construct to stop the C<%!> hash
955 from working. Likewise C<defined *{"+"}> and C<defined *{"-"}> caused
956 C<%+> and C<%->, respectively, to stop working. This has been fixed.
958 =item * C<-T _> with no preceding C<stat>
960 This used to produce a confusing "uninitialized" warning, even though there
961 is no visible uninitialized value to speak of.
963 =item * C<stat I<HANDLE>> and fstat failures
965 If the operating system's C<fstat> function failed, C<stat> would warn
966 about an unopened handle, even though that was not the case. This has been
969 =item * C<lstat I<IOREF>>
971 C<lstat> is documented to fall back to C<stat> (with a warning) when given
972 a filehandle. When passed an IO reference, it was actually doing the
973 equivalent of S<C<stat _>> and ignoring the handle.
975 =item * Crashes with warnings
977 Two warning messages that mention variable names started crashing in
978 5.15.5, but have been fixed [perl #106726].
980 =item * Bitwise assignment operators and copy-on-write
982 In 5.14.0, the bitwise assignment operators C<|=>, C<^=> and C<&=> starting
983 leaving the left-hand side undefined if it happened to be a copy-on-write
984 string. This has been fixed [perl #108480].
988 =head1 Known Problems
990 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
991 tests that had to be C<TODO>ed for the release would be noted here, unless
992 they were specific to a particular platform (see below).
994 This is a list of some significant unfixed bugs, which are regressions
995 from either 5.XXX.XXX or 5.XXX.XXX.
997 [ List each fix as a =item entry ]
1009 XXX If any significant core contributor has died, we've added a short obituary
1012 =head1 Acknowledgements
1014 XXX Generate this with:
1016 perl Porting/acknowledgements.pl v5.15.6..HEAD
1018 =head1 Reporting Bugs
1020 If you find what you think is a bug, you might check the articles
1021 recently posted to the comp.lang.perl.misc newsgroup and the perl
1022 bug database at http://rt.perl.org/perlbug/ . There may also be
1023 information at http://www.perl.org/ , the Perl Home Page.
1025 If you believe you have an unreported bug, please run the L<perlbug>
1026 program included with your release. Be sure to trim your bug down
1027 to a tiny but sufficient test case. Your bug report, along with the
1028 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1029 analysed by the Perl porting team.
1031 If the bug you are reporting has security implications, which make it
1032 inappropriate to send to a publicly archived mailing list, then please send
1033 it to perl5-security-report@perl.org. This points to a closed subscription
1034 unarchived mailing list, which includes
1035 all the core committers, who will be able
1036 to help assess the impact of issues, figure out a resolution, and help
1037 co-ordinate the release of patches to mitigate or fix the problem across all
1038 platforms on which Perl is supported. Please only use this address for
1039 security issues in the Perl core, not for modules independently
1040 distributed on CPAN.
1044 The F<Changes> file for an explanation of how to view exhaustive details
1047 The F<INSTALL> file for how to build Perl.
1049 The F<README> file for general stuff.
1051 The F<Artistic> and F<Copying> files for copyright information.