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

index 00aa34f..973c66a 100644 (file)
@@ -23,6 +23,12 @@ XXX Any important notices here
 For details on what is in this release, see
 L<http://www.unicode.org/versions/Unicode7.0.0/>.
 
+=head2 Better heuristics on older platforms for determining locale UTF8ness
+
+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 Experimental C Backtrace API
 
 Starting from Perl 5.21.1, on some platforms Perl supports retrieving
@@ -63,10 +69,15 @@ ones unaffected.  See L<perllocale/The "use locale" pragma> for details.
 
 =head1 Security
 
-XXX Any security-related notices go here.  In particular, any security
-vulnerabilities closed should be noted here rather than in the
-L</Selected Bug Fixes> section.
+=head2 Perl is now always compiled with -D_FORTIFY_SOURCE=2 if available
+
+The 'code hardening' option called C<_FORTIFY_SOURCE>, available in
+gcc 4.*, is now always used for compiling Perl, if available.
 
+Note that this isn't necessarily a huge step since in many platforms
+the step had already been taken several years ago: many Linux
+distributions (like Fedora) have been using this option for Perl,
+and OS X has enforced the same for many years.
 [ List each security issue as a =head2 entry ]
 
 =head1 Incompatible Changes
@@ -150,6 +161,13 @@ deprecation warnings since then.
 
 =head1 Deprecations
 
+=head2 C<< /\C/ >> character class
+
+This character class, which matches a single byte, even if it appears
+in a multi-byte character has been deprecated. Matching single bytes
+in a multi-byte character breaks encapsulation, and can corrupt utf8
+strings.
+
 =head2 Using a NO-BREAK space in a character alias for C<\N{...}> is now
 deprecated
 
@@ -214,6 +232,22 @@ C<-T> and C<-B> filetests will return sooner when an empty file is detected.
 
 L<perl #121489|https://rt.perl.org/Ticket/Display.html?id=121489>
 
+=item *
+
+Refactoring of C<< pp_tied >> and CC<< pp_ref >> for small improvements.
+
+=item *
+
+Pathtools don't try to load XS on miniperl.
+
+=item *
+
+A typo fix reduces the size of the C<< OP >> structure.
+
+=item *
+
+Hash lookups where the key is a constant is faster.
+
 =back
 
 =head1 Modules and Pragmata
@@ -277,6 +311,10 @@ XXX Description of the purpose of the new file here
 
 =item *
 
+Improve documentation of C<< our >>.
+
+=item *
+
 C<-l> now notes that it will return false if symlinks aren't supported by the
 file system.
 
@@ -351,6 +389,28 @@ onto the next line by escaping them.
 
 =back
 
+=head3 L<< perlpolicy >>
+
+=over 4
+
+=item *
+
+We now have a code of conduct for the I<< p5p >> mailing list, as documented
+in L<< perlpolicy/STANDARDS OF CONDUCT >>.
+
+=back
+
+=head3 L<< perlsyn >>
+
+=over 4
+
+=item *
+
+The empty conditional in C<< for >> and C<< while >> is now documented
+in L<< perlsyn >>.
+
+=back
+
 =head3 L<Unicode::UCD>
 
 =over 4
@@ -553,6 +613,26 @@ negative.
 This warning may be changed or removed if it turn out that it was
 unwise to have added it.
 
+=item *
+
+L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument "%s" treated
+as 0 in increment (++)">
+
+(W numeric) The indicated string was fed as an argument to the C<++> operator
+which expects either a number or a string matching C</^[a-zA-Z]*[0-9]*\z/>.
+See L<perlop/Auto-increment and Auto-decrement> for details.
+
+=item *
+
+L<Redundant argument in %s|perldiag/Redundant argument in %s>
+
+(W redundant) You called a function with more arguments than other
+arguments you supplied indicated would be needed. Currently only
+emitted when a printf-type format required fewer arguments than were
+supplied, but might be used in the future for e.g. L<perlfunc/pack>.
+
+The warnings category C<< redundant >> is new. See also [RT #121025]
+
 =back
 
 =head2 Changes to Existing Diagnostics
@@ -645,23 +725,21 @@ Perl 5 to Perl 6 would have been easier.
 This build-time configuration option had been unmaintained for years,
 and had probably seriously diverged on both Perl 5 and Perl 6 sides.
 
-=back
+=item *
 
-=head1 Testing
+A new compilation flag, C<< -DPERL_OP_PARENT >> is available. For details,
+see the discussion below at L<< /Internal Changes >>.
 
-XXX Any significant changes to the testing of a freshly built perl should be
-listed here.  Changes which create B<new> files in F<t/> go here as do any
-large changes to the testing harness (e.g. when parallel testing was added).
-Changes to existing files in F<t/> aren't worth summarizing, although the bugs
-that they represent may be covered elsewhere.
+=back
 
-[ List each test improvement as a =item entry ]
+=head1 Testing
 
 =over 4
 
 =item *
 
-XXX
+C<< test.pl >> now allows C<< plan skip_all => $reason >>, to make it
+more compatible with C<< Test::More >>.
 
 =back
 
@@ -719,6 +797,13 @@ specifically ask for it.
 
 L<[perl #122000]|https://rt.perl.org/Ticket/Display.html?id=122000>.
 
+=item Solaris
+
+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>
+
 =back
 
 =head1 Internal Changes
@@ -750,6 +835,31 @@ A new macro L<C<isUTF8_CHAR>|perlapi/isUTF8_CHAR> has been written which
 efficiently determines if the string given by its parameters begins
 with a well-formed UTF-8 encoded character.
 
+=item *
+
+The following private API functions had their context parameter removed,
+C<Perl_cast_ulong>,  C<Perl_cast_i32>, C<Perl_cast_iv>,    C<Perl_cast_uv>,
+C<Perl_cv_const_sv>, C<Perl_mg_find>,  C<Perl_mg_findext>, C<Perl_mg_magical>,
+C<Perl_mini_mktime>, C<Perl_my_dirfd>, C<Perl_sv_backoff>, C<Perl_utf8_hop>.
+
+Users of the public API prefix-less calls remain unaffected.
+
+=item *
+
+Experimental support for ops in the optree to be able to locate their
+parent, if any. A general-purpose function, C<< op_sibling_splice() >>
+allows for general manipulating an C<< op_sibling >> chain. The last op
+in such a chain is now marked with the field C<< op_lastsib >>.
+
+A new build define, C<< -DPERL_OP_PARENT >> has been added; if
+given, it forces the core to use C<< op_lastsib >> to detect the
+last sibling in a chain, freeing the last C<< op_sibling >> pointer,
+which then points back to the parent (instead of being C<< NULL >>).
+
+A C-level C<< op_parent() >> function, and a C<< B >> C<< parent() >> method
+have been added; under a default build, they return C<< NULL >>, but when
+C<< -DPERL_OP_PARENT >> has been set, they return the parent of the current op.
+
 =back
 
 =head1 Selected Bug Fixes
@@ -810,7 +920,7 @@ this.
 
 =item *
 
-Many issues have been detected by L<Coverity|http://www.coverity.com/> and 
+Many issues have been detected by L<Coverity|http://www.coverity.com/> and
 fixed.
 
 =item *
@@ -836,6 +946,22 @@ where otherwise they would be considered metacharacters, and the pattern
 opening delimiter was the character, and the closing delimiter was its
 mirror character.
 
+=item *
+
+C<< s///e >> on tainted utf8 strings got C<< pos() >> messed up. This bug,
+introduced in 5.20, is now fixed. [RT #122148]
+
+=item *
+
+A non-word boundary in a regular expression (C<< \B >>) did not always
+match the end of the string; in particular C<< q{} =~ /\B/ >> did not
+match. This bug, introduced in perl 5.14, is now fixed. [RT #122090]
+
+=item *
+
+C<< " P" =~ /(?=.*P)P/ >> should match, but did not. This is now fixed.
+[RT #122171].
+
 =back
 
 =head1 Known Problems