X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/b1ea7742e52e5f57ccd6d0de0d33bda4216d2d5e..1722e378f962c2c0bd9735fe63e69fa95671f5e2:/pod/perldelta.pod?ds=sidebyside diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 44a139c..07a684a 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1,7 +1,9 @@ =encoding utf8 =for comment -This has been completed up to 8db8f6b69. +This has been completed up to 0aae26c14, except for: +803e389 rurban CYG17 utf8 paths +d9298c1 rurban mymalloc isn't thread safe =head1 NAME @@ -59,6 +61,81 @@ strings. Full details are in L. +=head2 C<_> in subroutine prototypes + +The C<_> character in subroutine prototypes is now allowed before C<@> or +C<%>. + +=head2 Supports (I) Unicode 6.1 + +Besides the addition of whole new scripts, and new characters in +existing scripts, this new version of Unicode, as always, makes some +changes to existing characters. One change that may trip up some +applications is that the General Category of two characters in the +Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from +Other_Symbol to Other_Punctuation. The same change has been made for +a character in each of Tibetan, Ethiopic, and Aegean. +The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE +through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General +Category changed from Other_Symbol to Other_Numeric. The Line Break +property has changes for Hebrew and Japanese; and as a consequence of +other changes in 6.1, the Perl regular expression construct C<\X> now +works differently for some characters in Thai and Lao. + +New aliases (synonyms) have been defined for many property values; +these, along with the previously existing ones, are all cross indexed in +L. + +The return value of C is affected by other changes. +One of these is that the preferred name (which is what C +returns) for the character at U+2118 has been changed from SCRIPT CAPITAL P +to WEIERSTRASS ELLIPTIC FUNCTION. But most of these changes are the +fallout of the mistake Unicode 6.0 made in naming a character used in +Japanese cell phones to be "BELL", which conflicts with the long +standing industry use of (and Unicode's recommendation to use) that name +to mean the ASCII control character at U+0007. As a result, that name +has been deprecated in Perl since v5.14; and any use of it will raise a +warning message (unless turned off). The name "ALERT" is now the +preferred name for this code point, with "BEL" being an acceptable short +form. The name for the new cell phone character, at code point U+1F514, +remains undefined in this version of Perl (hence we don't quite +implement all of Unicode 6.1), but starting in v5.18, BELL will mean +this character, and not U+0007. + +Unicode has taken steps to make sure that this sort of mistake does not +happen again. The Standard now includes all the generally accepted +names and abbreviations for control characters, whereas previously it +didn't. This means that all the names that Perl had previously +deprecated (except BELL) are no longer deprecated, such as FILE +SEPARATOR. Also, the names for four rarely used characters are subtly +different (a hyphen instead of a space) than before: + + Code point Old Name New Name + U+008E SINGLE-SHIFT 2 SINGLE-SHIFT-2 + U+008F SINGLE-SHIFT 3 SINGLE-SHIFT-3 + U+0091 PRIVATE USE 1 PRIVATE USE-1 + U+0092 PRIVATE USE 2 PRIVATE USE-2 + +Perl will accept either name as input, but C now +returns the new name. + +Additional name abbreviations are accepted: +SP for SPACE; +TAB for CHARACTER TABULATION; +NEW LINE, END OF LINE, NL, and EOL for LINE FEED; +LOCKING-SHIFT ONE for SHIFT OUT; +LOCKING-SHIFT ZERO for SHIFT IN; +and ZWNBSP for ZERO WIDTH NO-BREAK SPACE. + +More details on this version of Unicode are provided in +L. + +=head2 Added C + +This function is designed to replace the deprecated L +function. It includes an extra parameter to make sure it doesn't read +past the end of the input buffer. + =head1 Security XXX Any security-related notices go here. In particular, any security @@ -67,6 +144,13 @@ L section. [ List each security issue as a =head2 entry ] +=head2 Use C and not C + +The latter function is now deprecated because its API is insufficient to +guarantee that it doesn't read (up to 12 bytes in the worst case) beyond +the end of its input string. See +L. + =head1 Incompatible Changes XXX For a release on a stable branch, this section aspires to be: @@ -83,6 +167,34 @@ Special blocks (C, C, C, C, C) are now called in void context. This avoids wasteful copying of the result of the last statement [perl #108794]. +=head2 The C pragma and regexp objects + +With C, regular expression objects returned by C are +now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular +expression itself [perl #108780]. + +=head2 Two XS typemap Entries removed + +Two presumably unused XS typemap entries have been removed from the +core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds, +a user of these, please see the instructions on how to regain them +in L. + +=head2 Unicode 6.1 has incompatibilities with Unicode 6.0 + +These are detailed in L above. + +=head2 Changed returns for some properties in C + +The return values for C have been changed for some +properties to make the returned lists significantly smaller. This +allows those lists to be searched faster. + +This function was introduced earlier in the v5.15 series of releases, +and the API will not be considered stable until v5.16. + +See L for details on the new interface. + =head1 Deprecations XXX Any deprecated features, syntax, modules etc. should be listed here. @@ -91,6 +203,12 @@ listed as an updated module in the L section. [ List each deprecation as a =head2 entry ] +=head2 C + +This function is deprecated because it could read beyond the end of the +input string. Use the new L +instead. + =head1 Performance Enhancements XXX Changes which enhance performance without changing behaviour go here. There @@ -124,7 +242,8 @@ cribbed. =item * -XXX +The C PerlIO layer is no longer implemented by perl itself, but has +been moved out into the new L module. =back @@ -134,6 +253,13 @@ XXX =item * +L has been upgraded from version 0.03 to version 0.04. + +List slices no longer modify items on the stack belonging to outer lists +[perl #109570]. + +=item * + L has been upgraded from version 1.33 to version 1.34. C now has a C method, corresponding to a new internal @@ -141,6 +267,13 @@ field added in 5.15.4 [perl #108860]. =item * +L has been upgraded from version 1.24 to version 1.25. + +It now puts a dot after the file and line number, just like errors from +C [perl #106538]. + +=item * + L has been upgraded from version 2.045 to version 2.048. =item * @@ -153,6 +286,16 @@ L has been upgraded from version 2.046 to version 2.048. =item * +L has been upgraded from version 2.113640 to version 2.120351. + +Work around a memory leak bug involving version objects in boolean context. + +=item * + +L has been upgraded from version 0.005 to version 0.007. + +=item * + L has been upgraded from version 1.824 to version 1.826. =item * @@ -164,18 +307,75 @@ relevant on Perl 5.004 and earlier. =item * +L has been upgraded from version 3.12 to version 3.15. + +The new version comes with important tools for sharing typemaps between +different CPAN distributions. + +=item * + +L has been upgraded from version 2.21 to version 2.23. + +It no longer emits warnings when copying files with newlines in their names +[perl #109104]. + +=item * + L has been upgraded from version 0.72 to version 0.76. =item * +L has been upgraded from version 1.58 to version 1.59. + +This avoids a new core warning. + +=item * + +L has been upgraded from version 1.000007 to version 1.000009. + +Adds C method to generate a CPAN META provides data structure +correctly; use of C is discouraged. + +=item * + +L has been upgraded from version 1.4401 to version 1.4402. + +=item * + L has been upgraded from version 1.37 to version 1.51. =item * +L has been upgraded from version 1.07 to version 1.08. + +Its C method now supports L event loops, and not just +L. A more general mechanism has been proposed, so this may be reverted +before Perl 5.16 [perl #108470]. + +=item * + +L has been upgraded from version 1.9724 to version 1.9725. + +C no longer corrupts the Perl stack. + +=item * + L has been upgraded from version 0.39 to 0.40. The only change is to fix a formatting error in the Pod. +=item * + +L has been upgraded from version 0.101021 to version 0.101022. + +=item * + +L has been upgraded from version 1.28 to version 1.29.. + +It now has a wrapper for the C function, it's not +exported on C due to backwards compatibility concerns, it +has to be explicitly requested with C. + =back =head2 Removed Modules and Pragmata @@ -197,6 +397,12 @@ file and be sure to link to the appropriate page, e.g. L. XXX Changes which create B files in F go here. +=head3 L + +The new manual describes the XS typemapping mechanism in unprecedented +detail and combines new documentation with information extracted from +L and the previously unofficial list of all core typemaps. + =head3 L XXX Description of the purpose of the new file here @@ -322,6 +528,11 @@ that they represent may be covered elsewhere. XXX +=item * + +The test suite for typemaps has been extended to cover a larger fraction of +the core typemaps. + =back =head1 Platform Support @@ -434,6 +645,53 @@ mistake. This has been fixed [rt.cpan.org #74289]. C<-t> now works when stacked with other filetest operators [perl #77388]. +=item * + +Stacked filetest operators now only call FETCH once on a tied argument. + +=item * + +C would sometimes refuse to match at the end of a string that ends +with "\n". This has been fixed [perl #109206]. + +=item * + +C and C now match identically (when not +under a differing locale). This fixes a regression introduced in 5.14 +in which the first expression could match characters outside of ASCII, +such as the KELVIN SIGN. + +=item * + +Method calls whose arguments were all surrounded with C or C +(as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on +the subroutine. This would prevent lvalue methods from returning certain +values. Due to lvalue fixes earlier in the 5.15.x series, it would also +prevent non-lvalue methods from being called [perl #109264]. + +=for comment +This bug I affect earlier stable releases. It is just the last +sentence that does not apply to 5.14. + +=item * + +The C C function no longer tries to modify its argument, +resulting in errors [perl #108994]. + +=item * + +C now works properly with magical variables. + +=item * + +C now works properly non-PVs. + +=item * + +C and C now use locale rules under +C when the platform supports that. Previously, they used +the platform's native character set. + =back =head1 Known Problems