diff options
author | Ricardo Signes <rjbs@cpan.org> | 2015-03-13 19:31:19 -0400 |
---|---|---|
committer | Ricardo Signes <rjbs@cpan.org> | 2015-05-05 21:14:59 -0400 |
commit | 06a1078e60ace6d5c65e51520d48d0deb461e24a (patch) | |
tree | eded98938f9826bfa83a81d5aa0bdeabbd6c37e4 /Porting | |
parent | c5477f62db687a4cb3abc034aebd83bbbe6c82bc (diff) | |
download | perl-06a1078e60ace6d5c65e51520d48d0deb461e24a.tar.gz |
perldelta: import changes from perl5219delta.pod
Diffstat (limited to 'Porting')
-rw-r--r-- | Porting/perl5220delta.pod | 347 |
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 |