Remove Mac OS classic instructions from perlrun
[p5sagit/p5-mst-13.2.git] / pod / perl5110delta.pod
index d2a97fb..838dd40 100644 (file)
@@ -1,3 +1,5 @@
+=encoding utf8
+
 =head1 NAME
 
 perl5110delta - what is new for perl v5.11.0
@@ -9,8 +11,62 @@ the 5.11.0 development release.
 
 =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
 
@@ -277,7 +333,7 @@ Some support for DTrace has been added. See "DTrace support" in F<INSTALL>.
 =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>.
 
@@ -294,8 +350,6 @@ on how to specify C<configure_requires> when creating a distribution for CPAN.
 
 =head2 You can now set C<-W> from the C<PERL5OPT> environment varialbe
 
-
-
 =head1 Modules and Pragmata
 
 =head2 New Modules and Pragmata
@@ -463,7 +517,6 @@ used to be a lightweight placeholder that loaded the actual code from
 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.
@@ -588,10 +641,12 @@ Upgraded from version 1.1005 to 1.1006.
 
 =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.
@@ -837,7 +892,10 @@ Upgraded from 1.11 to 1.17.
 
 =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>
 
@@ -954,7 +1012,6 @@ Upgraded from version 1.04 to 1.05.
 
 UNIVERSAL->import() is now deprecated.
 
-
 =item C<Win32>
 
 Upgraded from version 0.34 to 0.39.
@@ -992,10 +1049,10 @@ C<LVALUE> subroutines now work under the debugger.
 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
@@ -1042,9 +1099,9 @@ This describes the new F<perlthanks> utility.
 
 =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
@@ -1058,24 +1115,17 @@ generated at build time, rather than being shipped as part of the release.
 
 =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
@@ -1180,6 +1230,10 @@ On Cygwin we now strip the last number from the DLL. This has been the
 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
@@ -1195,6 +1249,10 @@ C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
 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.
@@ -1232,7 +1290,7 @@ status in a VMS condition value for better interaction with GNV's bash
 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
 
@@ -1240,15 +1298,15 @@ File::Copy now detects Unix compatibility mode on VMS.
 
 =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
@@ -1285,7 +1343,7 @@ arguments [RT #59998].
 
 =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].
 
@@ -1296,17 +1354,17 @@ On some UNIX systems, the value in C<$?> would not have the top bit set
 
 =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 *
@@ -1675,7 +1733,7 @@ outside the core should be accessing this directly anyway.
 
 =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.
@@ -1829,7 +1887,6 @@ A workaround is to generate the character outside of the regex:
 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
@@ -1877,7 +1934,6 @@ warn if ++ or -- are unable to change the value because it's beyond the limit of
 
 This uses a new warnings category: "imprecision".
 
-
 =item *
 
 Make lc/uc/lcfirst/ucfirst warn when passed undef.
@@ -1928,12 +1984,8 @@ Explicitely point to $. when it causes an uninitialized warning for ranges in sc
 
 =head1 Acknowledgements
 
-Some of the work in this release was funded by a TPF grant.
-
-Nicholas Clark officially retired from maintenance pumpking duty at the
-end of 2008; however in reality he has put much effort in since then to
-help get 5.10.1 into a fit state to be released, including writing a
-considerable chunk of this perldelta.
+Some of the work in this release was funded by a TPF grant funded by
+Dijkmat BV, The Netherlands.
 
 Steffen Mueller and David Golden in particular helped getting CPAN modules
 polished and synchronised with their in-core equivalents.
@@ -1951,7 +2003,6 @@ Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc,
 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.
 
@@ -2294,3 +2345,6 @@ when creation of a temporary file in it fails
 =head2 Add a pluggable hook in op_free()
 
 
+
+
+