=head1 NAME
-[ this is a template for a new perldelta file. Any text flagged as
-XXX needs to be processed before release. ]
-
-perldelta - what is new for perl v5.13.9
+perldelta - what is new for perl v5.13.10
=head1 DESCRIPTION
-This document describes differences between the 5.13.8 release and
-the 5.13.9 release.
-
-If you are upgrading from an earlier release such as 5.13.7, first read
-L<perl5138delta>, which describes differences between 5.13.7 and
-5.13.8.
+This document describes differences between the 5.13.9 release and
+the 5.13.10 release.
-=head1 Notice
-
-XXX Any important notices here
+If you are upgrading from an earlier release such as 5.13.8, first read
+L<perl5139delta>, which describes differences between 5.13.8 and
+5.13.9.
=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</Performance Enhancements> section.
-
-[ List each enhancement as a =head2 entry ]
-
-=head2 New regular expression modifier C</a>
-
-The C</a> regular expression modifier restricts C<\s> to match precisely
-the five characters C<[ \f\n\r\t]>, C<\d> to match precisely the 10
-characters C<[0-9]>, C<\w> to match precisely the 63 characters
-C<[A-Za-z0-9_]>, and the Posix (C<[[:posix:]]>) character classes to
-match only the appropriate ASCII characters. The complements, of
-course, match everything but; and C<\b> and C<\B> are correspondingly
-affected. Otherwise, C</a> behaves like the C</u> modifier, in that
-case-insensitive matching uses Unicode semantics; for example, "k" will
-match the Unicode C<\N{KELVIN SIGN}> under C</i> matching, and code
-points in the Latin1 range, above ASCII will have Unicode semantics when
-it comes to case-insensitive matching. Like its cousins (C</u>, C</l>,
-and C</d>), and in spite of the terminology, C</a> in 5.14 will not
-actually be able to be used as a suffix at the end of a regular
-expression (this restriction is planned to be lifted in 5.16). It must
-occur either as an infix modifier, such as C<(?a:...)> or (C<(?a)...>,
-or it can be turned on within the lexical scope of C<use re '/a'>.
-Turning on C</a> turns off the other "character set" modifiers.
-
-=head2 Any unsigned value can be encoded as a character
-
-With this release, Perl is adopting a model that any unsigned value can
-be treated as a code point and encoded internally (as utf8) without
-warnings -- not just the code points that are legal in Unicode.
-However, unless utf8 warnings have been
-explicitly lexically turned off, outputting or performing a
-Unicode-defined operation (such as upper-casing) on such a code point
-will generate a warning. Attempting to input these using strict rules
-(such as with the C<:encoding('UTF-8')> layer) will continue to fail.
-Prior to this release the handling was very inconsistent, and incorrect
-in places. Also, the Unicode non-characters, some of which previously were
-erroneously considered illegal in places by Perl, contrary to the Unicode
-standard, are now always legal internally. But inputting or outputting
-them will work the same as for the non-legal Unicode code points, as the
-Unicode standard says they are illegal for "open interchange".
-
-=head2 Regular expression debugging output improvement
-
-Regular expression debugging output (turned on by C<use re 'debug';>) now
-uses hexadecimal when escaping non-ASCII characters, instead of octal.
-
-=head1 Security
+=head2 The new regular expression modifiers available in suffix form
-XXX Any security-related notices go here. In particular, any security
-vulnerabilities closed should be noted here rather than in the
-L</Selected Bug Fixes> section.
+Various releases of the 5.13.x series have added new regular expression
+modifiers, C</a>, C</d>, C</l>, and C</u>. They were only available in
+infix form (e.g., C<(?a:...)> until this release; now they are usable
+in suffix form. This change was made too late to change all the
+affected documentation, so there are a number of places that erroneously
+say these must be used in infix form.
-[ List each security issue as a =head2 entry ]
+However, there is an ambiguity with the construct, C<s/foo/bar/le...>. Due
+to backward compatibility constraints, in Perl 5.14 only, it will be
+resolved as C<s/foo/bar/ le...>, that is, as meaning to take the result
+of the substitution, and see if it is stringwise less-than-or-equal-to
+what follows. In Perl 5.16 and later, it will instead be resolved as
+meaning to do the pattern match using the rules of the current locale,
+and evaluate the rhs as an expression when doing the substitution. In
+5.14, if you want the latter interpretation, you can write "el" instead.
-=head1 Incompatible Changes
+=head2 Add C<\p{Titlecase}> as a synonym for C<\p{Title}>
-XXX For a release on a stable branch, this section aspires to be:
+This synonym is added for symmetry with the Unicode property names
+C<\p{Uppercase}> and C<\p{Lowercase}>.
- There are no changes intentionally incompatible with 5.XXX.XXX. If any
- exist, they are bugs and reports are welcome.
+=head2 New regular expression modifier option C</aa>
-[ List each incompatible change as a =head2 entry ]
+Doubling the C</a> regular expression modifier increases its effect,
+so that in case-insensitive matching, no ASCII character will match a
+non-ASCII character. For example, normally,
-=head2 All objects are destroyed
+ 'k' =~ /\N{KELVIN SIGN}/
-It used to be possible to prevent a destructor from being called during
-global destruction by artificially increasing the reference count of an
-object.
+will match; it won't under C</aa>.
-Now such objects I<will> will be destroyed, as a result of a bug fix
-L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>.
+=head2 New warnings categories for problematic (non-)Unicode code points.
-This has the potential to break some XS modules. (In fact, it break some.
-See L</Known Problems>, below.)
+Three new warnings subcategories of <utf8> have been added. These
+allow you to turn off warnings for their covered events, while allowing
+the other UTF-8 warnings to remain on. The three categories are:
+C<surrogate> when UTF-16 surrogates are encountered;
+C<nonchar> when Unicode non-character code points are encountered;
+and C<non_unicode> when code points that are above the legal Unicode
+maximum of 0x10FFFF are encountered.
-=head1 Deprecations
+=head1 Security
-XXX Any deprecated features, syntax, modules etc. should be listed here.
-In particular, deprecated modules should be listed here even if they are
-listed as an updated module in the L</Modules and Pragmata> section.
+=head1 Incompatible Changes
-[ List each deprecation as a =head2 entry ]
+=head2 Most C<\p{}> properties are now immune from case-insensitive matching
-=head1 Performance Enhancements
+For most Unicode properties, it doesn't make sense to have them match
+differently under C</i> case-insensitive matching than not. And doing
+so leads to unexpected results and potential security holes. For
+example
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
+ m/\p{ASCII_Hex_Digit}+/i
-[ List each enhancement as a =item entry ]
+could previously match non-ASCII characters because of the Unicode
+matching rules. There were a number of bugs in this feature until an
+earlier release in the 5.13 series. Now this release reverts, and
+removes the feature completely except for the few properties where
+people have come to expect it, namely the ones where casing is an
+integral part of their functionality, such as C<m/\p{Uppercase}/i> and
+C<m/\p{Lowercase}/i>, both of which match the exact same code points,
+namely those matched by C<m/\p{Cased}/i>. Details are in
+L<perlrecharclass/Unicode Properties>.
-=over 4
+User-defined property handlers that need to match differently under
+C</i> must change to read the new boolean parameter passed it which is
+non-zero if case-insensitive matching is in effect; 0 if not. See
+L<perluniprops/User-Defined Character Properties>.
-=item *
+=head2 regex: \p{} in pattern implies Unicode semantics
-XXX
+Now, a Unicode property match specified in the pattern will indicate
+that the pattern is meant for matching according to Unicode rules
+(e40e74f)
-=back
+=head2 add GvCV_set() and GvGP_set() macros and change GvGP()
-=head1 Modules and Pragmata
+This allows a future commit to eliminate some backref magic between GV
+and CVs, which will require complete control over assignment to the
+gp_cv slot.
-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.
+If you've been using GvGP() in lvalue context this change will break
+your code, you should use GvGP_set() instead. (c43ae56)
-[ Within each section, list entries as a =item entry ]
+=head2 _swash_inversion_hash is no longer exported as part of the API
-=head2 New Modules and Pragmata
+This function shouldn't be called from XS code. (4c2e113)
-=over 4
+=head2 Unreferenced objects in global destruction
-=item *
+The fix for [perl #36347], which made sure that destructors were called on
+unreferenced objects, broke the tests for three CPAN modules, which
+apparently rely on the bug.
-L<CPAN::Meta::YAML> 0.003 has been added as a dual-life module. It supports a
-subset of YAML sufficient for reading and writing META.yml and MYMETA.yml files
-included with CPAN distributions or generated by the module installation
-toolchain. It should not be used for any other general YAML parsing or
-generation task.
+To provide more time for fixing them (as this is such a minor bug), we
+have reverted the fix until after perl 5.14.0.
-=item *
+This resolves [perl #82542] and other related tickets.
-L<HTTP::Tiny> 0.009 has been added as a dual-life module. It is a very
-small, simple HTTP/1.1 client designed for simple GET requests and file
-mirroring. It has has been added to enable CPAN.pm and CPANPLUS to
-"bootstrap" HTTP access to CPAN using pure Perl without relying on external
-binaries like F<curl> or F<wget>.
+=head2 C<close> on shared pipes
-=item *
+The C<close> function no longer waits for the child process to exit if the
+underlying file descriptor is still in use by another thread, to avoid
+deadlocks. It returns true in such cases.
-L<JSON::PP> 2.27103 has been added as a dual-life module, for the sake of
-reading F<META.json> files in CPAN distributions.
+=head1 Deprecations
-=item *
+=over
-L<Module::Metadata> 1.000003 has been added as a dual-life module. It gathers
-package and POD information from Perl module files. It is a standalone module
-based on Module::Build::ModuleInfo for use by other module installation
-toolchain components. Module::Build::ModuleInfo has been deprecated in
-favor of this module instead.
+=item Deprecated Modules
-=item *
+The following modules will be removed from the core distribution in a
+future release, and should be installed from CPAN instead. Distributions
+on CPAN which require these should add them to their prerequisites. The
+core versions of these modules warnings will issue a deprecation warning.
-L<Perl::OSType> 1.002 has been added as a dual-life module. It maps Perl
-operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic types
-with standardized names (e.g. "Unix" or "Windows"). It has been refactored
-out of Module::Build and ExtUtils::CBuilder and consolidates such mappings into
-a single location for easier maintenance.
+If you ship a packaged version of Perl, either alone or as part of a
+larger system, then you should carefully consider the repercussions of
+core module deprecations. You may want to consider shipping your default
+build of Perl with packages for some or all deprecated modules which
+install into C<vendor> or C<site> perl library directories. This will
+inhibit the deprecation warnings.
-=back
+Alternatively, you may want to consider patching F<lib/deprecate.pm>
+to provide deprecation warnings specific to your packaging system
+or distribution of Perl, consistent with how your packaging system
+or distribution manages a staged transition from a release where the
+installation of a single package provides the given functionality, to
+a later release where the system administrator needs to know to install
+multiple packages to get that same functionality.
-=head2 Updated Modules and Pragmata
+You can silence these deprecation warnings by installing the modules
+in question from CPAN. To install the latest version of all of them,
+just install C<Task::Deprecations::5_14>.
-=over 4
+=over
-=item *
+=item L<Devel::DProf>
-C<Archive::Extract> has been upgraded from version 0.46 to 0.48
+We strongly recommend that you install and used L<Devel::NYTProf> in
+preference, as it offers significantly improved profiling and reporting.
-=item *
+=back
-C<Archive::Tar> has been upgraded from version 1.74 to 1.76
+=back
-=item *
+=head2 User-defined case-mapping
-C<CGI> has been upgraded from version 3.50 to 3.51
+This feature is being deprecated due to its many issues, as documented in
+L<perlunicode/User-Defined Case Mappings (for serious hackers only)>.
+It is planned to remove this feature in Perl 5.16. A CPAN module
+providing improved functionality is being prepared for release by the
+time 5.14 is.
-Further improvements have been made to guard against newline injections
-in headers.
+=head1 Modules and Pragmata
-=item *
+=head2 New Modules and Pragmata
-C<Compress::Raw::Bzip2> has been upgraded from version 2.031 to 2.033
+=over 4
=item *
-C<Compress::Raw::Zlib> has been upgraded from version 2.030 to 2.033
+C<CPAN::Meta> version 2.110440 has been added as a dual-life module. It
+provides a standard library to read, interpret and write CPAN distribution
+metadata files (e.g. META.json and META.yml) which describes a
+distribution, its contents, and the requirements for building it and
+installing it. The latest CPAN distribution metadata specification is
+included as C<CPAN::Meta::Spec> and notes on changes in the specification
+over time are given in C<CPAN::Meta::History>.
=item *
-C<CPAN> has been upgraded from version 1.94_62 to 1.94_63
+C<Version::Requirements> version 0.101020 has been added as a dual-life
+module. It provides a standard library to model and manipulates module
+prerequisites and version constraints as defined in the L<CPAN::Meta::Spec>.
-=item *
+=back
+
+=head2 Updated Modules and Pragmata
-C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011
+=over 4
=item *
-C<CPANPLUS::Dist::Build> has been upgraded from version 0.50 to 0.52
+C<B> has been upgraded from version 1.27 to 1.28.
=item *
-C<DB_File> has been upgraded from version 1.820 to 1.821
+C<Carp> has been upgraded from version 1.19 to 1.20.
+
+[perl #82854] It now avoids using regular expressions that cause perl to
+load its Unicode tables, in order to avoid the 'BEGIN not safe after
+errors' error that will ensue if there has been a syntax error.
=item *
-C<Encode> has been upgraded from version 2.40 to 2.42.
-Now, all 66 Unicode non-characters are treated the same way U+FFFF has
-always been treated; if it was disallowed, all 66 are disallowed; if it
-warned, all 66 warn.
+C<CGI> has been upgraded from version 3.51 to 3.52
=item *
-C<File::Fetch> has been upgraded from version 0.28 to 0.32
+C<CPAN> has been upgraded from version 1.94_64 to 1.94_65
+
+Includes support for META.json and MYMETA.json.
=item *
-C<IO::Compress> has been upgraded from version 2.030 to 2.033
+C<CPANPLUS> has been upgraded from version 0.9011 to 0.9101
+
+Includes support for META.json and MYMETA.json and a change to
+using Digest::SHA for CPAN checksums.
=item *
-C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
+C<deprecate> has been upgraded from version 0.01 to 0.02.
=item *
-C<Log::Message> has been upgraded from version 0.02 to 0.04
+C<diagnostics> has been upgraded from version 1.21 to 1.22.
+
+It now renders pod links slightly better, and has been taught to find
+descriptions for messages that share their descriptions with other
+messages.
=item *
-C<Log::Message::Simple> has been upgraded from version 0.06 to 0.08
+C<Devel::DProf> has been upgraded from version 20080331.00 to 20110217.00.
-=item *
+Merely loading C<Devel::DProf> now no longer triggers profiling to start.
+C<use Devel::DProf> and C<perl -d:DProf ...> still behave as before and start
+the profiler.
-C<Module::Load::Conditional> has been upgraded from version 0.38 to 0.40
+NOTE: C<Devel::DProf> is deprecated and will be removed from a future
+version of Perl. We strongly recommend that you install and use
+L<Devel::NYTProf> instead, as it offers significantly improved
+profiling and reporting.
=item *
-C<Object::Accessor> has been upgraded from version 0.36 to 0.38
+C<DynaLoader> has been upgraded from version 1.12 to 1.13.
+
+[perl #84358] It no longer inherits from AutoLoader; hence it no longer
+produces weird error messages for unsuccessful method calls on classes that
+inherit from DynaLoader.
=item *
-C<Params::Check> has been upgraded from version 0.26 to 0.28
+C<IO::Select> has been upgraded from version 1.17 to 1.18.
+
+It now allows IO::Handle objects (and objects in derived classes) to be
+removed from an IO::Select set even if the underlying file descriptor is
+closed or invalid.
=item *
-C<Pod::LaTeX> has been upgraded from version 0.58 to 0.59
+C<IPC::Cmd> has been upgraded from version 0.68 to 0.70
=item *
-C<Term::UI> has been upgraded from version 0.20 to 0.24
+C<HTTP::Tiny> has been upgraded from version 0.009 to 0.010
=item *
-C<Thread::Queue> has been upgraded from version 2.11 to 2.12.
+C<Math::BigInt> has been upgraded from version 1.99_04 to 1.992.
=item *
-C<Thread::Semaphore> has been upgraded from version 2.11 to 2.12.
+C<Module::Build> has been upgraded from version 0.3607 to 0.37_05.
-=item *
+A notable change is the deprecation of several modules.
+Module::Build::Version has been deprecated and Module::Build now relies
+directly upon L<version>. Module::Build::ModuleInfo has been deprecated in
+favor of a standalone copy of it called L<Module::Metadata>.
+Module::Build::YAML has been deprecated in favor of L<CPAN::Meta::YAML>.
-C<threads> has been upgraded from version 1.81_03 to 1.82
+Module::Build now also generates META.json and MYMETA.json files
+in accordance with version 2 of the CPAN distribution metadata specification,
+L<CPAN::Meta::Spec>. The older format META.yml and MYMETA.yml files are
+still generated, as well.
=item *
-C<threads::shared> has been upgraded from version 1.35 to 1.36
+C<Module::Load::Conditional> has been upgraded from version 0.40 to 0.44
=item *
-C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
+C<Module::Metadata> has been upgraded from version 1.000003 to 1.000004.
=item *
-C<Unicode::Normalize> has been upgraded from version 1.07 to 1.10
+C<overload> has been upgraded from version 1.12 to 1.13.
+
+The documentation has greatly improved. See L</Documentation> below.
=item *
-C<version> has been upgraded from 0.86 to 0.88.
+C<Parse::CPAN::Meta> has been upgraded from version 1.40 to 1.4401.
+
+The latest Parse::CPAN::Meta can now read YAML or JSON files using
+L<CPAN::Meta::YAML> and L<JSON::PP>, which are now part of the Perl core.
=item *
-C<Win32> has been upgraded from version 0.41 to 0.44.
+C<re> has been upgraded from version 0.16 to 0.17.
-=back
+It now supports the double-a flag: C<use re '/aa';>
-=head2 Removed Modules and Pragmata
+The C<regmust> function used to crash when called on a regular expression
+belonging to a pluggable engine. Now it has been disabled for those.
-=over 4
+C<regmust> no longer leaks memory.
=item *
-XXX
+C<Term::UI> has been upgraded from version 0.24 to 0.26
-=back
+=item *
-=head1 Documentation
+C<Unicode::Collate> has been upgraded from version 0.68 to 0.72
-XXX Changes to files in F<pod/> go here. Consider grouping entries by
-file and be sure to link to the appropriate page, e.g. L<perlfunc>.
+This also sees the switch from using the pure-perl version of this
+module to the XS version.`
-=head2 New Documentation
+=item *
-XXX Changes which create B<new> files in F<pod/> go here.
+C<VMS::DCLsym> has been upgraded from version 1.04 to 1.05.
-=head3 L<XXX>
+Two bugs have been fixed [perl #84086]:
-XXX Description of the purpose of the new file here
+The symbol table name was lost when tying a hash, due to a thinko in
+C<TIEHASH>. The result was that all tied hashes interacted with the
+local symbol table.
-=head2 Changes to Existing Documentation
+Unless a symbol table name had been explicitly specified in the call
+to the constructor, querying the special key ':LOCAL' failed to
+identify objects connected to the local symbol table.
-XXX Changes which significantly change existing files in F<pod/> go here.
-However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
-section.
+=item *
-=head3 L<perlfunc>
+Added new function C<Unicode::UCD::num()>. This function will return the
+numeric value of the string passed it; C<undef> if the string in its
+entirety has no safe numeric value.
-=over 4
+To be safe, a string must be a single character which has a numeric
+value, or consist entirely of characters that match \d, coming from the
+same Unicode block of digits. Thus, a mix of Bengali and Western
+digits would be considered unsafe, as well as a mix of half- and
+full-width digits, but strings consisting entirely of Devanagari digits
+or of "Mathematical Bold" digits would would be safe.
=item *
-It has now been documented that C<ord> returns 0 for an empty string.
+C<CPAN> has been upgraded from version1.94_63 to 1.94_64.
=back
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages. For the complete list of
-diagnostic messages, see L<perldiag>.
-
-XXX New or changed warnings emitted by the core's C<C> code go here. Also
-include any changes in L<perldiag> that reconcile it to the C<C> code.
-
-[ Within each section, list entries as a =item entry ]
+=head1 Documentation
-=head2 New Diagnostics
+=head2 Changes to Existing Documentation
-XXX Newly added diagnostic messages go here
+=head3 L<overload>
=over 4
=item *
-Performing an operation requiring Unicode semantics (such as case-folding)
-on a Unicode surrogate or a non-Unicode character now triggers a warning:
-'Operation "%s" returns its argument for ...'.
+L<overload>'s documentation has practically undergone a rewrite. It
+is now much more straightforward and clear.
=back
-=head2 Changes to Existing Diagnostics
-
-XXX Changes (i.e. rewording) of diagnostic messages go here
+=head3 L<perlhack> and perlrepository
=over 4
=item *
-Previously, if none of the C<gethostbyaddr>, C<gethostbyname> and
-C<gethostent> functions were implemented on a given platform, they would
-all die with the message 'Unsupported socket function "gethostent" called',
-with analogous messages for C<getnet*> and C<getserv*>. This has been
-corrected.
-
-=back
+The L<perlhack> and perlrepository documents have been heavily edited and
+split up into several new documents.
-=head1 Utility Changes
+The L<perlhack> document is now much shorter, and focuses on the Perl 5
+development process and submitting patches to Perl. The technical content has
+been moved to several new documents, L<perlsource>, L<perlinterp>,
+L<perlhacktut>, and L<perlhacktips>. This technical content has only been
+lightly edited.
-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>.
+The perlrepository document has been renamed to L<perlgit>. This new document
+is just a how-to on using git with the Perl source code. Any other content
+that used to be in perlrepository has been moved to perlhack.
-[ List utility changes as a =head3 entry for each utility and =item
-entries for each change
-Use L<XXX> with program names to get proper documentation linking. ]
+=back
-=head3 L<perlbug>
+=head3 L<perlfunc>
=over 4
=item *
-C<perlbug> did not previously generate a From: header, potentially
-resulting in dropped mail. Now it does include that header.
+The documentation for the C<map> function now contains more examples,
+see B<perldoc -f map> (f947627)
=back
-=head1 Configuration and Compilation
-
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here. Any other changes to the Perl build process should be listed here.
-However, any platform-specific changes should be listed in the
-L</Platform Support> section, instead.
-
-[ List changes as a =item entry ].
+=head3 L<perlfaq4>
=over 4
=item *
-XXX
+Examples in L<perlfaq4> have been updated to show the use of
+L<Time::Piece>. (9243591)
=back
-=head1 Testing
-
-XXX Any significant changes to the testing of a freshly built perl should be
-listed here. Changes which create B<new> files in F<t/> go here as do any
-large changes to the testing harness (e.g. when parallel testing was added).
-Changes to existing files in F<t/> aren't worth summarising, although the bugs
-that they represent may be covered elsewhere.
-
-[ List each test improvement as a =item entry ]
+=head3 Miscellaneous
=over 4
=item *
-A new test script, C<t/porting/filenames.t>, makes sure that filenames and
-paths are reasonably portable.
+Many POD related RT bugs and other issues which are too numerous to
+enumerate have been solved by Michael Stevens.
=back
-=head1 Platform Support
-
-XXX Any changes to platform support should be listed in the sections below.
-
-[ Within the sections, list each platform as a =item entry with specific
-changes as paragraphs below it. ]
+=head1 Diagnostics
-=head2 New Platforms
+The following additions or changes have been made to diagnostic output,
+including warnings and fatal error messages. For the complete list of
+diagnostic messages, see L<perldiag>.
-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.
+=head2 New Diagnostics
=over 4
-=item XXX-some-platform
-
-XXX
-
-=back
-
-=head2 Discontinued Platforms
-
-XXX List any platforms that this version of perl no longer compiles on.
-
-=over 4
+=item "\b{" is deprecated; use "\b\{" instead
-=item Apollo DomainOS
+=item "\B{" is deprecated; use "\B\{" instead
-The last vestiges of support for this platform have been excised from the
-Perl distribution. It was officially discontinued in version 5.12.0. It had
-not worked for years before that.
+Use of an unescaped "{" immediately following a C<\b> or C<\B> is now
+deprecated so as to reserve its use for Perl itself in a future release.
-=back
+=item regcomp: Add warning if \p is used under locale. (fb2e24c)
-=head2 Platform-Specific Notes
+C<\p> implies Unicode matching rules, which are likely going to be
+different than the locale's.
-XXX List any changes for specific platforms. This could include configuration
-and compilation changes or changes in portability/compatibility. However,
-changes within modules for platforms should generally be listed in the
-L</Modules and Pragmata> section.
+=item panic: gp_free failed to free glob pointer - something is repeatedly re-creating entries
-=over 4
+This new error is triggered if a destructor called on an object in a
+typeglob that is being freed creates a new typeglob entry containing an
+object with a destructor that creates a new entry containing an object....
-=item Solaris
+=item refcnt: fd %d%s
-DTrace is now supported on Solaris. There used to be build failures, but
-these have been fixed
-L<[perl #73630]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=73630>.
+This new error only occurs if a internal consistency check fails when a
+pipe is about to be closed.
=back
-=head1 Internal Changes
-
-XXX Changes which affect the interface available to C<XS> code go here.
-Other significant internal changes for future core maintainers should
-be noted as well.
-
-[ List each test improvement as a =item entry ]
+=head2 Changes to Existing Diagnostics
=over 4
=item *
-The opcode bodies for C<chop> and C<chomp> and for C<schop> and C<schomp> have
-been merged. The implementation functions C<Perl_do_chop()> and
-C<Perl_do_chomp()>, never part of the public API, have been merged and moved to
-a static function in F<pp.c>. This shrinks the perl binary slightly, and should
-not affect any code outside the core (unless it is relying on the order of side
-effects when C<chomp> is passed a I<list> of values).
+The warning message about regex unrecognized escapes passed through is
+changed to include any literal '{' following the 2-char escape. e.g.,
+"\q{" will include the { in the message as part of the escape
+(216bfc0).
=item *
-Some of the flags parameters to the uvuni_to_utf8_flags() and
-utf8n_to_uvuni() have changed. This is a result of Perl now allowing
-internal storage and manipulation of code points that are problematic
-in some situations. Hence, the default actions for these functions has
-been complemented to allow these code points. The new flags are
-documented in L<perlapi>. Code that requires the problematic code
-points to be rejected needs to change to use these flags. Some flag
-names are retained for backward source compatibility, though they do
-nothing, as they are now the default. However the flags
-C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and
-C<UNICODE_IS_ILLEGAL> have been removed, as they stem from a
-fundamentally broken model of how the Unicode non-character code points
-should be handled, which is now described in
-L<perlunicode/Non-character code points>. See also L</Selected Bug Fixes>.
+C<binmode $fh, ':scalar'> no longer warns (8250589)
-=item *
-
-Certain shared flags in the C<pmop.op_pmflags> and C<regexp.extflags>
-structures have been removed. These are: C<Rxf_Pmf_LOCALE>,
-C<Rxf_Pmf_UNICODE>, and C<PMf_LOCALE>. Instead there are encodes and
-three static in-line functions for accessing the information:
-C<get_regex_charset()>, C<set_regex_charset()>, and C<get_regex_charset_name()>,
-which are defined in the places where the orginal flags were.
-
-=item *
+Perl will now no longer produce this warning:
-A new option has been added to C<pv_escape> to dump all characters above
-ASCII in hexadecimal. Before, one could get all characters as hexadecimal
-or the Latin1 non-ASCII as octal
+ $ perl -we 'open my $f, ">", \my $x; binmode $f, "scalar"'
+ Use of uninitialized value in binmode at -e line 1.
=back
-=head1 Selected Bug Fixes
-
-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>.
+=head1 Utility Changes
-[ List each fix as a =item entry ]
+=head3 L<perlbug>
=over 4
=item *
-The handling of Unicode non-characters has changed.
-Previously they were mostly considered illegal, except that only one of
-the 66 of them was known about in places. The Unicode standard
-considers them legal, but forbids the "open interchange" of them.
-This is part of the change to allow the internal use of any code point
-(see L</Core Enhancements>). Together, these changes resolve
-L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>,
-L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>,
-L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>,
-L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446>
+[perl #82996] Use the user's from address as return-path in perlbug
-=item *
+Many systems these days don't have a valid Internet domain name and
+perlbug@perl.org does not accept email with a return-path that does
+not resolve. Therefore pass the user's address to sendmail so it's
+less likely to get stuck in a mail queue somewhere. (019cfd2)
-Sometimes magic (ties, tainted, etc.) attached to variables could cause an
-object to last longer than it should, or cause a crash if a tied variable
-were freed from within a tie method. These have been fixed
-L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>.
+=back
-=item *
+=head1 Configuration and Compilation
-Most I/O functions were not warning for unopened handles unless the
-'closed' and 'unopened' warnings categories were both enabled. Now only
-C<use warnings 'unopened'> is necessary to trigger these warnings (as was
-always meant to be the case.
+=over 4
=item *
-C<< <expr> >> always respects overloading now if the expression is
-overloaded.
-
-Due to the way that '<> as glob' was parsed differently from
-'<> as filehandle' from 5.6 onwards, something like C<< <$foo[0]> >> did
-not handle overloading, even if C<$foo[0]> was an overloaded object. This
-was contrary to the documentation for overload, and meant that C<< <> >>
-could not be used as a general overloaded iterator operator.
-
-=item *
+make reg_eval_scope.t TODOs consistently fail (daaf7ac)
-Destructors on objects were not called during global destruction on objects
-that were not referenced by any scalars. This could happen if an array
-element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
-blessed variable (C<bless \my @a; sub foo { @a }>).
+Some of the TODO tests in reg_eval_scope.t spuriously passed under
+non-threaded builds. Make the tests harder so they always fail.
-Now there is an extra pass during global destruction to fire destructors on
-any objects that might be left after the usual passes that check for
-objects referenced by scalars
-L<[perl #36347]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=36347>.
+Since one of the key bugs in (?{..}) is the trashing of the parent pad,
+add some extra lexical vars to the parent scope and check they're still
+there at the end.
=item *
-A long standing bug has now been fully fixed (partial fixes came in
-earlier releases), in which some Latin-1 non-ASCII characters on
-ASCII-platforms would match both a character class and its complement,
-such as U+00E2 being both in C<\w> and C<\W>, depending on the
-UTF-8-ness of the regular expression pattern and target string.
-Fixing this did expose some bugs in various modules and tests that
-relied on the previous behavior of C<[[:alpha:]]> not ever matching
-U+00FF, "LATIN SMALL LETTER Y WITH DIAERESIS", even when it should, in
-Unicode mode; now it does match when appropriate.
-L<[perl #60156]|http://rt.perl.org/rt3/Ticket/Display.html?id=60156>.
+Stop EU::CBuilder's tests from failing in parallel (cbf59d5)
-=back
-
-=head1 Known Problems
+It used to use the same paths for temporary files in all tests. This
+blew up randomly when the tests were run in parallel.
-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).
-
-This is a list of some significant unfixed bugs, which are regressions
-from either 5.XXX.XXX or 5.XXX.XXX.
+=back
-[ List each fix as a =item entry ]
+=head1 Testing
=over 4
=item *
-The fix for [perl #81230] causes test failures for C<Tk> version 804.029.
-This is still being investigated.
-
-=back
-
-=head1 Obituary
+F<porting/FindExt.t> now skips all tests on a static (-Uusedl) build
+of perl.
-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 L<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.
-
-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<Changes> file for an explanation of how to view exhaustive details
-on what changed.
-
-The F<INSTALL> file for how to build Perl.
-
-The F<README> file for general stuff.
-
-The F<Artistic> and F<Copying> files for copyright information.
-
-=cut
-
-=for later
-
-Below, you'll find a cut-down version of the git log from 5.13.8 to 1b9043bb.
-Jesse went through and took a first pass at cutting out non-changelog items. He may have been over-(or under-)zealous.
-
-It hasn't yet been deduped with the entries that _are_ in the perldelta.
-
-
- Major spell-checking pass throughout the core
-
- Remove references to compat3.sym and interp.sym, deleted over 10 years ago.
-
- Remove Mac OS classic code from numerous places throughout the core
-
-commit 7fe50b8b8a4dc38fc341e3b403545aaca937f50e
-Author: Leon Timmermans <fawaka@gmail.com>
-Date: Tue Jan 18 16:40:07 2011 +0100
-
- Also unblock signal handlers throwing an exception
-
- Also handle and test the edge case of a signal handler throwing an
- exception
-
-
-
-
-Numberous POD warnings fixed
-
-
-
- Update Unicode-Collate to CPAN version 0.71
-
-
-internals
-
-Author: Nicholas Clark <nick@ccl4.org>
-Date: Tue Jan 18 16:14:43 2011 +0000
-
- Remove Mac OS classic code from scripts in utils/
-
-
- Convert DosGlob.t to Test::More.
-
-commit d6dc8a6dc95226ddff7719cd1e0bd053c4e5725e
-Author: Nicholas Clark <nick@ccl4.org>
-Date: Tue Jan 18 13:08:11 2011 +0000
-
- Remove Mac OS Classic docs from DirHandle and File::{Copy,DosGlob,Find}
-
- The documentation for the different behaviour on Mac OS Classic was not
- removed when the relevant code was removed in 862f843bac3434c2. That commit
- also remove all callers to several Mac OS classic support functions, but not
- the functions themselves. Rectify this.
+=item *
-commit 8254cbf193c939338449097a80163197fc755150
-Author: Nicholas Clark <nick@ccl4.org>
-Date: Tue Jan 18 11:10:41 2011 +0000
+F<porting/FindExt.t> now passes on non-Win32 platforms when some
+extensions are built statically.
- Build perltoc.pod with pragmata sorted by name.
+=back
- Previously they were actually sorted by full pathname, which isn't logical.
- I presume that this is an artefact of all pragmata being in lib/ when
- pod/buildtoc was originally written.
+=head1 Platform Support
-commit 1d45ec279e4e105512a2803e3d0bd974a151a0f6
-Author: Father Chrysostomos <sprout@cpan.org>
-Date: Mon Jan 17 22:32:52 2011 -0800
+=head2 Platform-Specific Notes
- perlcall: Fixes for various grammatical errors
+=over 4
-commit faaf68361923e4bb95d1eb919bc724a0dcc5a4ce
-Author: Leon Timmermans <fawaka@gmail.com>
-Date: Mon Jan 17 17:59:33 2011 +0100
+=item Windows
- Clarify limitation in safe signals.
+=over 4
-commit 0c1bf4c7d433bb0ad80bfe5511b1301db32b7b95
-Author: Leon Timmermans <fawaka@gmail.com>
-Date: Mon Jan 17 16:29:11 2011 +0100
+=item *
- Added tests for conditional unblocking
+The C<test-prep> build target now depends on F<pod/perltoc.pod> to allow the
+F<t/porting/buildtoc.t> test to run successfully.
-commit 555344425f04e96a72e4d29eab96b34bff8f96ae
-Author: Leon Timmermans <fawaka@gmail.com>
-Date: Thu Jan 13 18:30:29 2011 +0100
+=back
- Conditionally unblock after signal handler[#82040]
+=item MirBSD
- Only unblock signal after a safe-signal handler is executed if that signal was
- also unblocked before the handler.
-commit 435aa301127ed481169903cb35187bde1ea44928
-Author: David Golden <dagolden@cpan.org>
-Date: Mon Jan 17 20:39:14 2011 -0500
+=over 4
- Update HTTP::Tiny to CPAN version 0.009
+=item *
-commit 78cd53afbb1923bf0a68f361040ad8fe93a7d0d5
-Author: David Mitchell <davem@iabyn.com>
-Date: Tue Jan 18 00:46:30 2011 +0000
+[perl #82988] Skip hanging taint.t test on MirBSD 10 (1fb83d0)
- vastly speed up t/porting/diag.t
+Skip a hanging test under MirBSD that was already being skipped under
+OpenBSD.
- This used to take about 3 minutes of CPU. Reduce this to around
- 6 seconds (!!) by coalescing and pre-compiling various patterns
- that get applied to nearly every line of every source file.
+=item *
-commit e66820012d29519f903709f005e56a2c334ae183
-Author: Tony Cook <tony@develop-help.com>
-Date: Mon Jan 17 19:22:08 2011 +1100
+Previously if you build perl with a shared libperl.so on MirBSD (the
+default config), it will work up to the installation; however, once
+installed, it will be unable to find libperl. Treat path handling
+like in the other BSD dialects.
- test_prep now depends on the pods needed for porting/buildtoc.t
+=back
- In the other makefiles test_prep (or test-prep) depends on all, so
- they shouldn't need updating.
+=back
+=head1 Internal Changes
-commit a52237f3a547cdefddd4c4be6224bfdf67c84263
-Author: David Golden <dagolden@cpan.org>
-Date: Sun Jan 16 21:32:21 2011 -0500
+=over 4
- Update CPAN to CPAN version 1.94_63
+=item *
-commit a3ab329f3fc9494e700f51c38cef42021c130b6e
-Author: David Golden <dagolden@cpan.org>
-Date: Sun Jan 16 20:57:02 2011 -0500
+Fix harmless invalid read in Perl_re_compile() (f6d9469)
- Add HTTP::Tiny as a dual-life core module
+[perl #2460] described a case where electric fence reported an invalid
+read. This could be reproduced under valgrind with blead and -e'/x/',
+but only on a non-debugging build.
- HTTP::Tiny has been added as a dual-life module. It is a very
- small, simple HTTP/1.1 client designed for simple GET requests and file
- mirroring. It has has been added to enable CPAN.pm and CPANPLUS to
- "bootstrap" HTTP access to CPAN using pure Perl without relying on external
- binaries like F<curl> or F<wget>.
+This was because it was checking for certain pairs of nodes (e.g. BOL + END)
+and wasn't allowing for EXACT nodes, which have the string at the next
+node position when using a naive NEXTOPER(first). In the non-debugging
+build, the nodes aren't initialised to zero, and a 1-char EXACT node isn't
+long enough to spill into the type field of the "next node".
-commit 211cc5012284f4bd900fcaa630adbcac69ca6112
-Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
-Date: Sun Jan 16 23:23:03 2011 +0000
+Fix this by only using NEXTOPER(first) when we know the first node is
+kosher.
- Update Unicode-Collate to CPAN version 0.70 and enable XS version
+=item *
-tools
+Break out the generated function Perl_keywords() into F<keywords.c>, a new file. (26ea9e1)
- Significant updates to buildtoc
+As it and Perl_yylex() both need FEATURE_IS_ENABLED, feature_is_enabled() is
+no longer static, and the two macro definitions move from toke.c to perl.h
- Update Unicode-Normalize to CPAN version 1.10
+Previously, one had to cut and paste the output of perl_keywords.pl into the
+middle of toke.c, and it was not clear that it was generated code.
-SECURITY
+=item *
- restrict \p{IsUserDefined} to In\w+ and In\w+
+A lot of tests have been ported from Test to Test::More, e.g. in
+3842ad6.
- In L<perlunicode/"User-Defined Character Properties">, it says you can
- create custom properties by defining subroutines whose names begin with
- "In" or "Is". However, perl doesn't actually enforce that naming
- restriction, so \p{foo::bar} will call foo::Bar() if it exists.
+=item *
- This commit finally enforces this convention. Note that this broke a
- number of existing tests for properties, since they didn't always use an
- Is/In prefix.
+Increase default PerlIO buffer size. (b83080d)
-TESTING
+The previous default size of a PerlIO buffer (4096 bytes) has been increased
+to the larger of 8192 bytes and your local BUFSIZ. Benchmarks show that doubling
+this decade-old default increases read and write performance in the neighborhood
+of 25% to 50% when using the default layers of perlio on top of unix. To choose
+a non-default size, such as to get back the old value or to obtain and even
+larger value, configure with:
- test that perl.pod, pod.lst, MANIFEST and the file system are consistent
+ ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N
-commit 680818c0361b180bb6f09d4bb11c4d5cd467fe62
-Author: Nicholas Clark <nick@ccl4.org>
-Date: Thu Jan 13 16:24:52 2011 +0000
+where N is the desired size in bytes; it should probably be a multiple of
+your page size.
- ithread_create() was relying on the stack not moving. Fix this.
+=back
- 4cf5eae5e58faebb changed S_ithread_create() to avoid creating an AV, by
- passing the thread creation arguments as pointers to a block of memory
- holding SVs. Unfortunately, this inadvertently introduced a subtle bug,
- because the block of memory is on the Perl stack, which can move as a side
- effect of being reallocated to extend it. Hence pass in the offset on the
- stack instead, read the current value of the relevant interpreter's stack
- at the point of access, and copy all the SVs away before making any further
- calls which might cause reallocation.
+=head1 Selected Bug Fixes
+=over 4
+=item *
-commit 7627e6d0fe772ac90fce9e03fea273109521e261
-Author: Nicholas Clark <nick@ccl4.org>
-Date: Sat Jan 8 15:56:22 2011 +0000
+A Unicode C<\p{}> property match in a regular expression pattern will
+now force Unicode rules for the rest of the regular expression
- Generate "Unsupported socket function" stubs using PL_ppaddr.
+=item *
- Instead of having each socket op conditionally compile as either the
- implementation or a DIE() depending on #HAS_SOCKET
+[perl #38456] binmode FH, ":crlf" only modifies top crlf layer (7826b36)
- 1: remove the conditional code from the ops themselves
- 2: only compile the ops if HAS_SOCKET is defined
- 3: general conditional code for the intialisation of PL_ppaddr - as appropriate
- either the ops, or Perl_unimplemented_op
- 4: Amend Perl_unimplemented_op to generate the appropriate DIE() for socket
- ops (ie not the "panic"... message)
+When pushed on top of the stack, crlf will no longer enable crlf layers
+lower in the stack. This will prevent unexpected results.
- Whilst this complicates the support code in regen/opcode.pl, it's already a
- net saving of 5 lines in the C code.
+=item *
-commit 897d398936dd2fc088a265fba2a7b62fa97ed458
-Author: Nicholas Clark <nick@ccl4.org>
-Date: Sun Jan 9 10:54:58 2011 +0000
+Fix 'raw' layer for RT #80764 (ecfd064)
- Generate pp_* prototypes in pp_proto.h, and remove pp.sym
+Made a ':raw' open do what it advertises to do (first open the file,
+then binmode it), instead of leaving off the top layer.
- Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13
- locations that relied on them.
+=item *
- regen/opcode.pl now generates prototypes for the PP functions directly, into
- pp_proto.h. It no longer writes pp.sym, and regen/embed.pl no longer reads
- this, removing the only ordering dependency in the regen scripts. opcode.pl
- is now responsible for prototypes for pp_* functions. (embed.pl remains
- responsible for ck_* functions, reading from regen/opcodes)
+Use PerlIOBase_open for pop, utf8 and bytes layers (c0888ac)
-TESTING
- add test for split without a pattern
+Three of Perl's builtin PerlIO layers (C<:pop>, C<:utf8> and
+C<:bytes>) didn't allow stacking when opening a file. For example
+this:
- Add some while tests, about the context of the last statement in a block and about reinitializaiton of lexical variables.
+ open FH, '>:pop:perlio', 'some.file' or die $!;
- modernise t/cmd/while.t
+Would throw an error: "Invalid argument". This has been fixed in this
+release.
- Add t/base/while.t testing the basic of a while loop with minimal dependencies. Change t/cmd/while.t into a non-base test using "test.pl".
+=item *
-commit b86b68b4eefa1069dabc8ea0401d712b24a67857
-Author: Jesse Vincent <jesse@bestpractical.com>
-Date: Sat Jan 8 00:14:29 2011 +0800
+An issue present since 5.13.1, where s/A/B/ with A utf8 and B
+non-utf8, could cause corruption or segfaults has been
+fixed. (c95ca9b)
- Update the policy on doc patches to maint
+=item *
+String evals will no longer fail after 2 billion scopes have been
+compiled (d1bfb64, 2df5bdd, 0d311cd and 6012dc8)
-commit 0b5e625bc99f5cb78697faf03b297b6cacadf60b
-Author: Reini Urban <rurban@x-ray.at>
-Date: Tue Sep 14 18:04:22 2010 +0200
+=item *
- build man pages on cygwin too
+[perl #81750] When strict 'refs' mode is off,
+C<%{...}> in rvalue context returns C<undef> if
+its argument is undefined. An optimisation introduced in perl 5.12.0 to
+make C<keys %{...}> faster when used as a boolean did not take this into
+account, causing C<keys %{+undef}> (and C<keys %$foo> when C<$foo> is
+undefined) to be an error, which it should only be in strict mode.
-commit 172830635ea7813c85e51e4ae2b4bed56ddbab83
-Author: Reini Urban <rurban@x-ray.at>
-Date: Tue Sep 14 17:54:15 2010 +0200
+=item *
- Improve cygwin rebase behaviour
+[perl #83194] Combining the vector (%v) flag and dynamic precision would
+cause sprintf to confuse the order of its arguments, making it treat the
+string as the precision and vice versa.
- If a dll is updated on cygwin reuse the old imagebase address.
- This solves most rebase errors, esp when updating on core dll's.
- See http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README
+=item *
+[perl #77692] Sometimes the UTF8 length cache would not be reset on a value
+returned by substr, causing C<length(substr($uni_string,...))> to give
+wrong answers. With C<${^UTF8CACHE}> set to -1, it would produce a 'panic'
+error message, too.
-Platforms
+=item *
-commit cc7e77fd5a0ee9f1498e54dddf566117da62754b
-Author: Reini Urban <rurban@x-ray.at>
-Date: Tue Sep 14 17:48:32 2010 +0200
+During the restoration of a localised typeglob on scope exit, any
+destructors called as a result would be able to see the typeglob in an
+inconsistent state, containing freed entries, which could result in a
+crash. This would affect code like this:
- CYG14 Dynaloader without USEIMPORTLIB, and search cyg prefix
+ local *@;
+ eval { die bless [] }; # puts an object in $@
+ sub DESTROY {
+ local $@; # boom
+ }
- part1: Support the standard cyg dll prefix, which is e.g. needed for FFI's.
- Ctypes and C::DynaLib use DynaLoader to find dlls.
+Now the glob entries are cleared before any destructors are called. This
+also means that destructors can vivify entries in the glob. So perl tries
+again and, if the entries are re-created too many times, dies with a
+'panic: gp_free...' error message.
- part2: With -DUSEIMPORTLIB DynaLoader symbols link against the prefixed
- symbol names for the .dll.a importlib, but we need to link against the
- symbols directly. We don't link Dynaloader against libperl.dll.a.
+=item *
- Otherwise:
- $ g++-4 -o cygperl5_13_4.dll --shared perlsrc.o cygwin.o DynaLoader.o -ldl -lcrypt
- Creating library file: libperl.dll.a
- DynaLoader.o: In function `XS_DynaLoader_dl_undef_symbols':
- ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_sp'
- ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_markstack_ptr'
- ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_base'
+[perl #78494] When pipes are shared between threads, the C<close> function
+(and any implicit close, such as on thread exit) no longer blocks.
-commit c0a149a90b8b6e1c18de7294ca974265fb559cf5
-Author: Reini Urban <rurban@x-ray.at>
-Date: Tue Sep 14 18:06:38 2010 +0200
+=item *
- Update cygwin hints
- do not use usemymalloc (double size + slow)
- remove deprecated libcygipc info
- remove overlarge stack size
+Several contexts no longer allow a Unicode character to begin a word
+that should never begin words, for an example an accent that must follow
+another character previously could precede all other characters.
-commit 2831a86cee065b53b74fd19ddcc6a4257484646d
-Author: Zsbán Ambrus <ambrus@math.bme.hu>
-Date: Sun Jan 2 20:25:55 2011 -0800
+=item *
- [perl #81032] Overhaul Porting/epigraphs.pod
+Case insensitive matching in regular expressions compiled under C<use
+locale> now works much more sanely when the pattern and/or target string
+are encoded in UTF-8. Previously, under these conditions the localeness
+was completely lost. Now, code points above 255 are treated as Unicode,
+but code points between 0 and 255 are treated using the current locale
+rules, regardless of whether the pattern or string are encoded in UTF-8.
+The few case insensitive matches that cross the 255/256 boundary are not
+allowed. For example, 0xFF does not caselessly match the character at
+0x178, LATIN CAPITAL LETTER Y WITH DIAERESIS, because 0xFF may not be
+LATIN SMALL LETTER Y in the current locale, and Perl has no way of
+knowing if that character even exists in the locale, much less what code
+point it is.
- This patch makes multiple changes to Porting/epigraphs.pod and
- pod/perlhist.pod.
+=back
- For those that don't know, Porting/epigraphs.pod is a new document that
- collects the quotes (chosen by Pumpkins) in perl release announcements.
+=head1 Acknowledgements
- The changes are the following.
+Perl 5.13.10 represents approximately one month of development since
+Perl 5.13.9 and contains approximately 63000 lines of changes across
+609 files from 38 authors and committers:
- 1. Add a link pointing to each release announcement in the mailing
- list archives. These are from ysth's list, the source from which
- Porting/epigraphs.pod was originally compiled, but they weren't in
- Porting/epigraphs.pod so far.
- 2. Reorder Porting/epigraphs.pod chronologically, because I believe
- that makes more sense -- pod/perlhist.pod is still sorted by version numbers.
- 3. Incidentally, some missing releases are added to pod/perlhist.pod too.
- 4. Fix a mistake where Porting/epigraphs.pod gives the wrong version number.
- 5. Add some epigraphs that appear in ysth's list but not in
- Porting/epigraphs.pod.
- 6. I did some research in perl history before the part that ysth's list
- covers, and added older perl announcements I found. This work is not
- complete: I stopped somewhere in 2000.
+Abigail, Alexander Hartmaier, brian d foy, Charles Bailey, Chip
+Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry, Curtis Jewell,
+Dave Rolsky, David Golden, David Leadbeater, David Mitchell, David
+Wheeler, Father Chrysostomos, Florian Ragwitz, Franz Fasching, George
+Greer, H.Merijn Brand, Hongwen Qiu, Hugo van der Sanden, Jay Hannah,
+Jesse Vincent, Karl Williamson, Larwan Berke, Leon Timmermans, Michael
+Breen, Michael Stevens, Nicholas Clark, Noirin Shirley, Paul Evans,
+Peter John Acklam, Ricardo Signes, Robin Barker, Steven Schubiger, Tom
+Christiansen, Tony Cook, Zsbán Ambrus and Ævar Arnfjörð Bjarmason
-commit eccda089fc3dcaafc1ae0aac6b428f799231b824
-Author: Paul "LeoNerd" Evans <leonerd@leonerd.org.uk>
-Date: Mon Dec 13 17:50:06 2010 +0000
+=head1 Reporting Bugs
- Implement Socket::getaddrinfo() and Socket::getnameinfo(), with related constants
+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.
-commit edcf105d70e5423fd928c776e086fe31a4a543f4
-Author: Jesse Vincent <jesse@bestpractical.com>
-Date: Sat Jan 1 18:46:20 2011 +0800
+If you believe you have an unreported bug, please run the L<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.
- Document 'test_porting' and start a section on how committing to blead
+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.
-commit cce04bebd8af026c2a6731940ddb895d3c1fc3e4
-Author: David Golden <dagolden@cpan.org>
-Date: Mon Dec 13 17:36:33 2010 -0500
+=head1 SEE ALSO
- Reorganize perlhack.pod
+The F<Changes> file for an explanation of how to view exhaustive details
+on what changed.
- Following on an IRC conversation, I've attempted to reorganize
- perlhack for greater clarity. I have only cut and paste blocks
- of text and amended section titles and levels. (I have not addressed
- any of the numerous factual issues which remain.)
+The F<INSTALL> file for how to build Perl.
- The resulting guide should be clearer for those trying to skim the
- table of contents to understand what is covered in perlhack and
- whether it is worth an in-depth read.
+The F<README> file for general stuff.
- I see this change as the first step towards future improvements.
+The F<Artistic> and F<Copying> files for copyright information.
=cut