summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Signes <rjbs@cpan.org>2016-04-07 08:20:49 -0400
committerRicardo Signes <rjbs@cpan.org>2016-04-10 19:37:51 -0400
commit276861fa3fbe1db0d7db262ff56709e58754bc58 (patch)
treec37d05c0fa06808a283e002c39c67e31f4a631e3
parent803c4bd5792ab2d8abdeb3b2b36cb280f43316a5 (diff)
downloadperl-276861fa3fbe1db0d7db262ff56709e58754bc58.tar.gz
perldelta: merge in perl5239delta
-rw-r--r--Porting/perl5240delta.pod121
1 files changed, 119 insertions, 2 deletions
diff --git a/Porting/perl5240delta.pod b/Porting/perl5240delta.pod
index 0cc94ea509..28a0ee89c9 100644
--- a/Porting/perl5240delta.pod
+++ b/Porting/perl5240delta.pod
@@ -25,6 +25,13 @@ bundle now includes the C<postderef_qq> feature.
For details on what is in this release, see
L<http://www.unicode.org/versions/Unicode8.0.0/>.
+=head2 perl will now croak when closing an in-place output file fails
+
+Until now, failure to close the output file for an in-place edit was not
+detected, meaning that the input file could be clobbered without the edit being
+successfully completed. Now, when the output file cannot be closed
+successfully, an exception is raised.
+
=head2 New C<\b{lb}> boundary in regular expressions
C<lb> stands for Line Break. It is a Unicode property
@@ -113,7 +120,21 @@ 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>
+in the salt.
+L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
+
+=head2 Remove duplicate environment variables from C<environ>
+
+Previously, if an environment variable appeared more than once in
+C<environ[]>, C<%ENV> would contain the last entry for that name,
+while a typical C<getenv()> would return the first entry. We now
+make sure C<%ENV> contains the same as what C<getenv> returns.
+
+Second, we remove duplicates from C<environ[]>, so if a setting
+with that name is set in C<%ENV> we won't pass an unsafe value
+to a child process.
+
+[CVE-2016-2381]
=head1 Incompatible Changes
@@ -342,6 +363,10 @@ Single arguments in list assign are now slightly faster:
($x) = (...);
(...) = ($x);
+=item *
+
+Less peak memory is now used when compiling regular expression patterns.
+
=back
=head1 Modules and Pragmata
@@ -417,6 +442,12 @@ The documentation of C<hex> has been revised to clarify valid inputs.
Better explain meaning of negative PIDs in C<waitpid>.
L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
+=item *
+
+General cleanup: there's more consistency now (in POD usage, grammar, code
+examples), better practices in code examples (use of C<my>, removal of bareword
+filehandles, dropped usage of C<&> when calling subroutines, ...), etc.
+
=back
=head3 L<perlguts>
@@ -718,6 +749,10 @@ L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
=item *
+Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
+
+=item *
+
C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
not used by C<< PPPort.pm >>, only by its test files.
@@ -736,7 +771,6 @@ the interpreter, since Perl 5.17.10. This has been fixed.
F<Configure> should handle spaces in paths a little better.
-
=item *
No longer generate EBCDIC POSIX-BC tables. We don't believe anyone is
@@ -1015,6 +1049,34 @@ C<truncate($filename, $size)> now works for files over 4GB in size.
Parallel building has been added to the dmake C<makefile.mk> makefile. All
Win32 compilers are supported.
+=item *
+
+Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
+result in an invalid C<$Config{archname}> for the resulting perl.
+[perl #127584]
+
+=item *
+
+Errors set by Winsock functions are now put directly into C<$^E>, and the
+relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
+modules for testing this against.
+
+The previous behaviour of putting the errors (converted to POSIX-style C<E*>
+error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
+of like-named Winsock and POSIX error constants, a relationship between which
+has unfortunately been established in one way or another since Perl 5.8.0.
+
+The new behaviour provides a much more robust solution for checking Winsock
+errors in portable software without accidentally matching POSIX tests that were
+intended for other OSes and may have different meanings for Winsock.
+
+The old behaviour is currently retained, warts and all, for backwards
+compatibility, but users are encouraged to change any code that tests C<$!>
+against C<E*> constants for Winsock errors to instead test C<$^E> against
+C<WSAE*> constants. After a suitable deprecation period, the old behaviour may
+be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
+possible confusion over which error variable to check.
+
=back
=item ppc64el floating point
@@ -1223,6 +1285,61 @@ C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
=item *
+It now works properly to specify a user-defined property, such as
+
+ qr/\p{mypkg1::IsMyProperty}/i
+
+with C</i> caseless matching, an explicit package name, and
+I<IsMyProperty> not defined at the time of the pattern compilation.
+
+=item *
+
+Perl's memcpy(), memmove(), memset() and memcmp() fallbacks are now
+more compatible with the originals. [perl #127619]
+
+=item *
+
+Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
+to modify the source SV, resulting in the program dying. [perl #127635]
+
+=item *
+
+Fixed a spurious warning about posix character classes. [perl #127581]
+
+=item *
+
+Fixed an obscure case where a pattern could fail to match. This only
+occurred when matching characters from the set of C1 controls, when
+the target matched string was in UTF-8, and only on EBCDIC platforms.
+
+=item *
+
+Fixed over eager warnings for C<< /[.foo.]/ >>.
+
+This prevents Perl from warning about constructs like C<< /[.].*[.]/ >>.
+[perl #127582, #127604]
+
+=item *
+
+Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
+it assumed that if the filename (without the F<.pmc?> extension) differed
+from the package name, if was a misspelled use statement (i.e. C<use Strict>
+instead of C<use strict>). We now check whether there's really a
+miscapitalization happening, and not another issue.
+
+=item *
+
+Turn an assertion into a more user friendly failure when parsing
+regexes. [perl #127599]
+
+=item *
+
+Correctly raise an error when trying to compile patterns with
+unterminated character classes while there are trailing backslashes.
+[perl #126141].
+
+=item *
+
Line numbers larger than 2**31-1 but less than 2**32 are no longer
returned by caller() as negative numbers. [perl #126991]