=head1 NAME [ Any text flagged as XXX needs to be processed before release. ] perldelta - what is new for perl v5.11.1 =head1 DESCRIPTION This document describes differences between the 5.11.0 release and the 5.11.1 release. =head1 Notice XXX Notice =head1 Incompatible Changes XXX For a release on a stable branch, this section aspires to be: There are no changes intentionally incompatible with 5.XXX.XXX. If any exist, they are bugs and reports are welcome. =head1 Core Enhancements XXX New core language features go here. Summarise user-visible core language enhancements. Particularly prominent performance optimisations could go here, but most should go in the L section. =head1 New Platforms XXX List any platforms that this version of perl compiles on, that previous versions did not. These will either be enabled by new files in the F directories, or new subdirectories and F files at the top level of the source tree. =head1 Modules and Pragmata XXX All changes to installed files in F and F go here, in a list ordered by distribution name. Minimally it should be the module version, but it's more useful to the end user to give a paragraph's summary of the module's changes. In an ideal world, dual-life modules would have a F file that could be cribbed. =head2 New Modules and Pragmata =over 4 =item C XXX =back =head2 Pragmata Changes =over 4 =item C XXX =back =head2 Updated Modules =over 4 =item C XXX =back =head1 Utility Changes XXX Changes to installed programs such as F and F go here. Most of these are built within the directories F and F. =over 4 =item F XXX =back =head1 New Documentation XXX Changes which create B files in F go here. =over 4 =item L XXX =back =head1 Changes to Existing Documentation XXX Changes which significantly change existing files in F go here. Any changes to F should go in L. =head1 Performance Enhancements XXX Changes which enhance performance without changing behaviour go here. There may well be none in a stable release. =over 4 =item * XXX =back =head1 Installation and Configuration Improvements XXX Changes to F, F, F, and analogous tools go here. =head2 Configuration improvements XXX =head2 Compilation improvements XXX =head2 Platform Specific Changes =over 4 =item XXX-some-platform XXX =back =head1 Selected Bug Fixes XXX Important bug fixes in the core language are summarised here. Bug fixes in files in F and F are best summarised in L. =over 4 =item * XXX =back =head1 New or Changed Diagnostics XXX New or changed warnings emitted by the core's C code go here. =over 4 =item C XXX =back =head1 Changed Internals XXX Changes which affect the interface available to C code go here. =over 4 =item * XXX =back =head1 Testing XXX Changes which create B files in F go here. Changes to existing files in F aren't worth summarising, although the bugs that they represent may be. =over 4 =item Significant cleanups to core tests to ensure that language and interpreter features are not used before they're tested. XXX =back =head1 Known Problems XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any tests that had to be Ced for the release would be noted here, unless they were specific to a particular platform (see below). This is a list of some significant unfixed bugs, which are regressions from either 5.10.1 or 5.11.0. =over 4 =item * XXX =back =head1 Deprecations XXX Add any new known deprecations here. The following items are now deprecated. =over 4 =item * XXX =back =head1 Platform Specific Notes XXX Any changes specific to a particular platform. VMS and Win32 are the usual stars here. It's probably best to group changes under the same section layout as the main perldelta =head1 Obituary XXX If any significant core contributor has died, we've added a short obituary here. =head1 Acknowledgements XXX The list of people to thank goes here. =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 B 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 be 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 only use this address for security issues in the Perl core, 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 This is all changes through 704e1b1e Update CPANPLUS to CPAN version 0.89_02 Upgrade to threads::shared 1.32 Help ExtUtils::Install's tests find PERL_SRC on VMS. commit d1d15184c41c6ad4f16829561163cd118e5ae917 Author: Nicholas Clark Date: Tue Oct 13 16:04:18 2009 +0100 Enable deprecation warnings by default. locked is deprecated, so use :lvalue instead. Can't use C to avoid @ in a commandline now, so use eval and octal. shift with barewords is deprecated, so this test from perl 1 needs updating. push and pop on barewords are deprecated, so need no warnings 'deprecated'; Opening dirhandle DIR also as a file needs no warnings 'deprecated'; defined @array and defined %hash need no warnings 'deprecated'; localisation of $[ is deprecated, so needs no warnings 'deprecated'; Tests for barewords and hash operators need no warnings 'deprecated'; do subname() is deprecated, so tests for it need no warnings 'deprecated'; Bracket deprecated features with no warnings 'deprecated'; Move the test for the deprecated feature <<; out of t/base/lext.t Tests in base can't utilise pragmata, specifically no warnings 'deprecated'; Add no warnings 'deprecated' to a test that assigns to $[ commit a44d0896a6c4bfe01ea532694b8c1c073ea6a2f1 Author: Nicholas Clark Date: Thu Oct 15 23:37:41 2009 +0100 Skip testing the be_BY.CP1131 locale on Darwin 10, as it's still buggy. Correct infelicities in the regexp used to identify buggy locales on Darwin 8 and 9. POSIX::strftime() should be able to handle Unicode characters in the format string. commit 2e0eeeaafce11cb0128a6d1e245f1a5b806e3a87 Author: Nicholas Clark Date: Thu Oct 15 15:12:49 2009 +0100 Move the boolkeys op to the group of hash ops. This breaks binary compatibility. commit 867fa1e2da145229b4db2c6e8d5b51700c15f114 Author: demerphq Date: Thu Oct 15 14:27:30 2009 +0100 Optimise if (%foo) to be faster than if(keys %foo) Thread was "[PATCH] Make if (%hash) {} act the same as if (keys %hash) {}" http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-11/msg00432.html but the implementation evolved from the approach described in the subject, to instead add a new opcode pp_boolkeys, to exactly preserve the existing behaviour. Various conflicts with the passage of time resolved, 'register' removed, and a $VERSION bump. commit 1c85afcecc8ee030e2780aa5bfa85692c8db64df Author: demerphq Date: Thu Oct 15 14:22:47 2009 +0100 Support for pp_boolkeys in B::Deparse. Part of "[PATCH] Make if (%hash) {} act the same as if (keys %hash) {}" http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-11/msg00432.html which evolved from the approach described in the subject, to instead add a new opcode pp_boolkeys, to exactly preserve the existing behaviour. Plus a $VERSION bump. commit 55b77936aef50881a71470fd06e66edffd66d9de Author: Sisyphus Date: Wed Oct 14 10:02:16 2009 -0400 Add mingw64 support for win32 commit d4c22fec77d7244882ce42a93a4ad25bdada2519 Author: Sisyphus Date: Wed Oct 14 06:58:49 2009 -0400 Patch t/win32/system.t for mingw32/64 commit e4d771f5006ebd70b76422437cce60e9ac40c830 Author: Jan Dubois Date: Tue Oct 13 16:46:58 2009 -0700 The winsock select() implementation doesn't support all empty 'fd_set's. The code already contained a workaround for the special case select(undef, undef, undef, $sleep); but didn't handle the case when actual bit vectors were passed in that didn't have any bits set. Fixes http://rt.perl.org/rt3/Public/Bug/Display.html?id=54544 Podify the social contract about contributed module. Turn it into a policy document. Move the new "perl policy" document into pod/ Author: Smylers Date: Tue Oct 13 14:14:46 2009 +0200 perlvar $1 clarification $1 is currently documented as being set by the "last pattern match". But it is left alone by unsuccessful pattern match attempts (continuing to hold a value from an earlier successful match). Saying "last successful pattern match" clarifies this; it's also the phrase used to document $&. Second, the entry for $1 in perlvar doesn't actually contain the text "$1" anywhere. As such, doing man perlvar then using /\$1 to search for it in less doesn't locate it (though does match other places in that file where $1 happens to be used). =item * Replace Perl_deprecate() with a macro that calls Perl_ck_warner() Perl_deprecate was not part of the public API, and did not have a deprecate() shortcut macro defined without -DPERL_CORE. Neither codesearch.google.com nor CPAN::Unpack show any users outside the core. =item * Remove category 'syntax' from 5 warnings that should just be in 'deprecated'. None were documented as also being in 'syntax'. Effectively, this completes the reorganisation of commits 12bcd1a617c74d6e and 9014280dc8264580. See http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-10/msg00601.html and http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2002-03/msg00850.html commit c989e6a3e4b89b26d315693449c76cdcb754611f Author: Geoffrey T. Dairiki Date: Tue Aug 4 17:54:34 2009 -0700 overload no longer implicitly unsets fallback on repeated 'use overload' lines - Fix for RT#68916 commit 5f5991a0d6d8ef99d2643b88a7d9285e35277331 Author: Nicholas Clark Date: Mon Oct 12 15:54:30 2009 +0100 Normalise 3 fatal pack/unpack error messages to "panic: %s" commit 04e82a462b85b3d6265b04aa07a405316616dc66 Author: Nicholas Clark Date: Sun Oct 11 18:56:01 2009 +0100 porting/manifest.t now tests that all files listed in MANIFEST are present. commit 41239ce77fcd273e18c4017d3d96a5f42e228594 Author: Nicholas Clark Date: Sun Oct 11 17:28:02 2009 +0100 Default to running tests in cpan/ with relative paths for perl and @INC Explicitly turn paths absolute for the 33 extensions in cpan/ that fail tests with relative paths. commit fc5e5837c991d3d3224259ff5c1d728d4e0636e2 Author: Nicholas Clark Date: Sun Oct 11 15:05:58 2009 +0100 MakeMaker::Test::Utils::perl_lib now copes with relative paths for core testing. In the core, @INC already contains the moral equivalent of blib/lib. However, it's a relative path (by default), so make it absolute. It's easier to KISS if this is done *before* any change of directory, so document this, and change the non-core case to add the absolute path of 'blib/lib' to @INC, rather than the absolute path of '../blib/lib'. Upgrade to Test-Simple-0.94 Upgrade to Storable-2.21 Upgrade to Pod-Simple-3.08 Upgrade to Parse-CPAN-Meta-1.40 Upgrade to ExtUtils-Manifest-1.57 Upgrade to ExtUtils-CBuilder-0.260301 Upgrade to CGI.pm-3.48 commit 6c1b5ced18901286f16f6d5f6914ba4b5e3db601 Author: Simon 'corecode' Schubert Date: Sat Oct 10 17:55:26 2009 +0100 [perl #69686] Fix DragonFly thread lib selection Merge: 8e32470 e92f586 Author: Rafael Garcia-Suarez Date: Thu Oct 8 15:13:18 2009 +0200 Merge branch 'feature/package-name-version' into blead commit f03173f2c707a804ec3e9c291d2ab1adb9db4abc Author: Rafael Garcia-Suarez Date: Thu Oct 8 11:44:21 2009 +0200 Make tell() fail properly if called without an argument and when no previous file was read This makes tell() return -1, and sets errno to EBADF, thus restoring the 5.8.x behaviour commit a916b30221d5aac718ed67c9a5bc9c0905daddd0 Author: Rafael Garcia-Suarez Date: Thu Oct 8 11:33:06 2009 +0200 Properly return a syntax error instead of segfaulting if each/keys/values is used without an argument =item Updated Object-Accessor to CPAN version 0.36 Add perltodo: write an XS cookbook Porting/checkAUTHORS.pl now runs clean commit 6fa4d285bff5644bebb95aff09143322042282cc Author: David Golden Date: Tue Oct 6 06:48:48 2009 -0400 Add 'package NAME VERSION' syntax This patch adds support for setting the $VERSION of a namespace when the namespace is declared with 'package'. It eliminates the need for 'our $VERSION = ...' and similar constructs. E.g. package Foo::Bar 1.23; # $Foo::Bar::VERSION == 1.23 There are several advantages to this: * VERSION is parsed in *exactly* the same way as 'use NAME VERSION' * $VERSION is set at compile time * Eliminates '$VERSION = ...' and 'eval $VERSION' clutter * As it requires VERSION to be a numeric literal or v-string literal, it can be statically parsed by toolchain modules without 'eval' the way MM->parse_version does for '$VERSION = ...' * Alpha versions with underscores do not need to be quoted; static parsing will preserve the underscore, but during compilation, Perl will remove underscores as it does for all numeric literals During development of this, there was discussion on #corehackers and elsewhere that this should also allow other metadata to be set such as "status" (stable/alpha) or "author/authority". On reflection, those metadata are not very well defined yet and likely should never be encoded into Perl core parsing so they can be freely changed in the future. (They could perhaps be achieved via a comment on the same line as 'package NAME VERSION'.) Version numbers, however, already have a very specific definition and use defined in the core through 'use NAME VERSION'. This patch merely provides appropriate symmetry for setting $VERSION with the exact same parsing and semantics as 'use'. It does not break old code with only 'package NAME', but code that uses 'package NAME VERSION' will need to be restricted to perl 5.11.X. This is analogous to the change to open() from two-args to three-args. Users requiring the latest Perl will benefit, and perhaps N years from now it will become standard practice when Perl 5.12 is targeted the way that 5.6 is today. The patch does not prevent 'package NAME VERSION' from being used multiple times for the same package with different version numbers, but nothing prevents $VERSION from being modified arbitrarily at runtime, either, so I see no urgen reason to add limitations or warnings so long as Perl uses a global $VERSION variable for package version numbers. I am posting this patch to the p5p list for discussion and review. If there seems to be general assent (or lack of dissent), I will go ahead and commit the patch to blead. commit a67b1afafddaaed84e79a867acc888c9ccfb6460 Author: Max Maischein Date: Mon Oct 5 22:49:09 2009 +0200 New porting tests to automatically check POD in lib/, ext/ and pod/ commit 2d5f1d01166a325b29ccc86102d26e68def13786 Author: David Golden Date: Mon Oct 5 17:46:36 2009 -0400 Explain using git send-email for patches =item Update ExtUtils::ParseXS to 2.21 =item Upgrade File::Path to 2.08 (and add taint.t test) commit b2680017d861a93d2d51b07bce2f1731086bc8c3 Author: Yves Orton Date: Mon Oct 5 09:34:52 2009 +0200 in regexec.c move the BOUND logic out of the way of the special CC logic This is a first step towards macroizing the special CC handler logic so it is easier to maintain them, for instance interestng optimisations are being used in one, but not all, even though the logic is sharable. By moving the BOUND logic out of the way the code repition is much clearer. commit e74a3e73f5e128a77b691fcfc83214f58419a493 Author: Jesse Vincent Date: Sun Oct 4 05:22:17 2009 +0900 Correcting mistaken description of 'delete local' in perl5110delta Reported by nothingmuch++ and rjbs++ =TODO FOR RELENG GUIDE Make Module::Corelist recognise $] as a version number on 5.11.0 =item Bump version to 2.20 commit 6f6ac1dea8501596050bc974dc468632797d51eb Author: Rafael Garcia-Suarez Date: Sat Oct 3 09:56:42 2009 +0200 Change warning "Unicode character is illegal" to more accurate description That now reads "Unicode non-character is illegal in interchange" and the perldiag documentation is expanded a bit.