perldelta: import changes from perl5219delta.pod
authorRicardo Signes <rjbs@cpan.org>
Fri, 13 Mar 2015 23:31:19 +0000 (19:31 -0400)
committerRicardo Signes <rjbs@cpan.org>
Wed, 6 May 2015 01:14:59 +0000 (21:14 -0400)
Porting/perl5220delta.pod

index f46569e..c0713d3 100644 (file)
@@ -18,6 +18,47 @@ XXX Any important notices here
 
 =head1 Core Enhancements
 
+=head2 qr/\b{gcb}/ is now handled in regular expressions
+
+C<gcb> stands for Grapheme Cluster Boundary.  It is a Unicode property
+that finds the boundary between sequences of characters that look like a
+single character to a native speaker of a language.  Perl has long had
+the ability to deal with these through the C<\X> regular escape
+sequence.  Now, there is an alternative way of handling these.  See
+L<perlrebackslash/\b{}, \b, \B{}, \B> for details.
+
+=head2 qr/\b{wb}/ is now handled in regular expressions
+
+C<wb> stands for Word Boundary.  It is a Unicode property
+that finds the boundary between words.  This is similar to the plain
+C<\b> (without braces) but is more suitable for natural language
+processing.  It knows, for example that apostrophes can occur in the
+middle of words.  See L<perlrebackslash/\b{}, \b, \B{}, \B> for details.
+
+=head2 qr/\b{sb}/ is now handled in regular expressions
+
+C<sb> stands for Sentence Boundary.  It is a Unicode property
+to aid in parsing natural language sentences.
+See L<perlrebackslash/\b{}, \b, \B{}, \B> for details.
+
+=head2 New bitwise operators
+
+A new experimental facility has been added that makes the four standard
+bitwise operators (C<& | ^ ~>) treat their operands consistently as
+numbers, and introduces four new dotted operators (C<&. |. ^. ~.>) that
+treat their operands consistently as strings.  The same applies to the
+assignment variants (C<&= |= ^= &.= |.= ^.=>).
+
+To use this, enable the "bitwise" feature and disable the
+"experimental::bitwise" warnings category.  See L<perlop/Bitwise String
+Operators> for details.  [rt.perl.org #123466]
+
+=head2 C<no re> covers more and is lexical
+
+Previously running C<no re> would only turn off a few things. Now it
+turns off all the enabled things. For example, previously, you
+couldn't turn off debugging, once enabled, inside the same block.
+
 =head2 Non-Capturing Regular Expression Flag
 
 Regular expressions now support a C</n> flag that disables capturing
@@ -688,6 +729,101 @@ Perl.
 
 =head2 Changes to Existing Documentation
 
+=head3 L<perlunicode>
+
+=over 4
+
+=item *
+
+Update B<Default Word Boundaries> under
+L<perlunicode/"Unicode Regular Expression Support Level">'s
+B<Extended Unicode Support>.
+
+=back
+
+=head3 L<perlunicook>
+
+=over 4
+
+=item *
+
+Clarify that autodie E<gt>= 2.26 works with C<use open>.
+
+=item *
+
+Correct warning message for C<use autodie> and C<use open>.
+
+=back
+
+=head3 L<perlfaq>
+
+=over 4
+
+=item *
+
+L<perlfaq> has been synchronized with version 5.021009 from CPAN.
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+Correct the version number which removes C<m?PATTERN?>. It was Perl 5.22.0.
+
+=back
+
+=head3 L<perlvar>
+
+=over 4
+
+=item *
+
+Further clarify version number representations and usage.
+
+=back
+
+=head3 L<perlmodstyle>
+
+=over 4
+
+=item *
+
+Instead of pointing to the module list, we are now pointing to
+L<PrePAN|http://prepan.org/>.
+
+=head3 L<perlrebackslash>
+
+=over 4
+
+=item *
+
+Added documentation of C<\b{sb}>, C<\b{wb}>, C<\b{gcb}>, and C<\b{g}>.
+
+=back
+
+=head3 L<perlrequick>
+
+=over 4
+
+=item *
+
+Added example for C<\b{wb}>.
+
+=back
+
+=head3 L<perlretut>
+
+=over 4
+
+=item *
+
+Added example for C<\b{wb}>.
+
+=back
+
 =head3 L<perldata/Identifier parsing>
 
 =over 4
@@ -1097,6 +1233,50 @@ L<Illegal suidscript|perldiag/"Illegal suidscript">
 
 =item *
 
+L<'%s' is an unknown bound type in regex|perldiag/"'%s' is an unknown bound type in regex; marked by <-- HERE in m/%s/">
+
+You used C<\b{...}> or C<\B{...}> and the C<...> is not known to
+Perl.  The current valid ones are given in
+L<perlrebackslash/\b{}, \b, \B{}, \B>.
+
+=item *
+
+L<Use of \b{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale|perldiag/"Use of \b{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale">
+
+You are matching a regular expression using locale rules,
+and a Unicode boundary is being matched, but the locale is not a Unicode
+one.  This doesn't make sense.  Perl will continue, assuming a Unicode
+(UTF-8) locale, but the results could well be wrong except if the locale
+happens to be ISO-8859-1 (Latin1) where this message is spurious and can
+be ignored.
+
+=item *
+
+L<< Using E<sol>u for '%s' instead of E<sol>%s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|perldiag/"Using E<sol>u for '%s' instead of E<sol>%s in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>
+
+You used a Unicode boundary (C<\b{...}> or C<\B{...}>) in a
+portion of a regular expression where the character set modifiers C</a>
+or C</aa> are in effect.  These two modifiers indicate an ASCII
+interpretation, and this doesn't make sense for a Unicode definition.
+The generated regular expression will compile so that the boundary uses
+all of Unicode.  No other portion of the regular expression is affected.
+
+=item *
+
+L<The bitwise feature is experimental|perldiag/"The bitwise feature is experimental">
+
+This warning is emitted if you use bitwise
+operators (C<& | ^ ~ &. |. ^. ~.>) with the "bitwise" feature enabled.
+Simply suppress the warning if you want to use the feature, but know
+that in doing so you are taking the risk of using an experimental
+feature which may change or be removed in a future Perl version:
+
+    no warnings "experimental::bitwise";
+    use feature "bitwise";
+    $x |.= $y;
+
+=item *
+
 L<:const is experimental|perldiag/":const is experimental">
 
 (S experimental::const_attr) The "const" attribute is experimental.
@@ -1418,6 +1598,26 @@ The warnings category C<< redundant >> is new. See also [RT #121025]
 
 =item *
 
+B<Unusual use of %s in void context> has been removed. It might
+come back in a future release.
+
+=item *
+
+L<Argument "%s" isn't numeric%s|perldiag/"Argument "%s" isn't numeric%s">
+now adds the following note:
+
+    Note that for the C<Inf> and C<NaN> (infinity and not-a-number) the
+    definition of "numeric" is somewhat unusual: the strings themselves
+    (like "Inf") are considered numeric, and anything following them is
+    considered non-numeric.
+
+=item *
+
+B<Possible precedence problem on bitwise %c operator> reworded as
+L<Possible precedence problem on bitwise %s operator|perldiag/"Possible precedence problem on bitwise %s operator">.
+
+=item *
+
 '"my" variable &foo::bar can't be in a package' has been reworded to say
 'subroutine' instead of 'variable'.
 
@@ -1535,12 +1735,38 @@ separate distributions (App::find2perl, App::s2p, App::a2p).
 
 =back
 
+=head2 L<h2ph>
+
+=over 4
+
+=item *
+
+F<h2ph> now handles hexadecimal constants in the compiler's predefined
+macro definitions, as visible in C<$Config{cppsymbols}>.  [rt.perl.org
+#123784]
+
+=back
+
+=head2 L<encguess>
+
+=over 4
+
+=item *
+
+No longer depends on non-core module anymore.
+
+=back
+
 =head1 Configuration and Compilation
 
 =over 4
 
 =item *
 
+F<Configure> now checks for F<lrintl>, F<lroundl>, F<llrintl>, and F<llroundl>.
+
+=item *
+
 F<Configure> with C<-Dmksymlinks> should now be faster. [perl #122002]
 
 =item *
@@ -1680,16 +1906,53 @@ Android in particular.
 
 =item VMS
 
+=over 4
+
+=item *
+
+When spawning a subprocess without waiting, the return value is now
+the correct PID.
+
+=item *
+
+Fix a prototype so linking doesn't fail under the VMS C++ compiler.
+
+=item *
+
 C<finite>, C<finitel>, and C<isfinite> detection has been added to
 C<configure.com>, environment handling has had some minor changes, and
 a fix for legacy feature checking status.
 
+=back
+
 =item Win32
 
 =over 4
 
 =item *
 
+Perl can now be built in C++ mode on Windows by setting the makefile macro
+C<USE_CPLUSPLUS> to the value "define".
+
+=item *
+
+List form pipe open no longer falls back to the shell.
+
+=item *
+
+In release 5.21.8 compiling on VC with dmake was broken. Fixed.
+
+=item *
+
+New C<DebugSymbols> and C<DebugFull> configuration options added to
+Windows makefiles.
+
+=item *
+
+L<B> now compiles again on Windows.
+
+=item *
+
 Previously, on Visual C++ for Win64 built Perls only, when compiling every Perl
 XS module (including CPAN ones) and Perl aware .c file with a 64 bit Visual C++,
 would unconditionally have around a dozen warnings from hv_func.h.  These
@@ -1746,6 +2009,11 @@ L<[perl #122000]|https://rt.perl.org/Ticket/Display.html?id=122000>.
 
 =item *
 
+We now look for the Sun Studio compiler in both F</opt/solstudio*> and
+F</opt/solarisstudio*>.
+
+=item *
+
 Builds on Solaris 10 with C<-Dusedtrace> would fail early since make
 didn't follow implied dependencies to build C<perldtrace.h>.  Added an
 explicit dependency to C<depend>.
@@ -2016,6 +2284,85 @@ index is still done using C<aelemfast>.
 
 =item *
 
+Patterns starting with C</.*/> are now fast again. [rt.perl.org #123743]
+
+=item *
+
+The original visible value of C<$/> is now preserved when it is set to
+an invalid value.  Previously if you set C<$/> to a reference to an
+array, for example, perl would produce a runtime error and not set
+C<PL_rs>, but perl code that checked C<$/> would see the array
+reference.  [rt.perl.org #123218]
+
+=item *
+
+In a regular expression pattern, a POSIX class, like C<[:ascii:]>, must
+be inside a bracketed character class, like C</qr[[:ascii:]]>.  A
+warning is issued when something looking like a POSIX class is not
+inside a bracketed class.  That warning wasn't getting generated when
+the POSIX class was negated: C<[:^ascii:]>.  This is now fixed.
+
+=item *
+
+Fix a couple of other size calculation overflows.  [rt.perl.org #123554]
+
+=item *
+
+A bug introduced in 5.21.6, C<dump LABEL> acted the same as C<goto
+LABEL>.  This has been fixed.  [rt.perl.org #123836]
+
+=item *
+
+Perl 5.14.0 introduced a bug whereby C<eval { LABEL: }> would crash.  This
+has been fixed.  [rt.perl.org #123652]
+
+=item *
+
+Various crashes due to the parser getting confused by syntax errors have
+been fixed.  [rt.perl.org #123617] [rt.perl.org #123737]
+[rt.perl.org #123753] [rt.perl.org #123677]
+
+=item *
+
+Code like C</$a[/> used to read the next line of input and treat it as
+though it came immediately after the opening bracket.  Some invalid code
+consequently would parse and run, but some code caused crashes, so this is
+now disallowed.  [rt.perl.org #123712]
+
+=item *
+
+Fix argument underflow for C<pack>.  [rt.perl.org #123874]
+
+=item *
+
+Fix handling of non-strict C<\x{}>. Now C<\x{}> is equivalent to C<\x{0}>
+instead of faulting.
+
+=item *
+
+C<stat -t> is now no longer treated as stackable, just like C<-t stat>.
+[rt.perl.org #123816]
+
+=item *
+
+The following no longer causes a SEGV: C<qr{x+(y(?0))*}>.
+
+=item *
+
+Fixed infinite loop in parsing backrefs in regexp patterns.
+
+=item *
+
+Several minor bug fixes in behavior of Inf and NaN, including
+warnings when stringifying Inf-like or NaN-like strings. For example,
+"NaNcy" doesn't numify to NaN anymore.
+
+=item *
+
+Only stringy classnames are now shared. This fixes some failures in L<autobox>.  [rt.cpan.org #100819]
+
+=item *
+
 A bug in regular expression patterns that could lead to segfaults and
 other crashes has been fixed.  This occurred only in patterns compiled
 with C<"/i">, while taking into account the current POSIX locale (this usually