This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In B.xs use I16 to avoid an "initializer will be sign-extended" warning.
[perl5.git] / pod / perl5121delta.pod
index f305da9..f1d8759 100644 (file)
@@ -2,7 +2,7 @@
 
 =head1 NAME
 
-perldelta - what is new for perl v5.12.1
+perl5121delta - what is new for perl v5.12.1
 
 =head1 DESCRIPTION
 
@@ -13,459 +13,399 @@ If you are upgrading from an earlier release such as 5.10.1, first read
 L<perl5120delta>, which describes differences between 5.10.1 and
 5.12.0.
 
-=head1 Notice
-
-XXX Any important notices here
-
 =head1 Incompatible Changes
 
-There are no changes intentionally incompatible with 5.12.0 If any
-exist, they are bugs and reports are welcome.
-
+There are no changes intentionally incompatible with 5.12.0. If any
+incompatibilities with 5.12.0 exist, they are bugs. Please report them.
 
 =head1 Core Enhancements
 
 Other than the bug fixes listed below, there should be no user-visible
-changes to the core langauge in this release.
+changes to the core language in this release.
 
 =head1 Modules and Pragmata
 
-=head2 New Modules and Pragmata
-
 =head2 Pragmata Changes
 
-=head2 Updated Modules
+=over 
 
-=head2 Removed Modules and Pragmata
+=item *
 
-=head1 Changes to Existing Documentation
+We fixed exporting of C<is_strict> and C<is_lax> from L<version>.
 
-XXX Changes which significantly change existing files in F<pod/> go here.
-Any changes to F<pod/perldiag.pod> should go in L</New or Changed Diagnostics>.
+These were being exported with a wrapper that treated them as method
+calls, which caused them to fail.  They are just functions, are
+documented as such, and should never be subclassed, so this patch
+just exports them directly as functions without the wrapper.
 
+=back
 
-=head1 Performance Enhancements
+=head2 Updated Modules
 
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
+=over 
 
-=over 4
+=item *
+
+We upgraded L<CGI.pm> to version 3.49 to incorporate fixes for regressions
+introduced in the release we shipped with Perl 5.12.0.
 
 =item *
 
-XXX
+We upgraded L<Pod::Simple> to version 3.14 to get an improvement to \C\<\< \>\>
+parsing.
 
-=back
+=item *
 
-=head1 Installation and Configuration Improvements
+We made a small fix to the L<CPANPLUS> test suite to fix an occasional spurious test failure.
 
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here.
+=item *
 
-=head2 Configuration improvements
+We upgraded L<Safe> to version 2.27 to wrap coderefs returned by C<reval()> and C<rdo()>.
 
-XXX
+=back
 
-=head2 Compilation improvements
+=head1 Changes to Existing Documentation
 
-XXX
+=over
 
-=head2 Platform Specific Changes
+=item *
 
-=over 4
+We added the new maintenance release policy to L<perlpolicy.pod>
 
-=item XXX-some-platform
+=item *
 
-XXX
+We've clarified the multiple-angle-bracket construct in the spec for POD
+in L<perlpodspec>
 
-=back
+=item *
 
-=head1 Selected Bug Fixes
+We added a missing explanation for a warning about C<:=> to L<perldiag.pod>
 
-XXX Important bug fixes in the core language are summarised here.
-Bug fixes in files in F<ext/> and F<lib/> are best summarised in
-L</Modules and Pragmata>.
+=item *
 
-=over 4
+We removed a false claim in L<perlunitut> that all text strings are Unicode strings in Perl.
 
 =item *
 
-XXX
+We updated the Github mirror link in L<perlrepository> to mirrors/perl, not github/perl
 
-=back
+=item *
 
-=head1 Changed Internals
+We fixed a minor error in L<perl5114delta.pod>.
 
-XXX Changes which affect the interface available to C<XS> code go here.
+=item * 
 
-=over 4
+We replaced a mention of the now-obsolete L<Switch.pm> with F<given>/F<when>.
 
 =item *
 
-XXX
+We improved documentation about F<$sitelibexp/sitecustomize.pl> in L<perlrun>.
 
-=back
-
-=head1 Known Problems
+=item * 
 
-XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
-tests that had to be C<TODO>ed for the release would be noted here, unless
-they were specific to a particular platform (see below).
+We corrected L<perlmodlib.pod> which had unintentionally omitted a number of modules.
 
-This is a list of some significant unfixed bugs, which are regressions
-from either 5.XXX.XXX or 5.XXX.XXX.
+=item * 
 
-=over 4
+We updated the documentation for 'require' in L<perlfunc.pod> relating to putting Perl code in @INC.
 
 =item *
 
-XXX
+We reinstated some erroneously-removed documentation about quotemeta in L<perlfunc>.
 
-=back
+=item *
 
-=head1 Platform Specific Notes
+We fixed an F<a2p> example in L<perlutil.pod>.
 
-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
+=item  *
 
-=head1 Acknowledgements
+We filled in a blank in L<perlport.pod> with the release date of Perl 5.12.
 
-XXX The list of people to thank goes here.
+=item  *
 
+We fixed broken links in a number of perldelta files.
 
-=head1 Reporting Bugs
+=item * 
 
-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.
+The documentation for L<Carp.pm> incorrectly stated that the $Carp::Verbose
+variable makes cluck generate stack backtraces.
 
-If you believe you have an unreported bug, please run the B<perlbug>
-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<perl -V>, will be sent off to perlbug@perl.org to be
-analysed by the Perl porting team.
+=item *
 
-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.
+We fixed a number of typos in L<Pod::Functions>
 
-=head1 SEE ALSO
+=item *
 
-The F<Changes> file for an explanation of how to view exhaustive details
-on what changed.
+We improved documentation of case-changing functions in L<perlfunc.pod>
 
-The F<INSTALL> file for how to build Perl.
+=item *
 
-The F<README> file for general stuff.
+We corrected L<perlgpl.pod> to contain the correct version of the GNU
+General Public License.
 
-The F<Artistic> and F<Copying> files for copyright information.
 
-=cut
 
+=back
+
+=head1 Testing
 
+=head2 Testing Improvements
 
-=HEAD2 BUILD AND INSTALL
+=over
 
 =item *
 
-Ignore the /UU directory that exists during ./Configure
+F<t/op/sselect.t> is now less prone to clock jitter during timing checks
+on Windows.
 
-=HEAD2 DIAGNOSTICS
+sleep() time on Win32 may be rounded down to multiple of
+the clock tick interval.
 
 =item *
 
-Added a missing explanation for a warning about C<:=> to L<perldiag.pod>
-
-=head2 TEST FIXES
+F<lib/blib.t> and F<lib/locale.t>: Fixes for test failures on Darwin/PPC
 
 =item *
 
-Fixes for 5.12.0 test failures in lib/blib.t and lib/locale.t on Darwin/PPC
+F<perl5db.t>: Fix for test failures when C<Term::ReadLine::Gnu> is installed.
 
+=back
 
-=item *
+=head1 Installation and Configuration Improvements
 
-    Fix a test failure in perl5db.t when Term::ReadLine::Gnu is installed
+=head2 Configuration improvements
 
+=over 
 
-=item *
-    Add fudge to timing checks on Windows
-    
-    sleep() time on Win32 may be rounded down to multiple of
-    the clock tick interval.
-    
-    http://www.nntp.perl.org/group/perl.perl5.porters/2010/03/msg157878.html
+=item * 
 
+We updated F<INSTALL> with notes about how to deal with broken F<dbm.h>
+on OpenSUSE (and possibly other platforms)
 
+=back
 
-DOC 
+=head1 Bug Fixes
+
+=over 4
 
 =item *
 
-Add the new maint policy to perlpolicy.pod
+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 stat'ing the _ filehandle.
+This is indicated by OPf_KIDS (as checked in ck_ftst).
+
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74542>
 
 =item *
 
-We've clarified the multiple-angle-bracked construct in the spec for POD
+When deparsing a nextstate op that has both a change of package (relative
+to the previous nextstate) and a label, the package declaration is now
+emitted first, because it is syntactically impermissible for a label to
+prefix a package declaration.
 
 =item * 
 
-    Nits in perlunifaq.pod
+XSUB.h now correctly redefines fgets under PERL_IMPLICIT_SYS
 
-=item *
+See also: L<http://rt.cpan.org/Public/Bug/Display.html?id=55049>
+
+=item * 
 
-    Update title of "Supported Platforms" in perlport to avoid
-    breaking pod links at each perl release (spotted by Karl Williamson)
+utf8::is_utf8 now respects GMAGIC (e.g. $1)
 
 =item * 
-    [perl #74808] Carp.pm POD error
-    
-    The documentation incorrectly states that the $Carp::Verbose
-    variable makes cluck generate stack backtraces.  cluck
-    already generates stack backtraces.  It should say that
-    the variable makes croak generate stack backtraces.
 
+XS code using C<fputc()> or C<fputs()>: on Windows could cause an error
+due to their arguments being swapped.
 
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=72704>
 
 =item *
 
-Fix F<a2p> example in L<perlutil.pod>
+We fixed a small bug in lex_stuff_pvn() that caused spurious syntax errors
+in an obscure situation.  It happened when stuffing was performed on the
+last line of a file and the line ended with a statement that lacked a
+terminating semicolon.  
 
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74006>
 
-=item  *
+=item *
 
-Fill blank with the release date of 5.12 in perlport.pod
+We fixed a bug that could cause \N{} constructs followed by a single . to
+be parsed incorrectly.
 
-=item  *
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74978>
 
-Fix broken links in perldelta files
 =item *
 
-Typo fixes in Pod::Functions
-=item *
 
-    Add POD index entries for sitecustomize and sitecustomize.pl
+We fixed a bug that caused when(scalar) without an argument not to be
+treated as a syntax error.
 
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74114>
 
-=item * 
-    Replace mention of Switch.pm with given/when
 =item *
 
-    Improve documentation about sitecustomize.pl.
-    
-=item * 
-    Reintroduce a lot of missing modules into perlmodlib.pod
-    
-    That was due to the great move of dual-life modules into cpan/ and
-    dist/. This fixes the bug: [perl #74332] lots of modules missing from
-    perlmodlib.
+We fixed a regression in the handling of labels immediately before string
+evals that was introduced in Perl 5.12.0.
 
-=item * 
-
-POD tweak to 'require' in perlfunc relating to putting Perl code in @INC
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74290>
 
 =item *
-    Reinstate some documentation about quotemeta
-    (that was removed in 8bdbc703cb0af3faf2163ebce618944c51f180a0)
 
-=item *
-    [perl #74856] Fix POD syntax in perlapi
+We fixed a regression in case-insensitive matching of folded characters
+in regular expressions introduced in Perl 5.10.1.
 
-=item *
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=72998>
 
-    Remove false statement about Unicode strings
-    It is simply not true that all text strings are Unicode strings in Perl.
+=back
 
-=item *
-    GitHub's mirror is now at mirrors/perl, not github/perl
-=item *
-    Fix a minor perl5114delta error.
+=head1 Platform Specific Notes
 
-PLATFORM AIX 4.2
+=head2 HP-UX
 
-=item * 
+=over 
 
-    [PATCH] [5.12] Allow build on aix 4.2 (sigaction and IPv6)
-    
-    Based on a patch by AUGUSTE-ETIENNE José <jose.auguste-etienne@cgss-guyane.fr>
-    
-    The attached patches are necessary to work around aix 4.2 lack of support for IPv6,
-    and limited support for POSIX sigaction()
-    
-    The hints/aix_4.sh patch solves the following build failure:
-    
-    "Socket.xs", line 468.16: 1506-007 (S) "struct in6_addr" is undefined.
-    
-    The ext/POSIX/t/sigaction.t patch solves the failing test reported a looong time ago:
-    
-    http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-01/msg01124.html
-    
-    After testing a simple C program using POSIX sigaction() with SA_SIGINFO,
-    I found that it worked on aix 4.3 but failed on aix 4.2.
-    
-    I think it's safe to skip the SA_SIGINFO test on the aix 4.2 platform.
-    
-    perl 5.12.0 builds fine on the following platforms / C compiler :
-    
-    aix 4.2.1 / vac 5.0.2.7 (with attached patches)
-    aix 4.3.2 / gcc 2.95.3
-    aix 4.3.3 / vac 4.4.0.3
-    aix 4.3.3 / vac 5.0.28
-    aix 5.2 / GNUpro gcc 2.9.aix51.020209
-    
-    The atatched patches should be applied to blead and maint.
-
-
-
-Platform FreeBSD
-=item * 
-    FreeBSD 7+ no longer contains /usr/bin/objformat, so the following
-    (harmless) following error message is printed when hints are run:
-    
-    ./hints/freebsd.sh: /usr/bin/objformat: not found
-    
-    The reason for this is outlined in this email from Feb 2007
-    http://lists.freebsd.org/pipermail/freebsd-ports/2007-February/038523.html
-    
-    This patch just skips the objformat check for versions 7+ and
-    assumes ELF.  (The end result is unchanged, but the error
-    message will not be printed anymore.)
+=item *
 
-PLATFORMS VMS
+Perl now allows -Duse64bitint without promoting to use64bitall on HP-UX
 
-=item *
-    Allow extension building on older (pre 7.3-2) VMS systems.
-    
-    DCL symbol length was limited to 1K up until about seven years or
-    so ago, but there was no particularly deep reason to prevent those
-    older systems from configuring and building Perl.
+=back
 
+=head2 AIX
 
-=item *
+=over
 
-    Fix broken -Uuseperlio build on VMS.
-    
-    We were checking a variable that doesn't exist in the non-default
-    case of disabling perlio.  Now we only look at it when it exists.
+=item * 
+
+Perl now builds on AIX 4.2
 
-=item *(
+The changes required work around AIX 4.2s' lack of support for IPv6,
+and limited support for POSIX C<sigaction()>.
 
-    Fix -Uuseperlio command-line option in configure.com.
-    
-    Formerly it only worked if you went through all the questions
-    interactively and explicitly answered no.
-    (cherry picked from commit 839d17582bad556c85fba50bb136d1c1fa878a54)
-commit bd94fa25a8ae3c7107bd1aec68d4488d21c79b05
-Author: Nicholas Clark <nick@ccl4.org>
-Date:   Mon Apr 19 15:35:59 2010 +0100
+=back
 
-    Possible undefined behaviour, spotted by gcc 4.5.0 and HP's updated compiler.
+=head2 FreeBSD 7
 
-PLATFORM SUSE?
+=over
 
 =item * 
 
-    Note how to deal with broken dbm.h on OpenSUSE
-    (cherry picked from commit 1bb125e2afe6197deaf55852a3f8a9c52736bfdc)
+FreeBSD 7 no longer contains F</usr/bin/objformat>. At build time,
+Perl now skips the F<objformat> check for versions 7 and higher and
+assumes ELF.
 
+=back
 
-PLATFORM HPUX
+=head2 VMS
+
+=over
 
 =item *
-    Allow -Duse64bitint without promoting to use64bitall on HP-UX
-    
-    Fix for http://rt.perl.org/rt3/Public/Bug/Display.html?id=17736
-    (cherry picked from commit 064b70ffe2beced36b4693cdd2a8e2cbd2139b47)
 
+It's now possible to build extensions on older (pre 7.3-2) VMS systems.
 
-Module Updates
+DCL symbol length was limited to 1K up until about seven years or
+so ago, but there was no particularly deep reason to prevent those
+older systems from configuring and building Perl.
 
+=item *
 
+We fixed the previously-broken C<-Uuseperlio> build on VMS.
 
-=item *
+We were checking a variable that doesn't exist in the non-default
+case of disabling perlio.  Now we only look at it when it exists.
 
-    fix version::is_strict/is_lax exporting
-    
-    These were being exported with a wrapper that treated them as method
-    calls, which causes them to fail.  They are just functions, are
-    documented as such, and should never be subclassed, so this patch
-    just exports them directly as functions without the wrapper.
+=item *
 
+We fixed the -Uuseperlio command-line option in configure.com.
 
+Formerly it only worked if you went through all the questions
+interactively and explicitly answered no.
 
-=item *
+=back
 
-    Upgrade to CGI.pm 3.49
+=head1 Known Problems
 
-    TODO WHY
+=over
 
 =item *
 
-    import Pod-Simple 3.14 for C<< >> fix
+C<List::Util::first> misbehaves in the presence of a lexical C<$_>
+(typically introduced by C<my $_> or implicitly by C<given>). The variable
+which 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
 
-=HEAD2 Release Engineering
+    foo { ... $_ ...} list
+
+See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=67694>
 
 =item *
 
-Teach bump-perl-version about "libperl511.a"
+C<Module::Load::Conditional> and C<version> have an unfortunate
+interaction which can cause C<CPANPLUS> to crash when it encounters
+an unparseable version string.  Upgrading to C<CPANPLUS> 0.9004 or
+C<Module::Load::Conditional> 0.38 from CPAN will resolve this issue.
 
+=back
 
 
-commit 72c7417ae4c0cbb91b46622e0657f57469f025f8
-Author: Jan Dubois <jand@activestate.com>
-Date:   Fri Mar 5 15:24:17 2010 -0800
+=head1 Acknowledgements
 
-    Apply minimal patch for Perl bug 72704.
-    
-    Arguments to fputc() and fputs() are reversed on Windows.
-    
-    http://rt.perl.org/rt3/Public/Bug/Display.html?id=72704
+Perl 5.12.1 represents approximately four weeks of development since
+Perl 5.12.0 and contains approximately 4,000 lines of changes
+across 142 files from 28 authors.
 
-=HEAD2 Internals
+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.12.1:
 
-=item * 
+Ævar Arnfjörð Bjarmason, Chris Williams, chromatic, Craig A. Berry,
+David Golden, Father Chrysostomos, Florian Ragwitz, Frank Wiegand,
+Gene Sullivan, Goro Fuji, H.Merijn Brand, James E Keenan, Jan Dubois,
+Jesse Vincent, Josh ben Jore, Karl Williamson, Leon Brocard, Michael
+Schwern, Nga Tang Chan, Nicholas Clark, Niko Tyni, Philippe Bruhat,
+Rafael Garcia-Suarez, Ricardo Signes, Steffen Mueller, Todd Rinaldo,
+Vincent Pit and Zefram.
 
-utf8::is_utf8 now respects respect GMAGIC (e.g. $1)
+=head1 Reporting Bugs
 
-commit 349476ba0aabe6945fe0b234090937e992e7b95d
+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.
 
-    Fix [perl #74542] 5.12.0 crash on diverse platforms
-    
-    Filetest ops don't always expect an op on the stack, so we should use
-    TOPs only if we're sure that we're not stat'ing the _ filehandle.
-    This is indicated by OPf_KIDS (as checked in ck_ftst).
+If you believe you have an unreported bug, please run the B<perlbug>
+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<perl -V>, will be sent off to perlbug@perl.org to be
+analysed by the Perl porting team.
 
-commit 5e8d0adeb52de899a2c0954a747fe56eda402bed
-Author: Zefram <zefram@fysh.org>
-Date:   Fri Apr 30 00:02:06 2010 +0100
+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 will 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.
 
-    put package declaration before label in deparsing
-    
-    When deparsing a nextstate op that has both a change of package (relative
-    to the previous nextstate) and a label, the package declaration must be
-    emitted first, because it is syntactically impermissible for a label to
-    prefix a package declaration.
-    (cherry picked from commit 98a1a1376eb18f3329f6d272d4dc3e9a7780689f)
+=head1 SEE ALSO
 
+The F<Changes> file for an explanation of how to view exhaustive details
+on what changed.
 
-commit e560917618a7d70a9f3420f75c62e08872bf97b5
-Author: Jan Dubois <jand@activestate.com>
-Date:   Wed Apr 21 16:49:09 2010 -0700
+The F<INSTALL> file for how to build Perl.
 
-    XSUB.h is supposed to redefine fgets under PERL_IMPLICIT_SYS, but doesn't.
-    
-    See also http://rt.cpan.org/Public/Bug/Display.html?id=55049
-    with workaround in http://code.google.com/p/perl-devel-nytprof/source/detail?r=1168
-    (cherry picked from commit 20c8f8f9118fd23081c818637815bf1aab60b808)
+The F<README> file for general stuff.
 
+The F<Artistic> and F<Copying> files for copyright information.
 
+=cut