perldelta: import changes from perl5213delta.pod
authorRicardo Signes <rjbs@cpan.org>
Fri, 13 Mar 2015 22:50:23 +0000 (18:50 -0400)
committerRicardo Signes <rjbs@cpan.org>
Wed, 6 May 2015 01:14:58 +0000 (21:14 -0400)
Porting/perl5220delta.pod

index 973c66a..3ce1154 100644 (file)
@@ -29,6 +29,14 @@ On platforms that implement neither the C99 standard nor the POSIX 2001
 standard, determining if the current locale is UTF8 or not depends on
 heuristics.  These are improved in this release.
 
+=head2 Floating point parsing has been improved
+
+Parsing and printing of floating point values has been improved.
+
+As a completely new feature, hexadecimal floating point literals
+(like 0x1.23p-4)  are now supported, and they can be output with
+C<printf %a>.
+
 =head2 Experimental C Backtrace API
 
 Starting from Perl 5.21.1, on some platforms Perl supports retrieving
@@ -69,6 +77,11 @@ ones unaffected.  See L<perllocale/The "use locale" pragma> for details.
 
 =head1 Security
 
+=head2 The L<Safe> module could allow outside packages to be replaced
+
+Critical bugfix: outside packages could be replaced.  L<Safe> has
+been patched to 2.38 to address this.
+
 =head2 Perl is now always compiled with -D_FORTIFY_SOURCE=2 if available
 
 The 'code hardening' option called C<_FORTIFY_SOURCE>, available in
@@ -86,6 +99,12 @@ and OS X has enforced the same for many years.
 
 This has been deprecated since v5.18.
 
+=head2 S<C<use UNIVERSAL '...'>> is now a fatal error
+
+Importing functions from C<UNIVERSAL> has been deprecated since v5.12, and
+is now a fatal error.  S<C<"use UNIVERSAL">> without any arguments is still
+allowed.
+
 =head2 In double-quotish C<\cI<X>>, I<X> must now be a printable ASCII character
 
 In prior releases, failure to do this raised a deprecation warning.
@@ -305,6 +324,56 @@ XXX Description of the purpose of the new file here
 
 =head2 Changes to Existing Documentation
 
+=head3 L<perlguts>
+
+=over 4
+
+=item *
+
+Details on C level symbols and libperl.t added.
+
+=back
+
+=head3 L<perlhacktips>
+
+=over 4
+
+=item *
+
+Recommended replacements for tmpfile, atoi, strtol, and strtoul added.
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+ASCII v. EBCDIC clarifications added.
+
+=back
+
+=head3 L<perlsec>
+
+=over 4
+
+=item *
+
+Comments added on algorithmic complexity and tied hashes.
+
+=back
+
+=head3 L<perlvms>
+
+=over 4
+
+=item *
+
+Updated documentation on environment and shell interaction in VMS.
+
+=back
+
 =head3 L<perlfunc>
 
 =over 4
@@ -439,6 +508,21 @@ and New Warnings
 
 =over 4
 
+=item *
+
+L<Hexadecimal float: internal error|perldiag/"Hexadecimal float: internal error">
+
+(F) Something went horribly bad in hexadecimal float handling.
+
+=item *
+
+L<Hexadecimal float: unsupported long double format|perldiag/"Hexadecimal float: unsupported long double format">
+
+(F) You have configured Perl to use long doubles but
+the internals of the long double format are unknown,
+therefore the hexadecimal float output is impossible.
+
+
 =item *
 
 L<In '(?...)', the '(' and '?' must be adjacent in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"In '(?...)', the '(' and '?' must be adjacent in regex; marked by <-- HERE in m/%s/">
@@ -537,6 +621,38 @@ L<Illegal suidscript|perldiag/"Illegal suidscript">
 
 =over 4
 
+=item *
+
+L<Hexadecimal float: exponent overflow|perldiag/"Hexadecimal float: exponent overflow">
+
+(W overflow) The hexadecimal floating point has larger exponent
+than the floating point supports.
+
+=item *
+
+L<Hexadecimal float: exponent underflow|perldiag/"Hexadecimal float: exponent underflow">
+
+(W overflow) The hexadecimal floating point has smaller exponent
+than the floating point supports.
+
+=item *
+
+L<Hexadecimal float: mantissa overflow|perldiag/"Hexadecimal float: mantissa overflow">
+
+(W overflow) The hexadecimal floating point literal had more bits in
+the mantissa (the part between the 0x and the exponent, also known as
+the fraction or the significand) than the floating point supports.
+
+=item *
+
+L<Hexadecimal float: precision loss|perldiag/"Hexadecimal float: precision loss">
+
+(W overflow) The hexadecimal floating point had internally more
+digits than could be output.  This can be caused by unsupported
+long double formats, or by 64-bit integers not being available
+(needed to retrieve the digits under some configurations).
+
+
 =item *
 
 L<Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%s/">
@@ -641,6 +757,11 @@ The warnings category C<< redundant >> is new. See also [RT #121025]
 
 =item *
 
+C<require> with no argument or undef used to warn about a Null filename; now
+it dies with C<Missing or undefined argument to require>.
+
+=item *
+
 L<Variable length lookbehind not implemented in regex mE<sol>%sE<sol>|perldiag/"Variable length lookbehind not implemented in regex m/%s/">
 
 Information about Unicode behaviour has been added.
@@ -704,6 +825,11 @@ separate distributions (App::find2perl, App::s2p, App::a2p).
 
 =item *
 
+MurmurHash64A and MurmurHash64B can now be configured as the internal hash
+function.
+
+=item *
+
 C<make test.valgrind> now supports parallel testing.
 
 For example:
@@ -787,6 +913,21 @@ L</Modules and Pragmata> section.
 
 =over 4
 
+=item Android
+
+Build support has been improved for cross-compiling in general and for
+Android in particular.
+
+=item VMS
+
+C<finite>, C<finitel>, and C<isfinite> detection has been added to
+C<configure.com>, environment handling has had some minor changes, and
+a fix for legacy feature checking status.
+
+=item Windows
+
+C<%I64d> is now being used instead of C<%lld> for MinGW.
+
 =item OpenBSD
 
 On OpenBSD, Perl will now default to using the system C<malloc> due to the
@@ -799,11 +940,22 @@ L<[perl #122000]|https://rt.perl.org/Ticket/Display.html?id=122000>.
 
 =item Solaris
 
+=over 4
+
+=item *
+
 Builds on Solaris 10 with C<-Dusedtrace> would fail early since make
 didn't follow implied dependencies to build C<perldtrace.h>.  Added an
 explicit dependency to C<depend>.
 L<[perl #120120]|https://rt.perl.org/Ticket/Display.html?id=120120>
 
+=item *
+
+C<c99> options have been cleaned up, hints look for C<solstudio>
+as well as C<SUNWspro>, and support for native C<setenv> has been added.
+
+=back
+
 =back
 
 =head1 Internal Changes
@@ -812,6 +964,20 @@ L<[perl #120120]|https://rt.perl.org/Ticket/Display.html?id=120120>
 
 =item *
 
+Added L<perlapi/sync_locale>.
+Changing the program's locale should be avoided by XS code.  Nevertheless,
+certain non-Perl libraries called from XS, such as C<Gtk> do so.  When this
+happens, Perl needs to be told that the locale has changed.  Use this function
+to do so, before returning to Perl.
+
+=item *
+
+Added L<perlapi/grok_atou> as a safer replacement for atoi and strtol.
+
+XXX - I know this needs replacing. -- rjbs, 2015-03-13
+
+=item *
+
 The deprecated variable C<PL_sv_objcount> has been removed.
 
 =item *
@@ -962,6 +1128,31 @@ match. This bug, introduced in perl 5.14, is now fixed. [RT #122090]
 C<< " P" =~ /(?=.*P)P/ >> should match, but did not. This is now fixed.
 [RT #122171].
 
+=item *
+
+Failing to compile C<use Foo> in an eval could leave a spurious
+C<BEGIN> subroutine definition, which would produce a "Subroutine
+BEGIN redefined" warning on the next use of C<use>, or other C<BEGIN>
+block.  [perl #122107]
+
+=item *
+
+C<method { BLOCK } ARGS> syntax now correctly parses the arguments if they
+begin with an opening brace.  [perl #46947]
+
+=item *
+
+External libraries and Perl may have different ideas of what the locale is.
+This is problematic when parsing version strings if the locale's numeric
+separator has been changed.  Version parsing has been patched to ensure
+it handles the locales correctly.  [perl #121930]
+
+=item *
+
+A bug has been fixed where zero-length assertions and code blocks inside of a
+regex could cause C<pos> to see an incorrect value.  [perl #122460]
+
+
 =back
 
 =head1 Known Problems