This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for unterminated here-docs
[perl5.git] / pod / perldelta.pod
index 6f545d5..1cf5a88 100644 (file)
@@ -28,6 +28,13 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
+=head2 Computed Labels
+
+The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
+operator, now allow arbitrary expressions to be used to compute labels at
+run time.  Previously, any argument that was not a constant was treated as
+the empty string.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -54,6 +61,13 @@ 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>).
 
+=head2 C<given> now aliases the global $_
+
+Instead of assigning to an implicit lexical $_, C<given> now makes the
+global $_ an alias for its argument, just like C<foreach>.  However, it
+still uses lexical $_ if there is lexical $_ in scope (again, just like
+C<foreach>).
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -110,6 +124,17 @@ 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.
 
+=item *
+
+L<B::Deparse> has been upgraded from version 1.15 to 1.16.  It now deparses
+loop controls with the correct precedence.
+
+=item *
+
+L<Storable> has been upgraded from version 2.37 to 2.38.  It can now freeze
+and thaw vstrings correctly.  This causes a slight incompatible change in
+the storage format, so the format version has increased to 2.9.
+
 =back
 
 =head2 Removed Modules and Pragmata
@@ -141,13 +166,15 @@ XXX Changes which significantly change existing files in F<pod/> go here.
 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
 section.
 
-=head3 L<XXX>
+=head3 L<perlfunc>, L<perlop>
 
 =over 4
 
 =item *
 
-XXX Description of the change here
+Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have
+always had the same precedence as assignment operators, but this was never
+documented until now.
 
 =back
 
@@ -187,7 +214,12 @@ the warning "Wide character in setenv".
 
 =item *
 
-XXX L<message|perldiag/"message">
+L<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
+
+This message now occurs when a here document label has an initial quotation mark but the final quotation mark is missing.
+
+This replaces a bogus and misleading error message about not finding the
+label itself [perl #114104].
 
 =back
 
@@ -359,6 +391,40 @@ 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.
+
+=item *
+
+Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
+longer cause double frees or panic messages.
+
+=item *
+
+C<s///> now turns vstrings into plain strings when performing a
+substitution, even if the resulting string is the same (C<s/a/a/>).
+
+=item *
+
+Prototype mismatch warnings no longer erroneously treat constant subs as
+having no prototype when they actually have "".
+
+=item *
+
+Constant subroutines and forward declarations no longer prevent prototype
+mismatch warnings from omitting the sub name.
+
+=item *
+
+C<undef> on a subroutine now clears call checkers.
+
+=item *
+
+The C<ref> operator started leaking memory on blessed objects in Perl
+5.16.0.  This has been fixed [perl #114340].
+
 =back
 
 =head1 Known Problems