This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 42409c4069 (truncate FILENAME)
[perl5.git] / pod / perldelta.pod
index 380b54c..bc0f766 100644 (file)
@@ -5,16 +5,16 @@
 [ 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.17.1
+perldelta - what is new for perl v5.17.3
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.17.0 release and
-the 5.17.1 release.
+This document describes differences between the 5.17.2 release and
+the 5.17.3 release.
 
-If you are upgrading from an earlier release such as 5.16.0, first read
-L<perl5170delta>, which describes differences between 5.16.0 and
-5.17.0.
+If you are upgrading from an earlier release such as 5.17.1, first read
+L<perl5172delta>, which describes differences between 5.17.1 and
+5.17.2.
 
 =head1 Notice
 
@@ -38,19 +38,21 @@ L</Selected Bug Fixes> section.
 
 =head1 Incompatible Changes
 
-XXX For a release on a stable branch, this section aspires to be:
+[ List each incompatible change as a =head2 entry ]
 
-    There are no changes intentionally incompatible with 5.XXX.XXX
-    If any exist, they are bugs, and we request that you submit a
-    report.  See L</Reporting Bugs> below.
+=head2 C<$ENV{foo} = undef> deletes value from environ, like C<delete $ENV{foo}>
 
-=head2 C<\N{BELL}> now refers to U+1F514 instead of U+0007
+This facilitates use of C<local()> with C<%ENV> entries.  In previous
+versions of Perl, C<undef> was converted to the empty string.
 
-Unicode 6.0 reused the name "BELL" for a different code point than it
-traditionally had meant.  Since Perl v5.14, use of this name still
-referred to U+0007, but would raise a deprecated warning.  Now, "BELL"
-refers to U+1F514, and the name for U+0007 is "ALERT".  All the
-functions in L<charnames> have been correspondingly updated.
+=head2 Defined values stored in environment are forced to byte strings
+
+A value stored in an environment variable has always been stringified.  In
+this release, it is converted to be only a byte string.  First, it is forced
+to be a only a string.  Then if the string is utf8 and the equivalent of
+C<utf8::downgrade> works, that result is used; otherwise, the equivalent of
+C<utf8::encode> is used, and a warning is issued about wide characters
+(L</Diagnostics>).
 
 =head1 Deprecations
 
@@ -103,42 +105,10 @@ XXX
 
 =item *
 
-L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
-
-Manifest files are now correctly embedded for those versions of VC++ which
-make use of them.
-
-=item *
-
-L<File::DosGlob> has been upgraded from version 1.07 to 1.08.
-
-There are no visible changes, only minor internal refactorings.
-
-=item *
-
-L<File::Spec::Unix> has been upgraded from version 3.39_02 to 3.39_03.
-
-C<abs2rel> could produce incorrect results when given two relative paths or
-the root directory twice [perl #111510].
-
-=item *
-
-L<IO> has been upgraded from version 1.25_06 to version 1.25_07.
-
-C<sync()> can now be called on read only file handles [perl #64772].
-
-=item *
-
-L<Pod::Html> has been upgraded from version 1.15_02 to 1.16.
-
-The option C<--libpods> has been re-instated. It is deprecated, and its use
-does nothing other than issue a warning that it is no longer supported.
-
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.43 to version 0.44.
-This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
-that returns all the casefolds.
+L<B> has been upgraded from version 1.36 to version 1.37. All C<CVf_*> and
+C<GVf_*> and more SV-related flag values are now provided as constants in
+the C<B::> namespace and available for export. The default export list has
+not changed.
 
 =back
 
@@ -202,6 +172,15 @@ include any changes in L<perldiag> that reconcile it to the C<C> code.
 
 XXX Newly added diagnostic messages go here
 
+=over 4
+
+=item *
+
+Attempts to put wide characters into environment variables via %ENV provoke
+the warning "Wide character in setenv".
+
+=back
+
 =head3 New Errors
 
 =over 4
@@ -331,10 +310,9 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item Win32
+=item XXX-some-platform
 
-C<link> on Win32 now attempts to set C<$!> to more appropriate values
-based on the Win32 API error code. [perl #112272]
+XXX
 
 =back
 
@@ -366,26 +344,33 @@ L</Modules and Pragmata>.
 
 =item *
 
-Perl now works as well as can be expected on all releases of Unicode so
-far.  In v5.16, it worked on Unicodes 6.0 and 6.1, but there were
-various bugs for earlier releases; the older the release the more
-problems.
+C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and
+U+200D (ZERO WIDTH JOINER).  C<\W> no longer matches these.  This change
+is because Unicode corrected their definition of what C<\w> should match.
+
+=item *
+
+C<dump LABEL> no longer leaks its label.
 
 =item *
 
-C<vec> no longer produces "uninitialized" warnings in lvalue context
-[perl #9423].
+Constant folding no longer changes the behaviour of functions like C<stat>
+and C<truncate> that can take either filenames or handles.
+C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is
+an arbitrary expression), rather than the handle "foo".
+
+=item *
+
+C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name
+if the filehandle has been deleted.  This was broken in Perl 5.16.0.
 
 =back
 
 =head1 Known Problems
 
 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
-tests that had to be C<TODO>ed for the release would be noted here, unless
-they were specific to a particular platform (see below).
-
-This is a list of some significant unfixed bugs, which are regressions
-from either 5.XXX.XXX or 5.XXX.XXX.
+tests that had to be C<TODO>ed for the release would be noted here. Unfixed
+platform specific bugs also go here.
 
 [ List each fix as a =item entry ]
 
@@ -406,7 +391,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.17.0..HEAD
+  perl Porting/acknowledgements.pl v5.17.2..HEAD
 
 =head1 Reporting Bugs