gnal handler is called if they were blocked before by C [perl #82040]. =item * A signal handler called within a signal handler could cause leaks or double-frees. Now fixed [perl #76248]. =back =head2 Miscellaneous Memory Leaks =over =item * Several memory leaks when loading XS modules were fixed (5.12.2). =item * L, L, L, and L could, when used in combination with lvalues, result in leaking the scalar value they operate on, and cause its destruction to happen too late. This has now been fixed. =item * The postincrement and postdecrement operators, C<++> and C<-->, used to cause leaks when used on references. This has now been fixed. =item * Nested C and C blocks no longer leak memory when processing large lists [perl #48004]. =item * C> and C> no longer leak memory [perl #78436] [perl #69050]. =item * C<.=> followed by C<< <> >> or C would leak memory if C<$/> contained characters beyond the octet range and the scalar assigned to happened to be encoded as UTF8 internally [perl #72246]. =item * C no longer leaks memory on non-threaded builds. =back =head2 Memory Corruption and Crashes =over =item * glob() no longer crashes when C<%File::Glob::> is empty and C isn't present [perl #75464] (5.12.2). =item * readline() has been fixed when interrupted by signals so it no longer returns the "same thing" as before or random memory. =item * When assigning a list with duplicated keys to a hash, the assignment used to return garbage and/or freed values: @a = %h = (list with some duplicate keys); This has now been fixed [perl #31865]. =item * The mechanism for freeing objects in globs used to leave dangling pointers to freed SVs, meaning Perl users could see corrupted state during destruction. Perl now frees only the affected slots of the GV, rather than freeing the GV itself. This makes sure that there are no dangling refs or corrupted state during destruction. =item * The interpreter no longer crashes when freeing deeply-nested arrays of arrays. Hashes have not been fixed yet [perl #44225]. =item * Concatenating long strings under C no longer causes Perl to crash [perl #78674]. =item * Calling C<< ->import >> on a class lacking an import method could corrupt the stack, resulting in strange behaviour. For instance, push @a, "foo", $b = bar->import; would assign "foo" to C<$b> [perl #63790]. =item * The C function could crash when called with the MSG_TRUNC flag [perl #75082]. =item * C no longer crashes when passed a tainted format picture. It also taints C<$^A> now if its arguments are tainted [perl #79138]. =item * A bug in how we process filetest operations could cause a segfault. Filetests don't always expect an op on the stack, so we now use TOPs only if we're sure that we're not Cing the C<_> filehandle. This is indicated by C (as checked in ck_ftst) [perl #74542] (5.12.1). =item * unpack() now handles scalar context correctly for C<%32H> and C<%32u>, fixing a potential crash. split() would crash because the third item on the stack wasn't the regular expression it expected. C would return both the unpacked result and the checksum on the stack, as would C [perl #73814] (5.12.2). =back =head2 Fixes to Various Perl Operators =over =item * The C<&>, C<|>, and C<^> bitwise operators no longer coerce read-only arguments [perl #20661]. =item * Stringifying a scalar containing "-0.0" no longer has the effect of turning false into true [perl #45133]. =item * Some numeric operators were converting integers to floating point, resulting in loss of precision on 64-bit platforms [perl #77456]. =item * sprintf() was ignoring locales when called with constant arguments [perl #78632]. =item * Combining the vector (C<%v>) flag and dynamic precision would cause C to confuse the order of its arguments, making it treat the string as the precision and vice-versa [perl #83194]. =back =head2 Bugs Relating to the C API =over =item * The C-level C function would sometimes cause a spurious syntax error on the last line of the file if it lacked a final semicolon [perl #74006] (5.12.1). =item * The C and C C functions now set C<$@> correctly when there is a syntax error and no C flag, and never set it if the C flag is present [perl #3719]. =item * The XS multicall API no longer causes subroutines to lose reference counts if called via the multicall interface from within those very subroutines. This affects modules like L. Calling one of its functions with an active subroutine as the first argument could cause a crash [perl #78070]. =item * The C function available to XS modules now calls magic before downgrading the SV, to avoid warnings about wide characters [perl #72398]. =item * The ref types in the typemap for XS bindings now support magical variables [perl #72684]. =item * C no longer calls C on its second argument (the source string) if the flags passed to it do not include SV_GMAGIC. So it now matches the documentation. =item * C no longer leaks memory. This fixes a memory leak in C [perl #73520]. =item * F now correctly redefines fgets under PERL_IMPLICIT_SYS [perl #55049] (5.12.1). =item * XS code using fputc() or fputs() on Windows could cause an error due to their arguments being swapped [perl #72704] (5.12.1). =item * A possible segfault in the C default typemap has been fixed (5.12.2). =item * A bug that could cause "Unknown error" messages when C is called from an XS destructor has been fixed (5.12.2). =back =head1 Known Problems This is a list of significant unresolved issues which are regressions from earlier versions of Perl or which affect widely-used CPAN modules. =over 4 =item * C misbehaves in the presence of a lexical C<$_> (typically introduced by C or implicitly by C). The variable that gets set for each iteration is the package variable C<$_>, not the lexical C<$_>. A similar issue may occur in other modules that provide functions which take a block as their first argument, like foo { ... $_ ...} list See also: L =item * readline() returns an empty string instead of a cached previous value when it is interrupted by a signal =item * The changes in prototype handling break L. A patch has been sent upstream and will hopefully appear on CPAN soon. =item * The upgrade to F has caused some tests in the F distribution on CPAN to fail. (Specifically, F<02_mymeta.t> tests 5 and 21; F<18_all_from.t> tests 6 and 15; F<19_authors.t> tests 5, 13, 21, and 29; and F<20_authors_with_special_characters.t> tests 6, 15, and 23 in version 1.00 of that distribution now fail.) =item * On VMS, C tests will fail due to a bug in the CRTL's implementation of C: previous timer values would be cleared if a timer expired but not if the timer was reset before expiring. HP OpenVMS Engineering have corrected the problem and will release a patch in due course (Quix case # QXCM1001115136). =item * On VMS, there were a handful of C test failures we didn't get to before the release; please watch CPAN for updates. =back =head1 Errata =head2 keys(), values(), and each() work on arrays You can now use the keys(), values(), and each() builtins on arrays; previously you could use them only on hashes. See L for details. This is actually a change introduced in perl 5.12.0, but it was missed from that release's L. =head2 split() and C<@_> split() no longer modifies C<@_> when called in scalar or void context. In void context it now produces a "Useless use of split" warning. This was also a perl 5.12.0 change that missed the perldelta. =head1 Obituary Randy Kobes, creator of http://kobesearch.cpan.org/ and contributor/maintainer to several core Perl toolchain modules, passed away on September 18, 2010 after a battle with lung cancer. The community was richer for his involvement. He will be missed. =head1 Acknowledgements Perl 5.14.0 represents one year of development since Perl 5.12.0 and contains nearly 550,000 lines of changes across nearly 3,000 files from 150 authors and committers. Perl continues to flourish into its third decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl 5.14.0: Aaron Crane, Abhijit Menon-Sen, Abigail, Ævar Arnfjörð Bjarmason, Alastair Douglas, Alexander Alekseev, Alexander Hartmaier, Alexandr Ciornii, Alex Davies, Alex Vandiver, Ali Polatel, Allen Smith, Andreas König, Andrew Rodland, Andy Armstrong, Andy Dougherty, Aristotle Pagaltzis, Arkturuz, Arvan, A. Sinan Unur, Ben Morrow, Bo Lindbergh, Boris Ratner, Brad Gilbert, Bram, brian d foy, Brian Phillips, Casey West, Charles Bailey, Chas. Owens, Chip Salzenberg, Chris 'BinGOs' Williams, chromatic, Craig A. Berry, Curtis Jewell, Dagfinn Ilmari Mannsåker, Dan Dascalescu, Dave Rolsky, David Caldwell, David Cantrell, David Golden, David Leadbeater, David Mitchell, David Wheeler, Eric Brine, Father Chrysostomos, Fingle Nark, Florian Ragwitz, Frank Wiegand, Franz Fasching, Gene Sullivan, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Grant McLean, gregor herrmann, H.Merijn Brand, Hongwen Qiu, Hugo van der Sanden, Ian Goodacre, James E Keenan, James Mastros, Jan Dubois, Jay Hannah, Jerry D. Hedden, Jesse Vincent, Jim Cromie, Jirka Hruška, John Peacock, Joshua ben Jore, Joshua Pritikin, Karl Williamson, Kevin Ryde, kmx, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯, Larwan Berke, Leon Brocard, Leon Timmermans, Lubomir Rintel, Lukas Mai, Maik Hentsche, Marty Pauley, Marvin Humphrey, Matt Johnson, Matt S Trout, Max Maischein, Michael Breen, Michael Fig, Michael G Schwern, Michael Parker, Michael Stevens, Michael Witten, Mike Kelly, Moritz Lenz, Nicholas Clark, Nick Cleaton, Nick Johnston, Nicolas Kaiser, Niko Tyni, Noirin Shirley, Nuno Carvalho, Paul Evans, Paul Green, Paul Johnson, Paul Marquess, Peter J. Holzer, Peter John Acklam, Peter Martini, Philippe Bruhat (BooK), Piotr Fusik, Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Renee Baecker, Ricardo Signes, Richard Möhn, Richard Soderberg, Rob Hoelz, Robin Barker, Ruslan Zakirov, Salvador Fandiño, Salvador Ortiz Garcia, Shlomi Fish, Sinan Unur, Sisyphus, Slaven Rezic, Steffen Müller, Steve Hay, Steven Schubiger, Steve Peters, Sullivan Beck, Tatsuhiko Miyagawa, Tim Bunce, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tony Cook, Tye McQueen, Vadim Konovalov, Vernon Lyon, Vincent Pit, Walt Mankowski, Wolfram Humann, Yves Orton, Zefram, and Zsbán Ambrus. This is woefully incomplete as it's automatically generated from version control history. In particular, it doesn't include the names of the (very much appreciated) contributors who reported issues in previous versions of Perl that helped make Perl 5.14.0 better. For a more complete list of all of Perl's historical contributors, please see the C file in the Perl 5.14.0 distribution. Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish. =head1 Reporting Bugs If you find what you think is a bug, you might check the articles recently posted to the comp.lang.perl.misc newsgroup and the Perl bug database at http://rt.perl.org/perlbug/ . There may also be information at http://www.perl.org/ , the Perl Home Page. If you believe you have an unreported bug, please run the L program included with your release. Be sure to trim your bug down to a tiny but sufficient test case. Your bug report, along with the output of C, will be sent off to perlbug@perl.org to be analysed by the Perl porting team. If the bug you are reporting has security implications, which make it inappropriate to send to a publicly archived mailing list, then please send it to perl5-security-report@perl.org. This points to a closed subscription unarchived mailing list, which includes all the core committers, who are able to help assess the impact of issues, figure out a resolution, and help co-ordinate the release of patches to mitigate or fix the problem across all platforms on which Perl is supported. Please use this address for security issues in the Perl core I, not for modules independently distributed on CPAN. =head1 SEE ALSO The F file for an explanation of how to view exhaustive details on what changed. The F file for how to build Perl. The F file for general stuff. The F and F files for copyright information. =cut