From: Steve Hay Date: Mon, 16 Sep 2013 14:40:14 +0000 (+0100) Subject: perldelta for ea95436966 X-Git-Tag: upstream/5.20.0~1816 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=820689a12dd90c001eff6a71b9f8205a82275707;p=platform%2Fupstream%2Fperl.git perldelta for ea95436966 --- diff --git a/pod/perldelta.pod b/pod/perldelta.pod index d553cc6..36b2508 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -87,6 +87,42 @@ S>. Now, the only known place where S> is not respected is in the stringification of L<$!|perlvar/$!>. +=head2 Assignments of Windows sockets error codes to $! now prefer F values over WSAGetLastError() values + +In previous versions of Perl, Windows sockets error codes as returned by +WSAGetLastError() were assigned to $!, and some constants such as ECONNABORTED, +not in F in VC++ (or the various Windows ports of gcc) were defined to +corresponding WSAE* values to allow $! to be tested against the E* constants +exported by L and L. + +This worked well until VC++ 2010 and later, which introduced new E* constants +with values E 100 into F, including some being (re)defined by perl +to WSAE* values. That caused problems when linking XS code against other +libraries which used the original definitions of F constants. + +To avoid this incompatibility, perl now maps WSAE* error codes to E* values +where possible, and assigns those values to $!. The E* constants exported by +L and L are updated to match so that testing $! against them, +wherever previously possible, will continue to work as expected, and all E* +constants found in F are now exported from those modules with their +original F values + +In order to avoid breakage in existing Perl code which assigns WSAE* values to +$!, perl now intercepts the assignment and performs the same mapping to E* +values as it uses internally when assigning to $! itself. + +However, one backwards-incompatibility remains: existing Perl code which +compares $! against the numeric values of the WSAE* error codes that were +previously assigned to $! will now be broken in those cases where a +corresponding E* value has been assigned instead. This is only an issue for +those E* values E 100, which were always exported from L and +L with their original F values, and therefore could not be used +for WSAE* error code tests (e.g. WSAEINVAL is 10022, but the corresponding +EINVAL is 22). (E* values E 100, if present, were redefined to WSAE* +values anyway, so compatibility can be achieved by using the E* constants, +which will work both before and after this change, albeit using different +numeric values under the hood.) + =head1 Deprecations XXX Any deprecated features, syntax, modules etc. should be listed here. @@ -277,6 +313,14 @@ than L throughout. =item * +L has been upgraded from version 1.19 to 1.20. + +The list of E* constants exported on Windows has been updated to reflect the +changes made in the assignment of sockets error codes to $! (see +L). + +=item * + L has been upgraded from version 5.69 to 5.70. A number of typos have been corrected in the documentation. @@ -455,6 +499,14 @@ This upgrade is part of a larger change to use L rather than L. =item * +L has been upgraded from version 1.34 to 1.35. + +The list of E* constants exported on Windows has been updated to reflect the +changes made in the assignment of sockets error codes to $! (see +L). + +=item * + L has been upgraded from version 0.25 to 0.26. This upgrade is part of a larger change to support 64-bit string lengths in the