This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
mktables: Don't add exact duplicate to tables
[perl5.git] / pod / perldelta.pod
index f3c1efb..07a684a 100644 (file)
@@ -1,8 +1,9 @@
 =encoding utf8
 
 =for comment
-This has been completed up to a75c6ed6bbe, except for:
+This has been completed up to 0aae26c14, except for:
 803e389        rurban  CYG17 utf8 paths
+d9298c1        rurban  mymalloc isn't thread safe
 
 =head1 NAME
 
@@ -65,6 +66,76 @@ Full details are in L<perlfunc/fc>.
 The C<_> character in subroutine prototypes is now allowed before C<@> or
 C<%>.
 
+=head2 Supports (I<almost>) 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<perluniprops>.
+
+The return value of C<charnames::viacode> is affected by other changes.
+One of these is that the preferred name (which is what C<viacode>
+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<charnames::viacode> 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<http://www.unicode.org/versions/Unicode6.1.0/>.
+
+=head2 Added C<is_utf8_char_buf()>
+
+This function is designed to replace the deprecated L</is_utf8_char()>
+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
@@ -73,6 +144,13 @@ L</Selected Bug Fixes> section.
 
 [ List each security issue as a =head2 entry ]
 
+=head2 Use C<is_utf8_char_buf()> and not C<is_utf8_char()>
+
+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<is_utf8_char_buf()|/Added is_utf8_char_buf()>.
+
 =head1 Incompatible Changes
 
 XXX For a release on a stable branch, this section aspires to be:
@@ -95,6 +173,28 @@ With C<no overloading>, regular expression objects returned by C<qr//> 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<perlxstypemap>.
+
+=head2 Unicode 6.1 has incompatibilities with Unicode 6.0
+
+These are detailed in L</Supports (almost) Unicode 6.1> above.
+
+=head2 Changed returns for some properties in C<Unicode::UCD::prop_invmap()>
+
+The return values for C<prop_invmap> 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<Unicode::UCD/prop_invmap()> for details on the new interface.
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -103,6 +203,12 @@ listed as an updated module in the L</Modules and Pragmata> section.
 
 [ List each deprecation as a =head2 entry ]
 
+=head2 C<is_utf8_char()>
+
+This function is deprecated because it could read beyond the end of the
+input string.  Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()>
+instead.
+
 =head1 Performance Enhancements
 
 XXX Changes which enhance performance without changing behaviour go here. There
@@ -136,7 +242,8 @@ cribbed.
 
 =item *
 
-XXX
+The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
+been moved out into the new L<PerlIO::mmap> module.
 
 =back
 
@@ -146,6 +253,13 @@ XXX
 
 =item *
 
+L<arybase> 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<B> has been upgraded from version 1.33 to version 1.34.
 
 C<B::COP> now has a C<stashflags> method, corresponding to a new internal
@@ -153,6 +267,13 @@ field added in 5.15.4 [perl #108860].
 
 =item *
 
+L<Carp> 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<die> [perl #106538].
+
+=item *
+
 L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
 
 =item *
@@ -165,6 +286,16 @@ L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
 
 =item *
 
+L<CPAN::Meta> 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<CPAN::Meta::YAML> has been upgraded from version 0.005 to version 0.007.
+
+=item *
+
 L<DB_File> has been upgraded from version 1.824 to version 1.826.
 
 =item *
@@ -176,6 +307,20 @@ relevant on Perl 5.004 and earlier.
 
 =item *
 
+L<ExtUtils::ParseXS> 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<File::Copy> 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<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
 
 =item *
@@ -186,13 +331,32 @@ This avoids a new core warning.
 
 =item *
 
+L<Module::Metadata> has been upgraded from version 1.000007 to version 1.000009.
+
+Adds C<provides> method to generate a CPAN META provides data structure
+correctly; use of C<package_versions_from_directory> is discouraged.
+
+=item *
+
+L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402.
+
+=item *
+
 L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
 
 =item *
 
+L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08.
+
+Its C<tkRunning> method now supports L<AnyEvent> event loops, and not just
+L<Tk>.  A more general mechanism has been proposed, so this may be reverted
+before Perl 5.16 [perl #108470].
+
+=item *
+
 L<Time::HiRes>  has been upgraded from version 1.9724 to version 1.9725.
 
-There is an important bugfix for C<Time::HiRes::stat()>.
+C<Time::HiRes::stat()> no longer corrupts the Perl stack.
 
 =item *
 
@@ -200,6 +364,18 @@ L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
 
 The only change is to fix a formatting error in the Pod.
 
+=item *
+
+L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
+
+=item *
+
+L<POSIX> has been upgraded from version 1.28 to version 1.29..
+
+It now has a wrapper for the C<strptime(3)> function, it's not
+exported on C<use POSIX;> due to backwards compatibility concerns, it
+has to be explicitly requested with C<use POSIX qw(strptime)>.
+
 =back
 
 =head2 Removed Modules and Pragmata
@@ -221,6 +397,12 @@ file and be sure to link to the appropriate page, e.g. L<perlfunc>.
 
 XXX Changes which create B<new> files in F<pod/> go here.
 
+=head3 L<perlxstypemap>
+
+The new manual describes the XS typemapping mechanism in unprecedented
+detail and combines new documentation with information extracted from
+L<perlxs> and the previously unofficial list of all core typemaps.
+
 =head3 L<XXX>
 
 XXX Description of the purpose of the new file here
@@ -346,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
@@ -462,6 +649,49 @@ C<-t> now works when stacked with other filetest operators [perl #77388].
 
 Stacked filetest operators now only call FETCH once on a tied argument.
 
+=item *
+
+C</.*/g> would sometimes refuse to match at the end of a string that ends
+with "\n".  This has been fixed [perl #109206].
+
+=item *
+
+C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> 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<my()> or C<our()>
+(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<did> affect earlier stable releases.  It is just the last
+sentence that does not apply to 5.14.
+
+=item *
+
+The C<SvPVutf8> C function no longer tries to modify its argument,
+resulting in errors [perl #108994].
+
+=item *
+
+C<SvPVutf8> now works properly with magical variables.
+
+=item *
+
+C<SvPVbyte> now works properly non-PVs.
+
+=item *
+
+C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under
+C<use locale> when the platform supports that.  Previously, they used
+the platform's native character set.
+
 =back
 
 =head1 Known Problems