X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/0cb6cb0cb03ca795cc55f4c9fed94fee702227bf..d5dc70019fa9d6f8c265e0493cfe7dea6cec45a1:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 5bd4167..94528fe 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1,55 +1,33 @@ =encoding utf8 -=for comment -This has been completed up to 1a50d74bac4, except for: -8629c11317 smueller Escape double-quotes in generated #line directives -8dc67a69b shlomif perl -d: display lines inside subroutines. -3dfd1b5cd2 leont Export PerlIOBase_open - =head1 NAME -perldelta - what is new for perl v5.15.7 +perldelta - what is new for perl v5.15.9 =head1 DESCRIPTION -This document describes differences between the 5.15.6 release and -the 5.15.7 release. +This document describes differences between the 5.15.8 release and +the 5.15.9 release. -If you are upgrading from an earlier release such as 5.15.5, first read -L, which describes differences between 5.15.5 and -5.15.6. +If you are upgrading from an earlier release such as 5.15.7, first read +L, which describes differences between 5.15.7 and +5.15.8. =head1 Notice -XXX Any important notices here +This space intentionally left blank. =head1 Core Enhancements -=head2 C no longer needed for C<\N{I}> - -The C module is now automatically loaded when needed as if -the C<:full> and C<:short> options had been specified. See -L. - -=head2 Improved performance for Unicode properties in regular expressions - -Matching a code point against a Unicode property is now done via a -binary search instead of linear. This means for example that the worst -case for a 1000 item property is 10 probes instead of 1000. This -inefficiency has been compensated for in the past by permanently storing -in a hash the results of a given probe plus the results for the adjacent -64 code points, under the theory that near-by code points are likely to -be searched for. A separate hash was used for each mention of a Unicode -property in each regular expression. Thus, C -would generate two hashes. Any probes in one instance would be unknown -to the other, and the hashes could expand separately to be quite large -if the regular expression were used on many different widely-separated -code points. This can lead to running out of memory in extreme cases. -Now, however, there is just one hash shared by all instances of a given -property. This means that if C<\p{foo}> is matched against "A" in one -regular expression in a thread, the result will be known immediately to -all regular expressions, and the relentless march of using up memory is -slowed considerably. +=head2 C<< no feature; >> now means reset to default + +C<< no feature >> now resets to the default feature set. To disable all +features (which is likely to be a pretty special-purpose request, since +it presumably won't match any named set of semantics) you can now +write C<< no feature ':all' >>. + + +[ List each enhancement as a =head2 entry ] =head1 Security @@ -71,17 +49,11 @@ XXX For a release on a stable branch, this section aspires to be: =head1 Deprecations -=head2 Deprecated Modules - -=over - -=item L - -Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements, -which is a drop-in replacement. It will be deleted from perl.git blead -in v5.17.0. +=head2 Literal C<< "{" >> characters in regular expressions. -=back +It has been documented that the current plans include requiring a +literal C<< "{" >> to be escaped: 5.18 will emit deprecation warnings, +and it will be required in 5.20. =head1 Performance Enhancements @@ -89,13 +61,8 @@ in v5.17.0. =item * -Version declarations with the C keyword (e.g., C) are now -faster, as they enable features without loading F. - -=item * - -C is faster now, as it no longer iterates through magic that it -is not going to copy anyway. +Fix a slowdown in freeing nested hashes. This may speedup the exit of +certain programs. =back @@ -111,217 +78,62 @@ cribbed. [ Within each section, list entries as a =item entry ] -=head2 Updated Modules and Pragmata +=head2 New Modules and Pragmata =over 4 =item * -L has been upgraded from version 1.10 to version 1.11. - -It now deparses C correctly. It used to omit the -quotation marks, which did not work if the string were not a valid -identifier [perl #91416]. - -A similar bug also affected hash and array elements such as -C<< 'random string'->[0] >>, which would deparse as C<$random string[0]>. -This has been fixed. - -Those same syntaxes used to drop the package name from variables beginning -with a punctuation mark, as in C<< "foo::]"->{$key} >>. This, too, has -been fixed. - -B::Deparse no longer hangs when deparsing a program with stash -circularities, such as C [perl #91384]. - -C used to be deparsed as C<$s[1]> if @s were a lexical variable -[perl #81424]. Similarly, C would be deparsed as C<$#s> for both -lexical and package variables. These has been fixed. - -The C regular expression flags are no longer omitted. - -Feature hints are now deparsed with C rather than C<%^H> -assignments. - -A regression in 1.10 that caused C to disable strict mode -in obscure cases has been fixed. - -Strict mode is now fully deparsed, including subs and vars [perl #24027]. - -The global variables C<$(>, C<$|> and C<$)> are now deparsed with braces -(i.e., C<${(}>) in regular expressions [perl #86060]. - -C blocks after C loops are now deparsed correctly, as they -were back in 0.67 (included with Perl 5.8.5) [perl #108224] - -=item * - -L has been upgraded from version 3.58 to version 3.59. - -We no longer read from STDIN when the Content-Length is not set, preventing -requests with no Content-Length from freezing in some cases. This is consistent -with the CGI RFC 3875, and is also consistent with CGI::Simple. However, the old -behavior may have been expected by some command-line uses of CGI.pm. - -=item * - -L has been upgraded from version 2.112621 to version 2.113640. - -Version::Requirements has now been merged as CPAN::Meta::Requirements. - -=item * - -L has been upgraded from version 0.9113 to version 0.9116. - -=item * - -L has been upgraded from version 2.135_01 to version -2.135_03. - -It can now dump vstrings [perl #101162]. - -The nameless typeglob (C<*{""}>) is now dumped properly. - -=item * - -L has been upgraded from version 1.26 to version 1.27. - -See the entry for splain in the L section, for the -changes. The diagnostics module and the splain utility are actually one -and the same. - -=item * - -L has been upgraded from version 1.45 to version 1.46. - -It no longer produces "used once" warnings when the C and C -methods are called while the main program is still compiling (e.g., from -within a BEGIN block) [perl #107410] [rt.cpan.org #50315]. - -=item * - -L has been upgraded from version 1.21 to version 1.22. - -=item * - -L has been upgraded from version 3.9 to version 4.0. - -=item * +XXX -L has been upgraded from version 1.16 to version 1.17. - -C no longer calls C on the class, but uses -another means to determine whether the object has overloading. It was -never correct for it to call C, as overloading does not respect -AUTOLOAD. So classes that autoload methods and implement C no longer -have to account for overloading [perl #40333]. - -A warning is now produced for invalid arguments. See L. - -=item * - -L has been upgraded from version 5.0150036 to version 5.0150037. - -=item * - -L has been upgraded from version 0.12 to version 0.13. - -(This is the module that implements C<< open $fh, '>', \$scalar >>.) - -It no longer assumes during C that $scalar is a string internally. -If it didn't crash, it was close to doing so [perl #92706]. - -Printing to an in-memory handle now works if the $scalar holds a reference, -stringifying the reference before modifying it. References used to be -treated as empty strings. - -Printing to an in-memory handle no longer crashes if the $scalar happens to -hold a number internally, but no string buffer. - -=item * - -L has been upgraded from version 1.12 to 1.13 - -=item * - -L has been upgraded from version 1.27 to version 1.29. - -C and C now run signals handle before returning, as the -whole point of these two functions is to wait until a signal has -arrived, and then return I it has been triggered. Delayed, or -"safe", signals were preventing that from happening, possibly resulting in -race conditions [perl #107216]. -C is now a direct call into the underlying OS C -function, instead of being a Perl wrapper on C. C -now returns the correct value on Win32 (I the file descriptor). -C C and C and C now -dispatch safe signals immediately before returning to their caller. +=back -=item * +=head2 Updated Modules and Pragmata -L has been upgraded from version 3.15_01 to version 3.15_15. +=over 4 =item * -L has been upgraded from version 0.26 to version 0.30. - -=item * +L has been upgraded from version 0.69 to version 0.70. -L has been upgraded from version 0.96 to version 0.98. +=back -=item * +=head2 Removed Modules and Pragmata -L has been upgraded from version 0.37 to version 0.38. -This changes the output of C for the Name_Alias property -to reflect the changes that are planned for Unicode 6.1, so that there -won't be a format change when upgrading to 6.1. Briefly, a second -component of each alias is added that gives the type of alias it is. -Examples are at L. +=over 4 =item * -L has been upgraded from version 0.101020 to version 0.101021. - -Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements, -which is a drop-in replacement. +XXX =back =head1 Documentation -=head2 Changes to Existing Documentation +XXX Changes to files in F go here. Consider grouping entries by +file and be sure to link to the appropriate page, e.g. L. -=head3 L +=head2 New Documentation -=over 4 +XXX Changes which create B files in F go here. -=item * - -C treats a 0 mode as a special case, that prevents a nonexistent -file from being created. This has been the case since Perl 5.000, but was -never documented anywhere. Now the perlfunc entry mentions it -[perl #90064]. +=head3 L -=item * +XXX Description of the purpose of the new file here -The entry for C has been rewritten. It is now far clearer than -before. +=head2 Changes to Existing Documentation -=back +XXX Changes which significantly change existing files in F go here. +However, any changes to F should go in the L +section. -=head3 L and L +=head3 L =over 4 =item * -Documentation of the smartmatch operator has been reworked and moved from -perlsyn to perlop where it belongs. - -=item * - -Documentation of the ellipsis statement (C<...>) has been reworked and -moved from perlop to perlsyn. +XXX Description of the change here =back @@ -335,113 +147,42 @@ diagnostic messages, see L. =head3 New Errors -=over 4 - -=item * - -L - -This error occurs when C tries to set C<@DB::args> but finds it -tied. Before this error was added, it used to crash instead. - -=item * - -L - -This error is part of a safety check that the C operator does before -tying a special array like C<@_>. You should never see this message. - -=back +Compared to 5.15.8, 5.15.9 does not introduce new errors. =head3 New Warnings -=over 4 - -=item * - -L +Compared to 5.15.8, 5.15.9 does not introduce new errors, but see +L -The long-deprecated C now also warns for package variables. -Previously it only issued a warning for lexical variables. - -=item * - -L - -C<\E> does nothing unless preceded by C<\Q>, C<\L> or C<\U>. - -=item * - -L - -This warning, in the "overload" category, is produced when the overload -pragma is given an argument it doesn't recognize, presumably a mistyped -operator. - -=back - -=head2 Removals +=head2 Changes to Existing Diagnostics =over 4 =item * -"sort is now a reserved word" - -This error used to occur when C was called without arguments, followed by C<;> or C<)>. (E.g., C would die, but C<{sort}> was -OK.) This error message was added in Perl 3 to catch code like -C which would no longer work. More than two decades later, -this message is no longer appropriate. Now C without arguments is -always allowed, and returns an empty list, as it did in those cases where -it was already allowed [perl #90030]. +L, which replaces +C<< lvalue attribute cannot be removed after the subroutine has been defined >>. =back =head1 Utility Changes -=head3 L - -=over 4 - -=item * - -splain no longer emits backtraces with the first line number repeated. -This: - - Uncaught exception from user code: - Cannot fwiddle the fwuddle at -e line 1. - at -e line 1 - main::baz() called at -e line 1 - main::bar() called at -e line 1 - main::foo() called at -e line 1 - -has become this: - - Uncaught exception from user code: - Cannot fwiddle the fwuddle at -e line 1. - main::baz() called at -e line 1 - main::bar() called at -e line 1 - main::foo() called at -e line 1 - -=item * +No utilities changed between 5.15.8 and 5.15.9. -Some error messages consist of multiple lines that are listed as separate -entries in L. splain has been taught to find the separate -entries in these cases, instead of simply failing to find the message. +=head1 Configuration and Compilation -=back +XXX Changes to F, F, F, 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 section, instead. -=head1 Configuration and Compilation +[ List changes as a =item entry ]. =over 4 =item * -The Pod files for the perl FAQ, L, L and L -are once again correctly installed in the same directory as the other core -Pods. - -=for 5.16.0 This isn't a regression from 5.14.x, so don't mention this. +XXX =back @@ -451,384 +192,186 @@ Pods. =item * -F now tests that various utility scripts compile cleanly. -During development, this avoids the embarrassment of inadvertently pushing a -commit which breaks code which isn't otherwise tested by the regression test -suite. For example, F and F, needed by -C, are tested here. +F<< t/op/require_37033.t >> has been added, to test that C +always closes the file handle that it opens. Previously, it had been +leaking the file handle if it happened to have file descriptor 0, which +would happen if C was called (explicitly or implicitly) when +C had been closed. =back -=head1 Internal Changes +=head1 Platform Support -=over 4 +XXX Any changes to platform support should be listed in the sections below. -=item * - -There are now feature bundle hints in C (C<$^H>) that version -declarations use, to avoid having to load F. One setting of -the hint bits indicates a "custom" feature bundle, which means that the -entries in C<%^H> still apply. F uses that. - -The C macro is defined in F along with other -hints. Other macros for setting and testing features and bundles are in -the new F. C (which has moved to -F) is no longer used throughout the codebase, but more specific -macros, e.g., C, that are defined in F. - -=item * - -F is now a generated file, created by the new -F script, which also generates F. - -=item * - -Tied arrays are now always C. If C<@_> or C is tied, it -is reified first, to make sure this is always the case. +[ Within the sections, list each platform as a =item entry with specific +changes as paragraphs below it. ] -=back +=head2 New Platforms -=head1 Selected Bug Fixes +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 +directories, or new subdirectories and F files at the top level of the +source tree. =over 4 -=item * "b . COND" in the debugger has been fixed - -Breaking on the current line with C was broken by previous work and -has now been fixed. - -=item * Tying C<%^H> - -Tying C<%^H> no longer causes perl to crash or ignore -the contents of C<%^H> when entering a compilation -scope [perl #106282]. - -=item * C<~> on vstrings - -The bitwise complement operator (and possibly other operators, too) when -passed a vstring would leave vstring magic attached to the return value, -even though the string had changed. This meant that -C<< version->new(~v1.2.3) >> would create a version looking like "v1.2.3" -even though the string passed to C<< version->new >> was actually -"\376\375\374". This also caused L to deparse C<~v1.2.3> -incorrectly, without the C<~> [perl #29070]. - -=item * Vstrings blowing away magic - -Assigning a vstring to a magic (e.g., tied, C<$!>) variable and then -assigning something else used to blow away all the magic. This meant that -tied variables would come undone, C<$!> would stop getting updated on -failed system calls, C<$|> would stop setting autoflush, and other -mischief would take place. This has been fixed. - -=item * C and tied hashes - -The C XS function now works on tied hashes, instead of crashing or -returning an empty hash. - -=item * Hashes will null elements - -It is possible from XS code to create hashes with elements that have no -values. Perl itself sometimes creates such hashes, but they are rarely -visible to Perl code. The hash element and slice operators used to crash -when handling these in lvalue context. These have been fixed. They now -produce a "Modification of non-creatable hash value attempted" error -message. - -=item * No warning for C - -When one writes C, which used to work in Perl 4, a -"Precedence problem" warning is produced. This warning used erroneously to -apply to fully-qualified bareword handle names not followed by C<||>. This -has been corrected. - -=item * C with 0 or 1 argument -would sometimes return a name that could not be used to refer to the -filehandle, or sometimes it would return C even when a filehandle -was selected. Now it returns a typeglob reference in such cases. - -=item * C and tied variables +=item XXX-some-platform -C no longer ignores FETCH on tied variables as it used -to most of the time [perl #97956]. +XXX -=item * C and numbers - -C no longer ignores some arguments that it thinks are -numeric, while treating others as filehandle names. It is now consistent -for flat scalars (i.e., not references). - -=item * Lvalue subs and strict mode - -Lvalue sub calls that are not determined to be such at compile time -(C<&$name> or &{"name"}) are no longer exempt from strict refs if they -occur in the last statement of an lvalue subroutine [perl #102486]. - -=item * Non-lvalue sub calls in potentially lvalue context - -Sub calls whose subs are not visible at compile time, if -they occurred in the last statement of an lvalue subroutine, -would reject non-lvalue subroutines and die with "Can't modify non-lvalue -subroutine call" [perl #102486]. - -Non-lvalue sub calls whose subs I visible at compile time exhibited -the opposite bug. If the call occurred in the last statement of an lvalue -subroutine, there would be no error when the lvalue sub was called in -lvalue context. Perl would blindly assign to the temporary value returned -by the non-lvalue subroutine. - -=item * AUTOLOADing lvalue subs - -C routines used to take precedence over the actual sub being -called (i.e., when autoloading wasn't needed), for sub calls in lvalue or -potential lvalue context, if the subroutine was not visible at compile -time. - -=item * C and tied C<@DB::args> - -C sets C<@DB::args> to the subroutine arguments when called from -the DB package. It used to crash when doing so if C<@DB::args> happened to -be tied. Now it croaks instead. - -=item * Tying C<@_> - -Under debugging builds, this code: - - sub TIEARRAY{bless[]} - sub { - tie @_, ""; - \@_; - }->(1); - -use to produce an "av_reify called on tied array" warning. It doesn't any -more. - -=item * Unrecognised switches on C<#!> line - -If a switch, such as B<-x>, that cannot occur on the C<#!> line is used -there, perl dies with "Can't emulate...". - -It used to produce the same message for switches that perl did not -recognise at all, whether on the command line or the C<#!> line. - -Now it produces the "Unrecognized switch" error message [perl #104288]. - -=item * C and SIGCHLD - -C now temporarily blocks the SIGCHLD signal handler, to prevent the -signal handler from stealing the exit status [perl #105700]. - -=item * Deleting methods via C - -Deletion of methods via C syntax used to update -method caches if called in void context, but not scalar or list context. -Now it always updates those caches. - -=item * Hash element deletion and destructors - -When hash elements are deleted in void context, the internal hash entry is -now freed before the value is freed, to prevent destructors called by that -latter freeing from seeing the hash in an inconsistent state. It was -possible to cause double-frees if the destructor freed the hash itself -[perl #100340]. - -=item * C<(s)printf>'s %n formatting code - -The %n formatting code, which causes the number of characters to be -assigned to the next argument to C or C now actually -assigns the number of characters, instead of the number of bytes. - -It also works now with special lvalue functions like C and with -nonexistent hash and array elements [perl #103492]. - -=item * Typeglobs and threads - -Typeglobs returned from threads are no longer cloned if the parent thread -already has a glob with the same name. This means that returned -subroutines will now assign to the right package variables [perl #107366]. - -=item * C - -In Perl 5.14, C was changed to create a new variable not tied to -anything, even if $_ was tied before that. But, due to an oversight, it -would still call FETCH once on a tied $_ before replacing it with the new -variable. This has been fixed [perl #105912]. - -=item * Returning tied variables - -When returning a value from a non-lvalue subroutine, Perl copies the value. -Sometimes it cheats for the sake of speed, and does not copy the value if -it makes no observable difference. This optimisation was erroneously -allowing the copy to be skipped on tied variables, causing a difference in -behaviour depending on the tied variable's reference count. This has been -fixed [perl #95548]. - -=item * C<{@a = sort}> no longer crashes +=back -This particular piece of code (C with no arguments assigned to an -array, inside a block with no C<;>) started crashing in an earlier 5.15.x -release. It has been fixed. +=head2 Discontinued Platforms -=item * C and read-only scalars +XXX List any platforms that this version of perl no longer compiles on. -C now refuses to modify read-only scalars [perl #91850]. +=over 4 -=item * C with undefined mode +=item XXX-some-platform -C now only warns once, rather than three times, if the mode -argument is C [perl #90064]. +XXX -=item * Freeing an aggregate during list assignment +=back -If list assignment to a hash or array triggered destructors that freed the -hash or array itself, a crash would ensue. This is no longer the case -[perl #107440]. +=head2 Platform-Specific Notes -=item * Confused internal bookkeeping with @ISA arrays +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 section. -Creating a weak reference to an @ISA array or accessing the array index -(C<$#ISA>) could result in confused internal bookkeeping for elements -subsequently added to the @ISA array. For instance, creating a weak -reference to the element itself could push that weak reference on to @ISA; -and elements added after use of C<$#ISA> would be ignored by method lookup -[perl #85670]. +=over 4 -=item * DELETE on scalar ties +=item XXX-some-platform -Tying an element of %ENV or C<%^H> and then deleting that element would -result in a call to the tie object's DELETE method, even though tying the -element itself is supposed to be equivalent to tying a scalar (the element -is, of course, a scalar) [perl #67490]. +XXX -=item * Freeing $_ inside C or C +=back -Freeing $_ inside a C or C block or a code block embedded in a -regular expression used to result in double frees [perl #92254, #92256]. +=head1 Internal Changes -=item * Warnings with C<+=> +XXX Changes which affect the interface available to C code go here. +Other significant internal changes for future core maintainers should +be noted as well. -The C<+=> operator does not usually warn when the left-hand side is -C, but it was doing so for tied variables. This has been fixed -[perl #44895]. +[ List each change as a =item entry ] -=item * Tying and autovivification +=over 4 -When Perl autovivifies an element of a tied array or hash (which entails -calling STORE with a new reference), it now calls FETCH immediately after -the STORE, instead of assuming that FETCH would have returned the same -reference. This can make it easier to implement tied objects [perl #35865, #43011]. +=item * -=item * C<@&> and C<$&> +XXX -Mentioning a variable named "&" other than C<$&> (i.e., C<@&> or C<%&>) no -longer stops C<$&> from working. The same applies to variables named "'" -and "`" [perl #24237]. +=back -=item * Stacked filetests +=head1 Selected Bug Fixes -C<-T> and C<-B> now work when stacked up with other filetest operators -[perl #77388]. +XXX Important bug fixes in the core language are summarised here. +Bug fixes in files in F and F are best summarised in +L. -=item * Filetests and stat buffers +[ List each fix as a =item entry ] -Perl keeps several internal variables to keep track of the last stat -buffer, from which file(handle) it originated, what type it was, and -whether the last stat succeeded. +=over 4 -There were various cases where these could get out of synch, resulting in -inconsistent or erratic behaviour in edge cases (every mention of C<-T> -applies to C<-B> as well): +=item * -=over +I is now considered a script that uses two characters. This corrects +a Unicode 6.1 omission. =item * -C<-T I>, even though it does a C, was not resetting the last -stat type, so an C following it would merrily return the wrong -results. Also, it was not setting the success status. +C<< perlfunc.hmtl >> is now being generated again. [perl #107870] =item * -Freeing the handle last used by C or a filetest could result in -S> using an unrelated handle. +C<< $$ >> is no longer tainted. Since this value comes directly from +C<< getpid() >>, it is always safe. =item * -C with an IO reference (as returned by C<*STDIO{IO}>, for instance) -would not reset the stat type. +Fix leaking a file handle. [perl #37033] =item * -C with an IO reference was not recording the filehandle for -S> to use. +An off-by-one error caused C<< /[:upper:]/ >> and C<< /[:punct:]/ >> to +unexepectly match characters with code points above 255. This has been +rectified. [perl 111400]. =item * -The presence of fatal warnings could cause the stat buffer not to be reset -for a filetest operator on an unopened filehandle or C<-l> on any handle. +C<< (?foo: ...) >> no longer loses passed in character set. =item * -Fatal warnings would stop C<-T> from setting C<$!>. +Allow attributes to set C<< :lvalue >> on a defined sub. [perl 107366]. =item * -When the last stat was on an unreadable file, C<-T _> is supposed to -return C, leaving the last stat buffer unchanged. But it was -setting the stat type, causing C to stop working. +C<< die; >> with a non-reference, non-string value in $@ now properly +propgates that value [perl #111654]. =item * -C<-T I> was not resetting the internal stat buffers for -unreadable files. +C<< Term::ReadLine >> now uses AnyEvent instead of Tk for an event loop. + =back -These have all been fixed. +=head1 Known Problems -=item * C +XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any +tests that had to be Ced for the release would be noted here, unless +they were specific to a particular platform (see below). -An earlier 5.15.x release caused this construct to stop the C<%!> hash -from working. Likewise C and C caused -C<%+> and C<%->, respectively, to stop working. This has been fixed. +This is a list of some significant unfixed bugs, which are regressions +from either 5.XXX.XXX or 5.XXX.XXX. -=item * C<-T _> with no preceding C +[ List each fix as a =item entry ] -This used to produce a confusing "uninitialized" warning, even though there -is no visible uninitialized value to speak of. +=over 4 -=item * C> and fstat failures +=item * + +XXX -If the operating system's C function failed, C would warn -about an unopened handle, even though that was not the case. This has been -fixed. +=back -=item * C> +=head1 Obituary -C is documented to fall back to C (with a warning) when given -a filehandle. When passed an IO reference, it was actually doing the -equivalent of S> and ignoring the handle. +XXX If any significant core contributor has died, we've added a short obituary +here. -=item * Crashes with warnings +=head1 Acknowledgements -Two warning messages that mention variable names started crashing in -5.15.5, but have been fixed [perl #106726, #107656]. +XXX Redo this on 2012-03-20 -=item * Bitwise assignment operators and copy-on-write +Perl 5.15.9 represents approximately 4 weeks of development since Perl 5.15.8 +and contains approximately 74,000 lines of changes across 470 files from 23 +authors. -In 5.14.0, the bitwise assignment operators C<|=>, C<^=> and C<&=> starting -leaving the left-hand side undefined if it happened to be a copy-on-write -string. This has been fixed [perl #108480]. +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.9: -=back +Aaron Crane, Abigail, Chris 'BinGOs' Williams, Craig A. Berry, Dave Rolsky, +David Cantrell, David Golden, David Mitchell, Eric Brine, Father Chrysostomos, +Florian Ragwitz, James E Keenan, Jesse Vincent, Karl Williamson, Marc Green, +Max Maischein, Nicholas Clark, Pau Amma, Reini Urban, Ricardo Signes, Tony +Cook, Yves Orton, Zefram. -=head1 Acknowledgements +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. -XXX Generate this with: +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. - perl Porting/acknowledgements.pl v5.15.6..HEAD +For a more complete list of all of Perl's historical contributors, please see +the F file in the Perl source distribution. =head1 Reporting Bugs