5 perldelta - what is new for perl v5.15.0
9 This document describes differences between the 5.15.0 release and
12 If you are upgrading from an earlier release such as 5.12.0, first read
13 L<perl5140delta>, which describes differences between 5.12.0 and
16 Some of the changes have been included in Perl 5.14.1. These are
17 indicated with a "(5.14.1)" marker.
19 =head1 Core Enhancements
21 =head2 C<CORE::> works on all keywords
23 The C<CORE::> prefix can now be used on keywords enabled by
24 L<feature.pm|feature>, even outside the scope of C<use feature>. Relevant
25 documentation files L<CORE>, L<feature>, L<perlfunc>, L<perlsub>, and
26 L<perlsyn> have been updated.
28 =head2 C<continue> no longer requires the "switch" feature
30 The C<continue> keyword has two meanings. It can introduce a C<continue>
31 block after a loop, or it can exit the current C<when> block. Up till now,
32 the latter meaning was only valid with the "switch" feature enabled, and
33 was a syntax error otherwise. Since the main purpose of feature.pm is to
34 avoid conflicts with user-defined subroutines, there is no reason for
35 C<continue> to depend on it.
37 =head2 C<$$> can be assigned to
39 C<$$> was made read-only in Perl 5.8.0. But only sometimes: C<local $$>
40 would make it writable again. Some CPAN modules were using C<local $$> or
41 XS code to bypass the read-only check, so there is no reason to keep C<$$>
42 read-only. (This change also allowed a bug to be fixed while maintaining
43 backward compatibility.)
45 =head2 Features inside the debugger
47 The current Perl's feature bundle is now enabled for commands entered in
48 the interactive debugger.
50 =head2 C<\N{...}> can now have Unicode loose name matching
52 This is described in the C<charnames> item in
53 L</Updated Modules and Pragmata> below.
55 =head2 Breakpoints with file names
57 The debugger's "b" command for setting breakpoints now allows a line number
58 to be prefixed with a file name. See
59 L<perldebug/"b [file]:[line] [condition]">.
63 No changes since 5.14.0.
65 =head1 Incompatible Changes
67 =head2 Tying scalars that hold typeglobs
69 Attempting to tie a scalar after a typeglob was assigned to it would
70 instead tie the handle in the typeglob's IO slot. This meant that it was
71 impossible to tie the scalar itself. Similar problems affected C<tied> and
72 C<untie>: C<tied $scalar> would return false on a tied scalar if the last
73 thing returned was a typeglob, and C<untie $scalar> on such a tied scalar
76 We fixed this problem before Perl 5.14.0, but it caused problems with some
77 CPAN modules, so we put in a deprecation cycle instead.
79 Now the deprecation has been removed and this bug has been fixed. So
80 C<tie $scalar> will always tie the scalar, not the handle it holds. To tie
81 the handle, use C<tie *$scalar> (with an explicit asterisk). The same
82 applies to C<tied *$scalar> and C<untie *$scalar>.
84 =head2 IPC::Open3 no longer provides C<xfork()>, C<xclose_on_exec()>
87 All three functions were private, undocumented and unexported. They do
88 not appear to be used by any code on CPAN. Two have been inlined and one
91 =head2 C<$$> no longer caches PID
93 Previously, if one embeds Perl or uses XS and calls fork(3) from C, Perls
94 notion of C<$$> could go out of sync with what getpid() returns. By always
95 fetching the value of C<$$> via getpid(), this potential bug is eliminated.
96 Code that depends on the caching behavior will break. As described in
97 L</Core Enhancements>, C<$$> is now writable, but it will be reset during a
102 There have been no deprecations since 5.14.0.
104 =head1 Performance Enhancements
106 There are no benchmarked enhancements since 5.14.0.
108 =head1 Modules and Pragmata
110 =head2 New Modules and Pragmata
114 =head2 Updated Modules and Pragmata
120 L<charnames> has been updated from version 1.18 to version 1.22
122 L<charnames> can now be invoked with a new option, C<:loose>,
123 which is like the existing C<:full> option, but enables Unicode loose
124 name matching. Details are in L<charnames/LOOSE MATCHES>.
128 L<constant> has been updated from version 1.21 to 1.22.
132 L<Archive::Extract> has been upgraded from version 0.48 to version 0.52
134 Includes a fix for FreeBSD to only use C<unzip> if it is located in
135 C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in
140 L<Attribute::Handlers> updated from version 0.88 to 0.91
144 L<B> has been upgraded from version 1.29 to version 1.30.
148 L<B::Deparse> has been upgraded from version 1.03 to 1.05. (Perl 5.14.1
151 It addresses two regressions in Perl 5.14.0:
157 Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now
158 works again [perl #90898] (5.14.1).
162 The presence of subroutines named C<::::> or C<::::::> no longer causes
163 B::Deparse to hang (5.14.1).
167 Plus a few other bugs:
173 Deparsing of handle C<keys>, C<each> and C<value> with a scalar argument
174 now works [perl #91008].
178 C<readpipe> followed by a complex expression (as opposed to a simple scalar
183 It now puts C<CORE::> in front of overridable core keywords if they
184 conflict with user-defined subroutines.
188 Deparsing assignment to an lvalue method specified as a variable
189 (C<< $obj->$method = ... >>) used not to work [perl #62498].
195 L<CGI> has been upgraded from version 3.52 to version 3.54
197 The DELETE HTTP verb is now supported.
201 L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035
205 L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035
209 L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035
213 L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930
217 L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105
219 Now understands specifying modules to install in the format 'Module/Type.pm'
223 L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56
227 L<Data::Dumper> has been upgraded from version 2.128 to 2.131.
231 L<DB_File> has been upgraded from version 1.821 to version 1.822
233 Warnings are now in sync with perl's
237 L<Digest::SHA> has been upgraded from version 5.61 to version 5.62
239 No longer loads L<MIME::Base64> as this was unnecessary.
243 L<Devel::Peek> has been upgraded from version 1.07 to 1.08.
245 Its C<fill_mstats> function no longer refuses to write to copy-on-write
250 L<Encode> has been upgraded from version 2.42 to version 2.43
252 Missing aliases added, a deep recursion error fixed and various
253 documentation updates.
257 L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280204. The new version
258 append CFLAGS and LDFLAGS to their Config.pm counterparts.
262 L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39
264 C<decrypt> fixed to work with v5.14.0
268 L<Filter::Simple> updated from version 0.85 to 0.87
272 L<FindBin> updated from version 1.50 to 1.51.
274 It no longer returns a wrong result if a script of the same name as the
275 current one exists in the path and is executable.
279 L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200
281 Fixed C<incr_parse> decoding string more correctly.
285 L<I18N::LangTags> has been upgraded from version 0.35_01 to version 0.36.
287 Fix broken URLs for RFCs.
291 L<IPC::Open3> has been upgraded from version 1.10 to version 1.11.
297 Fixes a bug which prevented use of C<open3> on Windows when C<*STDIN>,
298 C<*STDOUT> or C<*STDERR> had been localized.
302 Fixes a bug which prevented duplicating numeric file descriptors on Windows.
308 L<Math::BigFloat> has been upgraded from version 1.993 to 1.994.
310 The C<numify> method has been corrected to return a normalised Perl number
311 (the result of C<0 + $thing>), instead of a string [rt.cpan.org #66732].
315 L<Math::BigInt> has been upgraded from version 1.994 to 1.995.
317 It provides a new C<bsgn> method that complements the C<babs> method.
319 It fixes the internal C<objectify> function's handling of "foreign objects"
320 so they are converted to the appropriate class (Math::BigInt or
325 L<Math::Complex> has been upgraded from version 1.56 to version 1.57.
327 Correct copy constructor usage.
328 Fix polarwise formatting with numeric format specifier.
329 More stable C<great_circle_direction> algorithm.
333 L<Module::CoreList> has been upgraded from version 2.49 to 2.50.
335 Updated for v5.12.4 and v5.14.1.
339 L<mro> has been updated to remove two broken URLs in the documentation.
343 L<Object::Accessor> has been upgraded from version 0.38 to version 0.42
345 Eliminated use of C<exists> on array elements which has been deprecated.
349 L<ODBM_File> has been upgraded from version 1.10 to version 1.11.
351 The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
352 performance under ithreads.
356 L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15
360 L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12.
362 It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
363 C<$scalar> is a copy-on-write scalar.
365 It also fixes a hang that occurs with C<readline> or C<< <$fh> >> if a
366 typeglob has been assigned to $scalar [perl #92258].
370 L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_05.
372 It corrects the search paths on VMS [perl #90640]. (5.14.1)
376 L<Storable> has been upgraded from version 2.27 to version 2.28.
378 It no longer turns copy-on-write scalars into read-only scalars when
379 freezing and thawing.
383 L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29
385 Large number of Request Tickets resolved.
389 L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
391 Portability fix, and avoiding some compiler warnings.
395 L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76
397 Updated to CLDR 1.9.1
401 L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12
403 Fixes for the removal of F<unicore/CompositionExclusions.txt> from core.
407 L<XSLoader> has been upgraded from version 0.13 to version 0.15
409 Integrated changes from bleadperl
413 =head2 Removed Modules and Pragmata
415 As promised in Perl 5.14.0's release notes, the following modules have
416 been removed from the core distribution, and if needed should be installed
423 C<Devel::DProf> has been removed from the Perl core. Prior version was 20110228.00.
427 C<Shell> has been removed from the Perl core. Prior version was 0.72_01.
433 =head2 New Documentation
437 =head2 Changes to Existing Documentation
445 Added portability caveats related to using C<kill> on forked process.
455 Documentation for C<use> now includes a pointer to F<if.pm> (5.14.1)
459 C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
463 The examples for the C<select> function no longer use strings for file
474 Some of the function descriptions in L<perlguts> were confusing, as it was
475 not clear whether they referred to the function above or below the
476 description. This has been clarified [perl #91790].
486 L<perllol> has been expanded with examples using the new C<push $scalar>
487 syntax introduced in Perl 5.14.0 (5.14.1).
497 L<perlmod> now states explicitly that some types of explicit symbol table
498 manipulation are not supported. This codifies what was effectively already
499 the case [perl #78074].
509 The explanation of bitwise operators has been expanded to explain how they
510 work on Unicode strings (5.14.1).
514 The section on the triple-dot or yada-yada operator has been moved up, as
515 it used to separate two closely related sections about the comma operator
520 More examples for C<m//g> have been added (5.14.1).
524 The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
528 =head3 L<perlpodstyle>
534 The tips on which formatting codes to use have been corrected and greatly
539 There are now a couple of example one-liners for previewing POD files after
540 they have been edited.
550 The L<perlsub/"Lvalue subroutines"> section has been amended to reflect
551 changes and bug fixes introduced in Perl 5.15.0.
561 The C<(*COMMIT)> directive is now listed in the right section
562 (L<Verbs without an argument|perlre/Verbs without an argument>).
572 L<perlrun> has undergone a significant clean-up. Most notably, the
573 B<-0x...> form of the B<-0> flag has been clarified, and the final section
574 on environment variables has been corrected and expanded (5.14.1).
584 Documented the required syntax for tying handles.
594 The documentation for L<$!|perlvar/$!> has been corrected and clarified.
595 It used to state that $! could be C<undef>, which is not the case. It was
596 also unclear as to whether system calls set C's C<errno> or Perl's C<$!>
601 Documentation for L<$$|perlvar/$$> has been amended with additional
602 cautions regarding changing the process ID.
612 The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>,
613 C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been
620 The following additions or changes have been made to diagnostic output,
621 including warnings and fatal error messages. For the complete list of
622 diagnostic messages, see L<perldiag>.
624 =head2 New Diagnostics
630 =item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
632 Assigning to a temporary returned from an XS lvalue subroutine now produces a
633 warning [perl #31946].
637 =head2 Changes to Existing Diagnostics
641 =head1 Utility Changes
645 =head1 Configuration and Compilation
651 F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
652 option, as used by some projects that include perl's header files (5.14.1).
656 USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V
657 as they have affect the behaviour of the interpreter binary (albeit only
662 The code and tests for L<IPC::Open2> have been moved from F<ext/IPC-Open2>
663 into F<ext/IPC-Open3>, as C<IPC::Open2::open2()> is implemented as a thin
664 wrapper around C<IPC::Open3::_open3()>, and hence is very tightly coupled to
669 The magic types and magic vtables are now generated from data in a new script
670 F<regen/mg_vtable.pl>, instead of being maintained by hand. As different EBCDIC
671 variants can't agree on the code point for '~', the character to code point
672 conversion is done at build time by F<generate_uudmap> to a new generated header
673 F<mg_data.h>. C<PL_vtbl_bm> and C<PL_vtbl_fm> are now defined by the
674 pre-processor as C<PL_vtbl_regexp>, instead of being distinct C variables.
675 C<PL_vtbl_sig> has been removed.
679 Building with C<-DPERL_GLOBAL_STRUCT> works again. This configuration is not
684 Perl configured with I<MAD> now correctly frees C<MADPROP> structures when
685 OPs are freed. C<MADPROP>s are now allocated with C<PerlMemShared_malloc()>
691 There have been no significant changes to the process for testing a
694 See the source code commit history for changes to individual test files.
696 =head1 Platform Support
702 =head2 Discontinued Platforms
706 =head2 Platform-Specific Notes
714 No longer overrides possible extra $ccflags values given to Configure
715 on GNU/Hurd. C.f. Bug-Debian: http://bugs.debian.org/587901
725 Clarified Apple Developer Tools requirements in F<README.macosx>
729 Mac OS X specific compilation instructions have been clarified (5.14.1)
739 Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
740 updated accordingly. [perl #91354]
750 Updated the list of required packages for building perl to reflect Solaris 9
751 and 10 in README.solaris [perl #90850] (5.14.1)
761 The L<ODBM_File> installation process has been updated with the new library
762 paths on Ubuntu natty [perl #90106] (5.14.1)
766 I<h2ph> now gets the include paths from gcc correctly. This stopped
767 working when Ubuntu switched to a "multiarch" setup [perl #90122].
771 =head1 Internal Changes
777 The compiled representation of formats is now stored via the C<mg_ptr> of
778 their C<PERL_MAGIC_fm>. Previously it was stored in the string buffer,
779 beyond C<SvLEN()>, the regular end of the string. C<SvCOMPILED()> and
780 C<SvCOMPILED_{on,off}()> now exist solely for compatibility for XS code.
781 The first is always 0, the other two now no-ops. (5.14.1)
785 Some global variables have been marked C<const>, members in the interpreter
786 structure have been re-ordered, and the opcodes have been re-ordered. The op
787 C<OP_AELEMFAST> has been split into C<OP_AELEMFAST> and C<OP_AELEMFAST_LEX>.
791 When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY
792 field is no longer temporarily zeroed. Any destructors called on the freed
793 elements see the remaining elements. Thus, %h=() becomes more like C<delete
798 Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
799 stored via the mg_ptr of their C<PERL_MAGIC_bm>. Previously they were PVGVs,
800 with the tables stored in the string buffer, beyond C<SvLEN()>. This eliminates
801 the last place where the core stores data beyond C<SvLEN()>.
805 Simplified logic in C<Perl_sv_magic()> introduces a small change of
806 behaviour for error cases involving unknown magic types. Previously, if
807 C<Perl_sv_magic()> was passed a magic type unknown to it, it would
813 Croak "Modification of a read-only value attempted" if read only
817 Return without error if the SV happened to already have this magic
821 otherwise croak "Don't know how to handle magic of type \\%o"
825 Now it will always croak "Don't know how to handle magic of type \\%o", even
826 on read only values, or SVs which already have the unknown magic type.
830 =head1 Selected Bug Fixes
832 =head2 Regular expressions and character classes
838 The new (in 5.14.0) regular expression modifier C</a> when repeated like
839 C</aa> forbids the characters outside the ASCII range that match
840 characters inside that range from matching under C</i>. This did not
841 work under some circumstances, all involving alternation, such as:
843 "\N{KELVIN SIGN}" =~ /k|foo/iaa;
845 succeeded inappropriately. This is now fixed.
849 5.14.0 introduced some memory leaks in regular expression character
850 classes such as C<[\w\s]>, which have now been fixed (5.14.1)
854 An edge case in regular expression matching could potentially loop.
855 This happened only under C</i> in bracketed character classes that have
856 characters with multi-character folds, and the target string to match
857 against includes the first portion of the fold, followed by another
858 character that has a multi-character fold that begins with the remaining
859 portion of the fold, plus some more.
861 "s\N{U+DF}" =~ /[\x{DF}foo]/i
863 is one such case. C<\xDF> folds to C<"ss">. (5.14.1)
867 A few characters in regular expression pattern matches did not
868 match correctly in some circumstances, all involving C</i>. The
869 affected characters are:
870 COMBINING GREEK YPOGEGRAMMENI,
871 GREEK CAPITAL LETTER IOTA,
872 GREEK CAPITAL LETTER UPSILON,
873 GREEK PROSGEGRAMMENI,
874 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
875 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
876 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
877 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
878 LATIN SMALL LETTER LONG S,
879 LATIN SMALL LIGATURE LONG S T,
881 LATIN SMALL LIGATURE ST.
885 Fixed memory leak regression in regular expression compilation
896 A number of edge cases have been fixed with formats and C<formline>;
897 in particular, where the format itself is potentially variable (such as
898 with ties and overloading), and where the format and data differ in their
899 encoding. In both these cases, it used to possible for the output to be
900 corrupted [perl #91032].
904 C<formline> no longer converts its argument into a string in-place. So
905 passing a reference to C<formline> no longer destroys the reference
910 =head2 Copy-on-write scalars
912 Copy-on-write scalars were introduced in 5.8.0, but most Perl code
913 did not encounter them (they were used mostly internally). Perl
914 5.10.0 extended them, such that assigning C<__PACKAGE__> or a
915 hash key to a scalar would make it copy-on-write. Several parts
916 of Perl were not updated to account for them, but have now been fixed.
922 C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
923 string buffers in place (i.e., skipping the copy). This could result in
924 hashes having two elements with the same key [perl #91834].
928 Lvalue subroutines were not allowing COW scalars to be returned. This was
929 fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
930 was not fixed until this release.
934 Elements of restricted hashes (see the L<fields> pragma) containing
935 copy-on-write values couldn't be deleted, nor could such hashes be cleared
940 Localising a tied variable used to make it read-only if it contained a
941 copy-on-write string.
945 L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
946 See L</Updated Modules and Pragmata>, above.
950 =head2 lvalue subroutines
952 There have been various fixes to lvalue subroutines.
958 Explicit return now returns the actual argument passed to return, instead
959 of copying it [perl #72724] [perl #72706].
961 B<Note:> There are still some discrepancies between explicit and implicit
962 return, which will hopefully be resolved soon. So the exact behaviour is
963 not set in stone yet.
967 Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
968 the left-hand side of C<=>) for the last statement and the arguments to
969 return. Since lvalue subroutines are not always called in lvalue context,
970 this restriction has been lifted.
974 Lvalue subroutines are less restrictive as to what values can be returned.
975 It used to croak on values returned by C<shift> and C<delete> and from
976 other subroutines, but no longer does so [perl #71172].
980 Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
981 context. In fact, all subroutines used to, but regular subs were fixed in
982 Perl 5.8.2. Now lvalue subroutines have been likewise fixed.
986 Lvalue subroutines used to copy their return values in rvalue context. Not
987 only was this a waste of CPU cycles, but it also caused bugs. A C<($)>
988 prototype would cause an lvalue sub to copy its return value [perl #51408],
989 and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
994 Autovivification now works on values returned from lvalue subroutines
999 When called in pass-by-reference context (e.g., subroutine arguments or a list
1000 passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
1001 the arrays (or hashes) to scalar variables--something that is not supposed to
1002 happen. This could result in "Bizarre copy of ARRAY" errors or C<print>
1003 ignoring its arguments. It also made nonsensical code like C<@{\$_}> "work".
1004 This was fixed in 5.14.0 if an array were the first thing returned from the
1005 subroutine (but not for C<$scalar, @array> or hashes being returned). Now a
1006 more general fix has been applied [perl #23790].
1010 When called in pass-by-reference context, lvalue subroutines used to copy
1011 any read-only value that was returned. E.g., C< sub :lvalue { $] } >
1012 would not return C<$]>, but a copy of it.
1016 Assignment to C<keys> returned from an lvalue sub used not to work, but now
1021 Applying the C<:lvalue> attribute to an XSUB or to an aliased subroutine
1022 stub with C<< sub foo :lvalue; >> syntax stopped working in Perl 5.12.
1023 This has been fixed.
1027 =head2 Fixes related to hashes
1033 A bug has been fixed that would cause a "Use of freed value in iteration"
1034 error if the next two hash elements that would be iterated over are
1035 deleted [perl #85026]. (5.14.1)
1039 Freeing deeply nested hashes no longer crashes [perl #44225].
1043 Deleting the current hash iterator (the hash element that would be returend
1044 by the next call to C<each>) in void context used not to free it. The hash
1045 would continue to reference it until the next iteration. This has been
1046 fixed [perl #85026].
1050 =head2 Other notable fixes
1056 Passing the same constant subroutine to both C<index> and C<formline> no
1057 longer causes one or the other to fail [perl #89218]. (5.14.1)
1061 List assignment to lexical variables declared with attributes in the same
1062 statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
1063 It has now been fixed.
1067 Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
1068 a pack template equivalent to "U0" if the input string was empty. This has
1069 been fixed [perl #90160].
1073 Destructors on objects were not called during global destruction on objects
1074 that were not referenced by any scalars. This could happen if an array
1075 element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
1076 blessed variable (C<bless \my @a; sub foo { @a }>).
1078 Now there is an extra pass during global destruction to fire destructors on
1079 any objects that might be left after the usual passes that check for
1080 objects referenced by scalars [perl #36347].
1082 This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
1083 modules that were relying on the bug. Since it was so close to Perl
1084 5.14.0, the fix was reverted in 5.13.10, to allow more time for the modules
1085 to adapt. Hopefully they will be fixed soon (see L</Known Problems>,
1090 C<given> was not calling set-magic on the implicit lexical C<$_> that it
1091 uses. This meant, for example, that C<pos> would be remembered from one
1092 execution of the same C<given> block to the next, even if the input were a
1093 different variable [perl #84526].
1097 The "R" command for restarting a debugger session has been fixed to work on
1098 Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
1103 Fixed a case where it was possible that a freed buffer may have been read
1104 from when parsing a here document [perl #90128]. (5.14.1)
1108 The C<study> function could become confused if fed a string longer than
1109 2**31 characters. Now it simply skips such strings.
1113 C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
1114 inside a C<while> condition [perl #90888].
1118 In @INC filters (subroutines returned by subroutines in @INC), $_ used to
1119 misbehave: If returned from a subroutine, it would not be copied, but the
1120 variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
1121 would cause perl to crash. This has been fixed [perl #91880].
1125 An ASCII single quote (') in a symbol name is meant to be equivalent to a
1126 double colon (::) except at the end of the name. It was not equivalent if
1127 followed by a null character, but now it is [perl #88138].
1131 The abbreviations for four C1 control characters
1137 were previously unrecognized by C<\N{}>,
1138 vianame(), and string_vianame().
1142 Some cases of threads crashing due to memory allocation during cloning have
1143 been fixed [perl #90006].
1147 Attempting to C<goto> out of a tied handle method used to cause memory
1148 corruption or crashes. Now it produces an error message instead
1153 Perl skips copying values returned from a subroutine if it thinks the value
1154 is not in use elsewhere. Due to faulty logic, this would happen with the
1155 result of C<delete>, C<shift> or C<splice>, even if the result was
1156 referenced elsewhere. So C<< \sub { delete $_[0] }->($x) >> would return a
1157 reference to C<$x>. This has been fixed [perl #91844].
1161 =head1 Known Problems
1167 The fix for perl #36347 causes test failures for C<Gtk2> and C<Tk> on some
1168 systems [perl #82542].
1172 The changes to C<tie> cause test failures for the C<JS> module.
1176 The changes to C<$$> cause test failures for the C<Event> module.
1181 =head1 Acknowledgements
1183 Perl 5.15.0 represents approximatly five weeks of development since Perl
1184 5.14.0 and contains approximately 54,000 lines of changes across 618
1185 files from 57 authors.
1187 Perl continues to flourish into its third decade thanks to a vibrant
1188 community of users and developers. The following people are known to
1189 have contributed the improvements that became Perl 5.15.0:
1191 Alan Haggai Alavi, Bo Johansson, Bo Lindbergh, brian d foy, Chia-liang
1192 Kao, Chris 'BinGOs' Williams, Claudio Ramirez, Craig A. Berry, David
1193 Golden, David Leadbeater, David Mitchell, Dennis Kaarsemaker, Dominic
1194 Hargreaves, Eric Brine, Father Chrysostomos, Florian Ragwitz, George
1195 Greer, Gisle Aas, H.Merijn Brand, Hojung Yoon, Ian Goodacre, Jesse
1196 Vincent, Jim Cromie, Johan Vromans, John Hawkinson, John P. Linderman,
1197 Joshua ben Jore, Karl Williamson, Kevin J. Woolley, Leo Lapworth, Leon
1198 Brocard, Leon Timmermans, Louis Strous, Marcel Grünauer, Martin Hasch,
1199 Max Maischein, Michael Witten, Moritz Lenz, Nicholas Clark, Niko Tyni,
1200 Nuno Carvalho, Pau Amma, Peter John Acklam, Robin Barker, Salvador
1201 Fandiño, Samuel Thibault, Shawn M Moore, Shigeya Suzuki, Shlomi Fish,
1202 Sisyphus, Steffen Müller, Todd Rinaldo, Tom Christiansen, Tony Cook,
1203 Vladimir Timofeev, Zefram and Zsbán Ambrus.
1205 The list above is almost certainly incomplete as it is automatically
1206 generated from version control history. In particular, it does not
1207 include the names of the (very much appreciated) contributors who
1208 reported issues to the Perl bug tracker.
1210 Many of the changes included in this version originated in the CPAN
1211 modules included in Perl's core. We're grateful to the entire CPAN
1212 community for helping Perl to flourish.
1214 For a more complete list of all of Perl's historical contributors,
1215 please see the F<AUTHORS> file in the Perl source distribution.
1217 =head1 Reporting Bugs
1219 If you find what you think is a bug, you might check the articles
1220 recently posted to the comp.lang.perl.misc newsgroup and the perl
1221 bug database at http://rt.perl.org/perlbug/ . There may also be
1222 information at http://www.perl.org/ , the Perl Home Page.
1224 If you believe you have an unreported bug, please run the L<perlbug>
1225 program included with your release. Be sure to trim your bug down
1226 to a tiny but sufficient test case. Your bug report, along with the
1227 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1228 analysed by the Perl porting team.
1230 If the bug you are reporting has security implications, which make it
1231 inappropriate to send to a publicly archived mailing list, then please send
1232 it to perl5-security-report@perl.org. This points to a closed subscription
1233 unarchived mailing list, which includes
1234 all the core committers, who will be able
1235 to help assess the impact of issues, figure out a resolution, and help
1236 co-ordinate the release of patches to mitigate or fix the problem across all
1237 platforms on which Perl is supported. Please only use this address for
1238 security issues in the Perl core, not for modules independently
1239 distributed on CPAN.
1243 The F<Changes> file for an explanation of how to view exhaustive details
1246 The F<INSTALL> file for how to build Perl.
1248 The F<README> file for general stuff.
1250 The F<Artistic> and F<Copying> files for copyright information.