X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/60f0ee9d24765f343ab818204b006e2c6ddeba05..1722e378f962c2c0bd9735fe63e69fa95671f5e2:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 8f69765..07a684a 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1,20 +1,25 @@ =encoding utf8 +=for comment +This has been completed up to 0aae26c14, except for: +803e389 rurban CYG17 utf8 paths +d9298c1 rurban mymalloc isn't thread safe + =head1 NAME [ this is a template for a new perldelta file. Any text flagged as XXX needs to be processed before release. ] -perldelta - what is new for perl v5.15.6 +perldelta - what is new for perl v5.15.8 =head1 DESCRIPTION -This document describes differences between the 5.15.5 release and -the 5.15.6 release. +This document describes differences between the 5.15.7 release and +the 5.15.8 release. -If you are upgrading from an earlier release such as 5.15.4, first read -L, which describes differences between 5.15.4 and -5.15.5. +If you are upgrading from an earlier release such as 5.15.6, first read +L, which describes differences between 5.15.6 and +5.15.7. =head1 Notice @@ -28,6 +33,109 @@ here, but most should go in the L section. [ List each enhancement as a =head2 entry ] +=head2 Improved ability to mix locales and Unicode, including UTF-8 locales + +An optional parameter has been added to C + + use locale ':not_characters'; + +which tells Perl to use all but the C and C +portions of the current locale. Instead, the character set is assumed +to be Unicode. This allows locales and Unicode to be seamlessly mixed, +including the increasingly frequent UTF-8 locales. When using this +hybrid form of locales, the C<:locale> layer to the L pragma can +be used to interface with the file system, and there are CPAN modules +available for ARGV and environment variable conversions. + +Full details are in L. + +=head2 New function C and corresponding escape sequence C<\F> for Unicode foldcase + +Unicode foldcase is an extension to lowercase that gives better results +when comparing two strings case-insensitively. It has long been used +internally in regular expression C matching. Now it is available +explicitly through the new C function call (enabled by +S>, or C, or explicitly callable via +C) or through the new C<\F> sequence in double-quotish +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 @@ -36,15 +144,57 @@ 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: There are no changes intentionally incompatible with 5.XXX.XXX - If any exist, they are bugs and reports are welcome. + If any exist, they are bugs, and we request that you submit a + report. See L below. [ List each incompatible change as a =head2 entry ] +=head2 Special blocks called in void context + +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. @@ -53,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 @@ -86,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 @@ -96,53 +253,128 @@ XXX =item * -L has been upgraded from version 1.80 to version 1.82. +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 +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 * + +L has been upgraded from version 2.045 to version 2.048. + +=item * + +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 * + +L has been upgraded from version 1.27 to version 1.28. + +When searching for F, it no longer uses paths that were only +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. -Adjustments to handle files >8gb (>0777777777777 octal) and a feature to -return the MD5SUM of files in the archive. +It no longer emits warnings when copying files with newlines in their names +[perl #109104]. =item * -L has been upgraded from version 5.71 to version 5.72. +L has been upgraded from version 0.72 to version 0.76. =item * -L has been upgraded from version 1.16 to version 1.17. +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 2.042 to version 2.043. +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 2.042 to version 2.043. +L has been upgraded from version 1.4401 to version 1.4402. =item * -L has been upgraded from version 2.042 to version 2.043. +L has been upgraded from version 1.37 to version 1.51. =item * -L has been uprgaded from version 0.06 to version 0.08. +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 0.59 to version 0.60. +L has been upgraded from version 1.9724 to version 1.9725. + +C no longer corrupts the Perl stack. -Added another LaTeX escape: --- => -{}-{}- +=item * + +L has been upgraded from version 0.39 to 0.40. -Pod::LaTeX doesn't handle -- in PODs specially, passing it directly to -LaTeX, which then proceeds to replace it with a single -. This patch -replaces ----- with -{}-{}-{}-{}- +The only change is to fix a formatting error in the Pod. =item * -L has been upgraded from version 0.85 to version 0.87. +L has been upgraded from version 0.101021 to version 0.101022. + +=item * -Tailored compatibility ideographs as well as unified ideographs for -the locales: ja, ko, zh__big5han, zh__gb2312han, zh__pinyin, zh__stroke. +L has been upgraded from version 1.28 to version 1.29.. -Now Locale/*.pl files are searched in @INC. +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 @@ -165,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 @@ -270,9 +508,7 @@ L section, instead. =item * -F is now build by F, instead of being shipped -with the distribution. Its list of manpages is now generated (and therefore -current). See also RT #103202 for an unresolved related issue. +XXX =back @@ -292,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 @@ -371,7 +612,85 @@ L. =item * -XXX +C<~~> now correctly handles the precedence of Any~~Object, and is not tricked +by an overloaded object on the left-hand side. + +=item * + +C no longer warns about unopened filehandles [perl #71002]. + +=item * + +C on an unopened filehandle now warns consistently, instead of +skipping the warning at times. + +=item * + +A change in an earlier 5.15 release caused warning hints to propagate into +C. This has been fixed [rt.cpan.org #72767]. + +=item * + +Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up +after assigning C<${ qr// }> to a hash element and locking it with +L. This could result in double frees, crashes or erratic +behaviour. + +=item * + +In 5.15.7, some typeglobs in the CORE namespace were made read-only by +mistake. This has been fixed [rt.cpan.org #74289]. + +=item * + +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 @@ -403,7 +722,7 @@ here. XXX Generate this with: - perl Porting/acknowledgements.pl v5.15.5..HEAD + perl Porting/acknowledgements.pl v5.15.7..HEAD =head1 Reporting Bugs