This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: warnings on non-chars and surrogates
[perl5.git] / pod / perldelta.pod
index aa59bcd..ea85093 100644 (file)
 
 =head1 NAME
 
-perldelta - what is new for perl v5.13.8
+[ 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
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.13.7 release and
-the 5.13.8 release.
+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.
+
+=head1 Notice
 
-If you are upgrading from an earlier release such as 5.13.6, first read
-L<perl5137delta>, which describes differences between 5.13.6 and
-5.13.7.
+XXX Any important notices here
 
 =head1 Core Enhancements
 
-=head2 C<-d:-foo> calls C<Devel::foo::unimport>
+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
+
+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.
+
+[ List each security issue as a =head2 entry ]
 
-The syntax C<-dI<B<:>foo>> was extended in 5.6.1 to make C<-dI<:fooB<=bar>>>
-equivalent to C<-MDevel::foo=bar>, which expands
-internally to C<use Devel::foo 'bar';>.
-F<perl> now allows prefixing the module name with C<->, with the same
-semantics as C<-M>, I<i.e.>
+=head1 Incompatible Changes
 
-=over 4
+XXX For a release on a stable branch, this section aspires to be:
 
-=item C<-d:-foo>
+    There are no changes intentionally incompatible with 5.XXX.XXX. If any
+    exist, they are bugs and reports are welcome.
 
-Equivalent to C<-M-Devel::foo>, expands to
-C<no Devel::foo;>, calls C<< Devel::foo->unimport() >>
-if the method exists.
+[ List each incompatible change as a =head2 entry ]
 
-=item C<-d:-foo=bar>
+=head2 All objects are destroyed
 
-Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>,
-calls C<< Devel::foo->unimport('bar') >> if the method exists.
+It used to be possible to prevent a destructor from being called during
+global destruction by artificially increasing the reference count of an
+object.
 
-=back
+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>.
 
-This is particularly useful to suppresses the default actions of a
-C<Devel::*> module's C<import> method whilst still loading it for debugging.
+This has the potential to break some XS modules. (In fact, it break some.
+See L</Known Problems>, below.)
 
-=head2 Filehandle method calls load L<IO::File> on demand
+=head1 Deprecations
 
-When a method call on a filehandle would die because the method cannot
-be resolved, and L<IO::File> has not been loaded, Perl now loads L<IO::File>
-via C<require> and attempts method resolution again:
+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.
 
-  open my $fh, ">", $file;
-  $fh->binmode(":raw");     # loads IO::File and succeeds
+[ List each deprecation as a =head2 entry ]
 
-This also works for globs like STDOUT, STDERR and STDIN:
+=head1 Performance Enhancements
 
-  STDOUT->autoflush(1);
+XXX Changes which enhance performance without changing behaviour go here. There
+may well be none in a stable release.
 
-Because this on-demand load only happens if method resolution fails, the
-legacy approach of manually loading an L<IO::File> parent class for partial
-method support still works as expected:
+[ List each enhancement as a =item entry ]
 
-  use IO::Handle;
-  open my $fh, ">", $file;
-  $fh->autoflush(1);        # IO::File not loaded
+=over 4
 
-=head2 Full functionality for C<use feature 'unicode_strings'>
+=item *
 
-This release provides full functionality for C<use feature
-'unicode_strings'>.  Under its scope, all string operations executed and
-regular expressions compiled (even if executed outside its scope) have
-Unicode semantics.  See L<feature>.
+XXX
 
-This feature avoids most forms of the "Unicode Bug" (See
-L<perlunicode/The "Unicode Bug"> for details.)  If there is a
-possibility that your code will process Unicode strings, you are
-B<strongly> encouraged to use this subpragma to avoid nasty surprises.
+=back
 
-The availability of this should strongly affect the whole tone of
-various documents, such as L<perlunicode> and L<perluniintro>, but this
-work has not been done yet.
+=head1 Modules and Pragmata
 
-=head2 Exception Handling Backcompat Hack
+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.
 
-When an exception is thrown in an C<eval BLOCK>, C<$@> is now set before
-unwinding, as well as being set after unwinding as the eval block exits.  This
-early setting supports code that has historically treated C<$@> during unwinding
-as an indicator of whether the unwinding was due to an exception.  These modules
-had been broken by 5.13.1's change from setting C<$@> early to setting it late.
-This double setting arrangement is a stopgap until the reason for unwinding can
-be made properly introspectable.  C<$@> has never been a reliable indicator of
-the reason for unwinding.
+[ Within each section, list entries as a =item entry ]
 
-=head2 printf-like functions understand post-1980 size modifiers
+=head2 New Modules and Pragmata
 
-Perl's printf and sprintf operators, and Perl's internal printf replacement
-function, now understand the C90 size modifiers "hh" (C<char>), "z"
-(C<size_t>), and "t" (C<ptrdiff_t>).  Also, when compiled with a C99
-compiler, Perl now understands the size modifier "j" (C<intmax_t>).
+=over 4
 
-So, for example, on any modern machine, C<sprintf('%hhd', 257)> returns '1'.
+=item *
 
-=head2 DTrace probes now include package name
+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.
 
-The DTrace probes now include an additional argument (C<arg3>) which contains
-the package the subroutine being entered or left was compiled in.
+=item *
 
-For example using the following DTrace script:
+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>.
 
-  perl$target:::sub-entry
-  {
-      printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3));
-  }
+=item *
 
-and then running:
+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.
 
-  perl -e'sub test { }; test'
+=item *
 
-DTrace will print:
+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.
 
-  main::test
+=item *
 
-=head2 Stacked labels
+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.
 
-Multiple statement labels can now appear before a single statement.
+=back
 
-=head1 Incompatible Changes
+=head2 Updated Modules and Pragmata
 
-=head2 C<:=> is now a syntax error
+=over 4
 
-Previously C<my $pi := 4;> was exactly equivalent to C<my $pi : = 4;>,
-with the C<:> being treated as the start of an attribute list, ending before
-the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now
-a syntax error. This will allow the future use of C<:=> as a new token.
+=item *
 
-We find no Perl 5 code on CPAN using this construction, outside the core's
-tests for it, so we believe that this change will have very little impact on
-real-world codebases.
+C<Archive::Extract> has been upgraded from version 0.46 to 0.48
 
-If it is absolutely necessary to have empty attribute lists (for example,
-because of a code generator) then avoid the error by adding a space before
-the C<=>.
+=item *
 
-=head2 Run-time code block in regular expressions
+C<Archive::Tar> has been upgraded from version 1.74 to 1.76
 
-Code blocks in regular expressions (C<(?{...})> and C<(??{...})>) used not
-to inherit any pragmata (strict, warnings, etc.) if the regular expression
-was compiled at run time as happens in cases like these two:
+=item *
 
-  use re 'eval';
-  $foo =~ $bar; # when $bar contains (?{...})
-  $foo =~ /$bar(?{ $finished = 1 })/;
+C<CGI> has been upgraded from version 3.50 to 3.51
 
-This was a bug, which has now been fixed. But it has the potential to break
-any code that was relying on this bug.
+Further improvements have been made to guard against newline injections
+in headers.
 
-=head1 Deprecations
+=item *
 
-=head2 C<?PATTERN?> is deprecated
+C<Compress::Raw::Bzip2> has been upgraded from version 2.031 to 2.033
 
-C<?PATTERN?> (without the initial m) has been deprecated and now produces
-a warning.  This is to allow future use of C<?> in new operators.
-The match-once functionality is still available in the form of C<m?PATTERN?>.
+=item *
 
-=head2 C<sv_compile_2op()> is now deprecated
+C<Compress::Raw::Zlib> has been upgraded from version 2.030 to 2.033
 
-The C<sv_compile_2op()> API function is now deprecated. Searches suggest
-that nothing on CPAN is using it, so this should have zero impact.
+=item *
 
-It attempted to provide an API to compile code down to an optree, but failed
-to bind correctly to lexicals in the enclosing scope. It's not possible to
-fix this problem within the constraints of its parameters and return value.
+C<CPAN> has been upgraded from version 1.94_62 to 1.94_63
 
-=head2 Tie functions on scalars holding typeglobs
+=item *
 
-Calling a tie function (C<tie>, C<tied>, C<untie>) with a scalar argument
-acts on a file handle if the scalar happens to hold a typeglob.
+C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011
 
-This is a long-standing bug that will be removed in Perl 5.16, as
-there is currently no way to tie the scalar itself when it holds
-a typeglob, and no way to untie a scalar that has had a typeglob
-assigned to it.
+=item *
 
-This bug was fixed in 5.13.7 but, because of the breakage it caused, the
-fix has been reverted. Now there is a deprecation warning whenever a tie
-function is used on a handle without an explicit C<*>.
+C<CPANPLUS::Dist::Build> has been upgraded from version 0.50 to 0.52
 
-=head1 Modules and Pragmata
+=item *
 
-=head2 Updated Modules and Pragmata
+C<DB_File> has been upgraded from version 1.820 to 1.821
 
-=over 4
+=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.
 
 =item *
 
-C<Archive::Tar> has been upgraded from version 1.72 to 1.74.
+C<File::Fetch> has been upgraded from version 0.28 to 0.32
+
+=item *
 
-Skip extracting pax extended headers.
+C<IO::Compress> has been upgraded from version 2.030 to 2.033
 
 =item *
 
-C<autodie> has been upgraded from version 2.10 to 2.1001.
+C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
 
-Test fix in blead for VMS.
+=item *
+
+C<Log::Message> has been upgraded from version 0.02 to 0.04
 
 =item *
 
-C<B> has been upgraded from version 1.26 to 1.27.
+C<Log::Message::Simple> has been upgraded from version 0.06 to 0.08
+
+=item *
 
-Avoid compiler warnings.
+C<Module::Load::Conditional> has been upgraded from version 0.38 to 0.40
 
 =item *
 
-C<B::Concise> has been upgraded from version 0.81 to 0.82.
+C<Object::Accessor> has been upgraded from version 0.36 to 0.38
 
-It no longer produces mangled output with the C<-tree> option
-L<[perl #80632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80632>.
+=item *
+
+C<Params::Check> has been upgraded from version 0.26 to 0.28
 
 =item *
 
-C<B::Deparse> has been upgraded from version 1.01 to 1.02.
+C<Pod::LaTeX> has been upgraded from version 0.58 to 0.59
+
+=item *
 
-Test improvements.
+C<Term::UI> has been upgraded from version 0.20 to 0.24
 
 =item *
 
-C<Cwd> has been upgraded from version 3.34 to 3.35.
+C<Thread::Queue> has been upgraded from version 2.11 to 2.12.
 
-Avoid compiler warnings.
+=item *
+
+C<Thread::Semaphore> has been upgraded from version 2.11 to 2.12.
 
 =item *
 
-C<Data::Dumper> has been upgraded from version 2.130_01 to 2.130_02.
+C<threads> has been upgraded from version 1.81_03 to 1.82
+
+=item *
 
-Avoid compiler warnings.
+C<threads::shared> has been upgraded from version 1.35 to 1.36
 
 =item *
 
-C<Devel::Peek> has been upgraded from version 1.05 to 1.06.
+C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
 
-Avoid compiler warnings.
+=item *
 
-Test improvements.
+C<Unicode::Normalize> has been upgraded from version 1.07 to 1.10
 
 =item *
 
-C<Devel::SelfStubber> has been upgraded from version 1.03 to 1.05.
+C<version> has been upgraded from 0.86 to 0.88.
+
+=back
+
+=head2 Removed Modules and Pragmata
 
-Whitespace changes.
+=over 4
 
 =item *
 
-C<Digest::SHA> has been upgraded from 5.48 to 5.50.
+XXX
 
-C<shasum> now more closely mimics C<sha1sum>/C<md5sum>.
+=back
 
-C<Addfile> accepts all POSIX filenames.
+=head1 Documentation
 
-=item *
+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>.
 
-C<Dumpvalue> has been upgraded from version 1.14 to 1.15.
+=head2 New Documentation
 
-Test improvements.
+XXX Changes which create B<new> files in F<pod/> go here.
 
-=item *
+=head3 L<XXX>
 
-C<DynaLoader> has been upgraded from version 1.11 to 1.12.
+XXX Description of the purpose of the new file here
 
-Remove obsolete RCS keywords.
+=head2 Changes to Existing Documentation
 
-=item *
+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.
 
-C<Env> has been upgraded from version 1.01 to 1.02.
+=head3 L<perlfunc>
 
-Test improvements.
+=over 4
 
 =item *
 
-C<ExtUtils::CBuilder> has been upgraded from 0.2703 to 0.280201.
+It has now been documented that C<ord> returns 0 for an empty string.
 
-Handle C and C++ compilers separately.
+=back
 
-Preserves exit status on VMS.
+=head1 Diagnostics
 
-Test improvements.
+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>.
 
-=item *
+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.
 
-C<ExtUtils::Constant::Utils> has been upgraded from 0.02 to 0.03.
+[ Within each section, list entries as a =item entry ]
 
-Refactoring and fixing of backcompat code, preparing for resynchronisation
-with CPAN.
+=head2 New Diagnostics
+
+XXX Newly added diagnostic messages go here
+
+=over 4
 
 =item *
 
-C<ExtUtils::Embed> has been upgraded from 1.29 to 1.30.
+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 ...'.
 
-Remove obsolete RCS keywords.
+=back
 
-=item *
+=head2 Changes to Existing Diagnostics
 
-C<ExtUtils::ParseXS> has been upgraded from 2.2207 to 2.2208.
+XXX Changes (i.e. rewording) of diagnostic messages go here
 
-Avoid compiler warnings.
+=over 4
 
 =item *
 
-C<Fcntl> has been upgraded from 1.10 to 1.11.
+XXX
 
-Avoid compiler warnings.
+=back
 
-Test improvements.
+=head1 Utility Changes
 
-=item *
+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>.
+
+[ 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. ]
 
-C<feature> has been upgraded from 1.18 to 1.19.
+=head3 L<perlbug>
 
-Documentation and test updates for the C<unicode_strings> feature.
-See L</Full functionality for C<use feature 'unicode_strings'>>.
+=over 4
 
 =item *
 
-C<File::CheckTree> has been upgraded from 4.4 to 4.41.
+C<perlbug> did not previously generate a From: header, potentially
+resulting in dropped mail. Now it does include that header.
 
-Whitespace changes.
+=back
 
-=item *
+=head1 Configuration and Compilation
 
-C<File::Glob> has been upgraded from 1.10 to 1.11.
+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.
 
-Avoid compiler warnings.
+[ List changes as a =item entry ].
 
-Test improvements.
+=over 4
 
 =item *
 
-C<GDBM_File> has been upgraded from 1.12 to 1.13.
+XXX
 
-Test improvements.
+=back
 
-Remove obsolete RCS keywords.
+=head1 Testing
 
-=item *
+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.
 
-C<Hash::Util::FieldHash> has been upgraded from 1.06 to 1.07.
+[ List each test improvement as a =item entry ]
 
-Avoid compiler warnings.
+=over 4
 
 =item *
 
-C<I18N::Collate> has been upgraded from 1.01 to 1.02.
+A new test script, C<t/porting/filenames.t>, makes sure that filenames and
+paths are reasonably portable.
 
-Whitespace changes.
+=back
 
-Test improvements.
+=head1 Platform Support
 
-=item *
+XXX Any changes to platform support should be listed in the sections below.
 
-C<if> has been upgraded from 0.06 to 0.0601.
+[ Within the sections, list each platform as a =item entry with specific
+changes as paragraphs below it. ]
 
-Test improvements.
+=head2 New Platforms
 
-=item *
+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.
 
-C<IO> has been upgraded from 1.25_02 to 1.25_03.
+=over 4
 
-Avoid compiler warnings.
+=item XXX-some-platform
 
-=item *
+XXX
 
-C<IPC::Cmd> has been upgraded from 0.64 to 0.66.
+=back
 
-Resolves an issue with splitting Win32 command lines.
+=head2 Discontinued Platforms
 
-Documentation enhancements.
+XXX List any platforms that this version of perl no longer compiles on.
 
-=item *
+=over 4
 
-C<IPC::Open3> has been upgraded from 1.07 to 1.08.
+=item Apollo DomainOS
 
-Remove obsolete RCS keywords.
+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.
 
-Test improvements.
+=back
 
-=item *
+=head2 Platform-Specific Notes
 
-C<Locale::Codes> has been upgraded from version 3.14 to 3.15.
+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.
 
-Adds some codes.
+=over 4
 
-=item *
+=item Solaris
 
-C<Math::BigInt> has been upgraded from 1.99_01 to 1.99_02.
+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>.
 
-Documentation and comment spelling fixes.
+=back
 
-=item *
+=head1 Internal Changes
 
-C<Memoize> has been upgraded from version 1.01_03 to 1.02.
+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.
 
-Remove obsolete RCS keywords.
+[ List each test improvement as a =item entry ]
 
-Whitespace changes.
+=over 4
 
 =item *
 
-C<MIME::Base64> has been upgraded from 3.10 to 3.13.
-
-Now provides C<encode_base64url> and C<decode_base64url> functions to process
-the base64 scheme for "URL applications".
+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).
 
 =item *
 
-C<mro> has been upgraded from version 1.05 to 1.06.
+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>.
+
+=item *
 
-C<next::method> I<et al.> now take into account that every class inherits
-from UNIVERSAL
-L<[perl #68654]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68654>.
+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 *
 
-C<NDBM_File> has been upgraded from 1.10 to 1.11.
+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
 
-Remove obsolete RCS keywords.
+=back
 
-Test improvements.
+=head1 Selected Bug Fixes
 
-=item *
+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>.
 
-C<Net::Ping> has been upgraded from 2.36 to 2.37.
+[ List each fix as a =item entry ]
 
-Remove obsolete RCS keywords.
+=over 4
 
 =item *
 
-C<ODBM_File> has been upgraded from 1.09 to 1.10.
+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>
 
-Remove obsolete RCS keywords.
+=item *
 
-Test improvements.
+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>.
 
 =item *
 
-C<Opcode> has been upgraded from 1.17 to 1.18.
+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.
+
+=item *
 
-Avoid compiler warnings.
+C<< <expr> >> always respects overloading now if the expression is
+overloaded.
 
-Test improvements.
+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 *
 
-C<overload> has been upgraded from 1.11 to 1.12.
+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 }>).
 
-Avoid a taint problem in use of sprintf.
+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>.
 
-Test asymmetric fallback cases
-L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>.
+=back
 
-=item *
+=head1 Known Problems
 
-C<PerlIO::encoding> has been upgraded from 0.13 to 0.14.
+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).
 
-Avoid compiler warnings.
+This is a list of some significant unfixed bugs, which are regressions
+from either 5.XXX.XXX or 5.XXX.XXX.
 
-Remove obsolete RCS keywords.
+[ List each fix as a =item entry ]
 
-Test improvements.
+=over 4
 
 =item *
 
-C<PerlIO::scalar> has been upgraded from 0.10 to 0.11.
+The fix for [perl #81230] causes test failures for C<Tk> version 804.029.
+This is still being investigated.
 
-A C<read> after a C<seek> beyond the end of the string no longer thinks it
-has data to read
-L<[perl #78716]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78716>.
+=back
 
-Avoid compiler warnings.
+=head1 Obituary
 
-=item *
+XXX If any significant core contributor has died, we've added a short obituary
+here.
 
-C<PerlIO::via> has been upgraded from 0.10 to 0.11.
+=head1 Acknowledgements
 
-Avoid compiler warnings.
+XXX The list of people to thank goes here.
 
-=item *
+=head1 Reporting Bugs
 
-C<POSIX> has been upgraded from 1.22 to 1.23.
+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.
 
-Avoid compiler warnings.
+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.
 
-=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.
 
-C<re> has been upgraded from 0.14 to 0.15.
+=head1 SEE ALSO
 
-Enforce that C</d>, C</u>, and C</l> are mutually exclusive.
+The F<Changes> file for an explanation of how to view exhaustive details
+on what changed.
 
-=item *
+The F<INSTALL> file for how to build Perl.
 
-C<SDBM_File> has been upgraded from 1.08 to 1.09.
+The F<README> file for general stuff.
 
-Avoid compiler warnings.
+The F<Artistic> and F<Copying> files for copyright information.
 
-Remove obsolete RCS keywords.
+=cut
 
-Test improvements.
+=for later
 
-=item *
+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.
 
-C<Socket> has been upgraded from 1.91 to 1.92.
+It hasn't yet been deduped with the entries that _are_ in the perldelta.
 
-It has several new functions for handling IPv6 addresses.
 
-=item *
+    Major spell-checking pass throughout the core
 
-C<Storable> has been upgraded from 2.24 to 2.25.
+    Remove references to compat3.sym and interp.sym, deleted over 10 years ago.
 
-This adds support for serialising code references that contain UTF-8 strings
-correctly. The Storable minor version number changed as a result, meaning that
-Storable users who set C<$Storable::accept_future_minor> to a C<FALSE> value
-will see errors (see L<Storable/FORWARD COMPATIBILITY> for more details).
+    Remove Mac OS classic code from numerous places throughout the core
 
-Freezing no longer gets confused if the Perl stack gets reallocated
-during freezing
-L<[perl #80074]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80074>.
+commit 7fe50b8b8a4dc38fc341e3b403545aaca937f50e
+Author: Leon Timmermans <fawaka@gmail.com>
+Date:   Tue Jan 18 16:40:07 2011 +0100
 
-Avoid compiler warnings.
+    Also unblock signal handlers throwing an exception
 
-=item *
+    Also handle and test the edge case of a signal handler throwing an
+    exception
 
-C<threads> has been upgraded from 1.81_02 to 1.81_03.
 
-Avoid compiler warnings.
 
-=item *
 
-C<threads::shared> has been upgraded from 1.34 to 1.35.
+Numberous POD warnings fixed
 
-Avoid compiler warnings.
 
-=item *
 
-C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01.
+    Update Unicode-Collate to CPAN version 0.71
 
-Build fix in blead for VMS.
 
-=item *
+internals
 
-C<Unicode::Collate> has been upgraded from 0.67 to 0.6801.
 
-Documentation clarification.
+    regexec.c: Remove break statements from macros
 
-Test improvements.
+    This is so future coders won't be tempted to rely on them.
 
-=item *
+    regexec.c: Don't rely on break stmts in macros
 
-C<Unicode::Normalize> has been upgraded from 1.07 to 1.08.
+    It is safer and clearer to have the break statement in each case statement at
+    the source level
 
-Avoid compiler warnings.
+commit b57e41186b2ceb48bef4f0588dcd19e105cc8a38
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Tue Jan 18 15:03:41 2011 -0700
 
-=item *
+    regcomp: Disallow multi-char folds in lookbehind
 
-C<Unicode::UCD> has been upgraded from 0.29 to 0.30.
+    The addition of the ANYOFV regnode to treat multi-char folds in a bracketed
+    character class has exposed a bug, in which those classes have long been able
+    to be varying length (due to the multi-char fold), but the compiler wasn't
+    aware of it.  Now it is, and hence won't allow those which have multi-char
+    folds to be part of a lookbehind pattern, which requires a constant length.
 
-Add info about named sequence alternatives.
+    This patch disallows multi-char folds in a lookbehind bracketed character
+    class.
 
-Don't use C<CompositionExclusions.txt>.
+Author: Nicholas Clark <nick@ccl4.org>
+Date:   Tue Jan 18 16:14:43 2011 +0000
 
-=item *
+    Remove Mac OS classic code from scripts in utils/
 
-C<version> has been upgraded from 0.82 to 0.86.
 
-Modify export logic for C<is_strict> and C<is_lax>.
+    Convert DosGlob.t to Test::More.
 
-Various backcompat fixes.
+commit d6dc8a6dc95226ddff7719cd1e0bd053c4e5725e
+Author: Nicholas Clark <nick@ccl4.org>
+Date:   Tue Jan 18 13:08:11 2011 +0000
 
-=item *
+    Remove Mac OS Classic docs from DirHandle and File::{Copy,DosGlob,Find}
 
-C<Win32> has been upgraded from 0.39 to 0.41.
+    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.
 
-Add several functions.
+commit 8254cbf193c939338449097a80163197fc755150
+Author: Nicholas Clark <nick@ccl4.org>
+Date:   Tue Jan 18 11:10:41 2011 +0000
 
-Corrections to names returned by C<Win32::GetOSName> and
-C<Win32::GetOSDisplayName>.
+    Build perltoc.pod with pragmata sorted by name.
 
-=item *
+    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.
 
-C<XS::APItest> has been upgraded from 0.26 to 0.27.
+commit 1d45ec279e4e105512a2803e3d0bd974a151a0f6
+Author: Father Chrysostomos <sprout@cpan.org>
+Date:   Mon Jan 17 22:32:52 2011 -0800
 
-Test new API functions.
+    perlcall: Fixes for various grammatical errors
 
-Avoid compiler warnings.
+commit faaf68361923e4bb95d1eb919bc724a0dcc5a4ce
+Author: Leon Timmermans <fawaka@gmail.com>
+Date:   Mon Jan 17 17:59:33 2011 +0100
 
-=back
+    Clarify limitation in safe signals.
 
-=head2 Dual-life Modules and Pragmata
+commit 0c1bf4c7d433bb0ad80bfe5511b1301db32b7b95
+Author: Leon Timmermans <fawaka@gmail.com>
+Date:   Mon Jan 17 16:29:11 2011 +0100
 
-These modules were formerly distributed only in the Perl core
-distribution, and are now dual-lifed (meaning they are now also available
-separately on CPAN):
+    Added tests for conditional unblocking
 
-=over 4
+commit 555344425f04e96a72e4d29eab96b34bff8f96ae
+Author: Leon Timmermans <fawaka@gmail.com>
+Date:   Thu Jan 13 18:30:29 2011 +0100
 
-=item *
+    Conditionally unblock after signal handler[#82040]
 
-C<autouse>
+    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
 
-=item *
+    Update HTTP::Tiny to CPAN version 0.009
 
-C<Devel::SelfStubber>
+commit 78cd53afbb1923bf0a68f361040ad8fe93a7d0d5
+Author: David Mitchell <davem@iabyn.com>
+Date:   Tue Jan 18 00:46:30 2011 +0000
 
-=item *
+    vastly speed up t/porting/diag.t
 
-C<Dumpvalue>
+    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 cfaf538b6276c6a8ef80ff6c66e106c6a4f1caaa
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Mon Jan 17 08:58:53 2011 -0700
 
-C<Env>
+    Add /a regex modifier
 
-=item *
+    This restricts certain constructs, like \w, to matching in the ASCII range only.
 
-C<File::CheckTree>
+commit 56ae17b45d2513d65903d13468e8f6a16b20f916
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Sun Jan 16 17:41:30 2011 -0700
 
-=item *
+    regcomp.c: Convert \d \D to a switch{}
 
-C<I18N::Collate>
+commit e66820012d29519f903709f005e56a2c334ae183
+Author: Tony Cook <tony@develop-help.com>
+Date:   Mon Jan 17 19:22:08 2011 +1100
 
-=back
+    test_prep now depends on the pods needed for porting/buildtoc.t
 
-=head1 Diagnostics
+    In the other makefiles test_prep (or test-prep) depends on all, so
+    they shouldn't need updating.
 
-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>.
 
-=head2 New Diagnostics
+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 63ac0dadb1aafcf0c171d3c1422c1923b611b2fc
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Tue Dec 28 16:13:49 2010 -0700
 
-There is a new "Closure prototype called" error
-L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>.
+    regex: Use BOUNDU regnodes
 
-=back
+    This refactors one area in regexec.c to use BOUNDU, NBOUNDU for
+    efficiciency, and easier adding of the future BOUNDA.
 
-=head2 Changes to Existing Diagnostics
+commit 980866de2cf8ecdb4bb72b7f9294763057008f50
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Mon Dec 27 12:04:58 2010 -0700
 
-=over 4
+    regex: Separate nodes for Unicode semantics \s \w
 
-=item *
+    This patch converts the \s, \w and complements Unicode semantics to
+    instead of using the flags field of their nodes to instead use separate
+    nodes.  This gains some efficiency, especially useful in tight loops and
+    backtracking of regexec.c, and prepares the way for easily adding other
+    semantic variations, such as /a.
 
-The "Found = in conditional" warning that is emitted when a constant is
-assigned to a variable in a condition is now withheld if the constant is
-actually a subroutine or one generated by C<use constant>, since the value
-of the constant may not be known at the time the program is written
-L<[perl #77762]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77762>.
+    It refactors the CCC_TRY... macros.  I tried to break this piece up into
+    smaller chunks, but found it much easier to get to this in one step.
+    Further patches will do some more refactoring of these.
 
-=back
+    As part of the CCC_TRY macro refactoring, the lines that include the
+    test if (! nextchr) are changed to just look for the end-of-string by
+    position instead of it being NUL.  In locales, it could be (however
+    unlikely), that NUL is a real alphabetic, digit, or space character.
+commit 50e911483ad5c29e25c54c9f81f92df974dd2cc0
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Sun Dec 26 10:35:58 2010 -0700
 
-=head1 Configuration and Compilation
+    Change name of /d to DEPENDS
 
-=over 4
+    I much prefer David Golden's name for /d whose meaning 'depends' on
+    circumstances, instead of 'dual' meaning it could be one or another.
+    Change it before this gets out in a stable release, and we're stuck with
+    the old name.
 
-=item *
+commit 73134a2eb4055c76fe5b154da95e09118f716fd8
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Sun Dec 26 10:35:20 2010 -0700
 
-The C<Encode> module can now (once again) be included in a static Perl
-build.  The special-case handling for this situation got broken in Perl
-5.11.0, and has now been repaired.
+    CH] Change usage of regex/op common to common names
 
-=back
+    This patch changes the core functions to use the common names for the
+    fields that are shared between op.c and regcomp.c, just for consistency
+    of using one name throughout the core for the same thing.
 
-=head1 Testing
+    A grep of cpan shows that both names are used in various modules; so
+    both names must be retained.
 
-=over 4
+commit a3ab329f3fc9494e700f51c38cef42021c130b6e
+Author: David Golden <dagolden@cpan.org>
+Date:   Sun Jan 16 20:57:02 2011 -0500
 
-=item *
+    Add HTTP::Tiny as a dual-life core module
 
-Tests for C<Fcntl>, C<File::Glob>, C<GDBM_File>, C<IPC::Open3>,
-C<NDBM_File>, C<ODBM_File>, C<Opcode>, C<PerlIO::encoding>, C<SDBM_File>,
-and C<Storable> now use the L<Test::More> framework.
+    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>.
 
-=back
+commit 211cc5012284f4bd900fcaa630adbcac69ca6112
+Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
+Date:   Sun Jan 16 23:23:03 2011 +0000
 
-=head1 Platform Support
+    Update Unicode-Collate to CPAN version 0.70 and enable XS version
 
-=head2 Platform-Specific Notes
+commit a62b1201c068dc7b099bcb7182e188c4d2fbf34c
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Sun Dec 26 10:31:16 2010 -0700
 
-=over 4
+    Use multi-bit field for regex character set
 
-=item NetBSD
+    The /d, /l, and /u regex modifiers are mutually exclusive.  This patch
+    changes the field that stores the character set to use more than one bit
+    with an enum determining which one.  This data structure more
+    closely follows the semantics of their being mutually exclusive, and
+    conserves bits as well, and is better expandable.
 
-The NetBSD hints file has been changed to make the system's malloc the
-default.
+    A small API is added to set and query the bit field.
 
-=item Windows
+    This patch is not .xs source backwards compatible.  A handful of cpan
+    programs are affected.
 
-The option to use an externally-supplied C<crypt()>, or to build with no
-C<crypt()> at all, has been removed.  Perl supplies its own C<crypt()>
-implementation for Windows, and the political situation that required
-this part of the distribution to sometimes be omitted is long gone.
 
-=back
+tools
 
-=head1 Internal Changes
+    Significant updates to buildtoc
 
-=over 4
+    Update Unicode-Normalize to CPAN version 1.10
 
-=item *
+commit 11454c594f22abc5945e69a46fc965363dbf326e
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Sat Jan 15 13:42:58 2011 -0700
 
-The L<C<mg_findext()>|perlapi/mg_findext> and
-L<C<sv_unmagicext()>|perlapi/sv_unmagicext>
-functions have been added to the API.
-They allow extension authors to find and remove magic attached to
-scalars based on both the magic type and the magic virtual table, similar to how
-C<sv_magicext()> attaches magic of a certain type and with a given virtual table
-to a scalar. This eliminates the need for extensions to walk the list of
-C<MAGIC> pointers of an C<SV> to find the magic that belongs to them.
+    Fix \xa0 matching both [\s] [\S], et.al.
 
-=item *
+    This bug stemmed from Latin1 characters not matching any (non-complemented)
+    character class in /d semantics when the target string is no utf8; but having
+    unicode semantics when it isn't.  The solution here is to add a special flag.
 
-The
-L<C<parse_fullexpr()>|perlapi/parse_fullexpr>,
-L<C<parse_listexpr()>|perlapi/parse_listexpr>,
-L<C<parse_termexpr()>|perlapi/parse_termexpr>, and
-L<C<parse_arithexpr()>|perlapi/parse_arithexpr>
-functions have been added to the API.  They perform
-recursive-descent parsing of expressions at various precedence levels.
-They are expected to be used by syntax plugins.
+    There were several tests that relied on the broken behavior, specifically they
+    tested that \xff isn't a printable word character even in utf8.  I changed the
+    deparse test to instead use a non-printable code point, and I changed the ones
+    in re_tests to be TODOs, and will change them back using /a when that is
+    shortly added.
 
-=back
 
-=head1 Selected Bug Fixes
+SECURITY
 
-=over 4
+    restrict \p{IsUserDefined} to In\w+ and In\w+
 
-=item *
+    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.
 
-C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving
-identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block
-was erroneously executing the C<use feature ':5.12.0'> and
-C<use strict; use warnings;> behaviour, which only C<use> was documented to
-provide
-L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>.
+    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.
 
-=item *
+TESTING
 
-C<use 5.42>
-L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>,
-C<use 6> and C<no 5> no longer leak memory.
+    test that perl.pod, pod.lst, MANIFEST and the file system are consistent
 
-=item *
+commit f56b6394f7cf57733135f56e4e4ac49abe9ac9cc
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Thu Jan 13 22:36:36 2011 -0700
 
-C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds.
+    regex: Use ANYOFV
 
-=item *
+    This patch restructures the regex ANYOF code to generate ANYOFV nodes instead
+    when there is a possibility that it could match more than one character.   Note
+    that this doesn't affect the optimizer, as it essentially ignores things that
+    fit into this category.  (But it means that the optimizer will no longer reject
+    these when it shouldn't have.)
 
-PerlIO no longer crashes when called recursively, e.g., from a signal
-handler. Now it just leaks memory
-L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>.
+    The handling of the LATIN SHARP s is modified to correspond with this new node
+    type.
 
-=item *
+    The initial handling of ANYOFV is placed in regexec.c.  More analysis will come
+    on that.  But there was significant change to the part that handles matching
+    multi-char strings.  This has long been buggy, with it previously comparing a
+    folded-version on one side with a non-folded version on the other.
 
-Defining a constant with the same name as one of perl's special blocks
-(e.g., INIT) stopped working in 5.12.0, but has now been fixed
-L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>.
+    This patch fixes about 60% of the problems that my undelivered test suite gives
+    for multi-char folds.  But there are still 17K test failures left, so I'm still
+    not delivering that.  The TODOs that this fixes will be cleaned up in a later commit
 
-=item *
 
-A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used
-to be stringified, even if the hash was tied
-L<[perl #79178]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79178>.
+    Update Pod-LaTeX to CPAN version 0.59
 
-=item *
+commit 680818c0361b180bb6f09d4bb11c4d5cd467fe62
+Author: Nicholas Clark <nick@ccl4.org>
+Date:   Thu Jan 13 16:24:52 2011 +0000
 
-A closure containing an C<if> statement followed by a constant or variable
-is no longer treated as a constant
-L<[perl #63540]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63540>.
+    ithread_create() was relying on the stack not moving. Fix this.
 
-=item *
+    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.
 
-Calling a closure prototype (what is passed to an attribute handler for a
-closure) now results in a "Closure prototype called" error message instead
-of a crash
-L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>.
+    Update to Win32-0.44 from CPAN
+    Update IO-Compress to CPAN version 2.033
+    Update Compress-Raw-Zlib to CPAN version 2.033
+    Update Compress-Raw-Bzip2 to CPAN version 2.033
+    Update DB_File to CPAN version 1.821
 
-=item *
+DIAGNOSTICS
+    Correct the "unimplemented" message for get{host,net,proto,serv}ent aliases.
 
-A regular expression optimisation would sometimes cause a match with a
-C<{n,m}> quantifier to fail when it should match
-L<[perl #79152]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79152>.
+    Previously, if all of gethost{byaddr,byname,ent} were unimplemented on a
+    platform, they would all return 'Unsupported socket function "gethostent"
+    called', with the analogous results for getnet{byaddr,byname,ent},
+    getproto{byname,bynumber,ent} and getserv{byname,byport,ent}. This bug was
+    introduced by change af51a00e97d5c559 - prior to this, all 12 functions would
+    report their own name when unimplemented.
 
-=item *
 
-What has become known as the "Unicode Bug" is mostly resolved in this release.
-Under C<use feature 'unicode_strings'>, the internal storage format of a
-string no longer affects the external semantics.  There are two known
-exceptions.  User-defined case changing functions, which are planned to
-be deprecated in 5.14, require utf8-encoded strings to function; and the
-character C<LATIN SMALL LETTER SHARP S> in regular expression
-case-insensitive matching has a somewhat different set of bugs depending
-on the internal storage format.  Case-insensitive matching of all
-characters that have multi-character matches, as this one does, is
-problematical in Perl.
-L<[perl #58182]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=58182>.
+commit 7627e6d0fe772ac90fce9e03fea273109521e261
+Author: Nicholas Clark <nick@ccl4.org>
+Date:   Sat Jan 8 15:56:22 2011 +0000
 
-=item *
+    Generate "Unsupported socket function" stubs using PL_ppaddr.
 
-Mentioning a read-only lexical variable from the enclosing scope in a
-string C<eval> no longer causes the variable to become writable
-L<[perl #19135]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=19135>.
+    Instead of having each socket op conditionally compile as either the
+    implementation or a DIE() depending on #HAS_SOCKET
 
-=item *
+    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)
 
-C<state> can now be used with attributes. It used to mean the same thing as
-C<my> if attributes were present
-L<[perl #68658]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68658>.
+    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
 
-Expressions like C<< @$a > 3 >> no longer cause C<$a> to be mentioned in
-the "Use of uninitialized value in numeric gt" warning when C<$a> is
-undefined (since it is not part of the C<E<gt>> expression, but the operand
-of the C<@>)
-L<[perl #72090]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72090>.
+    Generate pp_* prototypes in pp_proto.h, and remove pp.sym
 
-=item *
+    Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13
+    locations that relied on them.
 
-C<require> no longer causes C<caller> to return the wrong file name for
-the scope that called C<require> and other scopes higher up that had the
-same file name
-L<[perl #68712]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68712>.
+    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)
 
-=item *
+commit a4a4c9e2c086dd5f7b7b05789161614dbbe8385b
+Author: Karl Williamson <public@khwilliamson.com>
+Date:   Sat Jan 8 14:44:05 2011 -0700
 
-The ref types in the typemap for XS bindings now support magical variables
-L<[perl #72684]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72684>.
+    perldiag.pod: Add missing message severities
 
-=item *
 
-Match variables (e.g., C<$1>) no longer persist between calls to a sort
-subroutine
-L<[perl #76026]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76026>.
+TESTING
+    add test for split without a pattern
 
-=item *
+    Add some while tests, about the context of the last statement in a block and about reinitializaiton of lexical variables.
 
-The C<B> module was returning C<B::OP>s instead of C<B::LOGOP>s for C<entertry>
-L<[perl #80622]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80622>.
-This was due to a bug in the perl core, not in C<B> itself.
+    modernise t/cmd/while.t
 
-=item *
+    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".
 
-Some numeric operators were converting integers to floating point,
-resulting in loss of precision on 64-bit platforms
-L<[perl #77456]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77456>.
+commit b86b68b4eefa1069dabc8ea0401d712b24a67857
+Author: Jesse Vincent <jesse@bestpractical.com>
+Date:   Sat Jan 8 00:14:29 2011 +0800
 
-=item *
+    Update the policy on doc patches to maint
 
-The fallback behaviour of overloading on binary operators was asymmetric
-L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>.
 
-=back
+commit 0b5e625bc99f5cb78697faf03b297b6cacadf60b
+Author: Reini Urban <rurban@x-ray.at>
+Date:   Tue Sep 14 18:04:22 2010 +0200
 
-=head1 Acknowledgements
+    build man pages on cygwin too
 
-Perl 5.13.8 represents approximately one month of development since
-Perl 5.13.7 and contains 38714 lines of changes across 546 files from
-38 authors and committers.
+commit 172830635ea7813c85e51e4ae2b4bed56ddbab83
+Author: Reini Urban <rurban@x-ray.at>
+Date:   Tue Sep 14 17:54:15 2010 +0200
 
-Thank you to the following for contributing to this release:
+    Improve cygwin rebase behaviour
 
-Abhijit Menon-Sen, Abigail, Andreas KE<0xf6>nig, Ben Morrow, Brad Gilbert,
-brian d foy, Chip Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry,
-David Golden, David Leadbeater, David Mitchell, Father Chrysostomos,
-Florian Ragwitz, Goro Fuji, H.Merijn Brand, Jan Dubois, Jerry D. Hedden,
-Jesse Vincent, John Peacock, Karl Williamson, Lukas Mai, Marvin Humphrey,
-Max Maischein, Michael Breen, Michael Fig, Nicholas Clark, Nick Cleaton,
-Paul Evans, Peter J. Holzer, Peter John Acklam, Rafael Garcia-Suarez,
-Reini Urban, Renee Baecker, Ricardo Signes, Tony Cook, Yves Orton, Zefram
+    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
 
-=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.
+Platforms
 
-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.
+commit cc7e77fd5a0ee9f1498e54dddf566117da62754b
+Author: Reini Urban <rurban@x-ray.at>
+Date:   Tue Sep 14 17:48:32 2010 +0200
 
-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.
+    CYG14 Dynaloader without USEIMPORTLIB, and search cyg prefix
 
-=head1 SEE ALSO
+    part1: Support the standard cyg dll prefix, which is e.g. needed for FFI's.
+    Ctypes and C::DynaLib use DynaLoader to find dlls.
 
-The F<Changes> file for an explanation of how to view exhaustive details
-on what changed.
+    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.
 
-The F<INSTALL> file for how to build Perl.
+    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'
 
-The F<README> file for general stuff.
+commit c0a149a90b8b6e1c18de7294ca974265fb559cf5
+Author: Reini Urban <rurban@x-ray.at>
+Date:   Tue Sep 14 18:06:38 2010 +0200
 
-The F<Artistic> and F<Copying> files for copyright information.
+    Update cygwin hints
+    do not use usemymalloc (double size + slow)
+    remove deprecated libcygipc info
+    remove overlarge stack size
+
+commit 2831a86cee065b53b74fd19ddcc6a4257484646d
+Author: Zsbán Ambrus <ambrus@math.bme.hu>
+Date:   Sun Jan 2 20:25:55 2011 -0800
+
+    [perl #81032] Overhaul Porting/epigraphs.pod
+
+    This patch makes multiple changes to Porting/epigraphs.pod and
+    pod/perlhist.pod.
+
+    For those that don't know, Porting/epigraphs.pod is a new document that
+    collects the quotes (chosen by Pumpkins) in perl release announcements.
+
+    The changes are the following.
+
+    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.
+
+commit eccda089fc3dcaafc1ae0aac6b428f799231b824
+Author: Paul "LeoNerd" Evans <leonerd@leonerd.org.uk>
+Date:   Mon Dec 13 17:50:06 2010 +0000
+
+    Implement Socket::getaddrinfo() and Socket::getnameinfo(), with related constants
+
+commit edcf105d70e5423fd928c776e086fe31a4a543f4
+Author: Jesse Vincent <jesse@bestpractical.com>
+Date:   Sat Jan 1 18:46:20 2011 +0800
+
+    Document 'test_porting' and start a section on how committing to blead
+
+commit cce04bebd8af026c2a6731940ddb895d3c1fc3e4
+Author: David Golden <dagolden@cpan.org>
+Date:   Mon Dec 13 17:36:33 2010 -0500
+
+    Reorganize perlhack.pod
+
+    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 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.
+
+    I see this change as the first step towards future improvements.
 
 =cut