From 6ecd0e534f967b3a13e6b92b0155473cb9c49448 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Fri, 11 Apr 2014 18:36:11 -0400 Subject: [PATCH] reorder "core enhancements" section --- Porting/perl5200delta.pod | 143 ++++++++++++++++++++++------------------------ 1 file changed, 68 insertions(+), 75 deletions(-) diff --git a/Porting/perl5200delta.pod b/Porting/perl5200delta.pod index f79fac8..8c0919f 100644 --- a/Porting/perl5200delta.pod +++ b/Porting/perl5200delta.pod @@ -2,9 +2,6 @@ =head1 NAME -[ this is a template for a new perldelta file. Any text flagged as XXX needs -to be processed before release. ] - perldelta - what is new for perl v5.20.0 =head1 DESCRIPTION @@ -15,41 +12,28 @@ This document describes differences between the 5.18.0 release and the If you are upgrading from an earlier release such as 5.16.0, first read L, which describes differences between 5.16.0 and 5.18.0. -=head1 Notice - -XXX Any important notices here - =head1 Core Enhancements -=head2 C now uses a consistent random number generator - -Previously perl would use a platform specific random number generator, varying -between the libc rand(), random() or drand48(). - -This meant that the quality of perl's random numbers would vary from platform -to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX -platforms such as Linux with drand48(). - -Perl now uses its own internal drand48() implementation on all platforms. This -does not make perl's C cryptographically secure. [perl #115928] - -=head2 Better 64-bit support +=head2 Subroutine signatures -On 64-bit platforms, the internal array functions now use 64-bit offsets, -allowing Perl arrays to hold more than 2**31 elements, if you have the memory -available. +Declarative syntax to unwrap argument list into lexical variables. +C checks the number of arguments and puts the +arguments into lexical variables. Signatures are not equivalent to +the existing idiom of C. Signatures +are only available by enabling a non-default feature, and generate +warnings about being experimental. The syntactic clash with +prototypes is managed by disabling the short prototype syntax when +signatures are enabled. -The regular expression engine now supports strings longer than 2**31 -characters. [perl #112790, #116907] +See L for details. -The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and -PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and -parameters. +=head2 Cs now take a C attribute -=head2 New slice syntax +When declaring or defining a C, the prototype can now be specified inside +of a C attribute instead of in parens following the name. -The new C<%hash{...}> and C<%array[...]> syntax returns a list of key/value (or -index/value) pairs. See L. +For example, C could be rewritten as +C. =head2 More consistent prototype parsing @@ -66,19 +50,22 @@ prototypes set by C. Now it is permitted, and the parser no longer strips whitespace. This means C returns the original prototype, whitespace and all. -=head2 B<-F> now implies B<-a> and B<-a> implies B<-n> +=head2 C now uses a consistent random number generator -Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or B<-p> -was a no-op, with this change, if you supply B<-F> then both B<-a> and B<-n> -are implied and if you supply B<-a> then B<-n> is implied. +Previously perl would use a platform specific random number generator, varying +between the libc rand(), random() or drand48(). -You can still use B<-p> for its extra behaviour. [perl #116190] +This meant that the quality of perl's random numbers would vary from platform +to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX +platforms such as Linux with drand48(). -=head2 Unicode 6.3 now supported +Perl now uses its own internal drand48() implementation on all platforms. This +does not make perl's C cryptographically secure. [perl #115928] -Perl now supports and is shipped with Unicode 6.3 (though Perl may be -recompiled with any previous Unicode release as well). A detailed list of -Unicode 6.3 changes is at L. +=head2 New slice syntax + +The new C<%hash{...}> and C<%array[...]> syntax returns a list of key/value (or +index/value) pairs. See L. =head2 Experimental Postfix Dereferencing @@ -108,33 +95,29 @@ they are suppressed. For more information, consult L. -=head2 Cs now take a C attribute - -When declaring or defining a C, the prototype can now be specified inside -of a C attribute instead of in parens following the name. - -For example, C could be rewritten as -C. - -=head2 $a and $b warnings exemption +=head2 Unicode 6.3 now supported -The special variables $a and $b, used in C, are now exempt from "used -once" warnings, even where C is not used. This makes it easier for -CPAN modules to provide functions using $a and $b for similar purposes. -[perl #120462] +Perl now supports and is shipped with Unicode 6.3 (though Perl may be +recompiled with any previous Unicode release as well). A detailed list of +Unicode 6.3 changes is at L. =head2 New C<\p{Unicode}> regular expression pattern property This is a synonym for C<\p{Any}> and matches the set of Unicode-defined code points 0 - 0x10FFFF. -=head2 C> now compiles on systems without locale ability +=head2 Better 64-bit support -Previously doing this caused the program to not compile. Within its -scope the program behaves as if in the "C" locale. Thus programs -written for platforms that support locales can run on locale-less -platforms without change. Attempts to change the locale away from the -"C" locale will, of course, fail. +On 64-bit platforms, the internal array functions now use 64-bit offsets, +allowing Perl arrays to hold more than 2**31 elements, if you have the memory +available. + +The regular expression engine now supports strings longer than 2**31 +characters. [perl #112790, #116907] + +The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and +PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and +parameters. =head2 PERL_DEBUG_READONLY_COW @@ -146,23 +129,13 @@ correctly. See L for detail. This feature was actually added in 5.19.8, but was unintentionally omitted from its delta document. -=head2 C<-DL> runtime option now added for tracing locale setting - -This is designed for Perl core developers to aid in field debugging bugs -regarding locales. - -=head2 Subroutine signatures - -Declarative syntax to unwrap argument list into lexical variables. -C checks the number of arguments and puts the -arguments into lexical variables. Signatures are not equivalent to -the existing idiom of C. Signatures -are only available by enabling a non-default feature, and generate -warnings about being experimental. The syntactic clash with -prototypes is managed by disabling the short prototype syntax when -signatures are enabled. +=head2 C> now compiles on systems without locale ability -See L for details. +Previously doing this caused the program to not compile. Within its +scope the program behaves as if in the "C" locale. Thus programs +written for platforms that support locales can run on locale-less +platforms without change. Attempts to change the locale away from the +"C" locale will, of course, fail. =head2 More locale initialization fallback options @@ -175,6 +148,26 @@ C locale, and only if that fails, will it fall back to C<"C">. On Windows machines, Perl will try, ahead of using C<"C">, the system default locale if all the locales given by environment variables fail. +=head2 C<-DL> runtime option now added for tracing locale setting + +This is designed for Perl core developers to aid in field debugging bugs +regarding locales. + +=head2 B<-F> now implies B<-a> and B<-a> implies B<-n> + +Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or B<-p> +was a no-op, with this change, if you supply B<-F> then both B<-a> and B<-n> +are implied and if you supply B<-a> then B<-n> is implied. + +You can still use B<-p> for its extra behaviour. [perl #116190] + +=head2 $a and $b warnings exemption + +The special variables $a and $b, used in C, are now exempt from "used +once" warnings, even where C is not used. This makes it easier for +CPAN modules to provide functions using $a and $b for similar purposes. +[perl #120462] + =head1 Security =head2 Avoid possible read of free()d memory during parsing -- 2.7.4