summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Hay <steve.m.hay@googlemail.com>2016-03-17 23:28:29 +0000
committerSteve Hay <steve.m.hay@googlemail.com>2016-03-17 23:30:37 +0000
commit756bd853cd4bf0ba281f8bf508596fbb779c4a5c (patch)
tree2f43eec92fcda96532af8271db7faecf8bed1e8f
parenta9ad02a848bdc09f2db9ffd8a955709e81afce74 (diff)
downloadperl-756bd853cd4bf0ba281f8bf508596fbb779c4a5c.tar.gz
perldelta for 22e30cb2a3, 6156385671 and a28fff5120
-rw-r--r--pod/perldelta.pod28
1 files changed, 28 insertions, 0 deletions
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index e305d03466..60f8c22842 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -317,10 +317,38 @@ L</Modules and Pragmata> section.
=item Win32
+=over
+
+=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
+
=back
=head1 Internal Changes