Remove Mac OS classic instructions from perlrun
[p5sagit/p5-mst-13.2.git] / pod / perl5110delta.pod
index 3e678aa..838dd40 100644 (file)
@@ -11,6 +11,61 @@ the 5.11.0 development release.
 
 =head1 Incompatible Changes
 
+=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
@@ -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>
 
@@ -1057,18 +1115,12 @@ 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
@@ -1307,12 +1359,12 @@ Under some circumstances, C<$^R> could incorrectly become undefined
 
 =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 *
@@ -1932,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.
@@ -2297,3 +2345,6 @@ when creation of a temporary file in it fails
 =head2 Add a pluggable hook in op_free()
 
 
+
+
+