diff options
author | Father Chrysostomos <sprout@cpan.org> | 2011-06-21 08:37:04 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-06-21 08:37:04 -0700 |
commit | 0890f1a536cff0aff68038cae78e02c9d9b6a2b2 (patch) | |
tree | b55d1cca81e88aefa29edfdbac2cc59aa374cb21 | |
parent | aac9e258b92132c9c0b6eae7ebdaa03a4600bbb3 (diff) | |
download | perl-0890f1a536cff0aff68038cae78e02c9d9b6a2b2.tar.gz |
create perldelta for 5.15.1
-rw-r--r-- | MANIFEST | 1 | ||||
-rwxr-xr-x | Makefile.SH | 6 | ||||
-rw-r--r-- | pod/.gitignore | 2 | ||||
-rw-r--r-- | pod/perl.pod | 1 | ||||
-rw-r--r-- | pod/perldelta.pod | 1177 | ||||
-rw-r--r-- | vms/descrip_mms.template | 2 | ||||
-rw-r--r-- | win32/Makefile | 4 | ||||
-rw-r--r-- | win32/makefile.mk | 4 |
8 files changed, 168 insertions, 1029 deletions
@@ -4324,6 +4324,7 @@ pod/perl5137delta.pod Perl changes in version 5.13.7 pod/perl5138delta.pod Perl changes in version 5.13.8 pod/perl5139delta.pod Perl changes in version 5.13.9 pod/perl5140delta.pod Perl changes in version 5.14.0 +pod/perl5150delta.pod Perl changes in version 5.15.0 pod/perl561delta.pod Perl changes in version 5.6.1 pod/perl56delta.pod Perl changes in version 5.6 pod/perl570delta.pod Perl changes in version 5.7.0 diff --git a/Makefile.SH b/Makefile.SH index b4955adac1..1a61e5b89c 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -466,7 +466,7 @@ mini_obj = $(minindt_obj) $(MINIDTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O) -perltoc_pod_prereqs = extra.pods pod/perl5150delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod +perltoc_pod_prereqs = extra.pods pod/perl5151delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) Icwd = -Idist/Cwd -Idist/Cwd/lib @@ -1033,8 +1033,8 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) $(Icwd) pod/perlmodlib.PL -q -pod/perl5150delta.pod: pod/perldelta.pod - $(LNS) perldelta.pod pod/perl5150delta.pod +pod/perl5151delta.pod: pod/perldelta.pod + $(LNS) perldelta.pod pod/perl5151delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` diff --git a/pod/.gitignore b/pod/.gitignore index 8f1b283875..ea63150d98 100644 --- a/pod/.gitignore +++ b/pod/.gitignore @@ -58,7 +58,7 @@ /podselect.bat # generated -/perl5150delta.pod +/perl5151delta.pod /perlapi.pod /perlintern.pod *.html diff --git a/pod/perl.pod b/pod/perl.pod index fa4cfa5c30..6277e8c5a6 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -162,6 +162,7 @@ For ease of access, the Perl manual has been split up into several sections. perlhist Perl history records perldelta Perl changes since previous version + perl5150delta Perl changes in version 5.15.0 perl5140delta Perl changes in version 5.14.0 perl51311delta Perl changes in version 5.13.11 perl51310delta Perl changes in version 5.13.10 diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 8e491ccd75..8c2d3fd2e0 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -2,616 +2,140 @@ =head1 NAME -perldelta - what is new for perl v5.15.0 +[ this is a template for a new perldelta file. Any text flagged as +XXX needs to be processed before release. ] -=head1 DESCRIPTION - -This document describes differences between the 5.15.0 release and -the 5.14.0 release. - -If you are upgrading from an earlier release such as 5.12.0, first read -L<perl5140delta>, which describes differences between 5.12.0 and -5.14.0. - -Some of the changes have been included in Perl 5.14.1. These are -indicated with a "(5.14.1)" marker. - -=head1 Core Enhancements - -=head2 C<CORE::> works on all keywords - -The C<CORE::> prefix can now be used on keywords enabled by -L<feature.pm|feature>, even outside the scope of C<use feature>. Relevant -documentation files L<CORE>, L<feature>, L<perlfunc>, L<perlsub>, and -L<perlsyn> have been updated. - -=head2 C<continue> no longer requires the "switch" feature +perldelta - what is new for perl v5.15.1 -The C<continue> keyword has two meanings. It can introduce a C<continue> -block after a loop, or it can exit the current C<when> block. Up till now, -the latter meaning was only valid with the "switch" feature enabled, and -was a syntax error otherwise. Since the main purpose of feature.pm is to -avoid conflicts with user-defined subroutines, there is no reason for -C<continue> to depend on it. - -=head2 C<$$> can be assigned to +=head1 DESCRIPTION -C<$$> was made read-only in Perl 5.8.0. But only sometimes: C<local $$> -would make it writable again. Some CPAN modules were using C<local $$> or -XS code to bypass the read-only check, so there is no reason to keep C<$$> -read-only. (This change also allowed a bug to be fixed while maintaining -backward compatibility.) +This document describes differences between the 5.15.1 release and +the 5.15.0 release. -=head2 Features inside the debugger +If you are upgrading from an earlier release such as 5.14.0, first read +L<perl5150delta>, which describes differences between 5.14.0 and +5.15.0. -The current Perl's feature bundle is now enabled for commands entered in -the interactive debugger. +=head1 Notice -=head2 C<\N{...}> can now have Unicode loose name matching +XXX Any important notices here -This is described in the C<charnames> item in -L</Updated Modules and Pragmata> below. +=head1 Core Enhancements -=head2 Breakpoints with file names +XXX New core language features go here. Summarise user-visible core language +enhancements. Particularly prominent performance optimisations could go +here, but most should go in the L</Performance Enhancements> section. -The debugger's "b" command for setting breakpoints now allows a line number -to be prefixed with a file name. See -L<perldebug/"b [file]:[line] [condition]">. +[ List each enhancement as a =head2 entry ] =head1 Security -No changes since 5.14.0. - -=head1 Incompatible Changes - -=head2 Tying scalars that hold typeglobs - -Attempting to tie a scalar after a typeglob was assigned to it would -instead tie the handle in the typeglob's IO slot. This meant that it was -impossible to tie the scalar itself. Similar problems affected C<tied> and -C<untie>: C<tied $scalar> would return false on a tied scalar if the last -thing returned was a typeglob, and C<untie $scalar> on such a tied scalar -would do nothing. - -We fixed this problem before Perl 5.14.0, but it caused problems with some -CPAN modules, so we put in a deprecation cycle instead. +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. -Now the deprecation has been removed and this bug has been fixed. So -C<tie $scalar> will always tie the scalar, not the handle it holds. To tie -the handle, use C<tie *$scalar> (with an explicit asterisk). The same -applies to C<tied *$scalar> and C<untie *$scalar>. +[ List each security issue as a =head2 entry ] -=head2 IPC::Open3 no longer provides C<xfork()>, C<xclose_on_exec()> -and C<xpipe_anon()> +=head1 Incompatible Changes -All three functions were private, undocumented and unexported. They do -not appear to be used by any code on CPAN. Two have been inlined and one -deleted entirely. +XXX For a release on a stable branch, this section aspires to be: -=head2 C<$$> no longer caches PID + There are no changes intentionally incompatible with 5.XXX.XXX. If any + exist, they are bugs and reports are welcome. -Previously, if one embeds Perl or uses XS and calls fork(3) from C, Perls -notion of C<$$> could go out of sync with what getpid() returns. By always -fetching the value of C<$$> via getpid(), this potential bug is eliminated. -Code that depends on the caching behavior will break. As described in -L</Core Enhancements>, C<$$> is now writable, but it will be reset during a -fork. +[ List each incompatible change as a =head2 entry ] =head1 Deprecations -There have been no deprecations since 5.14.0. - -=head1 Performance Enhancements - -There are no benchmarked enhancements since 5.14.0. +XXX Any deprecated features, syntax, modules etc. should be listed here. +In particular, deprecated modules should be listed here even if they are +listed as an updated module in the L</Modules and Pragmata> section. -=head1 Modules and Pragmata +[ List each deprecation as a =head2 entry ] -=head2 New Modules and Pragmata +=head1 Performance Enhancements -None. +XXX Changes which enhance performance without changing behaviour go here. There +may well be none in a stable release. -=head2 Updated Modules and Pragmata +[ List each enhancement as a =item entry ] =over 4 =item * -L<charnames> has been updated from version 1.18 to version 1.22 - -L<charnames> can now be invoked with a new option, C<:loose>, -which is like the existing C<:full> option, but enables Unicode loose -name matching. Details are in L<charnames/LOOSE MATCHES>. - -=item * - -L<constant> has been updated from version 1.21 to 1.22. - -=item * - -L<Archive::Extract> has been upgraded from version 0.48 to version 0.52 - -Includes a fix for FreeBSD to only use C<unzip> if it is located in -C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in -C</usr/bin>. - -=item * - -L<Attribute::Handlers> updated from version 0.88 to 0.91 - -=item * - -L<B> has been upgraded from version 1.29 to version 1.30. - -=item * - -L<B::Deparse> has been upgraded from version 1.03 to 1.05. (Perl 5.14.1 -had version 1.04.) - -It addresses two regressions in Perl 5.14.0: - -=over - -=item * - -Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now -works again [perl #90898] (5.14.1). - -=item * - -The presence of subroutines named C<::::> or C<::::::> no longer causes -B::Deparse to hang (5.14.1). - -=back - -Plus a few other bugs: - -=over - -=item * - -Deparsing of handle C<keys>, C<each> and C<value> with a scalar argument -now works [perl #91008]. - -=item * - -C<readpipe> followed by a complex expression (as opposed to a simple scalar -variable) now works. - -=item * - -It now puts C<CORE::> in front of overridable core keywords if they -conflict with user-defined subroutines. - -=item * - -Deparsing assignment to an lvalue method specified as a variable -(C<< $obj->$method = ... >>) used not to work [perl #62498]. +XXX =back -=item * - -L<CGI> has been upgraded from version 3.52 to version 3.54 - -The DELETE HTTP verb is now supported. - -=item * - -L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035 - -=item * - -L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035 - -=item * - -L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035 - -=item * - -L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930 - -=item * - -L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105 - -Now understands specifying modules to install in the format 'Module/Type.pm' - -=item * - -L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56 - -=item * - -L<Data::Dumper> has been upgraded from version 2.128 to 2.131. - -=item * - -L<DB_File> has been upgraded from version 1.821 to version 1.822 - -Warnings are now in sync with perl's - -=item * - -L<Digest::SHA> has been upgraded from version 5.61 to version 5.62 - -No longer loads L<MIME::Base64> as this was unnecessary. - -=item * - -L<Devel::Peek> has been upgraded from version 1.07 to 1.08. - -Its C<fill_mstats> function no longer refuses to write to copy-on-write -scalars. - -=item * - -L<Encode> has been upgraded from version 2.42 to version 2.43 - -Missing aliases added, a deep recursion error fixed and various -documentation updates. - -=item * - -L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280204. - -The new version appends CFLAGS and LDFLAGS to their Config.pm -counterparts. - -=item * - -L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39 - -C<decrypt> fixed to work with v5.14.0 - -=item * - -L<Filter::Simple> updated from version 0.85 to 0.87 - -=item * - -L<FindBin> updated from version 1.50 to 1.51. - -It no longer returns a wrong result if a script of the same name as the -current one exists in the path and is executable. - -=item * - -L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200 - -Fixed C<incr_parse> decoding string more correctly. - -=item * - -L<I18N::LangTags> has been upgraded from version 0.35_01 to version 0.36. +=head1 Modules and Pragmata -Fix broken URLs for RFCs. +XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> +go here. If Module::CoreList is updated, generate an initial draft of the +following sections using F<Porting/corelist-perldelta.pl>, which prints stub +entries to STDOUT. Results can be pasted in place of the '=head2' entries +below. A paragraph summary for important changes should then be added by hand. +In an ideal world, dual-life modules would have a F<Changes> file that could be +cribbed. -=item * +[ Within each section, list entries as a =item entry ] -L<IPC::Open3> has been upgraded from version 1.10 to version 1.11. +=head2 New Modules and Pragmata =over 4 =item * -Fixes a bug which prevented use of C<open3> on Windows when C<*STDIN>, -C<*STDOUT> or C<*STDERR> had been localized. - -=item * - -Fixes a bug which prevented duplicating numeric file descriptors on Windows. +XXX =back -=item * - -L<Math::BigFloat> has been upgraded from version 1.993 to 1.994. - -The C<numify> method has been corrected to return a normalised Perl number -(the result of C<0 + $thing>), instead of a string [rt.cpan.org #66732]. - -=item * - -L<Math::BigInt> has been upgraded from version 1.994 to 1.995. - -It provides a new C<bsgn> method that complements the C<babs> method. - -It fixes the internal C<objectify> function's handling of "foreign objects" -so they are converted to the appropriate class (Math::BigInt or -Math::BigFloat). - -=item * - -L<Math::Complex> has been upgraded from version 1.56 to version 1.57 -and L<Math::Trig> has been upgraded from version 1.20 to version 1.21. - -Fixes include: correct copy constructor usage; fix polarwise formatting with -numeric format specifier; and more stable C<great_circle_direction> algorithm. - -=item * - -L<Module::CoreList> has been upgraded from version 2.49 to 2.51. - -Updated for v5.12.4, v5.14.1 and v5.15.0 - -=item * - -L<mro> has been updated to remove two broken URLs in the documentation. - -=item * - -L<Object::Accessor> has been upgraded from version 0.38 to version 0.42 - -Eliminated use of C<exists> on array elements which has been deprecated. - -=item * - -L<ODBM_File> has been upgraded from version 1.10 to version 1.11. - -The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid -performance under ithreads. - -=item * - -L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15 - -=item * - -L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12. - -It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if -C<$scalar> is a copy-on-write scalar. - -It also fixes a hang that occurs with C<readline> or C<< <$fh> >> if a -typeglob has been assigned to $scalar [perl #92258]. - -=item * - -L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_05. - -It corrects the search paths on VMS [perl #90640]. (5.14.1) - -=item * - -L<Storable> has been upgraded from version 2.27 to version 2.28. - -It no longer turns copy-on-write scalars into read-only scalars when -freezing and thawing. - -=item * - -L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29 - -Large number of Request Tickets resolved. - -=item * - -L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722. - -Portability fix, and avoiding some compiler warnings. - -=item * - -L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76 - -Updated to CLDR 1.9.1 - -=item * - -L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12 +=head2 Updated Modules and Pragmata -Fixes for the removal of F<unicore/CompositionExclusions.txt> from core. +=over 4 =item * -L<XSLoader> has been upgraded from version 0.13 to version 0.15 +L<XXX> has been upgraded from version 0.69 to version 0.70. =back =head2 Removed Modules and Pragmata -As promised in Perl 5.14.0's release notes, the following modules have -been removed from the core distribution, and if needed should be installed -from CPAN instead. - -=over - -=item * - -C<Devel::DProf> has been removed from the Perl core. Prior version was 20110228.00. +=over 4 =item * -C<Shell> has been removed from the Perl core. Prior version was 0.72_01. +XXX =back =head1 Documentation -=head2 New Documentation - -None. - -=head2 Changes to Existing Documentation - -=head3 L<perlfork> - -=over - -=item * - -Added portability caveats related to using C<kill> on forked process. - -=back - -=head3 L<perlfunc> - -=over - -=item * - -Documentation for C<use> now includes a pointer to F<if.pm> (5.14.1) - -=item * - -C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1). - -=item * - -The examples for the C<select> function no longer use strings for file -handles. - -=back - -=head3 L<perlguts> - -=over - -=item * +XXX Changes to files in F<pod/> go here. Consider grouping entries by +file and be sure to link to the appropriate page, e.g. L<perlfunc>. -Some of the function descriptions in L<perlguts> were confusing, as it was -not clear whether they referred to the function above or below the -description. This has been clarified [perl #91790]. - -=back - -=head3 L<perllol> - -=over - -=item * - -L<perllol> has been expanded with examples using the new C<push $scalar> -syntax introduced in Perl 5.14.0 (5.14.1). - -=back +=head2 New Documentation -=head3 L<perlmod> +XXX Changes which create B<new> files in F<pod/> go here. -=over +=head3 L<XXX> -=item * +XXX Description of the purpose of the new file here -L<perlmod> now states explicitly that some types of explicit symbol table -manipulation are not supported. This codifies what was effectively already -the case [perl #78074]. +=head2 Changes to Existing Documentation -=back +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<perlop> +=head3 L<XXX> =over 4 =item * -The explanation of bitwise operators has been expanded to explain how they -work on Unicode strings (5.14.1). - -=item * - -The section on the triple-dot or yada-yada operator has been moved up, as -it used to separate two closely related sections about the comma operator -(5.14.1). - -=item * - -More examples for C<m//g> have been added (5.14.1). - -=item * - -The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1). - -=back - -=head3 L<perlpodstyle> - -=over 4 - -=item * - -The tips on which formatting codes to use have been corrected and greatly -expanded. - -=item * - -There are now a couple of example one-liners for previewing POD files after -they have been edited. - -=back - -=head3 L<perlsub> - -=over - -=item * - -The L<perlsub/"Lvalue subroutines"> section has been amended to reflect -changes and bug fixes introduced in Perl 5.15.0. - -=back - -=head3 L<perlre> - -=over - -=item * - -The C<(*COMMIT)> directive is now listed in the right section -(L<Verbs without an argument|perlre/Verbs without an argument>). - -=back - -=head3 L<perlrun> - -=over - -=item * - -L<perlrun> has undergone a significant clean-up. Most notably, the -B<-0x...> form of the B<-0> flag has been clarified, and the final section -on environment variables has been corrected and expanded (5.14.1). - -=back - -=head3 L<perltie> - -=over - -=item * - -Documented the required syntax for tying handles. - -=back - -=head3 L<perlvar> - -=over - -=item * - -The documentation for L<$!|perlvar/$!> has been corrected and clarified. -It used to state that $! could be C<undef>, which is not the case. It was -also unclear as to whether system calls set C's C<errno> or Perl's C<$!> -[perl #91614]. - -=item * - -Documentation for L<$$|perlvar/$$> has been amended with additional -cautions regarding changing the process ID. - -=back - -=head3 L<POSIX> - -=over - -=item * - -The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>, -C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been -corrected (5.14.1). +XXX Description of the change here =back @@ -621,602 +145,215 @@ The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see L<perldiag>. -=head2 New Diagnostics - -=head3 New Warnings - -=over 4 - -=item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary"> - -Assigning to a temporary returned from an XS lvalue subroutine now produces a -warning [perl #31946]. +XXX New or changed warnings emitted by the core's C<C> code go here. Also +include any changes in L<perldiag> that reconcile it to the C<C> code. -=back +[ Within each section, list entries as a =item entry that links to perldiag, + e.g. -=head2 Changes to Existing Diagnostics + =item * -None. + L<Invalid version object|perldiag/"Invalid version object"> +] -=head1 Utility Changes +=head2 New Diagnostics -None. +XXX Newly added diagnostic messages go here -=head1 Configuration and Compilation +=head3 New Errors =over 4 =item * -F<regexp.h> has been modified for compatibility with GCC's B<-Werror> -option, as used by some projects that include perl's header files (5.14.1). - -=item * - -C<USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC}> have been added the output of perl -V -as they have affect the behaviour of the interpreter binary (albeit only -in a small area). - -=item * - -The code and tests for L<IPC::Open2> have been moved from F<ext/IPC-Open2> -into F<ext/IPC-Open3>, as C<IPC::Open2::open2()> is implemented as a thin -wrapper around C<IPC::Open3::_open3()>, and hence is very tightly coupled to -it. - -=item * - -The magic types and magic vtables are now generated from data in a new script -F<regen/mg_vtable.pl>, instead of being maintained by hand. As different EBCDIC -variants can't agree on the code point for '~', the character to code point -conversion is done at build time by F<generate_uudmap> to a new generated header -F<mg_data.h>. C<PL_vtbl_bm> and C<PL_vtbl_fm> are now defined by the -pre-processor as C<PL_vtbl_regexp>, instead of being distinct C variables. -C<PL_vtbl_sig> has been removed. - -=item * - -Building with C<-DPERL_GLOBAL_STRUCT> works again. This configuration is not -generally used. - -=item * - -Perl configured with I<MAD> now correctly frees C<MADPROP> structures when -OPs are freed. C<MADPROP>s are now allocated with C<PerlMemShared_malloc()> +XXX L<message|perldiag/"message"> =back -=head1 Testing - -There have been no significant changes to the process for testing a -newly-built perl. - -See the source code commit history for changes to individual test files. - -=head1 Platform Support - -=head2 New Platforms - -None. - -=head2 Discontinued Platforms - -None. - -=head2 Platform-Specific Notes - -=head3 GNU/Hurd +=head3 New Warnings -=over +=over 4 =item * -No longer overrides possible extra $ccflags values given to Configure -on GNU/Hurd. C.f. Bug-Debian: http://bugs.debian.org/587901 +XXX L<message|perldiag/"message"> =back -=head3 Mac OS X - -=over - -=item * - -Clarified Apple Developer Tools requirements in F<README.macosx> - -=item * - -Mac OS X specific compilation instructions have been clarified (5.14.1) - -=back +=head2 Changes to Existing Diagnostics -=head3 MSWin32 +XXX Changes (i.e. rewording) of diagnostic messages go here -=over +=over 4 =item * -Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32 -updated accordingly. [perl #91354] +XXX Describe change here =back -=head3 Solaris - -=over - -=item * +=head1 Utility Changes -Updated the list of required packages for building perl to reflect Solaris 9 -and 10 in README.solaris [perl #90850] (5.14.1) +XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go +here. Most of these are built within the directories F<utils> and F<x2p>. -=back +[ List utility changes as a =head3 entry for each utility and =item +entries for each change +Use L<XXX> with program names to get proper documentation linking. ] -=head3 Ubuntu Linux +=head3 L<XXX> =over 4 =item * -The L<ODBM_File> installation process has been updated with the new library -paths on Ubuntu natty [perl #90106] (5.14.1) - -=item * - -I<h2ph> now gets the include paths from gcc correctly. This stopped -working when Ubuntu switched to a "multiarch" setup [perl #90122]. +XXX =back -=head1 Internal Changes - -=over 4 - -=item * - -The compiled representation of formats is now stored via the C<mg_ptr> of -their C<PERL_MAGIC_fm>. Previously it was stored in the string buffer, -beyond C<SvLEN()>, the regular end of the string. C<SvCOMPILED()> and -C<SvCOMPILED_{on,off}()> now exist solely for compatibility for XS code. -The first is always 0, the other two now no-ops. (5.14.1) - -=item * - -Some global variables have been marked C<const>, members in the interpreter -structure have been re-ordered, and the opcodes have been re-ordered. The op -C<OP_AELEMFAST> has been split into C<OP_AELEMFAST> and C<OP_AELEMFAST_LEX>. - -=item * - -When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY -field is no longer temporarily zeroed. Any destructors called on the freed -elements see the remaining elements. Thus, %h=() becomes more like C<delete -$h{$_} for keys %h>. - -=item * - -Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now -stored via the mg_ptr of their C<PERL_MAGIC_bm>. Previously they were PVGVs, -with the tables stored in the string buffer, beyond C<SvLEN()>. This eliminates -the last place where the core stores data beyond C<SvLEN()>. - -=item * - -Simplified logic in C<Perl_sv_magic()> introduces a small change of -behaviour for error cases involving unknown magic types. Previously, if -C<Perl_sv_magic()> was passed a magic type unknown to it, it would - -=over - -=item 1. - -Croak "Modification of a read-only value attempted" if read only - -=item 2. - -Return without error if the SV happened to already have this magic - -=item 3. - -otherwise croak "Don't know how to handle magic of type \\%o" - -=back - -Now it will always croak "Don't know how to handle magic of type \\%o", even -on read only values, or SVs which already have the unknown magic type. +=head1 Configuration and Compilation -=back +XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools +go here. Any other changes to the Perl build process should be listed here. +However, any platform-specific changes should be listed in the +L</Platform Support> section, instead. -=head1 Selected Bug Fixes - -=head2 Regular expressions and character classes +[ List changes as a =item entry ]. =over 4 =item * -The new (in 5.14.0) regular expression modifier C</a> when repeated like -C</aa> forbids the characters outside the ASCII range that match -characters inside that range from matching under C</i>. This did not -work under some circumstances, all involving alternation, such as: - - "\N{KELVIN SIGN}" =~ /k|foo/iaa; - -succeeded inappropriately. This is now fixed. - -=item * - -5.14.0 introduced some memory leaks in regular expression character -classes such as C<[\w\s]>, which have now been fixed (5.14.1) - -=item * - -An edge case in regular expression matching could potentially loop. -This happened only under C</i> in bracketed character classes that have -characters with multi-character folds, and the target string to match -against includes the first portion of the fold, followed by another -character that has a multi-character fold that begins with the remaining -portion of the fold, plus some more. - - "s\N{U+DF}" =~ /[\x{DF}foo]/i - -is one such case. C<\xDF> folds to C<"ss">. (5.14.1) - -=item * - -A few characters in regular expression pattern matches did not -match correctly in some circumstances, all involving C</i>. The -affected characters are: -COMBINING GREEK YPOGEGRAMMENI, -GREEK CAPITAL LETTER IOTA, -GREEK CAPITAL LETTER UPSILON, -GREEK PROSGEGRAMMENI, -GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA, -GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS, -GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA, -GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS, -LATIN SMALL LETTER LONG S, -LATIN SMALL LIGATURE LONG S T, -and -LATIN SMALL LIGATURE ST. - -=item * - -Fixed memory leak regression in regular expression compilation -under threading +XXX =back -=head2 Formats +=head1 Testing -=over +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 summarising, although the bugs +that they represent may be covered elsewhere. -=item * +[ List each test improvement as a =item entry ] -A number of edge cases have been fixed with formats and C<formline>; -in particular, where the format itself is potentially variable (such as -with ties and overloading), and where the format and data differ in their -encoding. In both these cases, it used to possible for the output to be -corrupted [perl #91032]. +=over 4 =item * -C<formline> no longer converts its argument into a string in-place. So -passing a reference to C<formline> no longer destroys the reference -[perl #79532]. +XXX =back -=head2 Copy-on-write scalars - -Copy-on-write scalars were introduced in 5.8.0, but most Perl code -did not encounter them (they were used mostly internally). Perl -5.10.0 extended them, such that assigning C<__PACKAGE__> or a -hash key to a scalar would make it copy-on-write. Several parts -of Perl were not updated to account for them, but have now been fixed. - -=over - -=item * - -C<utf8::decode> had a nasty bug that would modify copy-on-write scalars' -string buffers in place (i.e., skipping the copy). This could result in -hashes having two elements with the same key [perl #91834]. - -=item * +=head1 Platform Support -Lvalue subroutines were not allowing COW scalars to be returned. This was -fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context -was not fixed until this release. +XXX Any changes to platform support should be listed in the sections below. -=item * +[ Within the sections, list each platform as a =item entry with specific +changes as paragraphs below it. ] -Elements of restricted hashes (see the L<fields> pragma) containing -copy-on-write values couldn't be deleted, nor could such hashes be cleared -(C<%hash = ()>). +=head2 New Platforms -=item * +XXX List any platforms that this version of perl compiles on, that previous +versions did not. These will either be enabled by new files in the F<hints/> +directories, or new subdirectories and F<README> files at the top level of the +source tree. -Localising a tied variable used to make it read-only if it contained a -copy-on-write string. +=over 4 -=item * +=item XXX-some-platform -L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems. -See L</Updated Modules and Pragmata>, above. +XXX =back -=head2 lvalue subroutines - -There have been various fixes to lvalue subroutines. - -=over - -=item * - -Explicit return now returns the actual argument passed to return, instead -of copying it [perl #72724] [perl #72706]. - -B<Note:> There are still some discrepancies between explicit and implicit -return, which will hopefully be resolved soon. So the exact behaviour is -not set in stone yet. - -=item * - -Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on -the left-hand side of C<=>) for the last statement and the arguments to -return. Since lvalue subroutines are not always called in lvalue context, -this restriction has been lifted. - -=item * - -Lvalue subroutines are less restrictive as to what values can be returned. -It used to croak on values returned by C<shift> and C<delete> and from -other subroutines, but no longer does so [perl #71172]. - -=item * - -Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list -context. In fact, all subroutines used to, but regular subs were fixed in -Perl 5.8.2. Now lvalue subroutines have been likewise fixed. - -=item * - -Lvalue subroutines used to copy their return values in rvalue context. Not -only was this a waste of CPU cycles, but it also caused bugs. A C<($)> -prototype would cause an lvalue sub to copy its return value [perl #51408], -and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly -[perl #78680]. - -=item * - -Autovivification now works on values returned from lvalue subroutines -[perl #7946]. - -=item * - -When called in pass-by-reference context (e.g., subroutine arguments or a list -passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind -the arrays (or hashes) to scalar variables--something that is not supposed to -happen. This could result in "Bizarre copy of ARRAY" errors or C<print> -ignoring its arguments. It also made nonsensical code like C<@{\$_}> "work". -This was fixed in 5.14.0 if an array were the first thing returned from the -subroutine (but not for C<$scalar, @array> or hashes being returned). Now a -more general fix has been applied [perl #23790]. - -=item * - -When called in pass-by-reference context, lvalue subroutines used to copy -any read-only value that was returned. E.g., C< sub :lvalue { $] } > -would not return C<$]>, but a copy of it. +=head2 Discontinued Platforms -=item * +XXX List any platforms that this version of perl no longer compiles on. -Assignment to C<keys> returned from an lvalue sub used not to work, but now -it does. +=over 4 -=item * +=item XXX-some-platform -Applying the C<:lvalue> attribute to an XSUB or to an aliased subroutine -stub with C<< sub foo :lvalue; >> syntax stopped working in Perl 5.12. -This has been fixed. +XXX =back -=head2 Fixes related to hashes - -=over - -=item * - -A bug has been fixed that would cause a "Use of freed value in iteration" -error if the next two hash elements that would be iterated over are -deleted [perl #85026]. (5.14.1) +=head2 Platform-Specific Notes -=item * +XXX List any changes for specific platforms. This could include configuration +and compilation changes or changes in portability/compatibility. However, +changes within modules for platforms should generally be listed in the +L</Modules and Pragmata> section. -Freeing deeply nested hashes no longer crashes [perl #44225]. +=over 4 -=item * +=item XXX-some-platform -Deleting the current hash iterator (the hash element that would be returend -by the next call to C<each>) in void context used not to free it. The hash -would continue to reference it until the next iteration. This has been -fixed [perl #85026]. +XXX =back -=head2 Other notable fixes - -=over - -=item * - -Passing the same constant subroutine to both C<index> and C<formline> no -longer causes one or the other to fail [perl #89218]. (5.14.1) - -=item * - -List assignment to lexical variables declared with attributes in the same -statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0. -It has now been fixed. - -=item * - -Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of -a pack template equivalent to "U0" if the input string was empty. This has -been fixed [perl #90160]. - -=item * - -Destructors on objects were not called during global destruction on objects -that were not referenced by any scalars. This could happen if an array -element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a -blessed variable (C<bless \my @a; sub foo { @a }>). - -Now there is an extra pass during global destruction to fire destructors on -any objects that might be left after the usual passes that check for -objects referenced by scalars [perl #36347]. - -This bug fix was added in Perl 5.13.9, but caused problems with some CPAN -modules that were relying on the bug. Since it was so close to Perl -5.14.0, the fix was reverted in 5.13.10, to allow more time for the modules -to adapt. Hopefully they will be fixed soon (see L</Known Problems>, -below). - -=item * - -C<given> was not calling set-magic on the implicit lexical C<$_> that it -uses. This meant, for example, that C<pos> would be remembered from one -execution of the same C<given> block to the next, even if the input were a -different variable [perl #84526]. - -=item * - -The "R" command for restarting a debugger session has been fixed to work on -Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant -[perl #87740]. - -=item * - -Fixed a case where it was possible that a freed buffer may have been read -from when parsing a here document [perl #90128]. (5.14.1) - -=item * - -The C<study> function could become confused if fed a string longer than -2**31 characters. Now it simply skips such strings. - -=item * +=head1 Internal Changes -C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>, -inside a C<while> condition [perl #90888]. +XXX Changes which affect the interface available to C<XS> code go here. +Other significant internal changes for future core maintainers should +be noted as well. -=item * +[ List each change as a =item entry ] -In @INC filters (subroutines returned by subroutines in @INC), $_ used to -misbehave: If returned from a subroutine, it would not be copied, but the -variable itself would be returned; and freeing $_ (e.g., with C<undef *_>) -would cause perl to crash. This has been fixed [perl #91880]. +=over 4 =item * -An ASCII single quote (') in a symbol name is meant to be equivalent to a -double colon (::) except at the end of the name. It was not equivalent if -followed by a null character, but now it is [perl #88138]. +XXX -=item * - -The abbreviations for four C1 control characters -C<MW> -C<PM>, -C<RI>, -and -C<ST> -were previously unrecognized by C<\N{}>, -vianame(), and string_vianame(). +=back -=item * +=head1 Selected Bug Fixes -Some cases of threads crashing due to memory allocation during cloning have -been fixed [perl #90006]. +XXX Important bug fixes in the core language are summarised here. +Bug fixes in files in F<ext/> and F<lib/> are best summarised in +L</Modules and Pragmata>. -=item * +[ List each fix as a =item entry ] -Attempting to C<goto> out of a tied handle method used to cause memory -corruption or crashes. Now it produces an error message instead -[perl #8611]. +=over 4 =item * -Perl skips copying values returned from a subroutine if it thinks the value -is not in use elsewhere. Due to faulty logic, this would happen with the -result of C<delete>, C<shift> or C<splice>, even if the result was -referenced elsewhere. So C<< \sub { delete $_[0] }->($x) >> would return a -reference to C<$x>. This has been fixed [perl #91844]. +XXX =back =head1 Known Problems -=over 4 - -=item * - -The fix for perl #36347 causes test failures for C<Gtk2> and C<Tk> on some -systems [perl #82542]. - -=item * +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). -The changes to C<tie> cause test failures for the C<JS> module. +This is a list of some significant unfixed bugs, which are regressions +from either 5.XXX.XXX or 5.XXX.XXX. -=item * +[ List each fix as a =item entry ] -The changes to C<$$> cause test failures for the C<Event> module. +=over 4 =item * -L<YAML::Syck> has (undiagnosed) test failures. +XXX =back +=head1 Obituary + +XXX If any significant core contributor has died, we've added a short obituary +here. =head1 Acknowledgements -Perl 5.15.0 represents approximatly five weeks of development since Perl -5.14.0 and contains approximately 54,000 lines of changes across 618 -files from 57 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.15.0: - -Alan Haggai Alavi, Bo Johansson, Bo Lindbergh, brian d foy, Chia-liang -Kao, Chris 'BinGOs' Williams, Claudio Ramirez, Craig A. Berry, David -Golden, David Leadbeater, David Mitchell, Dennis Kaarsemaker, Dominic -Hargreaves, Eric Brine, Father Chrysostomos, Florian Ragwitz, George -Greer, Gisle Aas, H.Merijn Brand, Hojung Yoon, Ian Goodacre, Jesse -Vincent, Jim Cromie, Johan Vromans, John Hawkinson, John P. Linderman, -Joshua ben Jore, Karl Williamson, Kevin J. Woolley, Leo Lapworth, Leon -Brocard, Leon Timmermans, Louis Strous, Marcel Grünauer, Martin Hasch, -Max Maischein, Michael Witten, Moritz Lenz, Nicholas Clark, Niko Tyni, -Nuno Carvalho, Pau Amma, Peter John Acklam, Robin Barker, Salvador -Fandiño, Samuel Thibault, Shawn M Moore, Shigeya Suzuki, Shlomi Fish, -Sisyphus, Steffen Müller, Todd Rinaldo, Tom Christiansen, Tony Cook, -Vladimir Timofeev, Zefram and Zsbán Ambrus. - -The list above is almost certainly incomplete as it is automatically -generated from version control history. In particular, it does not -include the names of the (very much appreciated) contributors who -reported issues to the Perl bug tracker. - -Many of the changes included in this version originated in the CPAN -modules included in Perl's core. We're grateful to the entire CPAN -community for helping Perl to flourish. - -For a more complete list of all of Perl's historical contributors, -please see the F<AUTHORS> file in the Perl source distribution. +XXX The list of people to thank goes here. =head1 Reporting Bugs diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index fb4bbb86d0..ed06e01ef5 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -435,7 +435,7 @@ pod34 = [.lib.pods]perlunitut.pod [.lib.pods]perlutil.pod [.lib.pods]perluts.pod pod35 = [.lib.pods]perlvos.pod [.lib.pods]perlwin32.pod [.lib.pods]perlxs.pod [.lib.pods]perlxstut.pod pod = $(pod0) $(pod1) $(pod2) $(pod3) $(pod4) $(pod5) $(pod6) $(pod7) $(pod8) $(pod9) $(pod10) $(pod11) $(pod12) $(pod13) $(pod14) $(pod15) $(pod16) $(pod17) $(pod18) $(pod19) $(pod20) $(pod21) $(pod22) $(pod23) $(pod24) $(pod25) $(pod26) $(pod27) $(pod28) $(pod29) $(pod30) $(pod31) $(pod32) $(pod33) $(pod34) $(pod35) -PERLDELTA_CURRENT = [.pod]perl5150delta.pod +PERLDELTA_CURRENT = [.pod]perl5151delta.pod $(PERLDELTA_CURRENT) : [.pod]perldelta.pod Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET) diff --git a/win32/Makefile b/win32/Makefile index 70081e6e17..d249271b07 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1071,7 +1071,7 @@ utils: $(PERLEXE) $(X2P) copy ..\README.vmesa ..\pod\perlvmesa.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5150delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5151delta.pod cd ..\win32 $(PERLEXE) $(PL2BAT) $(UTILS) $(PERLEXE) $(ICWD) ..\autodoc.pl .. @@ -1164,7 +1164,7 @@ distclean: realclean -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -cd $(PODDIR) && del /f *.html *.bat \ - perl5150delta.pod perlaix.pod perlamiga.pod perlapi.pod \ + perl5151delta.pod perlaix.pod perlamiga.pod perlapi.pod \ perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \ perlcygwin.pod perldgux.pod perldos.pod perlepoc.pod \ perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ diff --git a/win32/makefile.mk b/win32/makefile.mk index 768dfb7f73..56edad28d3 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1442,7 +1442,7 @@ utils: $(PERLEXE) $(X2P) copy ..\README.vmesa ..\pod\perlvmesa.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5150delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5151delta.pod $(PERLEXE) $(PL2BAT) $(UTILS) $(PERLEXE) $(ICWD) ..\autodoc.pl .. $(PERLEXE) $(ICWD) ..\pod\perlmodlib.pl -q @@ -1534,7 +1534,7 @@ distclean: realclean -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -cd $(PODDIR) && del /f *.html *.bat \ - perl5150delta.pod perlaix.pod perlamiga.pod perlapi.pod \ + perl5151delta.pod perlaix.pod perlamiga.pod perlapi.pod \ perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \ perlcygwin.pod perldgux.pod perldos.pod perlepoc.pod \ perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ |