most of the perldelta for 5.13.2
authorMatt S Trout <mst@shadowcat.co.uk>
Mon, 21 Jun 2010 20:26:09 +0000 (21:26 +0100)
committerMatt S Trout <mst@shadowcat.co.uk>
Mon, 21 Jun 2010 20:26:09 +0000 (21:26 +0100)
pod/perl5132delta.pod

index 3dcbe9f..8edba8d 100644 (file)
@@ -13,10 +13,6 @@ If you are upgrading from an earlier release such as 5.10, first read
 L<perl5120delta>, which describes differences between 5.10 and
 5.12.
 
-=head1 Notice
-
-XXX Any important notices here
-
 =head1 Incompatible Changes
 
 =head2 localised tied scalars are tied again.
@@ -25,11 +21,22 @@ The change in behaviour in 5.13.1 of localising tied scalar values has
 been reverted to the existing 5.12.0 and earlier behaviour (the change for
 arrays and hashes remains).
 
-=head1 Core Enhancements
+=head2 Naming fixes in Policy_sh.SH may invalidate Policy.sh
+
+Several long-standing typos and naming confusions in Policy_sh.SH have
+been fixed, standardizing on the variable names used in config.sh.
 
-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</Performance Enhancements> section.
+This will change the behavior of Policy.sh if you happen to have been
+accidentally relying on the Policy.sh incorrect behavior. We'd appreciate
+feedback from anyone using Policy.sh to be sure nothing is broken by
+this change (c1bd23).
+
+=head2 Stashes are now always defined
+
+%stash:: is now autovivified so 'defined %Foo::' always returns true
+- although calling defined on a stash is now deprecated.
+
+=head1 Core Enhancements
 
 =head2 Non-destructive substitution
 
@@ -41,7 +48,8 @@ the copy and returns the result.  The original remains unmodified.
   my $new = $old =~ s/cat/dog/r;
   # $old is 'cat' and $new is 'dog'
 
-This is particularly useful with C<map>.  See L<perlop> for more examples.
+This is particularly useful with C<map>.  See L<perlop> for more examples
+(4f4d75, 000c65).
 
 =head2 package block syntax
 
@@ -49,144 +57,223 @@ A package declaration can now contain a code block, in which case the
 declaration is in scope only inside that block.  So C<package Foo { ... }>
 is precisely equivalent to C<{ package Foo; ... }>.  It also works with
 a version number in the declaration, as in C<package Foo 1.2 { ... }>.
-See L<perlfunc>.
+See L<perlfunc> (434da3..36f77d, 702646).
 
-=head1 New Platforms
+=head2 CLONE_PARAMS structure added to ease correct thread creation
 
-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<hints/>
-directories, or new subdirectories and F<README> files at the top level of the
-source tree.
+Modules that create threads should now create C<CLONE_PARAMS> structures
+by calling the new function C<Perl_clone_params_new()>, and free them with
+C<Perl_clone_params_del()>. This will ensure compatibility with any future
+changes to the internals of the C<CLONE_PARAMS> structure layout, and that
+it is correctly allocated and initialised.
+
+=head2 perl -h no longer recommends -w
+
+perl -h used to mark the -w option as recommended; since this option is
+far less useful than it used to be due to lexical 'use warnings' and since
+perl -h is primary a list and brief explanation of the command line switches,
+the recommendation has now been removed (60eaec).
 
 =head1 Modules and Pragmata
 
-XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
-go here.  If Module::CoreList is updated, generate an initial draft of the
-following sections using F<Porting/corelist-perldelta.pl>, which prints stub
-entries to STDOUT.  Results can be pasted in place of the '=head2' entries
-below.  A paragraph summary for important changes should then be added by hand.
-In an ideal world, dual-life modules would have a F<Changes> file that could be
-cribbed.
+=head2 Updated Modules
 
-=head2 New Modules and Pragmata
+=head3 Locale-Codes 3.13
 
-=head2 Pragmata Changes
+Locale::Country, Locale::Language and Locale::Currency were updated from
+3.12 to 3.13 of the Locale-Codes distribution to include locale code changes
+(e1137b).
 
-=head2 Updated Modules
+=head3 Thread-Semaphore 2.11
 
-=head2 Removed Modules and Pragmata
+Added new methods ->down_nb() and ->down_force() at the suggestion of Rick
+Garlick.
 
-=head1 Utility Changes
+Refactored methods to skip argument validation when no argument is supplied.
 
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
-here. Most of these are built within the directories F<utils> and F<x2p>.
+(04febe, f06daa)
+
+=head3 CPAN.pm 1.94_57
 
 =over 4
+=item * release 1.94_57
+   
+=item * bugfix: treat modules correctly that are deprecated in perl 5.12.
+   
+=item * bugfix: RT #57482 and #57788 revealed that configure_requires
+implicitly assumed build_requires instead of normal requires. (Reported
+by Andrew Whatson and Father Chrysostomos respectively)
+   
+=item * testfix: solaris should run the tests without expect because (some?)
+solaris have a broken expect 
+
+=item * testfix: run tests with cache_metadata off to prevent spill over
+effects from previous test runs
 
-=item F<XXX>
+=back
 
-XXX
+(742adb)
 
-=back
+=head3 Hash::Util warning fix
 
-=head1 New Documentation
+Hash::Util now enables "no warnings 'uninitialized'" to suppress spurious
+warnings from undefined hash values (RT #74280).
 
-XXX Changes which create B<new> files in F<pod/> go here.
+=head1 Changes to Existing Documentation
 
-=over 4
+=head2 Replace wrong tr/// table in perlebcdic.pod
 
-=item L<XXX>
+perlebcdic.pod contains a helpful table to use in tr/// to convert
+between EBCDIC and Latin1/ASCII.  Unfortunately, the table was the
+inverse of the one it describes, though the code that used the table
+worked correctly for the specific example given.
 
-XXX
+The table has been changed to its inverse, and the sample code changed
+to correspond, as this is easier for the person trying to follow the
+instructions since deriving the old table is somewhat more complicated.
 
-=back
+The table has also been changed to hex from octal, as that is more the norm
+these days, and the recipes in the pod altered to print out leading
+zeros to make all the values the same length, as the table that they can
+generate has them (5f26d5).
 
-=head1 Changes to Existing Documentation
+=head2 Document tricks for user-defined casing
 
-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>.
+perlunicode.pod now contains an explanation of how to override, mangle
+and otherwise tweak the way perl handles upper, lower and other case
+conversions on unicode data, and how to provide scoped changes to alter
+one's own code's behaviour without stomping on anybody else (71648f).
 
+=head2 Document $# and $* as removed and clarify $#array usage
 
-=head1 Performance Enhancements
+$# and $* were both disabled as of perl5 version 10; this release adds
+documentation to that effect, a description of the results of continuing
+to try and use them, and a note explaining that $# can also function as a
+sigil in the $#array form (7f315d2).
 
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
+=head2 INSTALL explicitly states the requirement for C89
 
-=over 4
+This was already true but it's now Officially Stated For The Record (51eec7).
 
-=item *
+=head2 No longer advertise Math::TrulyRandom
 
-XXX
+This module hasn't been updated since 1996 so we can't recommend it any more
+(83918a).
 
-=back
+=head2 perlfaq synchronised to upstream
 
-=head1 Installation and Configuration Improvements
+The FAQ has been updated to commit
+37550b8f812e591bcd0dd869d61677dac5bda92c from the perlfaq repository
+at git@github.com:briandfoy/perlfaq.git
 
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here.
+=head1 Performance Enhancements
 
-=head2 Configuration improvements
+Only allocate entries for @_ on demand - this not only saves memory per
+subroutine defined but should hopefully improve COW behaviour (77bac2).
 
-XXX
+=head2 Multiple small improvements to threads
 
-=head2 Compilation improvements
+The internal structures of threading now make fewer API calls and fewer
+allocations, resulting in noticeably smaller object code. Additionally,
+many thread context checks have been deferred so that they're only done
+when required (although this is only possible for non-debugging builds).
 
-XXX
+=head2 Size optimisations to SV and HV structures
 
-=head2 Platform Specific Changes
+xhv_fill has been eliminated from struct xpvhv, saving 1 IV per hash and
+on some systems will cause struct xpvhv to become cache aligned. To avoid
+this memory saving causing a slowdown elsewhere, boolean use of HvFILL
+now calls HvTOTALKEYS instead (which is equivalent) - so while the fill
+data when actually required is now calculated on demand, the cases when
+this needs to be done should be few and far between (f4431c .. fcd245).
 
-=over 4
+The order of structure elements in SV bodies has changed. Effectively,
+the NV slot has swapped location with STASH and MAGIC. As all access to
+SV members is via macros, this should be completely transparent. This
+change allows the space saving for PVHVs documented above, and may reduce
+the memory allocation needed for PVIVs on some architectures.
 
-=item XXX-some-platform
+=head2 Optimisation of regexp engine string comparison work
 
-XXX
+The foldEQ_utf8 API function for case-insensitive comparison of strings (which
+is used heavily by the regexp engine) was substantially refactored and
+optimised - and its documentation much improved as a free bonus gift
+(8b3587, e6226b).
 
-=back
+=head2 Memory consumption improvements to Exporter
 
-=head1 Selected Bug Fixes
+The @EXPORT_FAIL AV is no longer created unless required, hence neither is
+the typeglob backing it - this saves about 200 bytes per Exporter using
+package that doesn't use this functionality.
+
+=head1 Installation and Configuration Improvements
+
+=head2 Compilation improvements
+
+Fix CCINCDIR and CCLIBDIR for mingw64 cross compiler to correctly be under
+$(CCHOME)\mingw\include and \lib rather than immediately below $(CCHOME).
 
-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>.
+This means the 'incpath', 'libpth', 'ldflags', 'lddlflags' and
+'ldflags_nolargefiles' values in Config.pm and Config_heavy.pl are now
+set correctly (23ae7f).
+
+=head1 Selected Bug Fixes
 
 =over 4
 
-=item *
+=item * Timely cleanup of SVs that are cloned into a new thread but then
+discovered to be orphaned (i.e. their owners are -not- cloned) (e42956)
 
-Overloading now works properly in conjunction with tied variables. What
-formerly happened was that most ops checked their arguments for overloading
-I<before> checking for magic, so for example an overloaded object returned
-by a tied array access would usually be treated as not overloaded
-(RT #57012).
+=item * Don't accidentally clone lexicals in scope within active stack frames in
+the parent when creating a child thread (RT #73086) (05d04d).
 
-=back
+=item * Avoid loading feature.pm when 'no 5.13.2;' or similar is
+encountered (faee19).
 
-=head1 New or Changed Diagnostics
+=item * Trap invalid use of SvIVX on SVt_REGEXP when assertions are on
+(e77da3)
 
-XXX New or changed warnings emitted by the core's C<C> code go here.
+=item * Don't stamp on $DB::single, $DB::trace and $DB::signal if they
+already have values when $^P is assigned to (RT #72422) (4c0f30).
 
-=over 4
+=item * chop now correctly handles perl's extended UTF-8 (RT #73246) (65ab92)
+
+=item * Defer signal handling when shared SV locks are held to avoid
+deadlocks (RT #74868) (65c742).
+
+=item * glob() no longer crashes when %File::Glob:: is empty and
+CORE::GLOBAL::glob isn't present (4984aa).
+
+=item * perlbug now always permits the sender address to be changed
+before sending - if you were having trouble sending bug reports before
+now, this should fix it, we hope (e6eb90).
 
-=item C<XXX>
+=item * Overloading now works properly in conjunction with tied
+variables. What formerly happened was that most ops checked their
+arguments for overloading I<before> checking for magic, so for example
+an overloaded object returned by a tied array access would usually be
+treated as not overloaded (RT #57012) (6f1401, ed3b9b, 6a5f8c .. 24328f).
 
-XXX
+=item * Independently, a bug was fixed that prevented $tied->() from
+always calling FETCH correctly (RT #8438) (7c7501)
 
 =back
 
 =head1 Changed Internals
 
-XXX Changes which affect the interface available to C<XS> code go here.
-
 =over 4
 
+=item * The implementation of sv_dup_inc() has changed from a macro to a function.
+
 =item *
 
-The C<fund_rundefsvoffset> function has been deprecated. It appeared that
+The C<find_rundefsvoffset> function has been deprecated. It appeared that
 its design was insufficient to reliably get the lexical C<$_> at run-time.
 
 Use the new C<find_rundefsv> function or the C<UNDERBAR> macro instead.
 They directly return the right SV representing C<$_>, whether it's lexical
-or dynamic.
+or dynamic (789bd8 .. 03d5bc).
 
 =item *
 
@@ -198,43 +285,20 @@ C<SvNV_nomg>,  C<sv_2nv_flags>, C<find_rundefsv>.
 The C<UNDERBAR> macro now calls C<find_rundefsv>. C<dUNDERBAR> is now a
 noop but should still be used to ensure past and future compatibility.
 
-=back
-
-=head1 New Tests
-
-XXX Changes which create B<new> files in F<t/> go here. Changes to
-existing files in F<t/> aren't worth summarising, although the bugs that
-they represent may be.
-
-=over 4
-
-=item F<XXX>
-
-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 C<TODO>ed for the release would be noted here, unless
-they were specific to a particular platform (see below).
+=item *
 
-This is a list of some significant unfixed bugs, which are regressions
-from either 5.XXX.XXX or 5.XXX.XXX.
-
-=over 4
+The ibcmp_* functions have been renamed and are now called foldEQ,
+foldEQ_locale and foldEQ_utf8 (e6226b).
 
 =item *
 
-XXX
+The ibcmp_* functions have been renamed and are now called foldEQ,
+foldEQ_locale and foldEQ_utf8 (e6226b).
 
 =back
 
 =head1 Deprecations
 
-XXX Add any new known deprecations here.
-
 The following items are now deprecated.
 
 =over 4
@@ -249,19 +313,21 @@ as C<< m/foo/s and $bar >> but will issue a warning.
 
 =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
+=head2 Recent OpenBSDs now use perl's malloc
 
-XXX If any significant core contributor has died, we've added a short obituary
-here.
+OpenBSD > 3.7 has a new malloc implementation which is mmap based and as such
+can release memory back to the OS; however for perl using this malloc causes
+a substantial slowdown so we now default to using perl's malloc instead
+(RT #75742) (9b58b5).
 
 =head1 Acknowledgements
 
 XXX The list of people to thank goes here.
 
+Your humble release manager would like to specifically call out
+Karl Williamson for making the tests a better place to be, and Shlomi
+Fish for a passel of tiny incremental docfixes of the sort that don't get
+made often enough.
 
 =head1 Reporting Bugs