perldelta: merge in changes from perl5237delta
authorRicardo Signes <rjbs@cpan.org>
Sun, 13 Mar 2016 22:36:39 +0000 (18:36 -0400)
committerRicardo Signes <rjbs@cpan.org>
Sun, 10 Apr 2016 23:37:51 +0000 (19:37 -0400)
Porting/perl5240delta.pod

index ee6b11c..6f31a52 100644 (file)
@@ -16,6 +16,15 @@ This document describes the differences between the 5.22.0 release and the
 For details on what is in this release, see
 L<http://www.unicode.org/versions/Unicode8.0.0/>.
 
+=head2 New C<\b{lb}> boundary in regular expressions
+
+C<lb> stands for Line Break.  It is a Unicode property
+that determines where a line of text is suitable to break (typically so
+that it can be output without overflowing the available horizontal
+space).  This capability has long been furnished by the
+L<Unicode::LineBreak> module, but now a light-weight, non-customizable
+version that is suitable for many purposes is in core Perl.
+
 =head2 C<qr/(?[ ])/> now works in UTF-8 locales
 
 L<Extended Bracketed Character Classes|perlrecharclass/Extended Bracketed Character Classes>
@@ -69,8 +78,34 @@ That is, C<< sprintf '|%.*2$|', 2, 3 >> now returns C<|002|>. This extends
 the existing reordering mechanism (which allows reordering for arguments
 that are used as format fields, widths, and vector separators).
 
+=head1 Security
+
+=head2 fix out of boundary access in Win32 path handling
+
+This is CVE-2015-8608.  For more information see
+L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>
+
+=head2 fix loss of taint in canonpath
+
+This is CVE-2015-8607.  For more information see
+L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>
+
+=head2 Avoid accessing uninitialized memory in win32 C<crypt()>
+
+Added validation that will detect both a short salt and invalid characters
+in the salt.  L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
+
 =head1 Incompatible Changes
 
+=head2 C<qr/\b{wb}/> is now tailored to Perl expectations
+
+This is now more suited to be a drop-in replacement for plain C<\b>, but
+giving better results for parsing natural language.  Previously it
+strictly followed the current Unicode rules which calls for it to match
+between each white space character.  Now it doesn't generally match
+within spans of white space, behaving like C<\b> does.  See
+L<perlrebackslash/\b{wb}>
+
 =head2 Regular expression compilation errors
 
 Some regular expression patterns that had runtime errors now
@@ -421,6 +456,72 @@ exports anything.  [perl #125410]
 
 =head2 Changes to Existing Documentation
 
+=head3 L<perlsyn>
+
+=over 4
+
+=item *
+
+Fixed a broken example where C<=> was used instead of
+C<==> in conditional in do/while example.
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+Better explain meaning of negative PIDs in C<waitpid>.
+L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
+
+=back
+
+=head3 L<perlgit>
+
+=over 4
+
+=item *
+
+Move sample commands into verbatim paragraphs.
+
+=item *
+
+Improve hyperlinks for all email addresses, RT tickets
+and commit hashes.
+
+=item *
+
+Consistently refer to bisect.pl as F<Porting/bisect.pl>
+
+=item *
+
+Miscellaneous grammar and POD fixes.
+
+=back
+
+=head3 L<perlreftut>
+
+=over 4
+
+=item *
+
+Fix some examples to be L<strict> clean.
+
+=back
+
+=head3 L<perlrebackslash>
+
+=over 4
+
+=item *
+
+Clarify that in languages like Japanese and Thai, dictionary lookup
+is required to determine word boundaries.
+
+=back
+
 =head3 L<perlfunc>
 
 =over 4
@@ -667,6 +768,13 @@ are called on handle with the C<:utf8> layer.
 
 =item *
 
+Accessing the C<IO> part of a glob as C<FILEHANDLE> instead of C<IO> is no
+longer deprecated.  It is discouraged to encourage uniformity (so that, for
+example, one can grep more easily) but it will not be removed.
+L<[perl #127060]|https://rt.perl.org/Ticket/Display.html?id=127060>
+
+=item *
+
 The diagnostic C<< Hexadecimal float: internal error >> has been changed to
 C<< Hexadecimal float: internal error (%s) >> to include more information.
 
@@ -693,6 +801,24 @@ L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend"
 
 =item *
 
+F<Configure> no longer probes for F<libnm> by default.  Originally
+this was the "New Math" library, but the name has been re-used by the
+GNOME NetworkManager.
+L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
+
+=item *
+
+No longer generate EBCDIC POSIX-BC tables.  We don't believe anyone is
+using Perl and POSIX-BC at this time, and by not generating these tables
+it saves time during development, and makes the resulting tar ball smaller.
+
+=item *
+
+The Win32 miniperl now has a real C<getcwd> which increases build performance
+resulting in C<getcwd()> being 605x faster in Win32 miniperl.
+
+=item *
+
 C<Configure> now acts as if the C<-O> option is always passed, allowing command
 line options to override saved configuration.  This should eliminate confusion
 when command line options are ignored for no obvious reason.  C<-O> is now
@@ -807,6 +933,16 @@ C<< -DPERL_NO_INLINE_FUNCTIONS >>.
 
 =item *
 
+On VMS, the math function prototypes in C<math.h> are now visible under C++.
+Now building the POSIX extension with C++ will no longer crash.
+
+=item *
+
+VMS has had C<setenv/unsetenv> since v7.0 (released in 1996), C<Perl_vmssetenv>
+now always uses C<setenv/unsetenv>.
+
+=item *
+
 Perl now implements its own C<killpg> by scanning for processes in the
 specified process group, which may not mean exactly the same thing as a Unix
 process group, but allows us to send a signal to a parent (or master) process
@@ -819,6 +955,17 @@ to signal all processes in the same group as C<$pid>.
 
 =back
 
+=item FreeBSD
+
+=over
+
+=item *
+
+Use the C<fdclose()> function from FreeBSD if it is available.
+L<[perl #126847]|https://rt.perl.org/Ticket/Display.html?id=126847>
+
+=back
+
 =item Win32
 
 =over
@@ -978,6 +1125,35 @@ Perl 5.22.1.
 
 =item *
 
+The obscure C<PL_timesbuf> variable, effectively a vestige of Perl 1, has
+been removed. It was documented as deprecated in Perl 5.20, with a statement
+that it would be removed early in the 5.21.x series; that has now finally
+happened.
+L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351>
+
+=item *
+
+Remove unwarranted assertion in C<Perl_newATTRSUB_x()>. If a stub subroutine
+definition with a prototype has been seen, then any subsequent stub (or
+definition) of the same subroutine with an attribute was causing an assertion
+failure because of a null pointer.
+L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845>
+
+=item *
+
+Replace C<::> with C<__> in C<ExtUtils::ParseXS> like it's done for
+parameters/return values. This is more consistent, and simplifies writing XS
+code wrapping C++ classes into a nested Perl namespace (it requires only
+a typedef for C<Foo__Bar> rather than two, one for C<Foo_Bar> and the other
+for C<Foo::Bar>).
+
+=item *
+
+Deprecate the C<to_utf8_case()> function, see
+L<http://nntp.perl.org/group/perl.perl5.porters/233287>.
+
+=item *
+
 Perl core code and the threads extension have been annotated so that,
 if Perl is configured to use threads, then during compile-time clang (3.6
 or later) will warn about suspicious uses of mutexes.
@@ -1041,6 +1217,46 @@ C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
 
 =item *
 
+A regression that allowed undeclared barewords in hash keys to work despite
+strictures has been fixed.
+L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981>
+
+=item *
+
+Calls to the placeholder C<&PL_sv_yes> used internally when an C<import()>
+or C<unimport()> method isn't found now correctly handle scalar context.
+L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
+
+=item *
+
+Fixed some problems introduced in 5.23.2 with list assignment dealing
+with magic and XS functions returning their arguments.
+L<[perl #126633]|https://rt.perl.org/Ticket/Display.html?id=126633>
+
+=item *
+
+Report more context when we see an array where we expect to see an
+operator and avoid an assertion failure.
+L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>
+
+=item *
+
+Modifying an array that was previously a package C<@ISA> no longer
+causes assertion failures or crashes.
+L<[perl #123788]|https://rt.perl.org/Ticket/Display.html?id=123788>
+
+=item *
+
+Retain binary compatibility across plain and DEBUGGING perl builds.
+L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212>
+
+=item *
+
+Avoid leaking memory when setting C<$ENV{foo}> on darwin.
+L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
+
+=item *
+
 C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
 of characters from the start of the regex, perl needs to count back that
 many characters from the current C<pos()> position and start matching from