perl
view release on metacpan or search on metacpan
pod/perl5320delta.pod view on Meta::CPAN
=item *
Added the C<< PL_curstackinfo->si_cxsubix >> field. This records the stack index
of the most recently pushed sub/format/eval context. It is set and restored
automatically by C<cx_pushsub()>, C<cx_popsub()> etc., but would need to be
manually managed if you do any unusual manipulation of the context stack.
=item *
Various macros dealing with character type classification and changing case
where the input is encoded in UTF-8 now require an extra parameter to prevent
potential reads beyond the end of the buffer. Use of these has generated a
deprecation warning since Perl 5.26. Details are in
L<perldeprecation/In XS code, use of various macros dealing with UTF-8.>
=item *
A new parser function L<parse_subsignature()|perlapi/parse_subsignature>
allows a keyword plugin to parse a subroutine signature while C<use feature
'signatures'> is in effect. This allows custom keywords to implement
semantics similar to regular C<sub> declarations that include signatures.
L<[GH #16261]|https://github.com/Perl/perl5/issues/16261>
=item *
Since on some platforms we need to hold a mutex when temporarily
switching locales, new macros (C<STORE_LC_NUMERIC_SET_TO_NEEDED_IN>,
C<WITH_LC_NUMERIC_SET_TO_NEEDED> and C<WITH_LC_NUMERIC_SET_TO_NEEDED_IN>)
have been added to make it easier to do this safely and efficiently
as part of L<[GH #17034]|https://github.com/Perl/perl5/issues/17034>.
=item *
The memory bookkeeping overhead for allocating an OP structure has been
reduced by 8 bytes per OP on 64-bit systems.
=item *
L<eval_pv()|perlapi/eval_pv> no longer stringifies the exception when
C<[GH #17035]|https://github.com/Perl/perl5/issues/17035>]
=item *
The PERL_DESTRUCT_LEVEL environment variable was formerly only honoured on perl
binaries built with DEBUGGING support. It is now checked on all perl builds.
Its normal use is to force perl to individually free every block of memory
which it has allocated before exiting, which is useful when using automated
leak detection tools such as valgrind.
=item *
The API eval_sv() now accepts a C<G_RETHROW> flag. If this flag is set and an
exception is thrown while compiling or executing the supplied code, it will be
rethrown, and eval_sv() will not return.
L<[GH #17036]|https://github.com/Perl/perl5/issues/17036>
=item *
As part of the fix for
L<[GH #1537]|https://github.com/Perl/perl5/issues/1537> perl_parse()
now returns non-zero if exit(0) is called in a C<BEGIN>, C<UNITCHECK> or
C<CHECK> block.
=item *
Most functions which recursively walked an op tree during compilation have been
made non-recursive. This avoids SEGVs from stack overflow when the op tree is
deeply nested, such as C<$n == 1 ? "one" : $n == 2 ? "two" : ....> (especially
in code which is auto-generated).
This is particularly noticeable where the code is compiled within a separate
thread, as threads tend to have small stacks by default.
=back
=head1 Selected Bug Fixes
=over 4
=item *
Previously L<perlfunc/require> would only treat the special built-in
SV C<&PL_sv_undef> as a value in C<%INC> as if a previous C<require>
has failed, treating other undefined SVs as if the previous C<require>
has succeeded. This could cause unexpected success from C<require>
e.g., on C<local %INC = %INC;>. This has been fixed. [L<GH #17428|https://github.com/Perl/perl5/issues/17428>]
=item *
C<(?{...})> eval groups in regular expressions no longer unintentionally
trigger "EVAL without pos change exceeded limit in regex" [L<GH #17490|https://github.com/Perl/perl5/issues/17490>].
=item *
C<(?[...])> extended bracketed character classes do not wrongly raise an
error on some cases where a previously-compiled such class is
interpolated into another. The heuristics previously used have been
replaced by a reliable method, and hence the diagnostics generated have
changed. See L</Diagnostics>.
=item *
The debug display (say by specifying C<-Dr> or S<C<use re>> (with
appropriate options) of compiled Unicode property wildcard subpatterns no
longer has extraneous output.
=item *
Fix an assertion failure in the regular expression engine.
[L<GH #17372|https://github.com/Perl/perl5/issues/17372>]
=item *
Fix coredump in pp_hot.c after C<B::UNOP_AUX::aux_list()>.
[L<GH #17301|https://github.com/Perl/perl5/issues/17301>]
=item *
Loading IO is now threadsafe.
[L<GH #14816|https://github.com/Perl/perl5/issues/14816>]
pod/perl5320delta.pod view on Meta::CPAN
=item *
Attributes can now be used in a sub-parse.
L<[GH #16847]|https://github.com/Perl/perl5/issues/16847>
=back
=item *
Incomplete hex and binary literals like C<0x> and C<0b> are now
treated as if the C<x> or C<b> is part of the next token.
[L<#17010|https://github.com/Perl/perl5/issues/17010>]
=item *
A spurious C<)> in a subparse, such as in C<s/.../code here/e> or
C<"...${code here}">, no longer confuses the parser.
Previously a subparse was bracketed with generated C<(> and C<)>
tokens, so a spurious C<)> would close the construct without doing the
normal subparse clean up, confusing the parser and possible causing an
assertion failure.
Such constructs are now surrounded by artificial tokens that can't be
included in the source. L<[GH #15814]|https://github.com/Perl/perl5/issues/15814>
=item *
Reference assignment of a sub, such as C<\&foo = \&bar;>, silently did
nothing in the C<[GH #16987]|https://github.com/Perl/perl5/issues/16987>]
=item *
sv_gets() now recovers better if the target SV is modified by a signal
handler. L<[GH #16960]|https://github.com/Perl/perl5/issues/16960>
=item *
C<readline @foo> now evaluates C<@foo> in scalar context. Previously
it would be evaluated in list context, and since readline() pops only
one argument from the stack, the stack could underflow, or be left
with unexpected values on the stack. L<[GH #16929]|https://github.com/Perl/perl5/issues/16929>
=item *
Parsing incomplete hex or binary literals was changed in 5.31.1 to treat such a
literal as just the 0, leaving the following C<x> or C<b> to be parsed as part
of the next token. This could lead to some silent changes in behaviour, so now
incomplete hex or binary literals produce a fatal error.
L<[GH #17010]|https://github.com/Perl/perl5/issues/17010>
=item *
eval_pv()'s I<croak_on_error> flag will now throw even if the exception is a
false overloaded value.
L<[GH #17036]|https://github.com/Perl/perl5/issues/17036>
=item *
C<INIT> blocks and the program itself are no longer run if exit(0) is called
within a C<BEGIN>, C<UNITCHECK> or C<CHECK> block.
L<[GH #1537]|https://github.com/Perl/perl5/issues/1537>
=item *
C<< open my $fh, ">>+", undef >> now opens the temporary file in append mode:
writes will seek to the end of file before writing.
L<[GH #17058]|https://github.com/Perl/perl5/issues/17058>
=item *
Fixed a SEGV when searching for the source of an uninitialized value warning on
an op whose subtree includes an OP_MULTIDEREF.
L<[GH #17088]|https://github.com/Perl/perl5/issues/17088>
=back
=head1 Obituary
Jeff Goff (JGOFF or DrForr), an integral part of the Perl and Raku
communities and a dear friend to all of us, has passed away on March
13th, 2020. DrForr was a prominent member of the communities, attending
and speaking at countless events, contributing to numerous projects,
and assisting and helping in any way he could.
His passing leaves a hole in our hearts and in our communities and he
will be sorely missed.
=head1 Acknowledgements
Perl 5.32.0 represents approximately 13 months of development since Perl
5.30.0 and contains approximately 220,000 lines of changes across 1,800
files from 89 authors.
Excluding auto-generated files, documentation and release tools, there were
approximately 140,000 lines of changes to 880 .pm, .t, .c and .h files.
Perl continues to flourish into its fourth decade thanks to a vibrant
community of users and developers. The following people are known to have
contributed the improvements that became Perl 5.32.0:
Aaron Crane, Alberto Simões, Alexandr Savca, Andreas König, Andrew Fresh,
Andy Dougherty, Ask Bjørn Hansen, Atsushi Sugawara, Bernhard M. Wiedemann,
brian d foy, Bryan Stenson, Chad Granum, Chase Whitener, Chris 'BinGOs'
Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Daniel
Dragan, Dan Kogai, Dave Cross, Dave Rolsky, David Cantrell, David Mitchell,
Dominic Hargreaves, E. Choroba, Felipe Gasper, Florian Weimer, Graham Knop,
Håkon Hægland, Hauke D, H.Merijn Brand, Hugo van der Sanden, Ichinose
Shogo, James E Keenan, Jason McIntosh, Jerome Duval, Johan Vromans, John
Lightsey, John Paul Adrian Glaubitz, Kang-min Liu, Karen Etheridge, Karl
Williamson, Leon Timmermans, Manuel Mausz, Marc Green, Matthew Horsfall,
Matt Turner, Max Maischein, Michael Haardt, Nicholas Clark, Nicolas R., Niko
Tyni, Pali, Paul Evans, Paul Johnson, Paul Marquess, Peter Eisentraut, Peter
John Acklam, Peter Oliver, Petr PÃsaÅ, Renee Baecker, Ricardo Signes,
Richard Leach, Russ Allbery, Samuel Smith, Santtu Ojanperä, Sawyer X,
Sergey Aleynikov, Sergiy Borodych, Shirakata Kentaro, Shlomi Fish, Sisyphus,
Slaven Rezic, Smylers, Stefan Seifert, Steve Hay, Steve Peters, Svyatoslav,
Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, Tony Cook,
Unicode Consortium, VanL, Vickenty Fesunov, Vitali Peil, Yves Orton, Zefram.
The list above is almost certainly incomplete as it is automatically
( run in 1.282 second using v1.01-cache-2.11-cpan-5b529ec07f3 )