+=encoding utf8
+
=head1 NAME
perl5110delta - what is new for perl v5.11.0
=head1 Incompatible Changes
-=head2 In @INC, move ARCHLIB and PRIVLIB after the current version's site_perl and vendor_perl.
+=head2 Unicode interpretation of \w, \d, \s, and the POSIX character classes redefined.
+
+Previous versions of Perl tried to map POSIX style character class definitions onto
+Unicode property names so that patterns would "dwim" when matches were made against latin-1 or
+unicode strings. This proved to be a mistake, breaking character class negation, causing
+forward compatibility problems (as Unicode keeps updating their property definitions and adding
+new characters), and other problems.
+
+Therefore we have now defined a new set of artificial "unicode" property names which will be
+used to do unicode matching of patterns using POSIX style character classes and perl short-form
+escape character classes like \w and \d.
+
+The key change here is that \d will no longer match every digit in the unicode standard
+(there are thousands) nor will \w match every word character in the standard, instead they
+will match precisely their POSIX or Perl definition.
+
+Those needing to match based on Unicode properties can continue to do so by using the \p{} syntax
+to match whichever property they like, including the new artificial definitions.
+
+B<NOTE:> This is a backwards incompatible no-warning change in behaviour. If you are upgrading
+and you process large volumes of text look for POSIX and Perl style character classes and
+change them to the relevent property name (by removing the word 'Posix' from the current name).
+
+The following table maps the POSIX character class names, the escapes and the old and new
+Unicode property mappings:
+
+ POSIX Esc Class New-Property ! Old-Property
+ ----------------------------------------------+-------------
+ alnum [0-9A-Za-z] IsPosixAlnum ! IsAlnum
+ alpha [A-Za-z] IsPosixAlpha ! IsAlpha
+ ascii [\000-\177] IsASCII = IsASCII
+ blank [\011 ] IsPosixBlank !
+ cntrl [\0-\37\177] IsPosixCntrl ! IsCntrl
+ digit \d [0-9] IsPosixDigit ! IsDigit
+ graph [!-~] IsPosixGraph ! IsGraph
+ lower [a-z] IsPosixLower ! IsLower
+ print [ -~] IsPosixPrint ! IsPrint
+ punct [!-/:-@[-`{-~] IsPosixPunct ! IsPunct
+ space [\11-\15 ] IsPosixSpace ! IsSpace
+ \s [\11\12\14\15 ] IsPerlSpace ! IsSpacePerl
+ upper [A-Z] IsPosixUpper ! IsUpper
+ word \w [0-9A-Z_a-z] IsPerlWord ! IsWord
+ xdigit [0-9A-Fa-f] IsXDigit = IsXDigit
+
+If you wish to build perl with the old mapping you may do so by setting
+
+ #define PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS 1
+in regcomp.h, and then setting
+
+ PERL_TEST_LEGACY_POSIX_CC
+
+to true your enviornment when testing.
+
+
+=head2 In @INC, move ARCHLIB and PRIVLIB after the current version's site_perl and vendor_perl.
=head2 Switch statement changes
=head2 Support for C<configure_requires> in CPAN module metadata
Both C<CPAN> and C<CPANPLUS> now support the C<configure_requires> keyword
-in the C<META.yml> metadata file included in most recent CPAN distributions.
+in the F<META.yml> metadata file included in most recent CPAN distributions.
This allows distribution authors to specify configuration prerequisites that
must be installed before running F<Makefile.PL> or F<Build.PL>.
=head2 You can now set C<-W> from the C<PERL5OPT> environment varialbe
-
-
=head1 Modules and Pragmata
=head2 New Modules and Pragmata
=item C<attrs>
-Upgraded from version 1.02 to 1.03.
+The C<attrs> pragma has been removed. It had been marked as deprecated since
+5.6.0.
=item C<base>
=item C<constant>
-Upgraded from version 1.13 to 1.17.
+Upgraded from version 1.13 to 1.19. Some code has been shifted from run time to
+compile time, and the amount of MRO cache flushing has been minimised.
=item C<feature>
C<Carp::Heavy> on demand. C<Carp::Heavy> is now a simple, empty module
kept for backwards compatibility for programs that used to pre-load it.
-
=item C<CGI>
Upgraded from version 3.29 to 3.43.
=item C<File::Copy>
-Upgraded from version 2.11 to 2.14.
+Upgraded from version 2.11 to 2.16.
File::Copy now always return 0 (not "") on failure.
+FIXME - describe C<cp>
+
=item C<File::Fetch>
Upgraded from version 0.14 to 0.20.
=item C<Socket>
-Upgraded from 1.80 to 1.82.
+Upgraded from 1.80 to 1.84.
+
+As of 1.84, C<Socket> can now handle abstract namespace sockets on Linux.
+(see unix(7)).
=item C<Storable>
UNIVERSAL->import() is now deprecated.
-
=item C<Win32>
Upgraded from version 0.34 to 0.39.
The debugger now correctly handles proxy constant subroutines, and
subroutine stubs.
-
=item F<perlbug>
- Perlbug now uses %Module::CoreList::bug_tracker to print out upstream bug tracker URLs.
+F<perlbug> now uses C<%Module::CoreList::bug_tracker> to print out upstream bug
+tracker URLs.
Where the user names a module that their bug report is about, and we know the
URL for its upstream bug tracker, provide a message to the user explaining
=head1 Changes to Existing Documentation
-The various large C<Changes*> files (which listed every change made to perl
+The various large F<Changes*> files (which listed every change made to perl
over the last 18 years) have been removed, and replaced by a small file,
-also called C<Changes>, which just explains how that same information may
+also called F<Changes>, which just explains how that same information may
be extracted from the git version control system.
The file F<Porting/patching.pod> has been deleted, as it mainly described
=head2 Documented that when() treats specially most of the filetest operators
-=head2 Documented that DESTROY is subject to AUTOLOAD, and the related optimisations.
-
=head2 Documented when as a syntax modifier
=head2 Eliminated "Old Perl threads tutorial", which describes 5005 threads.
pod/perlthrtut.pod is the same material reworked for ithreads.
-=head2 Removed a link to the attrs pragma, which has now been removed.
-
-=head2 update PERL_MEM_LOG in perlhack.pod
-
=head2 Correct previous documentation: v-strings are not deprecated
With version objects, we need them to use MODULE VERSION syntax. This
patch removes the deprecation note.
-
=head1 Performance Enhancements
=over 4
behaviour in the cygwin.com build for years. The hints files have been
updated.
+=item DomainOS
+
+Support for Apollo DomainOS was removed in Perl 5.11.0
+
=item FreeBSD
The hints files now identify the correct threading libraries on FreeBSD 7
Patches from the Haiku maintainers have been merged in. Perl should now
build on Haiku.
+=item MiNT
+
+Support for Atari MiNT was removed in Perl 5.11.0.
+
=item MirOS BSD
Perl should now build on MirOS BSD.
shell and other utilities that depend on POSIX exit values. See
L<perlvms/"$?"> for details.
-File::Copy now detects Unix compatibility mode on VMS.
+C<File::Copy> now detects Unix compatibility mode on VMS.
=back
=over 4
-=item
+=item *
-=item C<-I> on shebang line now adds directories in front of @INC.
+C<-I> on shebang line now adds directories in front of @INC.
as documented, and as does C<-I> when specified on the command-line.
(Renée Bäcker)
-=item
+=item *
-* C<kill> is now fatal when called on non-numeric process identifiers.
+C<kill> is now fatal when called on non-numeric process identifiers.
Previously, an 'undef' process identifier would be interpreted as a request to
kill process "0", which would terminate the current process group on POSIX
systems. Since process identifiers are always integers, killing a non-numeric
=item *
-The C<-i.suffix> command-line switch now recreates the file using
+The C<-i>I<.suffix> command-line switch now recreates the file using
restricted permissions, before changing its mode to match the original
file. This eliminates a potential race condition [RT #60904].
=item *
-Under some circumstances, $^R could incorrectly become undefined
+Under some circumstances, C<$^R> could incorrectly become undefined
[RT #57042].
=item *
-(XS) In various hash functions, passing a pre-computed hash to when the
-key is UTF-8 might result in an incorrect lookup.
+In the XS API, various hash functions, when passed a pre-computed hash where
+the key is UTF-8, might result in an incorrect lookup.
=item *
-(XS) Including F<XSUB.h> before F<perl.h> gave a compile-time error
+XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
[RT #57176].
=item *
=item *
-A new tool, C<Porting/expand-macro.pl> has been added, that allows you
+A new tool, F<Porting/expand-macro.pl> has been added, that allows you
to view how a C preprocessor macro would be expanded when compiled.
This is handy when trying to decode the macro hell that is the perl
guts.
Some regexes may run much more slowly when run in a child thread compared
with the thread the pattern was compiled into [RT #55600].
-
=back
=head1 Deprecations
This uses a new warnings category: "imprecision".
-
=item *
Make lc/uc/lcfirst/ucfirst warn when passed undef.
anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken,
Mark Fowler, chorny, anonymous, tmtm
-
Finally, thanks to Larry Wall, without whom none of this would be
necessary.
=head2 Add a pluggable hook in op_free()
+
+
+