summaryrefslogtreecommitdiff
path: root/Porting
diff options
context:
space:
mode:
authorRicardo Signes <rjbs@cpan.org>2015-03-13 19:31:19 -0400
committerRicardo Signes <rjbs@cpan.org>2015-05-05 21:14:59 -0400
commit06a1078e60ace6d5c65e51520d48d0deb461e24a (patch)
treeeded98938f9826bfa83a81d5aa0bdeabbd6c37e4 /Porting
parentc5477f62db687a4cb3abc034aebd83bbbe6c82bc (diff)
downloadperl-06a1078e60ace6d5c65e51520d48d0deb461e24a.tar.gz
perldelta: import changes from perl5219delta.pod
Diffstat (limited to 'Porting')
-rw-r--r--Porting/perl5220delta.pod347
1 files changed, 347 insertions, 0 deletions
diff --git a/Porting/perl5220delta.pod b/Porting/perl5220delta.pod
index f46569e19f..c0713d354e 100644
--- a/Porting/perl5220delta.pod
+++ b/Porting/perl5220delta.pod
@@ -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