348 lines
9.4 KiB
Plaintext
348 lines
9.4 KiB
Plaintext
=encoding utf8
|
||
|
||
=head1 NAME
|
||
|
||
perl5122delta - what is new for perl v5.12.2
|
||
|
||
=head1 DESCRIPTION
|
||
|
||
This document describes differences between the 5.12.1 release and
|
||
the 5.12.2 release.
|
||
|
||
If you are upgrading from an earlier major version, such as 5.10.1,
|
||
first read L<perl5120delta>, which describes differences between 5.10.1
|
||
and 5.12.0, as well as L<perl5121delta>, which describes earlier changes
|
||
in the 5.12 stable release series.
|
||
|
||
=head1 Incompatible Changes
|
||
|
||
There are no changes intentionally incompatible with 5.12.1. If any exist, they
|
||
are bugs and reports are welcome.
|
||
|
||
=head1 Core Enhancements
|
||
|
||
Other than the bug fixes listed below, there should be no user-visible
|
||
changes to the core language in this release.
|
||
|
||
=head1 Modules and Pragmata
|
||
|
||
=head2 New Modules and Pragmata
|
||
|
||
This release does not introduce any new modules or pragmata.
|
||
|
||
=head2 Pragmata Changes
|
||
|
||
In the previous release, C<no I<VERSION>;> statements triggered a bug
|
||
which could cause L<feature> bundles to be loaded and L<strict> mode to
|
||
be enabled unintentionally.
|
||
|
||
=head2 Updated Modules
|
||
|
||
=over 4
|
||
|
||
=item C<Carp>
|
||
|
||
Upgraded from version 1.16 to 1.17.
|
||
|
||
L<Carp> now detects incomplete L<caller()|perlfunc/"caller EXPR">
|
||
overrides and avoids using bogus C<@DB::args>. To provide backtraces, Carp
|
||
relies on particular behaviour of the caller built-in. Carp now detects
|
||
if other code has overridden this with an incomplete implementation, and
|
||
modifies its backtrace accordingly. Previously incomplete overrides would
|
||
cause incorrect values in backtraces (best case), or obscure fatal errors
|
||
(worst case)
|
||
|
||
This fixes certain cases of C<Bizarre copy of ARRAY> caused by modules
|
||
overriding C<caller()> incorrectly.
|
||
|
||
=item C<CPANPLUS>
|
||
|
||
A patch to F<cpanp-run-perl> has been backported from CPANPLUS C<0.9004>. This
|
||
resolves L<RT #55964|http://rt.cpan.org/Public/Bug/Display.html?id=55964>
|
||
and L<RT #57106|http://rt.cpan.org/Public/Bug/Display.html?id=57106>, both
|
||
of which related to failures to install distributions that use
|
||
C<Module::Install::DSL>.
|
||
|
||
=item C<File::Glob>
|
||
|
||
A regression which caused a failure to find C<CORE::GLOBAL::glob> after
|
||
loading C<File::Glob> to crash has been fixed. Now, it correctly falls back
|
||
to external globbing via C<pp_glob>.
|
||
|
||
=item C<File::Copy>
|
||
|
||
C<File::Copy::copy(FILE, DIR)> is now documented.
|
||
|
||
=item C<File::Spec>
|
||
|
||
Upgraded from version 3.31 to 3.31_01.
|
||
|
||
Several portability fixes were made in C<File::Spec::VMS>: a colon is now
|
||
recognized as a delimiter in native filespecs; caret-escaped delimiters are
|
||
recognized for better handling of extended filespecs; C<catpath()> returns
|
||
an empty directory rather than the current directory if the input directory
|
||
name is empty; C<abs2rel()> properly handles Unix-style input.
|
||
|
||
=back
|
||
|
||
=head1 Utility Changes
|
||
|
||
=over
|
||
|
||
=item *
|
||
|
||
F<perlbug> now always gives the reporter a chance to change the email address it
|
||
guesses for them.
|
||
|
||
=item *
|
||
|
||
F<perlbug> should no longer warn about uninitialized values when using the C<-d>
|
||
and C<-v> options.
|
||
|
||
=back
|
||
|
||
=head1 Changes to Existing Documentation
|
||
|
||
=over
|
||
|
||
=item *
|
||
|
||
The existing policy on backward-compatibility and deprecation has
|
||
been added to L<perlpolicy>, along with definitions of terms like
|
||
I<deprecation>.
|
||
|
||
=item *
|
||
|
||
L<perlfunc/srand>'s usage has been clarified.
|
||
|
||
=item *
|
||
|
||
The entry for L<perlfunc/die> was reorganized to emphasize its
|
||
role in the exception mechanism.
|
||
|
||
=item *
|
||
|
||
Perl's L<INSTALL> file has been clarified to explicitly state that Perl
|
||
requires a C89 compliant ANSI C Compiler.
|
||
|
||
=item *
|
||
|
||
L<IO::Socket>'s C<getsockopt()> and C<setsockopt()> have been documented.
|
||
|
||
=item *
|
||
|
||
F<alarm()>'s inability to interrupt blocking IO on Windows has been documented.
|
||
|
||
=item *
|
||
|
||
L<Math::TrulyRandom> hasn't been updated since 1996 and has been removed
|
||
as a recommended solution for random number generation.
|
||
|
||
=item *
|
||
|
||
L<perlrun> has been updated to clarify the behaviour of octal flags to F<perl>.
|
||
|
||
=item *
|
||
|
||
To ease user confusion, C<$#> and C<$*>, two special variables that were
|
||
removed in earlier versions of Perl have been documented.
|
||
|
||
=item *
|
||
|
||
The version of L<perlfaq> shipped with the Perl core has been updated from the
|
||
official FAQ version, which is now maintained in the C<briandfoy/perlfaq>
|
||
branch of the Perl repository at L<git://perl5.git.perl.org/perl.git>.
|
||
|
||
=back
|
||
|
||
=head1 Installation and Configuration Improvements
|
||
|
||
=head2 Configuration improvements
|
||
|
||
=over
|
||
|
||
=item *
|
||
|
||
The C<d_u32align> configuration probe on ARM has been fixed.
|
||
|
||
=back
|
||
|
||
=head2 Compilation improvements
|
||
|
||
=over
|
||
|
||
=item *
|
||
|
||
An "C<incompatible operand types>" error in ternary expressions when building
|
||
with C<clang> has been fixed.
|
||
|
||
=item *
|
||
|
||
Perl now skips setuid C<File::Copy> tests on partitions it detects to be mounted
|
||
as C<nosuid>.
|
||
|
||
=back
|
||
|
||
=head1 Selected Bug Fixes
|
||
|
||
=over 4
|
||
|
||
=item *
|
||
|
||
A possible segfault in the C<T_PRTOBJ> default typemap has been fixed.
|
||
|
||
=item *
|
||
|
||
A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set
|
||
C<@DB::args> has been fixed.
|
||
|
||
=item *
|
||
|
||
Several memory leaks when loading XS modules were fixed.
|
||
|
||
=item *
|
||
|
||
C<unpack()> now handles scalar context correctly for C<%32H> and C<%32u>,
|
||
fixing a potential crash. C<split()> would crash because the third item
|
||
on the stack wasn't the regular expression it expected. C<unpack("%2H",
|
||
...)> would return both the unpacked result and the checksum on the stack,
|
||
as would C<unpack("%2u", ...)>.
|
||
L<[perl #73814]|http://rt.perl.org/rt3/Ticket/Display.html?id=73814>
|
||
|
||
=item *
|
||
|
||
Perl now avoids using memory after calling C<free()> in F<pp_require>
|
||
when there are CODEREFs in C<@INC>.
|
||
|
||
=item *
|
||
|
||
A bug that could cause "C<Unknown error>" messages when
|
||
"C<call_sv(code, G_EVAL)>" is called from an XS destructor has been fixed.
|
||
|
||
=item *
|
||
|
||
The implementation of the C<open $fh, 'E<gt>' \$buffer> feature
|
||
now supports get/set magic and thus tied buffers correctly.
|
||
|
||
=item *
|
||
|
||
The C<pp_getc>, C<pp_tell>, and C<pp_eof> opcodes now make room on the
|
||
stack for their return values in cases where no argument was passed in.
|
||
|
||
=item *
|
||
|
||
When matching unicode strings under some conditions inappropriate backtracking would
|
||
result in a C<Malformed UTF-8 character (fatal)> error. This should no longer occur.
|
||
See L<[perl #75680]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75680>
|
||
|
||
=back
|
||
|
||
=head1 Platform Specific Notes
|
||
|
||
=head2 AIX
|
||
|
||
=over
|
||
|
||
=item *
|
||
|
||
F<README.aix> has been updated with information about the XL C/C++ V11 compiler
|
||
suite.
|
||
|
||
=back
|
||
|
||
=head2 Windows
|
||
|
||
=over
|
||
|
||
=item *
|
||
|
||
When building Perl with the mingw64 x64 cross-compiler C<incpath>,
|
||
C<libpth>, C<ldflags>, C<lddlflags> and C<ldflags_nolargefiles> values
|
||
in F<Config.pm> and F<Config_heavy.pl> were not previously being set
|
||
correctly because, with that compiler, the include and lib directories
|
||
are not immediately below C<$(CCHOME)>.
|
||
|
||
=back
|
||
|
||
=head2 VMS
|
||
|
||
=over
|
||
|
||
=item *
|
||
|
||
F<git_version.h> is now installed on VMS. This was an oversight in v5.12.0 which
|
||
caused some extensions to fail to build.
|
||
|
||
=item *
|
||
|
||
Several memory leaks in L<stat()|perlfunc/"stat FILEHANDLE"> have been fixed.
|
||
|
||
=item *
|
||
|
||
A memory leak in C<Perl_rename()> due to a double allocation has been
|
||
fixed.
|
||
|
||
=item *
|
||
|
||
A memory leak in C<vms_fid_to_name()> (used by C<realpath()> and
|
||
C<realname()>) has been fixed.
|
||
|
||
=back
|
||
|
||
=head1 Acknowledgements
|
||
|
||
Perl 5.12.2 represents approximately three months of development since
|
||
Perl 5.12.1 and contains approximately 2,000 lines of changes across
|
||
100 files from 36 authors.
|
||
|
||
Perl continues to flourish into its third decade thanks to a vibrant
|
||
community of users and developers. The following people are known to
|
||
have contributed the improvements that became Perl 5.12.2:
|
||
|
||
Abigail, Ævar Arnfjörð Bjarmason, Ben Morrow, brian d foy, Brian
|
||
Phillips, Chas. Owens, Chris 'BinGOs' Williams, Chris Williams,
|
||
Craig A. Berry, Curtis Jewell, Dan Dascalescu, David Golden, David
|
||
Mitchell, Father Chrysostomos, Florian Ragwitz, George Greer, H.Merijn
|
||
Brand, Jan Dubois, Jesse Vincent, Jim Cromie, Karl Williamson, Lars
|
||
Dɪᴇᴄᴋᴏᴡ 迪拉斯, Leon Brocard, Maik Hentsche, Matt S Trout,
|
||
Nicholas Clark, Rafael Garcia-Suarez, Rainer Tammer, Ricardo Signes,
|
||
Salvador Ortiz Garcia, Sisyphus, Slaven Rezic, Steffen Mueller, Tony Cook,
|
||
Vincent Pit and Yves Orton.
|
||
|
||
=head1 Reporting Bugs
|
||
|
||
If you find what you think is a bug, you might check the articles
|
||
recently posted to the comp.lang.perl.misc newsgroup and the perl
|
||
bug database at http://rt.perl.org/perlbug/ . There may also be
|
||
information at http://www.perl.org/ , the Perl Home Page.
|
||
|
||
If you believe you have an unreported bug, please run the B<perlbug>
|
||
program included with your release. Be sure to trim your bug down
|
||
to a tiny but sufficient test case. Your bug report, along with the
|
||
output of C<perl -V>, will be sent off to perlbug@perl.org to be
|
||
analysed by the Perl porting team.
|
||
|
||
If the bug you are reporting has security implications, which make it
|
||
inappropriate to send to a publicly archived mailing list, then please send
|
||
it to perl5-security-report@perl.org. This points to a closed subscription
|
||
unarchived mailing list, which includes
|
||
all the core committers, who will be able
|
||
to help assess the impact of issues, figure out a resolution, and help
|
||
co-ordinate the release of patches to mitigate or fix the problem across all
|
||
platforms on which Perl is supported. Please only use this address for
|
||
security issues in the Perl core, not for modules independently
|
||
distributed on CPAN.
|
||
|
||
=head1 SEE ALSO
|
||
|
||
The F<Changes> file for an explanation of how to view exhaustive details
|
||
on what changed.
|
||
|
||
The F<INSTALL> file for how to build Perl.
|
||
|
||
The F<README> file for general stuff.
|
||
|
||
The F<Artistic> and F<Copying> files for copyright information.
|
||
|
||
=cut
|