From fe83672cd0daa71efd0ba57c3873bdf93923dea2 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Mon, 29 Aug 2011 08:40:13 -0600 Subject: [PATCH 001/316] Remove old odd-numbered releases perldeltas The odd-numbered releases are for internal development, and their individual perldeltas are collated togeter for the next even numbered dot 0 release. This means that the individual perldeltas are no longer useful once that dot 0 release is made, and they clutter things up, giving duplicate information. --- MANIFEST | 28 - pod.lst | 28 - pod/perl.pod | 28 - pod/perl5110delta.pod | 1623 ---------------------------------------- pod/perl5111delta.pod | 365 --------- pod/perl5112delta.pod | 349 --------- pod/perl5113delta.pod | 559 -------------- pod/perl5114delta.pod | 279 ------- pod/perl5115delta.pod | 328 -------- pod/perl5130delta.pod | 134 ---- pod/perl51310delta.pod | 815 -------------------- pod/perl51311delta.pod | 514 ------------- pod/perl5131delta.pod | 288 ------- pod/perl5132delta.pod | 410 ---------- pod/perl5133delta.pod | 668 ----------------- pod/perl5134delta.pod | 543 -------------- pod/perl5135delta.pod | 593 --------------- pod/perl5136delta.pod | 800 -------------------- pod/perl5137delta.pod | 946 ----------------------- pod/perl5138delta.pod | 913 ---------------------- pod/perl5139delta.pod | 644 ---------------- pod/perl570delta.pod | 899 ---------------------- pod/perl571delta.pod | 1075 -------------------------- pod/perl572delta.pod | 831 -------------------- pod/perl573delta.pod | 246 ------ pod/perl590delta.pod | 1015 ------------------------- pod/perl591delta.pod | 323 -------- pod/perl592delta.pod | 342 --------- pod/perl593delta.pod | 551 -------------- pod/perl594delta.pod | 382 ---------- pod/perl595delta.pod | 587 --------------- win32/pod.mak | 112 --- 32 files changed, 17218 deletions(-) delete mode 100644 pod/perl5110delta.pod delete mode 100644 pod/perl5111delta.pod delete mode 100644 pod/perl5112delta.pod delete mode 100644 pod/perl5113delta.pod delete mode 100644 pod/perl5114delta.pod delete mode 100644 pod/perl5115delta.pod delete mode 100644 pod/perl5130delta.pod delete mode 100644 pod/perl51310delta.pod delete mode 100644 pod/perl51311delta.pod delete mode 100644 pod/perl5131delta.pod delete mode 100644 pod/perl5132delta.pod delete mode 100644 pod/perl5133delta.pod delete mode 100644 pod/perl5134delta.pod delete mode 100644 pod/perl5135delta.pod delete mode 100644 pod/perl5136delta.pod delete mode 100644 pod/perl5137delta.pod delete mode 100644 pod/perl5138delta.pod delete mode 100644 pod/perl5139delta.pod delete mode 100644 pod/perl570delta.pod delete mode 100644 pod/perl571delta.pod delete mode 100644 pod/perl572delta.pod delete mode 100644 pod/perl573delta.pod delete mode 100644 pod/perl590delta.pod delete mode 100644 pod/perl591delta.pod delete mode 100644 pod/perl592delta.pod delete mode 100644 pod/perl593delta.pod delete mode 100644 pod/perl594delta.pod delete mode 100644 pod/perl595delta.pod diff --git a/MANIFEST b/MANIFEST index 9c7e0276955..9c9434f0fc2 100644 --- a/MANIFEST +++ b/MANIFEST @@ -4381,29 +4381,11 @@ pod/perl5004delta.pod Perl changes in version 5.004 pod/perl5005delta.pod Perl changes in version 5.005 pod/perl5100delta.pod Perl changes in version 5.10.0 pod/perl5101delta.pod Perl changes in version 5.10.1 -pod/perl5110delta.pod Perl changes in version 5.11.0 -pod/perl5111delta.pod Perl changes in version 5.11.1 -pod/perl5112delta.pod Perl changes in version 5.11.2 -pod/perl5113delta.pod Perl changes in version 5.11.3 -pod/perl5114delta.pod Perl changes in version 5.11.4 -pod/perl5115delta.pod Perl changes in version 5.11.5 pod/perl5120delta.pod Perl changes in version 5.12.0 pod/perl5121delta.pod Perl changes in version 5.12.1 pod/perl5122delta.pod Perl changes in version 5.12.2 pod/perl5123delta.pod Perl changes in version 5.12.3 pod/perl5124delta.pod Perl changes in version 5.12.4 -pod/perl5130delta.pod Perl changes in version 5.13.0 -pod/perl51310delta.pod Perl changes in version 5.13.10 -pod/perl51311delta.pod Perl changes in version 5.13.11 -pod/perl5131delta.pod Perl changes in version 5.13.1 -pod/perl5132delta.pod Perl changes in version 5.13.2 -pod/perl5133delta.pod Perl changes in version 5.13.3 -pod/perl5134delta.pod Perl changes in version 5.13.4 -pod/perl5135delta.pod Perl changes in version 5.13.5 -pod/perl5136delta.pod Perl changes in version 5.13.6 -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/perl5141delta.pod Perl changes in version 5.14.1 pod/perl5150delta.pod Perl changes in version 5.15.0 @@ -4411,10 +4393,6 @@ pod/perl5151delta.pod Perl changes in version 5.15.1 pod/perl5152delta.pod Perl changes in version 5.15.2 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 -pod/perl571delta.pod Perl changes in version 5.7.1 -pod/perl572delta.pod Perl changes in version 5.7.2 -pod/perl573delta.pod Perl changes in version 5.7.3 pod/perl581delta.pod Perl changes in version 5.8.1 pod/perl582delta.pod Perl changes in version 5.8.2 pod/perl583delta.pod Perl changes in version 5.8.3 @@ -4425,12 +4403,6 @@ pod/perl587delta.pod Perl changes in version 5.8.7 pod/perl588delta.pod Perl changes in version 5.8.8 pod/perl589delta.pod Perl changes in version 5.8.9 pod/perl58delta.pod Perl changes in version 5.8.0 -pod/perl590delta.pod Perl changes in version 5.9.0 -pod/perl591delta.pod Perl changes in version 5.9.1 -pod/perl592delta.pod Perl changes in version 5.9.2 -pod/perl593delta.pod Perl changes in version 5.9.3 -pod/perl594delta.pod Perl changes in version 5.9.4 -pod/perl595delta.pod Perl changes in version 5.9.5 pod/perlapio.pod Perl internal IO abstraction interface pod/perlartistic.pod Perl Artistic License pod/perlbook.pod Perl book information diff --git a/pod.lst b/pod.lst index b4c62fb75ce..4fddcd8484a 100644 --- a/pod.lst +++ b/pod.lst @@ -145,37 +145,13 @@ h Miscellaneous perl5150delta Perl changes in version 5.15.0 perl5141delta Perl changes in version 5.14.1 perl5140delta Perl changes in version 5.14.0 - perl51311delta Perl changes in version 5.13.11 - perl51310delta Perl changes in version 5.13.10 - perl5139delta Perl changes in version 5.13.9 - perl5138delta Perl changes in version 5.13.8 - perl5137delta Perl changes in version 5.13.7 - perl5136delta Perl changes in version 5.13.6 - perl5135delta Perl changes in version 5.13.5 - perl5134delta Perl changes in version 5.13.4 - perl5133delta Perl changes in version 5.13.3 - perl5132delta Perl changes in version 5.13.2 - perl5131delta Perl changes in version 5.13.1 - perl5130delta Perl changes in version 5.13.0 perl5124delta Perl changes in version 5.12.4 perl5123delta Perl changes in version 5.12.3 perl5122delta Perl changes in version 5.12.2 perl5121delta Perl changes in version 5.12.1 perl5120delta Perl changes in version 5.12.0 - perl5115delta Perl changes in version 5.11.5 - perl5114delta Perl changes in version 5.11.4 - perl5113delta Perl changes in version 5.11.3 - perl5112delta Perl changes in version 5.11.2 - perl5111delta Perl changes in version 5.11.1 - perl5110delta Perl changes in version 5.11.0 perl5101delta Perl changes in version 5.10.1 perl5100delta Perl changes in version 5.10.0 - perl595delta Perl changes in version 5.9.5 - perl594delta Perl changes in version 5.9.4 - perl593delta Perl changes in version 5.9.3 - perl592delta Perl changes in version 5.9.2 - perl591delta Perl changes in version 5.9.1 - perl590delta Perl changes in version 5.9.0 perl589delta Perl changes in version 5.8.9 perl588delta Perl changes in version 5.8.8 perl587delta Perl changes in version 5.8.7 @@ -186,10 +162,6 @@ h Miscellaneous perl582delta Perl changes in version 5.8.2 perl581delta Perl changes in version 5.8.1 perl58delta Perl changes in version 5.8.0 - perl573delta Perl changes in version 5.7.3 - perl572delta Perl changes in version 5.7.2 - perl571delta Perl changes in version 5.7.1 - perl570delta Perl changes in version 5.7.0 perl561delta Perl changes in version 5.6.1 perl56delta Perl changes in version 5.6 perl5005delta Perl changes in version 5.005 diff --git a/pod/perl.pod b/pod/perl.pod index 7b8e6571f25..a8509377feb 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -167,37 +167,13 @@ For ease of access, the Perl manual has been split up into several sections. perl5150delta Perl changes in version 5.15.0 perl5141delta Perl changes in version 5.14.1 perl5140delta Perl changes in version 5.14.0 - perl51311delta Perl changes in version 5.13.11 - perl51310delta Perl changes in version 5.13.10 - perl5139delta Perl changes in version 5.13.9 - perl5138delta Perl changes in version 5.13.8 - perl5137delta Perl changes in version 5.13.7 - perl5136delta Perl changes in version 5.13.6 - perl5135delta Perl changes in version 5.13.5 - perl5134delta Perl changes in version 5.13.4 - perl5133delta Perl changes in version 5.13.3 - perl5132delta Perl changes in version 5.13.2 - perl5131delta Perl changes in version 5.13.1 - perl5130delta Perl changes in version 5.13.0 perl5124delta Perl changes in version 5.12.4 perl5123delta Perl changes in version 5.12.3 perl5122delta Perl changes in version 5.12.2 perl5121delta Perl changes in version 5.12.1 perl5120delta Perl changes in version 5.12.0 - perl5115delta Perl changes in version 5.11.5 - perl5114delta Perl changes in version 5.11.4 - perl5113delta Perl changes in version 5.11.3 - perl5112delta Perl changes in version 5.11.2 - perl5111delta Perl changes in version 5.11.1 - perl5110delta Perl changes in version 5.11.0 perl5101delta Perl changes in version 5.10.1 perl5100delta Perl changes in version 5.10.0 - perl595delta Perl changes in version 5.9.5 - perl594delta Perl changes in version 5.9.4 - perl593delta Perl changes in version 5.9.3 - perl592delta Perl changes in version 5.9.2 - perl591delta Perl changes in version 5.9.1 - perl590delta Perl changes in version 5.9.0 perl589delta Perl changes in version 5.8.9 perl588delta Perl changes in version 5.8.8 perl587delta Perl changes in version 5.8.7 @@ -208,10 +184,6 @@ For ease of access, the Perl manual has been split up into several sections. perl582delta Perl changes in version 5.8.2 perl581delta Perl changes in version 5.8.1 perl58delta Perl changes in version 5.8.0 - perl573delta Perl changes in version 5.7.3 - perl572delta Perl changes in version 5.7.2 - perl571delta Perl changes in version 5.7.1 - perl570delta Perl changes in version 5.7.0 perl561delta Perl changes in version 5.6.1 perl56delta Perl changes in version 5.6 perl5005delta Perl changes in version 5.005 diff --git a/pod/perl5110delta.pod b/pod/perl5110delta.pod deleted file mode 100644 index 9c815f92ea6..00000000000 --- a/pod/perl5110delta.pod +++ /dev/null @@ -1,1623 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5110delta - what is new for perl v5.11.0 - -=head1 DESCRIPTION - -This document describes differences between the 5.10.0 release and -the 5.11.0 development release. - -=head1 Incompatible Changes - -=head2 Unicode interpretation of \w, \d, \s, and the POSIX character classes redefined. - -Previous versions of Perl tried to map POSIX style character class definitions onto -Unicode property names so that patterns would "dwim" when matches were made against latin-1 or -unicode strings. This proved to be a mistake, breaking character class negation, causing -forward compatibility problems (as Unicode keeps updating their property definitions and adding -new characters), and other problems. - -Therefore we have now defined a new set of artificial "unicode" property names which will be -used to do unicode matching of patterns using POSIX style character classes and perl short-form -escape character classes like \w and \d. - -The key change here is that \d will no longer match every digit in the unicode standard -(there are thousands) nor will \w match every word character in the standard, instead they -will match precisely their POSIX or Perl definition. - -Those needing to match based on Unicode properties can continue to do so by using the \p{} syntax -to match whichever property they like, including the new artificial definitions. - -B This is a backwards incompatible no-warning change in behaviour. If you are upgrading -and you process large volumes of text look for POSIX and Perl style character classes and -change them to the relevant property name (by removing the word 'Posix' from the current name). - -The following table maps the POSIX character class names, the escapes and the old and new -Unicode property mappings: - - POSIX Esc Class New-Property ! Old-Property - ----------------------------------------------+------------- - alnum [0-9A-Za-z] IsPosixAlnum ! IsAlnum - alpha [A-Za-z] IsPosixAlpha ! IsAlpha - ascii [\000-\177] IsASCII = IsASCII - blank [\011 ] IsPosixBlank ! - cntrl [\0-\37\177] IsPosixCntrl ! IsCntrl - digit \d [0-9] IsPosixDigit ! IsDigit - graph [!-~] IsPosixGraph ! IsGraph - lower [a-z] IsPosixLower ! IsLower - print [ -~] IsPosixPrint ! IsPrint - punct [!-/:-@[-`{-~] IsPosixPunct ! IsPunct - space [\11-\15 ] IsPosixSpace ! IsSpace - \s [\11\12\14\15 ] IsPerlSpace ! IsSpacePerl - upper [A-Z] IsPosixUpper ! IsUpper - word \w [0-9A-Z_a-z] IsPerlWord ! IsWord - xdigit [0-9A-Fa-f] IsXDigit = IsXDigit - -If you wish to build perl with the old mapping you may do so by setting - - #define PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS 1 - -in regcomp.h, and then setting - - PERL_TEST_LEGACY_POSIX_CC - -to true your environment when testing. - - -=head2 @INC reorganization - -In @INC, ARCHLIB and PRIVLIB now occur after after the current version's -site_perl and vendor_perl. - -=head2 Switch statement changes - -The handling of complex expressions by the C/C switch -statement has been enhanced. These enhancements are also available in -5.10.1 and subsequent 5.10 releases. There are two new cases where C now -interprets its argument as a boolean, instead of an expression to be used -in a smart match: - -=over 4 - -=item flip-flop operators - -The C<..> and C<...> flip-flop operators are now evaluated in boolean -context, following their usual semantics; see L. - -Note that, as in perl 5.10.0, C will not work to test -whether a given value is an integer between 1 and 10; you should use -C instead (note the array reference). - -However, contrary to 5.10.0, evaluating the flip-flop operators in boolean -context ensures it can now be useful in a C, notably for -implementing bistable conditions, like in: - - when (/^=begin/ .. /^=end/) { - # do something - } - -=item defined-or operator - -A compound expression involving the defined-or operator, as in -C, will be treated as boolean if the first -expression is boolean. (This just extends the existing rule that applies -to the regular or operator, as in C.) - -=back - -The next section details more changes brought to the semantics to -the smart match operator, that naturally also modify the behaviour -of the switch statements where smart matching is implicitly used. -These changers were also made for the 5.10.1 release, and will remain in -subsequent 5.10 releases. - -=head2 Smart match changes - -=head3 Changes to type-based dispatch - -The smart match operator C<~~> is no longer commutative. The behaviour of -a smart match now depends primarily on the type of its right hand -argument. Moreover, its semantics have been adjusted for greater -consistency or usefulness in several cases. While the general backwards -compatibility is maintained, several changes must be noted: - -=over 4 - -=item * - -Code references with an empty prototype are no longer treated specially. -They are passed an argument like the other code references (even if they -choose to ignore it). - -=item * - -C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine -returns a true value for each key of the hash (or element of the -array), instead of passing the whole hash or array as a reference to -the subroutine. - -=item * - -Due to the commutativity breakage, code references are no longer -treated specially when appearing on the left of the C<~~> operator, -but like any vulgar scalar. - -=item * - -C is always false (since C can't be a key in a -hash). No implicit conversion to C<""> is done (as was the case in perl -5.10.0). - -=item * - -C<$scalar ~~ @array> now always distributes the smart match across the -elements of the array. It's true if one element in @array verifies -C<$scalar ~~ $element>. This is a generalization of the old behaviour -that tested whether the array contained the scalar. - -=back - -The full dispatch table for the smart match operator is given in -L. - -=head3 Smart match and overloading - -According to the rule of dispatch based on the rightmost argument type, -when an object overloading C<~~> appears on the right side of the -operator, the overload routine will always be called (with a 3rd argument -set to a true value, see L.) However, when the object will -appear on the left, the overload routine will be called only when the -rightmost argument is a simple scalar. This way distributivity of smart match -across arrays is not broken, as well as the other behaviours with complex -types (coderefs, hashes, regexes). Thus, writers of overloading routines -for smart match mostly need to worry only with comparing against a scalar, -and possibly with stringification overloading; the other common cases -will be automatically handled consistently. - -C<~~> will now refuse to work on objects that do not overload it (in order -to avoid relying on the object's underlying structure). (However, if the -object overloads the stringification or the numification operators, and -if overload fallback is active, it will be used instead, as usual.) - -=head2 Labels can't be keywords - -Labels used as targets for the C, C, C or C -statements cannot be keywords anymore. This restriction will prevent -potential confusion between the C and C syntaxes: -for example, a statement like C would jump to a label whose -name would be the return value of C, (usually 1), instead of a -label named C. Moreover, the other control flow statements -would just ignore any keyword passed to them as a label name. Since -such labels cannot be defined anymore, this kind of error will be -avoided. - -=head2 Other incompatible changes - -=over 4 - -=item * - -The semantics of C have changed slightly. -See L<"Modules and Pragmata"> for more information. - -=item * - -It is now a run-time error to use the smart match operator C<~~> -with an object that has no overload defined for it. (This way -C<~~> will not break encapsulation by matching against the -object's internal representation as a reference.) - -=item * - -The version control system used for the development of the perl -interpreter has been switched from Perforce to git. This is mainly an -internal issue that only affects people actively working on the perl core; -but it may have minor external visibility, for example in some of details -of the output of C. See L for more information. - -=item * - -The internal structure of the C directory in the perl source has -been reorganised. In general, a module C whose source was -stored under F is now located under F. Also, -nearly all dual-life modules have been moved from F to F. This -is purely a source tarball change, and should make no difference to the -compilation or installation of perl, unless you have a very customised build -process that explicitly relies on this structure, or which hard-codes the -C F parameter. Specifically, this change does not by -default alter the location of any files in the final installation. - -=item * - -As part of the C 2.x to 3.x upgrade, the experimental -C module has been removed. -See L for more details. - -=item * - -As part of the C upgrade, the -C and C modules -have been removed from this distribution. - -=item * - -C no longer contains the C<%:patchlevel> hash. - -=item * - -This one is actually a change introduced in 5.10.0, but it was missed -from that release's perldelta, so it is mentioned here instead. - -A bugfix related to the handling of the C modifier and C resulted -in a change of behaviour between 5.8.x and 5.10.0: - - # matches in 5.8.x, doesn't match in 5.10.0 - $re = qr/^bar/; "foo\nbar" =~ /$re/m; - -=item * - -C now returns undef. - -=item * - -Unsupported private C API functions are now declared "static" to prevent -leakage to Perl's public API. - -=item * - -To support the bootstrapping process, F no longer builds with -UTF-8 support in the regexp engine. - -This allows a build to complete with PERL_UNICODE set and a UTF-8 locale. -Without this there's a bootstrapping problem, as miniperl can't load the UTF-8 -components of the regexp engine, because they're not yet built. - -=item * - -F's @INC is now restricted to just -I..., the split of $ENV{PERL5LIB}, and "." - -=item * - -A space or a newline is now required after a C<"#line XXX"> directive. - -=item * - -Tied filehandles now have an additional method EOF which provides the EOF type - -=item * - -To better match all other flow control statements, C may no longer be used as an attribute. - -=back - -=head1 Core Enhancements - -=head2 Unicode Character Database 5.1.0 - -The copy of the Unicode Character Database included in Perl 5.11.0 has -been updated to 5.1.0 from 5.0.0. See -L for the -notable changes. - -=head2 A proper interface for pluggable Method Resolution Orders - -As of Perl 5.11.0 there is a new interface for plugging and using method -resolution orders other than the default (linear depth first search). -The C3 method resolution order added in 5.10.0 has been re-implemented as -a plugin, without changing its Perl-space interface. See L for -more information. - -=head2 The C pragma - -This pragma allows you to lexically disable or enable overloading -for some or all operations. (Yuval Kogman) - -=head2 C<\N> regex escape - -A new regex escape has been added, C<\N>. It will match any character that -is not a newline, independently from the presence or absence of the single -line match modifier C. (If C<\N> is followed by an opening brace and -by a letter, perl will still assume that a Unicode character name is -coming, so compatibility is preserved.) (Rafael Garcia-Suarez) - -=head2 Implicit strictures - -Using the C syntax with a version number greater or equal -to 5.11.0 will also lexically enable strictures just like C -would do (in addition to enabling features.) So, the following: - - use 5.11.0; - -will now imply: - - use strict; - use feature ':5.11'; - -=head2 Parallel tests - -The core distribution can now run its regression tests in parallel on -Unix-like platforms. Instead of running C, set C in -your environment to the number of tests to run in parallel, and run -C. On a Bourne-like shell, this can be done as - - TEST_JOBS=3 make test_harness # Run 3 tests in parallel - -An environment variable is used, rather than parallel make itself, because -L needs to be able to schedule individual non-conflicting test -scripts itself, and there is no standard interface to C utilities to -interact with their job schedulers. - -Note that currently some test scripts may fail when run in parallel (most -notably C). If necessary run just the failing scripts -again sequentially and see if the failures go away. - -=head2 The C<...> operator - -A new operator, C<...>, nicknamed the Yada Yada operator, has been added. -It is intended to mark placeholder code, that is not yet implemented. -See L. (chromatic) - -=head2 DTrace support - -Some support for DTrace has been added. See "DTrace support" in F. - -=head2 Support for C in CPAN module metadata - -Both C and C now support the C keyword -in the F metadata file included in most recent CPAN distributions. -This allows distribution authors to specify configuration prerequisites that -must be installed before running F or F. - -See the documentation for C or C for more -on how to specify C when creating a distribution for CPAN. - -=head2 C is now more flexible - -The C function can now operate on arrays. - -=head2 Y2038 compliance - -Perl's core time-related functions are now Y2038 compliant. (With 29 -years to spare!) - -=head2 C<$,> flexibility - -The variable C<$,> may now be tied. - -=head2 // in where clauses - -// now behaves like || in when clauses - -=head2 Enabling warnings from your shell environment - -You can now set C<-W> from the C environment variable - -=head2 C - -C now allows you to locally delete a hash entry. - -=head2 New support for Abstract namespace sockets - -Abstract namespace sockets are Linux-specific socket type that live in -AF_UNIX family, slightly abusing it to be able to use arbitrary -character arrays as addresses: They start with nul byte and are not -terminated by nul byte, but with the length passed to the socket() -system call. - -=head1 Modules and Pragmata - -=head2 Dual-lifed modules moved - -Dual-lifed modules maintained primarily in the Perl core now live in dist/. -Dual-lifed modules maintained primarily on CPAN now live in cpan/ - -In previous releases of Perl, it was customary to enumerate all module -changes in this section of the C file. From 5.11.0 forward -only notable updates (such as new or deprecated modules ) will be -listed in this section. For a complete reference to the versions of -modules shipped in a given release of perl, please see L. - -=head2 New Modules and Pragmata - -=over 4 - -=item C - -This is a new lexically-scoped alternative for the C module. -The bundled version is 2.06_01. Note that in this release, using a string -eval when C is in effect can cause the autodie behaviour to leak -into the surrounding scope. See L for more details. - -=item C - -This has been added to the core (version 2.020). - -=item C - -This pragma establishes an ISA relationship with base classes at compile -time. It provides the key feature of C without the feature creep. - -=item C - -This has been added to the core (version 1.39). - -=back - -=head2 Pragmata Changes - -=over 4 - -=item C - -See L pragma"> above. - -=item C - -The C pragma has been removed. It had been marked as deprecated since -5.6.0. - -=item C - -The Unicode F database file has been added. This has the -effect of adding some extra C<\N> character names that formerly wouldn't -have been recognised; for example, C<"\N{LATIN CAPITAL LETTER GHA}">. - -=item C - -The meaning of the C<:5.10> and C<:5.10.X> feature bundles has -changed slightly. The last component, if any (i.e. C) is simply ignored. -This is predicated on the assumption that new features will not, in -general, be added to maintenance releases. So C<:5.10> and C<:5.10.X> -have identical effect. This is a change to the behaviour documented for -5.10.0. - -=item C - -Upgraded from version 1.00 to 1.01. Performance for single inheritance is 40% -faster - see L below. - -C is now implemented as an XS extension. The documented interface has not -changed. Code relying on the implementation detail that some C -methods happened to be available at all times gets to "keep both pieces". - -=back - -=head2 Updated Modules - -=over 4 - -=item C - -Upgraded from version 6.42 to 6.55_02. - -Note that C and C -have been removed from this distribution. - -=item C - -Upgraded from version 2.64 to 3.17. - -Note that one side-effect of the 2.x to 3.x upgrade is that the -experimental C module (and its supporting -C, C, C and C modules) have been -removed. If you still need this, then they are available in the -(unmaintained) C distribution on CPAN. - -=item C - -Upgraded from version 1.04 to 1.05. - -C<< UNIVERSAL-Eimport() >> is now deprecated. - -=back - -=head1 Utility Changes - -=over 4 - -=item F - -Now looks in C too, which is a recent addition to gcc's -search path. - -=item F - -No longer incorrectly treats enum values like macros (Daniel Burr). - -Now handles C++ style constants (C) properly in enums. (A patch from -Rainer Weikusat was used; Daniel Burr also proposed a similar fix). - -=item F - -C subroutines now work under the debugger. - -The debugger now correctly handles proxy constant subroutines, and -subroutine stubs. - -=item F - -F now uses C<%Module::CoreList::bug_tracker> to print out upstream bug -tracker URLs. - -Where the user names a module that their bug report is about, and we know the -URL for its upstream bug tracker, provide a message to the user explaining -that the core copies the CPAN version directly, and provide the URL for -reporting the bug directly to upstream. - -=item F - -Perl 5.11.0 added a new utility F, which is a variant of -F, but for sending non-bug-reports to the authors and maintainers -of Perl. Getting nothing but bug reports can become a bit demoralising: -we'll see if this changes things. - -=back - -=head1 New Documentation - -=over 4 - -=item L - -This contains instructions on how to build perl for the Haiku platform. - -=item L - -This describes the new interface for pluggable Method Resolution Orders. - -=item L - -This document, by Richard Foley, provides an introduction to the use of -performance and optimization techniques which can be used with particular -reference to perl programs. - -=item L - -This describes how to access the perl source using the I version -control system. - -=back - -=head1 Changes to Existing Documentation - -The various large F files (which listed every change made to perl -over the last 18 years) have been removed, and replaced by a small file, -also called F, which just explains how that same information may -be extracted from the git version control system. - -The file F has been deleted, as it mainly described -interacting with the old Perforce-based repository, which is now obsolete. -Information still relevant has been moved to L. - -L, L, L and L are now all -generated at build time, rather than being shipped as part of the release. - -=over - -=item * - -Documented -X overloading. - -=item * - -Documented that C treats specially most of the filetest operators - -=item * - -Documented when as a syntax modifier - -=item * - -Eliminated "Old Perl threads tutorial", which describes 5005 threads. - -F is the same material reworked for ithreads. - -=item * - -Correct previous documentation: v-strings are not deprecated - -With version objects, we need them to use MODULE VERSION syntax. This -patch removes the deprecation note. - -=item * - -Added security contact information to L - -=back - -=head1 Performance Enhancements - - -=over 4 - -=item * - -A new internal cache means that C will often be faster. - -=item * - -The implementation of C Method Resolution Order has been optimised - -linearisation for classes with single inheritance is 40% faster. Performance -for multiple inheritance is unchanged. - -=item * - -Under C, the locale-relevant information is now cached on -read-only values, such as the list returned by C. This makes -operations such as C in the scope of C much -faster. - -=item * - -Empty C methods are no longer called. - -=item * - -Faster C - -=item * - -Speed up C on empty hash - -=back - -=head1 Installation and Configuration Improvements - -=head2 F reorganisation - -The layout of directories in F has been revised. Specifically, all -extensions are now flat, and at the top level, with C in pathnames -replaced by C<->, so that F is now F, -etc. The names of the extensions as specified to F, and as -reported by C<%Config::Config> under the keys C, -C, C and C have not changed, and -still use C. Hence this change will not have any affect once perl is -installed. C has been split out from being part of C, and -C is now an extension in its own right. - -Nearly all dual-life modules have been moved from F to F, and will -now appear as known C. This will made no difference to the -structure of an installed perl, nor will the modules installed differ, -unless you run F with options to specify an exact list of -extensions to build. In this case, you will rapidly become aware that you -need to add to your list, because various modules needed to complete the -build, such as C, have now become extensions, and -without them the build will fail well before it attempts to run the -regression tests. - -=head2 Configuration improvements - -If C and C are the same, then they are only added to -C<@INC> once. - -C<$Config{usedevel}> and the C-level C are now defined if -perl is built with C<-Dusedevel>. - -F will enable use of C<-fstack-protector>, to provide protection -against stack-smashing attacks, if the compiler supports it. - -F will now determine the correct prototypes for re-entrant -functions, and for C, if you are using a C++ compiler rather -than a C compiler. - -On Unix, if you build from a tree containing a git repository, the -configuration process will note the commit hash you have checked out, for -display in the output of C and C. Unpushed local commits -are automatically added to the list of local patches displayed by -C. - -=head2 Compilation improvements - -As part of the flattening of F, all extensions on all platforms are -built by F. This replaces the Unix-specific -F, VMS-specific F and Win32-specific -F. - -=head2 Platform Specific Changes - -=over 4 - -=item AIX - -Removed F for AIX 5L and 6.1. Only C was used from F. - -Removed F for AIX 5L and 6.1. The F is delivered as an -optional package with the AIX Toolbox. Unfortunately the 64 bit version -is broken. - -Hints changes mean that AIX 4.2 should work again. - -=item Cygwin - -On Cygwin we now strip the last number from the DLL. This has been the -behaviour in the cygwin.com build for years. The hints files have been -updated. - -=item DomainOS - -Support for Apollo DomainOS was removed in Perl 5.11.0 - -=item FreeBSD - -The hints files now identify the correct threading libraries on FreeBSD 7 -and later. - -=item Irix - -We now work around a bizarre preprocessor bug in the Irix 6.5 compiler: -C unfortunately goes into K&R mode, but C doesn't. - -=item Haiku - -Patches from the Haiku maintainers have been merged in. Perl should now -build on Haiku. - -=item MachTen - -Support for Tenon Intersystems MachTen Unix layer for MacOS Classic was -removed in Perl 5.11.0 - -=item MiNT - -Support for Atari MiNT was removed in Perl 5.11.0. - -=item MirOS BSD - -Perl should now build on MirOS BSD. - -=item NetBSD - -Hints now supports versions 5.*. - -=item Stratus VOS - -Various changes from Stratus have been merged in. - -=item Symbian - -There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK. - -=item Win32 - -Improved message window handling means that C and C messages -will no longer be dropped under race conditions. - -=item VMS - -Reads from the in-memory temporary files of C used to fail -if C<$/> was set to a numeric reference (to indicate record-style reads). -This is now fixed. - -VMS now supports C. - -Many improvements and cleanups have been made to the VMS file name handling -and conversion code. - -Enabling the C logical name now encodes a POSIX exit -status in a VMS condition value for better interaction with GNV's bash -shell and other utilities that depend on POSIX exit values. See -L for details. - -C now detects Unix compatibility mode on VMS. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -C<-I> on shebang line now adds directories in front of @INC -as documented, and as does C<-I> when specified on the command-line. - -=item * - -C is now fatal when called on non-numeric process identifiers. -Previously, an 'undef' process identifier would be interpreted as a request to -kill process "0", which would terminate the current process group on POSIX -systems. Since process identifiers are always integers, killing a non-numeric -process is now fatal. - -=item * - -5.10.0 inadvertently disabled an optimisation, which caused a measurable -performance drop in list assignment, such as is often used to assign -function parameters from C<@_>. The optimisation has been re-instated, and -the performance regression fixed. - -=item * - -Fixed memory leak on C [RT #53038]. - -=item * - -Some potential coredumps in PerlIO fixed [RT #57322,54828]. - -=item * - -The debugger now works with lvalue subroutines. - -=item * - -The debugger's C command was broken on modules that defined constants -[RT #61222]. - -=item * - -C and string complement could return tainted values for untainted -arguments [RT #59998]. - -=item * - -The C<-i>I<.suffix> command-line switch now recreates the file using -restricted permissions, before changing its mode to match the original -file. This eliminates a potential race condition [RT #60904]. - -=item * - -On some Unix systems, the value in C<$?> would not have the top bit set -(C<$? & 128>) even if the child core dumped. - -=item * - -Under some circumstances, C<$^R> could incorrectly become undefined -[RT #57042]. - -=item * - -In the XS API, various hash functions, when passed a pre-computed hash where -the key is UTF-8, might result in an incorrect lookup. - -=item * - -XS code including F before F gave a compile-time error -[RT #57176]. - -=item * - -C<< $object-Eisa('Foo') >> would report false if the package C didn't -exist, even if the object's C<@ISA> contained C. - -=item * - -Various bugs in the new-to 5.10.0 mro code, triggered by manipulating -C<@ISA>, have been found and fixed. - -=item * - -Bitwise operations on references could crash the interpreter, e.g. -C<$x=\$y; $x |= "foo"> [RT #54956]. - -=item * - -Patterns including alternation might be sensitive to the internal UTF-8 -representation, e.g. - - my $byte = chr(192); - my $utf8 = chr(192); utf8::upgrade($utf8); - $utf8 =~ /$byte|X}/i; # failed in 5.10.0 - -=item * - -Within UTF8-encoded Perl source files (i.e. where C is in -effect), double-quoted literal strings could be corrupted where a C<\xNN>, -C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value -greater than 255 [RT #59908]. - -=item * - -C failed to correctly deparse various constructs: -C [RT #62428], C [RT #62488], -C [RT #62484]. - -=item * - -Using C with no arguments could corrupt the perl stack. - -=item * - -The block form of C is now specifically trappable by C and -C. Previously it was erroneously treated like string C. - -=item * - -In 5.10.0, the two characters C<[~> were sometimes parsed as the smart -match operator (C<~~>) [RT #63854]. - -=item * - -In 5.10.0, the C<*> quantifier in patterns was sometimes treated as -C<{0,32767}> [RT #60034, #60464]. For example, this match would fail: - - ("ab" x 32768) =~ /^(ab)*$/ - -=item * - -C was limited to a 32 bit segment size on a 64 bit OS [RT #63924]. - -=item * - -Using C or C to exit a C block no longer produces a -spurious warning like the following: - - Exiting given via last at foo.pl line 123 - -=item * - -On Windows, C<'.\foo'> and C<'..\foo'> were treated differently than -C<'./foo'> and C<'../foo'> by C and C [RT #63492]. - -=item * - -Assigning a format to a glob could corrupt the format; e.g.: - - *bar=*foo{FORMAT}; # foo format now bad - -=item * - -Attempting to coerce a typeglob to a string or number could cause an -assertion failure. The correct error message is now generated, -C>. - -=item * - -Under C, C<-x> was using the wrong access mode. This -has been fixed [RT #49003]. - -=item * - -C on a tied scalar that returned a Unicode value would not be -correct the first time. This has been fixed. - -=item * - -Using an array C inside in array C could SEGV. This has been -fixed. [RT #51636] - -=item * - -A race condition inside C has been identified and -fixed. This used to cause various threading issues, including SEGVs. - -=item * - -In C, the use of C<()> groups in scalar context was internally -placing a list on the interpreter's stack, which manifested in various -ways, including SEGVs. This is now fixed [RT #50256]. - -=item * - -Magic was called twice in C, C<\&$x>, C and C. -These have all been fixed. - -=item * - -A 5.10.0 optimisation to clear the temporary stack within the implicit -loop of C has been reverted, as it turned out to be the cause of -obscure bugs in seemingly unrelated parts of the interpreter [commit -ef0d4e17921ee3de]. - -=item * - -The line numbers for warnings inside C are now correct. - -=item * - -The C<..> operator now works correctly with ranges whose ends are at or -close to the values of the smallest and largest integers. - -=item * - -C could lead to segmentation faults on some platforms. -This has been fixed [RT #54828]. - -=item * - -An off-by-one error meant that C was effectively being -executed as C. This has been fixed [RT #53746]. - -=item * - -Various leaks associated with named captures in regexes have been fixed -[RT #57024]. - -=item * - -A weak reference to a hash would leak. This was affecting C -[RT #56908]. - -=item * - -Using (?|) in a regex could cause a segfault [RT #59734]. - -=item * - -Use of a UTF-8 C within a closure could cause a segfault [RT #61520]. - -=item * - -Calling C or otherwise upgrading an SV could result in an -unaligned 64-bit access on the SPARC architecture [RT #60574]. - -=item * - -In the 5.10.0 release, C would incorrectly list -C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order -[RT #67628]. - -=item * - -In 5.10.0, C returned a non-tainted value -[RT #52552]. - -=item * - -In 5.10.0, C and C could produce the fatal error -C when printing UTF-8 strings -[RT #62666]. - -=item * - -In the 5.10.0 release, a dynamically created C method might be -missed (method cache issue) [RT #60220,60232]. - -=item * - -In the 5.10.0 release, a combination of C and C could -cause a memory leak [RT #63110]. - -=item * - -C<-C> on the shebang (C<#!>) line is once more permitted if it is also -specified on the command line. C<-C> on the shebang line used to be a -silent no-op I it was not also on the command line, so perl 5.10.0 -disallowed it, which broke some scripts. Now perl checks whether it is -also on the command line and only dies if it is not [RT #67880]. - -=item * - -In 5.10.0, certain types of re-entrant regular expression could crash, -or cause the following assertion failure [RT #60508]: - - Assertion rx->sublen >= (s - rx->subbeg) + i failed - -=item * - -Previously missing files from Unicode 5.1 Character Database are now included. - -=item * - -C is now honored when opening an anonymous temporary file - -=back - -=head1 New or Changed Diagnostics - -=over 4 - -=item C - -This new fatal error occurs when the C routine C was -passed a position that is not within the scalar's string buffer. This -could be caused by buggy XS code, and at this point recovery is not -possible. - -=item C - -This warning has been removed. In general, it only got produced in -conjunction with other warnings, and removing it allowed an ISA lookup -optimisation to be added. - -=item C - -This warning has been removed. - -=item C - -It is now possible to change the depth threshold for this warning from the -default of 100, by recompiling the F binary, setting the C -pre-processor macro C to the desired value. - -=back - -=head1 Changed Internals - -=over 4 - -=item * - -TODO: C is gone. RVs are now stored in IVs - -=item * - -TODO: REGEXPs are first class - -=item * - -TODO: OOK is reworked, such that an OOKed scalar is PV not PVIV - -=item * - -The J.R.R. Tolkien quotes at the head of C source file have been checked and -proper citations added, thanks to a patch from Tom Christiansen. - -=item * - -C now accepts a null first argument. In addition, a full audit -was made of the "not NULL" compiler annotations, and those for several -other internal functions were corrected. - -=item * - -New macros C, C, C, C -have been added to formalise the temporary saving of the C -variable. - -=item * - -The function C has been added to augment -C. - -=item * - -The function C has been added, equivalent to -C followed by C. - -=item * - -The function C has been added, equivalent to -C and then performing the action relevant to the flag. - -Two flag bits are currently supported. - -=over 4 - -=item C - -This will call C for you. (Note that this does not convert an -sequence of ISO 8859-1 characters to UTF-8). A wrapper, C -is available for this. - -=item C - -Call C on the new SV. - -=back - -There is also a wrapper that takes constant strings, C. - -=item * - -The function C has been added as a wrapper to -C. - -=item * - -The functions C and C are now -exported. - -=item * - -C has been exterminated from the core code, replaced by local STRLEN -temporaries, or C<*_nolen()> calls. Either approach is faster than C, -which is a pointer deference into the interpreter structure under ithreads, -and a global variable otherwise. - -=item * - -C used to leave freed memory accessible via C on -the scalar. It now updates the linked list to remove each piece of magic -as it is freed. - -=item * - -Under ithreads, the regex in C is now reference counted. This -eliminates a lot of hackish workarounds to cope with it not being reference -counted. - -=item * - -C would sometimes incorrectly turn on C. -This has been fixed. - -=item * - -The I IV and NV flags are now not set if the string value has -trailing "garbage". This behaviour is consistent with not setting the -public IV or NV flags if the value is out of range for the type. - -=item * - -SV allocation tracing has been added to the diagnostics enabled by C<-Dm>. -The tracing can alternatively output via the C mechanism, if -that was enabled when the F binary was compiled. - -=item * - -Smartmatch resolution tracing has been added as a new diagnostic. Use C<-DM> to -enable it. - -=item * - -A new debugging flag C<-DB> now dumps subroutine definitions, leaving -C<-Dx> for its original purpose of dumping syntax trees. - -=item * - -Uses of C, C, C, C, C etc have been -replaced by C in the core code, and non-dual-life modules, as C -is clearer to those unfamiliar with the core code. - -=item * - -A macro C has been added, which on (non-pedantic) gcc will -not cast away C, returning a C. Macros C, -C etc build on this, casting to C etc without -casting away C. This allows proper compile-time auditing of -C correctness in the core, and helped picked up some errors (now -fixed). - -=item * - -Macros C and C have been added, for pushing SVs on the -stack and mortalizing them. - -=item * - -Use of the private structure C has changed slightly. Nothing -outside the core should be accessing this directly anyway. - -=item * - -A new tool, F has been added, that allows you -to view how a C preprocessor macro would be expanded when compiled. -This is handy when trying to decode the macro hell that is the perl -guts. - -=back - -=head1 New Tests - -Many modules updated from CPAN incorporate new tests. - -Several tests that have the potential to hang forever if they fail now -incorporate a "watchdog" functionality that will kill them after a timeout, -which helps ensure that C and C run to -completion automatically. (Jerry Hedden). - -Some core-specific tests have been added: - -=over 4 - -=item t/comp/retainedlines.t - -Check that the debugger can retain source lines from C. - -=item t/io/perlio_fail.t - -Check that bad layers fail. - -=item t/io/perlio_leaks.t - -Check that PerlIO layers are not leaking. - -=item t/io/perlio_open.t - -Check that certain special forms of open work. - -=item t/io/perlio.t - -General PerlIO tests. - -=item t/io/pvbm.t - -Check that there is no unexpected interaction between the internal types -C and C. - -=item t/mro/package_aliases.t - -Check that mro works properly in the presence of aliased packages. - -=item t/op/dbm.t - -Tests for C and C. - -=item t/op/index_thr.t - -Tests for the interaction of C and threads. - -=item t/op/pat_thr.t - -Tests for the interaction of esoteric patterns and threads. - -=item t/op/qr_gc.t - -Test that C doesn't leak. - -=item t/op/reg_email_thr.t - -Tests for the interaction of regex recursion and threads. - -=item t/op/regexp_qr_embed_thr.t - -Tests for the interaction of patterns with embedded C and threads. - -=item t/op/regexp_unicode_prop.t - -Tests for Unicode properties in regular expressions. - -=item t/op/regexp_unicode_prop_thr.t - -Tests for the interaction of Unicode properties and threads. - -=item t/op/reg_nc_tie.t - -Test the tied methods of C. - -=item t/op/reg_posixcc.t - -Check that POSIX character classes behave consistently. - -=item t/op/re.t - -Check that exportable C functions in F work. - -=item t/op/setpgrpstack.t - -Check that C works. - -=item t/op/substr_thr.t - -Tests for the interaction of C and threads. - -=item t/op/upgrade.t - -Check that upgrading and assigning scalars works. - -=item t/uni/lex_utf8.t - -Check that Unicode in the lexer works. - -=item t/uni/tie.t - -Check that Unicode and C work. - -=back - -=head1 Known Problems - -This is a list of some significant unfixed bugs, which are regressions -from either 5.10.0 or 5.8.x. - -=over 4 - -=item * - -C misbehaves in the presence of a lexical C<$_> -(typically introduced by C or implicitly by C). The variable -which gets set for each iteration is the package variable C<$_>, not the -lexical C<$_> [RT #67694]. - -A similar issue may occur in other modules that provide functions which -take a block as their first argument, like - - foo { ... $_ ...} list - -=item * - -The C pragma may generate a run-time error when a regex is -interpolated [RT #56444]: - - use charnames ':full'; - my $r1 = qr/\N{THAI CHARACTER SARA I}/; - "foo" =~ $r1; # okay - "foo" =~ /$r1+/; # runtime error - -A workaround is to generate the character outside of the regex: - - my $a = "\N{THAI CHARACTER SARA I}"; - my $r1 = qr/$a/; - -=item * - -Some regexes may run much more slowly when run in a child thread compared -with the thread the pattern was compiled into [RT #55600]. - -=back - -=head1 Deprecations - -The following items are now deprecated. - -=over 4 - -=item * - -C is buggy and should be avoided. From perl 5.11.0 onwards, it is -intended that any use of the core version of this module will emit a -warning, and that the module will eventually be removed from the core -(probably in perl 5.14.0). See L for its -replacement. - -=item * - -The following modules will be removed from the core distribution in a future -release, and should be installed from CPAN instead. Distributions on CPAN -which require these should add them to their prerequisites. The core versions -of these modules warnings will issue a deprecation warning. - -=over - -=item * - -C - -=item * - -C - -=item * - -C - -=back - -Currently support to install from CPAN without a I is C in CPAN -and CPANPLUS. This will be addressed before 5.12.0 ships. - -=item * - -C has been removed. It used to provide a mechanism to -emulate setuid permission bits on systems that don't support it properly. - -=item * - -Deprecate assignment to $[ - -=item * - -Remove attrs, which has been deprecated since 1999/10/02. - -=item * - -Deprecate use of the attribute :locked on subroutines. - -=item * - -Deprecate using "locked" with the attributes pragma. - -=item * - -Deprecate using "unique" with the attributes pragma. - -=item * - -warn if ++ or -- are unable to change the value because it's beyond the limit of representation - -This uses a new warnings category: "imprecision". - -=item * - -Make lc/uc/lcfirst/ucfirst warn when passed undef. - -=item * - -Show constant in "Useless use of a constant in void context" - -=item * - -Make the new warning report undef constants as undef - -=item * - -Add a new warning, "Prototype after '%s'" - -=item * - -Tweak the "Illegal character in prototype" warning so it's more precise when reporting illegal characters after _ - -=item * - -Unintended interpolation of $\ in regex - -=item * - -Make overflow warnings in gmtime/localtime only occur when warnings are on - -=item * - -Improve mro merging error messages. - -They are now very similar to those produced by Algorithm::C3. - -=item * - -Amelioration of the error message "Unrecognized character %s in column %d" - -Changes the error message to "Unrecognized character %s; marked by E-- -HERE after %sE-- HERE near column %d". This should make it a little -simpler to spot and correct the suspicious character. - -=item * - -Explicitly point to $. when it causes an uninitialized warning for ranges in scalar context - -=item * - -Deprecated numerous Perl 4-era libraries: - -F, F, F, F, F, -F, F, F, F, F, -F, F, F, F, -F, F, F, F, F, -F, F, F, F, F, -F, F, F, F, and -F are all now deprecated. Using them will incur a warning. - -=back - -=head1 Acknowledgements - -Some of the work in this release was funded by a TPF grant funded by -Dijkmat BV, The Netherlands. - -Steffen Mueller and David Golden in particular helped getting CPAN modules -polished and synchronised with their in-core equivalents. - -Craig Berry was tireless in getting maint to run under VMS, no matter how -many times we broke it for him. - -The other core committers contributed most of the changes, and applied most -of the patches sent in by the hundreds of contributors listed in F. - -Much of the work of categorizing changes in this perldelta file was contributed -by the following porters using changelogger.bestpractical.com: - -Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc, -anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken, -Mark Fowler, chorny, anonymous, tmtm - -Finally, thanks to Larry Wall, without whom none of this would be -necessary. - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut - - diff --git a/pod/perl5111delta.pod b/pod/perl5111delta.pod deleted file mode 100644 index e3e70dce61d..00000000000 --- a/pod/perl5111delta.pod +++ /dev/null @@ -1,365 +0,0 @@ -=head1 NAME - -perl5111delta - what is new for perl v5.11.1 - -=head1 DESCRIPTION - -This document describes differences between the 5.11.0 release and -the 5.11.1 release. - -=head1 Incompatible Changes - -=over - -=item * - -The boolkeys op moved to the group of hash ops. This breaks binary compatibility. - -=item * - -C<\s> C<\w> and C<\d> once again have the semantics they had in Perl 5.8.x. - - -=back - -=head1 Core Enhancements - -=head2 Add C syntax - -This new syntax allows a module author to set the $VERSION of a namespace -when the namespace is declared with 'package'. It eliminates the need -for C and similar constructs. E.g. - - package Foo::Bar 1.23; - # $Foo::Bar::VERSION == 1.23 - -There are several advantages to this: - -=over - -=item * - -C<$VERSION> is parsed in I the same way as C - -=item * - -C<$VERSION> is set at compile time - -=item * - -Eliminates C<$VERSION = ...> and C clutter - -=item * - -As it requires VERSION to be a numeric literal or v-string -literal, it can be statically parsed by toolchain modules -without C the way MM-Eparse_version does for C<$VERSION = ...> - -=item * - -Alpha versions with underscores do not need to be quoted; static -parsing will preserve the underscore, but during compilation, Perl -will remove underscores as it does for all numeric literals - -It does not break old code with only C, but code that uses -C will need to be restricted to perl 5.11.X or newer -This is analogous to the change to C from two-args to three-args. -Users requiring the latest Perl will benefit, and perhaps N years from -now it will become standard practice when Perl 5.12 is targeted the way -that 5.6 is today. - -=back - -=head1 Modules and Pragmata - -=head2 Updated Modules - -=over 4 - -=item * - -Upgrade to Test-Simple 0.94 - -=item * - -Upgrade to Storable 2.21 - -=item * - -Upgrade to Pod-Simple 3.08 - -=item * - -Upgrade to Parse-CPAN-Meta 1.40 - -=item * - -Upgrade to ExtUtils-Manifest 1.57 - -=item * - -Upgrade to ExtUtils-CBuilder 0.260301 - -=item * - -Upgrade to CGI.pm-3.48 - -=item * - -Upgrade CPANPLUS to CPAN version 0.89_02 - -=item * - -Upgrade to threads::shared 1.32 - -=item * - -Upgrade ExtUtils::ParseXS to 2.21 - -=item * - -Upgrade File::Path to 2.08 (and add taint.t test) - -=item * - -Upgrade Module::CoreList to 2.20 - -=item * - -Updated Object::Accessor to0.36 - -=back - -=head1 New Documentation - -=over 4 - -=item * - -L extends the "Social contract about contributed modules" into -the beginnings of a document on Perl porting policies. - -=back - -=head1 Changes to Existing Documentation - -=over - -=item Documentation for C<$1> in perlvar.pod clarified - -=back - -=head1 Performance Enhancements - -=over 4 - -=item C has been optimized to be faster than C - -=back - -=head1 Platform Specific Notes - -=over 4 - -=item Darwin (Mac OS X) - -=over 4 - -=item * - -Skip testing the be_BY.CP1131 locale on Darwin 10 (Mac OS X 10.6), -as it's still buggy. - -=item * - -Correct infelicities in the regexp used to identify buggy locales -on Darwin 8 and 9 (Mac OS X 10.4 and 10.5, respectively). - -=back - -=item DragonFly BSD - -=over 4 - -=item * - -Fix thread library selection [perl #69686] - -=back - -=item Win32 - -=over 4 - -=item * - -Initial support for mingw64 is now available - -=item * - -Various bits of Perl's build infrastructure are no longer converted to win32 line endings at release time. If this hurts you, please speak up. - -=back - - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -Perl now properly returns a syntax error instead of segfaulting -if C, C or C is used without an argument - -=item * - -C now fails properly if called without an argument and when no previous file was read - -C now returns C<-1>, and sets errno to C, thus restoring the 5.8.x behaviour - -=item * - -overload no longer implicitly unsets fallback on repeated 'use overload' lines - -=item * - -POSIX::strftime() can now handle Unicode characters in the format string. - -=item * - -The Windows select() implementation now supports all empty Cs more correctly. - -=back - -=head1 New or Changed Diagnostics - -=over 4 - -=item * - -The 'syntax' category was removed from 5 warnings that should only be in 'deprecated'. - -=item * - -Three fatal pack/unpack error messages have been normalized to "panic: %s" - -=item * - -"Unicode character is illegal" has been rephrased to be more accurate - -It now reads C and the -perldiag documentation has been expanded a bit. - -=item * - -Perl now defaults to issuing a warning if a deprecated language feature is used. - -To disable this feature in a given lexical scope, you should use C For information about which language features -are deprecated and explanations of various deprecation warnings, please -see L - -=back - -=head1 Testing - -=over 4 - -=item * - -Significant cleanups to core tests to ensure that language and -interpreter features are not used before they're tested. - -=item * - -C now runs a number of important pre-commit checks which might be of use to anyone working on the Perl core. - -=item * - -F automatically checks the well-formedness of -POD found in all .pl, .pm and .pod files in the F, other than in -dual-lifed modules which are primarily maintained outside the Perl core. - -=item * - -F now tests that all files listed in MANIFEST are present. - -=back - -=head1 Known Problems - -=over 4 - -=item Untriaged test crashes on Windows 2000 - -Several porters have reported mysterious crashes when Perl's entire test suite is run after a build on certain Windows 2000 systems. When run by hand, the individual tests reportedly work fine. - -=item Known test failures on VMS - -Perl 5.11.1 fails a small set of core and CPAN tests as of this release. -With luck, that'll be sorted out for 5.11.2 - -=back - -=head1 Errata for 5.11.0 - -=over - -=item The Perl 5.11.0 release notes incorrectly described 'delete local' - -=back - -=head1 Acknowledgements - -Perl 5.11.1 represents approximately 3 weeks development since Perl 5.11.0 -contains 22,000 lines of changes across 396 files from 26 authors and committers: - -Abigail, Alex Vandiver, brian d foy, Chris Williams, Craig A. Berry, -David Fifield, David Golden, demerphq, Eric Brine, Geoffrey T. Dairiki, -George Greer, H.Merijn Brand, Jan Dubois, Jerry D. Hedden, Jesse Vincent, -Josh ben Jore, Max Maischein, Nicholas Clark, Rafael Garcia-Suarez, -Simon Schubert, Sisyphus, Smylers, Steve Hay, Steve Peters, Vincent Pit -and Yves Orton. - -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. - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5112delta.pod b/pod/perl5112delta.pod deleted file mode 100644 index 3d6b7e3bcb6..00000000000 --- a/pod/perl5112delta.pod +++ /dev/null @@ -1,349 +0,0 @@ -=head1 NAME - -perl5112delta - what is new for perl v5.11.2 - -=head1 DESCRIPTION - -This document describes differences between the 5.11.1 release and the -5.11.2 release. - -=head1 Core Enhancements - -=head2 qr overloading - -It is now possible to overload the C operator, that is, -conversion to regexp, like it was already possible to overload -conversion to boolean, string or number of objects. It is invoked when -an object appears on the right hand side of the C<=~> operator, or when -it is interpolated into a regexp. See L. - -=head2 Pluggable keywords - -Extension modules can now cleanly hook into the Perl parser to define -new kinds of keyword-headed expression and compound statement. The -syntax following the keyword is defined entirely by the extension. This -allow a completely non-Perl sublanguage to be parsed inline, with the -right ops cleanly generated. This feature is currently considered -experimental. - -See L for the mechanism. The Perl core -source distribution also includes a new module -L, which implements reverse Polish notation -arithmetic via pluggable keywords. This module is mainly used for test -purposes, and is not normally installed, but also serves as an example -of how to use the new mechanism. - -=head2 APIs for more internals - -The lowest layers of the lexer and parts of the pad system now have C -APIs available to XS extensions. These are necessary to support proper -use of pluggable keywords, but have other uses too. The new APIs are -experimental, and only cover a small proportion of what would be -necessary to take full advantage of the core's facilities in these -areas. It is intended that the Perl 5.13 development cycle will see the -addition of a full range of clean, supported interfaces. - -=head2 Overridable function lookup - -Where an extension module hooks the creation of rv2cv ops to modify the -subroutine lookup process, this now works correctly for bareword -subroutine calls. This means that prototypes on subroutines referenced -this way will be processed correctly. (Previously bareword subroutine -names were initially looked up, for parsing purposes, by an unhookable -mechanism, so extensions could only properly influence subroutine names -that appeared with an C<&> sigil.) - -=head1 Modules and Pragmata - -=head2 New Modules and Pragmata - -=over 4 - -=item C - -Preserves legacy behaviors or enable new non-default behaviors. -Currently the only behaviour concerns semantics for the 128 characters -on ASCII systems that have the 8th bit set. - -=back - -=head2 Pragmata Changes - -=over 4 - -=item C - -Supports %.0f formatting internally. - -=item C - -Allow overloading of 'qr'. - -=back - -=head2 Updated Modules - -=over 4 - -=item C - -Optimize reversing an array in-place, avoid using defined %hash in core -code and tests. - -=item C - -Teach B::Deparse about in-place reverse. - -=item C - -Refine Carp caller() fix and add tests. - -=item C - -Updated to 2.022. - -=item C - -Updated to 0.89_09. - -=item C - -Updated to 2.38. - -=item C - -Updated to 0.27. - -=item C - -Add EXISTS and DELETE methods to Env.pm. - -=item C - -Updated to 0.22. - -=item C - -Correctly document export of I18N::Langinfo. - -=item C - -In I18N::LangTags::Detect, avoid using defined @array and defined -%hash. - -=item C - -Updated to 2.022. - -=item C - -Updated to 0.54. - -=item C - -Updated to 1.22. - -=item C - -In Locale::Maketext, avoid using defined @array and defined %hash. -Convert the odd Locale::Maketext test out from Test to Test::More. - -=item C - -Updated to 0.35_08. - -=item C - -Implemented is_deprecated(). - -=item C - -Updated to 3.10. - -=item C - -Updated to 1.22. - -=item C - -Updated to 2.16. - -=back - -=head1 Utility Changes - -=over 4 - -=item F - -Fixed bugs with the match() operator in list context, remove mention of -$[. - -=back - -=head1 Performance Enhancements - -=over 4 - -=item * - -Reversing an array to itself (as in C<@a = reverse @a>) in void context -now happens in-place and is several orders of magnitude faster than it -used to be. It will also preserve non-existent elements whenever -possible, i.e. for non magical arrays or tied arrays with C and -C methods. - -=back - -=head1 New or Changed Diagnostics - -Several new diagnostics, see L for details. - -=over 4 - -=item C - -=item C - -=item C - -=item C - -=item C - -=item C - -=item C - -=item C - -=back - -One diagnostic has been removed: - -=over 4 - -=item C - -=back - -=head1 Changed Internals - -=over 4 - -=item * - -C has been removed from the public API. Calling it now -generates a deprecation warning, and it will be removed in a future -release. Although listed as part of the API, it was never documented, -and only ever used in F, and prior to 5.10, F. In -core, it has been replaced by a static function. - -=back - -=head1 New Tests - -=over 4 - -=item F - -Test that a bare readdir in while loop sets $_. - -=back - -=head1 Known Problems - -=over 4 - -=item Known test failures on VMS - -Perl 5.11.2 fails a small set of core and CPAN tests as of this -release. With luck, that'll be sorted out for 5.11.3. - -=back - -=head1 Deprecations - -The following items are now deprecated. - -=head2 Use of C<:=> to mean an empty attribute list is now deprecated. - -An accident of Perl's parser meant that these constructions were all -equivalent: - - my $pi := 4; - my $pi : = 4; - my $pi : = 4; - -with the C<:> being treated as the start of an attribute list, which -ends before the C<=>. As whitespace is not significant here, all are -parsed as an empty attribute list, hence all the above are equivalent -to, and better written as - - my $pi = 4; - -because no attribute processing is done for an empty list. - -As is, this meant that C<:=> cannot be used as a new token, without -silently changing the meaning of existing code. Hence that particular -form is now deprecated, and will become a syntax error. If it is -absolutely necessary to have empty attribute lists (for example, -because of a code generator) then avoid the warning by adding a space -before the C<=>. - -=head1 Acknowledgements - -Perl 5.11.2 represents approximately 3 weeks development since Perl -5.11.1 and contains 29,992 lines of changes across 458 files from 38 -authors and committers: - -Abhijit Menon-Sen, Abigail, Ben Morrow, Bo Borgerson, Brad Gilbert, -Bram, Chris Williams, Craig A. Berry, Daniel Frederick Crisman, Dave -Rolsky, David E. Wheeler, David Golden, Eric Brine, Father -Chrysostomos, Frank Wiegand, Gerard Goossen, Gisle Aas, Graham Barr, -Harmen, H.Merijn Brand, Jan Dubois, Jerry D. Hedden, Jesse Vincent, -Karl Williamson, Kevin Ryde, Leon Brocard, Nicholas Clark, Paul -Marquess, Philippe Bruhat, Rafael Garcia-Suarez, Sisyphus, Steffen -Mueller, Steve Hay, Steve Peters, Vincent Pit, Yuval Kogman, Yves -Orton, and Zefram. - -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. - -=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 -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, 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 file for an explanation of how to view exhaustive -details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5113delta.pod b/pod/perl5113delta.pod deleted file mode 100644 index cb0e51359ed..00000000000 --- a/pod/perl5113delta.pod +++ /dev/null @@ -1,559 +0,0 @@ -=head1 NAME - -perl5113delta - what is new for perl v5.11.3 - -=head1 DESCRIPTION - -This document describes differences between the 5.11.2 release and -the 5.11.3 release. - -If you are upgrading from an earlier release such as 5.11.1, first read -the L, which describes differences between 5.11.1 and -5.11.2 - -=head1 Incompatible Changes - -=head2 Filehandles are blessed directly into C, as C is merely a wrapper around C. - -The previous behaviour was to bless Filehandles into L -(an empty proxy class) if it was loaded into memory and otherwise -to bless them into C. - -=head1 Core Enhancements - -=head2 Unicode version - -Perl is shipped with the latest Unicode version, 5.2, dated October 2009. See -L for details about this release -of Unicode. See L for instructions on installing and using -older versions of Unicode. - -=head2 Unicode properties - -Perl can now handle every Unicode character property. A new pod, -L, lists all available non-Unihan character properties. By -default the Unihan properties and certain others (deprecated and Unicode -internal-only ones) are not exposed. See below for more details on -these; there is also a section in the pod listing them, and why they are -not exposed. - -Perl now fully supports the Unicode compound-style of using C<=> and C<:> -in writing regular expressions: C<\p{property=value}> and -C<\p{property:value}> (both of which mean the same thing). - -Perl now fully supports the Unicode loose matching rules for text -between the braces in C<\p{...}> constructs. In addition, Perl also allows -underscores between digits of numbers. - -All the Unicode-defined synonyms for properties and property values are -now accepted. - -C, which matches a Unicode logical character, has been expanded to work -better with various Asian languages. It now is defined as an C. (See L). -Anything matched previously that made sense will continue to be matched. But -in addition: - -=over - -=item * - -C<\X> will now not break apart a C> sequence. - -=item * - -C<\X> will now match a sequence including the C and C characters. - -=item * - -C<\X> will now always match at least one character, including an initial mark. -Marks generally come after a base character, but it is possible in Unicode to -have them in isolation, and C<\X> will now handle that case, for example at the -beginning of a line or after a C. And this is the part where C<\X> -doesn't match the things that it used to that don't make sense. Formerly, for -example, you could have the nonsensical case of an accented LF. - -=item * - -C<\X> will now match a (Korean) Hangul syllable sequence, and the Thai and Lao -exception cases. - -=back - -Otherwise, this change should be transparent for the non-affected languages. - -C<\p{...}> matches using the Canonical_Combining_Class property were -completely broken in previous Perls. This is now fixed. - -In previous Perls, the Unicode C property and a -Perl extension had the same name, which led to neither matching all the -correct values (with more than 100 mistakes in one, and several thousand -in the other). The Perl extension has now been renamed to be -C (short: C). It has the same -meaning as was previously intended, namely the union of all the -non-canonical Decomposition types, with Unicode C being just one of -those. - -C<\p{Uppercase}> and C<\p{Lowercase}> have been brought into line with the -Unicode definitions. This means they each match a few more characters -than previously. - -C<\p{Cntrl}> now matches the same characters as C<\p{Control}>. This means it -no longer will match Private Use (gc=co), Surrogates (gc=cs), nor Format -(gc=cf) code points. The Format code points represent the biggest -possible problem. All but 36 of them are either officially deprecated -or strongly discouraged from being used. Of those 36, likely the most -widely used are the soft hyphen (U+00AD), and BOM, ZWSP, ZWNJ, WJ, and -similar, plus Bi-directional controls. - -C<\p{Alpha}> now matches the same characters as C<\p{Alphabetic}>. The Perl -definition included a number of things that aren't really alpha (all -marks), while omitting many that were. As a direct consequence, the -definitions of C<\p{Alnum}> and C<\p{Word}> which depend on Alpha also change. - -C<\p{Word}> also now doesn't match certain characters it wasn't supposed -to, such as fractions. - -C<\p{Print}> no longer matches the line control characters: Tab, LF, CR, -FF, VT, and NEL. This brings it in line with the documentation. - -C<\p{Decomposition_Type=Canonical}> now includes the Hangul syllables. - -The Numeric type property has been extended to include the Unihan -characters. - -There is a new Perl extension, the 'Present_In', or simply 'In', -property. This is an extension of the Unicode Age property, but -C<\p{In=5.0}> matches any code point whose usage has been determined -I Unicode version 5.0. The C<\p{Age=5.0}> only matches code points -added in I version 5.0. - -A number of properties did not have the correct values for unassigned -code points. This is now fixed. The affected properties are -Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type, -Hangul_Syllable_Type, Numeric_Type, and Line_Break. - -The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties -have been updated to their current Unicode definitions. - -Certain properties that are supposed to be Unicode internal-only were -erroneously exposed by previous Perls. Use of these in regular -expressions will now generate, if enabled, a deprecated warning message. -The properties are: Other_Alphabetic, Other_Default_Ignorable_Code_Point, -Other_Grapheme_Extend, Other_ID_Continue, Other_ID_Start, Other_Lowercase, -Other_Math, and Other_Uppercase. - -An installation can now fairly easily change which Unicode properties -Perl understands. As mentioned above, certain properties are by default -turned off. These include all the Unihan properties (which should be -accessible via the CPAN module Unicode::Unihan) and any deprecated or -Unicode internal-only property that Perl has never exposed. - -The generated files in the C directory are now more -clearly marked as being stable, directly usable by applications. -New hash entries in them give the format of the normal entries, -which allows for easier machine parsing. Perl can generate files -in this directory for any property, though most are suppressed. An -installation can choose to change which get written. Instructions -are in L. - -=head2 Regular Expressions - -U+0FFFF is now a legal character in regular expressions. - -=head1 Modules and Pragmata - -=head2 Pragmata Changes - -=over 4 - -=item C - -Upgraded from version 1.19 to 1.20. - -=item C - -This pragma no longer suppresses C warnings. [perl #71204] - -=item C - -Upgraded from 1.13 to 1.14. Added the C feature: - - use feature "unicode_strings"; - -This pragma turns on Unicode semantics for the case-changing operations -(uc/lc/ucfirst/lcfirst) on strings that don't have the internal UTF-8 flag set, -but that contain single-byte characters between 128 and 255. - -=item C - -The experimental C pragma, introduced in 5.11.2, has been removed, -and its functionality replaced by the new feature pragma, C. - -=item C - -Upgraded from version 1.74 to 1.75. - -=item C - -Upgraded from 1.07 to 1.08. Added new C function. - -=back - -=head2 Updated Modules - -=over 4 - -=item C - -Upgraded from version 0.34 to 0.36. - -=item C - -Upgraded from version 1.94_51 to 1.94_5301, which is 1.94_53 on CPAN -plus some local fixes for bleadperl. - -Includes better bzip2 support, improved FirstTime experience with -auto-selection of CPAN mirrors, proper handling of modules removed from the -Perl core, and an updated 'cpan' utility script - -=item C - -Upgraded from version 0.89_09 to 0.90. - -=item C - -Upgraded from version 2.38 to 2.39. - -=item C - -Upgraded from version 6.55_02 to 6.56. Adds new BUILD_REQUIRES key to -indicate build-only prerequisites. Also adds support for -mingw64 and the new "package NAME VERSION" syntax. - -=item C - -Upgraded from version 2.08 to 2.08_01. - -=item C - -Upgraded from version 0.35_09 to 0.36. Compared to 0.35, this version has a -new 'installdeps' action, supports the PERL_MB_OPT environment variable, adds a -'share_dir' property for L support, support the "package NAME -VERSION" syntax and has many other enhancements and bug fixes. The -'passthrough' style of Module::Build::Compat has been deprecated. - -=item C - -Upgraded from version 2.23 to 2.24. - -=item C - -Upgraded from version 1.18 to 1.19. Error codes for C and -C are now available. - -=item C - -Upgraded from version 3.10 to 3.13. - -=item C - -Upgraded from version 2.19 to 2.20. - -=back - -=head1 Utility Changes - -=over 4 - -=item F - -No longer reports "Message sent" when it hasn't actually sent the message - -=back - -=head1 Changes to Existing Documentation - -The Pod specification (L) has been updated to bring the -specification in line with modern usage already supported by most Pod systems. -A parameter string may now follow the format name in a "begin/end" region. -Links to URIs with a text description are now allowed. The usage of -C"section"E> has been marked as deprecated. - -L has been documented in L as a means to get -conditional loading of modules despite the implicit BEGIN block around C. - - - -=head1 Installation and Configuration Improvements - -=head2 Testing improvements - -=over 4 - -=item It's now possible to override C and friends in F - -=back - -=head2 Platform Specific Changes - -=over 4 - -=item Win32 - -=over 4 - -=item * - -Always add a manifest resource to C to specify the C -settings for Windows Vista and later. Without this setting Windows -will treat C as a legacy application and apply various -heuristics like redirecting access to protected file system areas -(like the "Program Files" folder) to the users "VirtualStore" -instead of generating a proper "permission denied" error. - -For VC8 and VC9 this manifest setting is automatically generated by -the compiler/linker (together with the binding information for their -respective runtime libraries); for all other compilers we need to -embed the manifest resource explicitly in the external resource file. - -This change also requests the Microsoft Common-Controls version 6.0 -(themed controls introduced in Windows XP) via the dependency list -in the assembly manifest. For VC8 and VC9 this is specified using the -C linker commandline option instead. - -=back - -=item cygwin - -=over 4 - -=item Enable IPv6 support on cygwin 1.7 and newer - -=back - -=item OpenVMS - -=over 4 - -=item Make -UDEBUGGING the default on VMS for 5.12.0. - -Like it has been everywhere else for ages and ages. Also make -command-line selection of -UDEBUGGING and -DDEBUGGING work in -configure.com; before the only way to turn it off was by saying -no in answer to the interactive question. - -=back - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -Ensure that pp_qr returns a new regexp SV each time. Resolves RT #69852. - -Instead of returning a(nother) reference to the (pre-compiled) regexp in the -optree, use reg_temp_copy() to create a copy of it, and return a reference to -that. This resolves issues about Regexp::DESTROY not being called in a timely -fashion (the original bug tracked by RT #69852), as well as bugs related to -blessing regexps, and of assigning to regexps, as described in correspondence -added to the ticket. - -It transpires that we also need to undo the SvPVX() sharing when ithreads -cloning a Regexp SV, because mother_re is set to NULL, instead of a cloned -copy of the mother_re. This change might fix bugs with regexps and threads in -certain other situations, but as yet neither tests nor bug reports have -indicated any problems, so it might not actually be an edge case that it's -possible to reach. - -=item * - -Several compilation errors and segfaults when perl was built with C<-Dmad> were fixed. - -=item * - -Fixes for lexer API changes in 5.11.2 which broke NYTProf's savesrc option. - -=item * - -F<-t> should only return TRUE for file handles connected to a TTY - -The Microsoft C version of isatty() returns TRUE for all -character mode devices, including the /dev/null style "nul" -device and printers like "lpt1". - -=item * - -Fixed a regression caused by commit fafafbaf which caused a panic during -parameter passing [perl #70171] - -=item * - -On systems which in-place edits without backup files, -i'*' now works as -the documentation says it does [perl #70802] - -=item * - -Saving and restoring magic flags no longer loses readonly flag. - -=item * - -The malformed syntax C (note the missing comma) no longer -causes abrupt and total failure. - -=item * - -Regular expressions compiled with C literals properly set C<$'> when -matching again. - -=item * - -Using named subroutines with C should no longer lead to bus errors [perl -#71076] - -=item * - -Numerous bugfixes catch small issues caused by the recently-added Lexer API. - -=item * - -Smart match against C<@_> sometimes gave false negatives. [perl #71078] - -=item * - -C<$@> may now be assigned a read-only value (without error or busting the stack). - -=item * - -C called recursively from within an active comparison subroutine no -longer causes a bus error if run multiple times. [perl #71076] - -=back - -=head1 New or Changed Diagnostics - -=over 4 - -=item * - -C now warns when called in void context - -=item * - -C-style functions called with too few arguments will now issue the -warning C<"Missing argument in %s"> [perl #71000] - -=back - -=head1 New Tests - -Many modules updated from CPAN incorporate new tests. - -=over 4 - -=item t/comp/final_line_num.t - -See if line numbers are correct at EOF - -=item t/comp/form_scope.t - -See if format scoping works - -=item t/comp/line_debug.t - -See if @{"_<$file"} works - -=item t/op/filetest_t.t - -See if -t file test works - -=item t/op/qr.t - -See if qr works - -=item t/op/utf8cache.t - -Tests malfunctions of utf8 cache - -=item t/re/uniprops.t - -Test unicode \p{} regex constructs - -=back - -=head1 Deprecations - -The following items are now deprecated. - -=over 4 - -=item Use of "goto" to jump into a construct is deprecated - -Using C to jump from an outer scope into an inner -scope is now deprecated. This rare use case was causing -problems in the implementation of scopes. - -=back - -=head1 Acknowledgements - -Perl 5.11.3 represents approximately one month of development since -Perl 5.11.2 and contains 61407 lines of changes across 396 files -from 40 authors and committers: - -Abigail, Alex Davies, Alexandr Ciornii, Andrew Rodland, Andy -Dougherty, Bram, brian d foy, Chip Salzenberg, Chris Williams, Craig -A. Berry, Daniel Frederick Crisman, David Golden, Dennis Kaarsemaker, -Eric Brine, Father Chrysostomos, Gene Sullivan, Gerard Goossen, H. -Merijn Brand, Hugo van der Sanden, Jan Dubois, Jerry D. Hedden, -Jesse Vincent, Jim Cromie, Karl Williamson, Leon Brocard, Max -Maischein, Michael Breen, Moritz Lenz, Nicholas Clark, Rafael -Garcia-Suarez, Reini Urban, Ricardo Signes, Stepan Kasal, Steve -Hay, Steve Peters, Tim Bunce, Tony Cook, Vincent Pit and Zefram. - -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. - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut - - diff --git a/pod/perl5114delta.pod b/pod/perl5114delta.pod deleted file mode 100644 index 64ff10b2014..00000000000 --- a/pod/perl5114delta.pod +++ /dev/null @@ -1,279 +0,0 @@ -=head1 NAME - -perl5114delta - what is new for perl v5.11.4 - -=head1 DESCRIPTION - -This document describes differences between the 5.11.3 release and -the 5.11.4 release. - -If you are upgrading from an earlier release such as 5.11.2, first read -L, which describes differences between 5.11.2 and -5.11.3. - -=head1 Incompatible Changes - -=head2 Version number formats - -Acceptable version number formats have been formalized into "strict" and -"lax" rules. C takes a strict version number. C takes a lax version number. C and the -L object constructors take lax version numbers. Providing an -invalid version will result in a fatal error. - -These formats will be documented fully in the L module in a -subsequent release of Perl 5.11. To a first approximation, a "strict" -version number is a positive decimal number (integer or decimal-fraction) -without exponentiation or else a dotted-decimal v-string with a leading 'v' -character and at least three components. A "lax" version number allows -v-strings with fewer than three components or without a leading 'v'. Under -"lax" rules, both decimal and dotted-decimal versions may have a trailing -"alpha" component separated by an underscore character after a fractional -or dotted-decimal component. - -The L module adds C and C -functions to check a scalar against these rules. - -=head1 Core Enhancements - -=head2 Unicode properties - -C<\p{XDigit}> now matches the same characters as C<\p{Hex_Digit}>. This -means that in addition to the characters it currently matches, -C<[A-Fa-f0-9]>, it will also match their fullwidth equivalent forms, for -example U+FF10: FULLWIDTH DIGIT ZERO. - -=head1 Modules and Pragmata - -=head2 Pragmata Changes - -=over 4 - -=item C - -Upgraded from version 0.02 to 0.03. - -This version introduces the C method to allow subclasses of less to -pick where in %^H to store their stash. - -=item C - -Upgraded from version 0.77 to 0.81. - -This version adds support for L as described earlier -in this document and in its own documentation. - -=item C - -Upgraded from version 1.08 to 1.09. - -This version adds the C warning category. See also L for this change. - -=back - -=head2 Updated Modules - -=over 4 - -=item C - -Upgraded from version 0.36 to 0.38. - -=item C - -Upgraded from version 0.93 to 0.94. - -=item C - -Upgraded from version 2.021 to 2.024. - -=item C - -Upgraded from version 2.021 to 2.024. - -=item C - -Upgraded from version 1.94_5301 to 1.94_54. - -=item C - -Upgraded from version 0.22 to 0.24. - -=item C - -Upgraded from version 0.36 to 0.3603. - -=item C - -Upgraded from version 2.20 to 2.21. - -Anonymous coderefs created in Safe containers no longer get bogus -arguments passed to them, fixing RT #72068. - -=back - -=head2 Removed Modules and Pragmata - -=over 4 - -=item C - -Removed from the Perl core. Prior version was 'undef'. - -=back - -=head1 Changes to Existing Documentation - -A significant fraction of the core documentation has been updated to clarify -the behavior of Perl's Unicode handling. - -Much of the remaining core documentation has been reviewed and edited -for clarity, consistent use of language, and to fix the spelling of Tom -Christiansen's name. - -=head2 Configuration improvements - -USE_ATTRIBUTES_FOR_PERLIO is now reported in the compile-time options -listed by the C<-V> switch. - -=head2 Platform Specific Changes - -=over 4 - -=item VMS - -The default pipe buffer size on VMS has been updated to 8192 on 64-bit -systems. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -Tie::Hash::NamedCapture::* shouldn't abort if passed bad input (RT #71828) - -=item * - -@_ and $_ no longer leak under threads (RT #34342 and #41138, also -#70602, #70974) - -=back - -=head1 New or Changed Diagnostics - -=over 4 - -=item New warning category C - -The two warnings : - - Illegal character in prototype for %s : %s - Prototype after '%c' for %s : %s - -have been moved from the C top-level warnings category into a new -first-level category, C. These two warnings are currently the -only ones emitted during parsing of an invalid/illegal prototype, so one -can now do - - no warnings 'illegalproto'; - -to suppress only those, but not other syntax-related warnings. Warnings where -prototypes are changed, ignored, or not met are still in the C -category as before. (Matt S. Trout) - -=item lvalue attribute ignored after the subroutine has been defined - -This new warning is issued when one attempts to mark a subroutine as -lvalue after it has been defined. - -=back - -=head1 Changed Internals - -=over 4 - -=item * - -Perl_magic_setmglob now knows about globs, fixing RT #71254. - -=back - -=head1 Known Problems - -Perl 5.11.4 is a development release leading up to Perl 5.12.0. -Some notable known problems found in 5.11.4 are listed as dependencies -of RT #69710, the Perl 5 version 12 meta-ticket. - -=head1 Deprecations - -The following items are now deprecated. - -=over 4 - -=item C<< UNIVERSAL-Eimport() >> - -The method C<< UNIVERSAL-Eimport() >> is now deprecated. Attempting to -pass import arguments to a C statement will result in a -deprecation warning. (This is a less noisy version of the full deprecation -warning added in 5.11.0.) - -=back - -=head1 Acknowledgements - -Perl 5.11.4 represents approximately one month of development since -Perl 5.11.3 and contains 17682 lines of changes across 318 files -from 40 authors and committers: - -Abigail, Andy Dougherty, brian d foy, Chris Williams, Craig A. Berry, -David Golden, David Mitchell, Father Chrysostomos, Gerard Goossen, -H.Merijn Brand, Jesse Vincent, Jim Cromie, Josh ben Jore, Karl -Williamson, kmx, Matt S Trout, Nicholas Clark, Niko Tyni, Paul Marquess, -Philip Hazel, Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo -Signes, Shlomi Fish, Tim Bunce, Todd Rinaldo, Tom Christiansen, Tony -Cook, Vincent Pit, and Zefram - -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. - -=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 L. There may also be -information at L, the Perl Home Page. - -If you believe you have an unreported bug, please run the B -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, will be sent off to perlbug@perl.org to be -analyzed 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5115delta.pod b/pod/perl5115delta.pod deleted file mode 100644 index dbed1613bec..00000000000 --- a/pod/perl5115delta.pod +++ /dev/null @@ -1,328 +0,0 @@ -=head1 NAME - -perl5115delta - what is new for perl v5.11.5 - -=head1 DESCRIPTION - -This document describes differences between the 5.11.4 release and -the 5.11.5 release. - -If you are upgrading from an earlier release such as 5.11.3, first read -L, which describes differences between 5.11.3 and -5.11.4. - -=head1 Core Enhancements - -=head2 32-bit limit on substr arguments removed - -The 32-bit limit on C arguments has now been removed. The full range -of the system's signed and unsigned integers is now available for the C -and C arguments. - -=head1 Modules and Pragmata - -=head2 Pragmata Changes - -=over 4 - -=item C - -Upgraded from version 0.81 to 0.82. - -The C and C functions can now be optionally exported to the -caller's namespace and are also now documented. - -Undefined version objects are now uninitialized with zero rather than C. - -=back - -=head2 Updated Modules - -=over 4 - -=item C - -Upgraded from version 1.11 to 1.12. - -=item C - -Upgraded from version 1.94_53 to 1.94_56. - -This resolves RT #72362, in which CPAN was ignoring C, -and RT #72348, in which the command C in the CPAN shell could -cause an exception to be thrown. - -This module is also now built in a less specialized way, which resolves a -problem that caused C after C to fail, fixing RT #72218. - -=item C - -Upgraded from version 0.44 to 0.46. - -This makes the prereq resolving fall back to F<_build/> querying if the -C action fails. - -=item C - -Upgraded from version 3.15_01 to 3.15_02. - -=item C - -Upgraded from version 1.01 to 1.02. - -=item C - -Upgraded from version 2.21 to 2.22. - -This resolves RT #72700, in which an exception thrown from a closure was -getting lost. - -=item C - -Upgraded from version 1.85 to 1.86. - -This makes the new Socket implementation of C consistent with the -existing Socket6 implementation of C, fixing RT #72884. - -=item C - -Upgraded from version 2.2.2 to 2.3.1. - -=back - -=head1 Changes to Existing Documentation - -The syntax C is now documented as valid, as -is the syntax C, -although actually using the latter may not be the best idea for the -readability of your source code. - -=head1 Installation and Configuration Improvements - -=head2 Configuration improvements - -Support for SystemTap's C compatibility layer has been added and an -issue with linking C has been fixed in the process. - -C is now used instead of C for C's new usage of ANSI -escape codes by setting C<$Config{less}> (and thereby C<$Config{pager}>, -which fixes RT #72156. - -USE_PERL_ATOF is now reported in the compile-time options listed by the C<-V> -switch. - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -Arbitrary whitespace is now allowed between C and C in -C statements. (Fixes RT #72432) - -=item * - -A panic caused by trying to load C when the parser is already in -error (e.g. by a missing C under C) is now averted. This -was a regression since Perl 5.10.0. (Fixes RT #72590) - -=item * - -Reading C<$!> no longer causes a SEGV for out of range C values. (Fixes -RT #72850) - -=item * - -A possible SEGV in C has been fixed. This was a regression since -Perl 5.10. - -=item * - -A possible SEGV when freeing a scalar that was upgraded to an C -type from a simple(r) scalar has been fixed. - -=item * - -A type conversion bug in C that caused it to break around C<2**48> -has been fixed. - -=item * - -Interpolating a regex that makes use of the C pragma will no longer -cause a run-time error. (Fixes RT #56444) - -=item * - -Array references assigned to C<*Foo::ISA> now have the necessary magic added -to them to catch any further updates to the new C<@ISA>. (Fixes RT #72866) - -=item * - -Filehandles are now always blessed into C, which, together with -some suitable manipulation of C<@IO::File::ISA>, fixes a breakage introduced -in Perl 5.11.3 by a change that always blessed filehandles into C -rather than checking for C first. - -=item * - -A change in the behaviour of C and C in -Perl 5.10.0 that wasn't documented at the time is now documented in -L. (Fixes RT #62522) - -=item * - -RT #71504 is now fixed by simply skipping the tests that failed on OpenBSD -with ithreads and perlio. - -=back - -=head1 New or Changed Diagnostics - -=over 4 - -=item * - -The fatal error C is now produced if the -C handler returns malformed UTF-8. - -=item * - -If an unresolved named character or sequence was encountered when compiling a -regex pattern then the fatal error C<\\N{NAME} must be resolved by the lexer> -is now produced. This can happen, for example, when using a single-quotish -context like C<$re = '\N{SPACE}'; $re;>. See L for more examples of -how the lexer can get bypassed. - -=item * - -The fatal error C will be produced -if the character constant represented by C<...> is not a valid hexadecimal -number. - -=item * - -The new meaning of C<\N> as C<[^\n]> is not valid in a bracketed character -class, just like C<.> in a character class loses its special meaning, and will -cause the fatal error C<\\N in a character class must be a named character: -\\N{...}>. - -=item * - -The rules on what is legal for the C<...> in C<\N{...}> have been tightened -up so that unless the C<...> begins with an alphabetic character and continues -with a combination of alphanumerics, dashes, spaces, parentheses or colons -then the warning C is -now issued. - -=item * - -The warning C will be -issued if the C handler returns a sequence of characters which -exceeds the limit of the number of characters that can be used. The message -will indicate which characters were used and which were discarded. - -=item * - -Currently, all but the first of the several characters that the C -handler may return are discarded when used in a regular expression pattern -bracketed character class. If this happens then the warning C will be issued. - -=item * - -The warning C will be issued if Perl encounters a C<\N{> but doesn't -find a matching C<}>. In this case Perl doesn't know if it was mistakenly -omitted, or if "match non-newline" followed by "match a C<{>" was desired. -It assumes the latter because that is actually a valid interpretation as -written, unlike the other case. If you meant the former, you need to add the -matching right brace. If you did mean the latter, you can silence this -warning by writing instead C<\N\{>. - -=item * - -C and C called with numbers smaller than they can reliably -handle will now issue the warnings C and -C. - -=back - -=head1 New Tests - -=over 4 - -=item F - -Tests some suitably portable filetest operators to check that they work as -expected, particularly in the light of some internal changes made in how -filehandles are blessed. - -=item F - -Tests that times greater than C<2**63>, which can now be handed to C -and C, do not cause an internal overflow or an excessively long -loop. - -=back - -=head1 Known Problems - -Perl 5.11.5 is a development release leading up to Perl 5.12.0. -Some notable known problems found in 5.11.5 are listed as dependencies -of RT #69710, the Perl 5 version 12 meta-ticket. - -=head1 Acknowledgements - -Perl 5.11.5 represents approximately one month of development since -Perl 5.11.4 and contains 9618 lines of changes across 151 files -from 33 authors and committers: - -Evar ArnfjErE Bjarmason, Abigail, brian d foy, Chris -Williams, David Golden, David Mitchell, Eric Brine, Frank Wiegand, Gisle -Aas, H.Merijn Brand, Jan Dubois, Jesse Vincent, Jim Cromie, John Peacock, -Josh ben Jore, Karl Williamson, Marcus Holland-Moritz, Michael G Schwern, -Nicholas Clark, Offer Kaye, Philippe Bruhat (BooK), Rafael Garcia-Suarez, -Reini Urban, Ricardo Signes, Robin Barker, Slaven Rezic, Steffen Mueller, -Steve Hay, Steve Peters, Tim Bunce, Todd Rinaldo, Tony Cook and -Vincent Pit. - -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. - -=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 -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, will be sent off to perlbug@perl.org to be -analyzed 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5130delta.pod b/pod/perl5130delta.pod deleted file mode 100644 index d89eeb100c3..00000000000 --- a/pod/perl5130delta.pod +++ /dev/null @@ -1,134 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5130delta - what is new for perl v5.13.0 - -=head1 DESCRIPTION - -This document describes differences between the 5.12.0 release and the -5.13.0 release. - -If you are upgrading from an earlier release such as 5.10.0, first read -L, which describes differences between 5.10.0 and -5.12.0. - -=head1 Core Enhancements - -=head2 "safe signals" optimization - -Signal dispatch has been moved from the runloop into control ops. This -should give a few percent speed increase, and eliminates almost all of -the speed penalty caused by the introduction of "safe signals" in -5.8.0. Signals should still be dispatched within the same statement as -they were previously - if this is not the case, or it is possible to -create uninterruptible loops, this is a bug, and reports are encouraged -of how to recreate such issues. - -=head2 Assignment to C<$0> sets the legacy process name with C on Linux - -On Linux the legacy process name will be set with L, in -addition to altering the POSIX name via C as perl has done -since version 4.000. Now system utilities that read the legacy process -name such as ps, top and killall will recognize the name you set when -assigning to C<$0>. The string you supply will be cut off at 16 bytes, -this is a limitation imposed by Linux. - -=head2 Optimization of shift; and pop; calls without arguments - -Additional two OPs are not added anymore into op tree for shift and pop -calls without argument (when it works on C<@_>). Makes C 5% -faster over C on not threaded perl and 25% faster on threaded. - -=head1 Modules and Pragmata - -=head2 Updated Modules - -=over 4 - -=item CGI - -Updated to version 3.49. - -=item Data::Dumper - -Updated to version 2.126. - -=item MIME::Base64 - -Updated to 3.09. - -=item threads - -Updated to version 1.77 - -=item threads-shared - -Updated to version 1.33 - -=back - -=head1 Installation and Configuration Improvements - -=head2 Platform Specific Changes - -=over 4 - -=item AIX - -Allow building on AIX 4.2. - -=back - -=head1 Acknowledgements - -Perl 5.13.0 represents eight days of development since Perl 5.12.0 and -contains 3,766 lines of changes across 151 files from 29 authors and -committers. - -Thank you to the following for contributing to this release: - -Ævar Arnfjörð Bjarmason, Alex Vandiver, Chris Williams, chromatic, -Craig A. Berry, David Golden, David Mitchell, Eric Brine, Father -Chrysostomos, Florian Ragwitz, Frank Wiegand, Gisle Aas, H.Merijn -Brand, Hugo van der Sanden, Jesse Vincent, Josh ben Jore, Karl -Williamson, Leon Brocard, Michael G Schwern, Michael G. Schwern, Nga -Tang Chan, Nicholas Clark, Niko Tyni, Rafael Garcia-Suarez, Ricardo -Signes, Robin Barker, Slaven Rezic, Steffen Mueller, Zefram. - -=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 -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, 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 file for an explanation of how to view exhaustive -details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl51310delta.pod b/pod/perl51310delta.pod deleted file mode 100644 index b4da990847e..00000000000 --- a/pod/perl51310delta.pod +++ /dev/null @@ -1,815 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl51310delta - what is new for perl v5.13.10 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.9 release and -the 5.13.10 release. - -If you are upgrading from an earlier release such as 5.13.8, first read -L, which describes differences between 5.13.8 and -5.13.9. - -=head1 Core Enhancements - -=head2 The new regular expression modifiers available in suffix form - -Various releases of the 5.13.x series have added new regular expression -modifiers, C, C, C, and C. They were only available in -infix form (e.g., C<(?a:...)>) until this release; now they are usable -in suffix form. This change was made too late to change all the -affected documentation, so there are a number of places that erroneously -say these must be used in infix form. - -However, there is an ambiguity with the construct, C. Due -to backward compatibility constraints, in Perl 5.14 only, it will be -resolved as C, that is, as meaning to take the result -of the substitution, and see if it is stringwise less-than-or-equal-to -what follows. In Perl 5.16 and later, it will instead be resolved as -meaning to do the pattern match using the rules of the current locale, -and evaluate the rhs as an expression when doing the substitution. In -5.14, if you want the latter interpretation, you can write "el" instead. - -=head2 Add C<\p{Titlecase}> as a synonym for C<\p{Title}> - -This synonym is added for symmetry with the Unicode property names -C<\p{Uppercase}> and C<\p{Lowercase}>. - -=head2 New regular expression modifier option C - -Doubling the C regular expression modifier increases its effect, -so that in case-insensitive matching, no ASCII character will match a -non-ASCII character. For example, normally, - - 'k' =~ /\N{KELVIN SIGN}/i - -will match; it won't under C. - -=head2 New warnings categories for problematic (non-)Unicode code points. - -Three new warnings subcategories of have been added. These -allow you to turn off warnings for their covered events, while allowing -the other UTF-8 warnings to remain on. The three categories are: -C when UTF-16 surrogates are encountered; -C when Unicode non-character code points are encountered; -and C when code points that are above the legal Unicode -maximum of 0x10FFFF are encountered. - -=head1 Incompatible Changes - -=head2 Most C<\p{}> properties are now immune from case-insensitive matching - -For most Unicode properties, it doesn't make sense to have them match -differently under C case-insensitive matching than not. And doing -so leads to unexpected results and potential security holes. For -example - - m/\p{ASCII_Hex_Digit}+/i - -could previously match non-ASCII characters because of the Unicode -matching rules. There were a number of bugs in this feature until an -earlier release in the 5.13 series. Now this release reverts, and -removes the feature completely except for the few properties where -people have come to expect it, namely the ones where casing is an -integral part of their functionality, such as C and -C, both of which match the exact same code points, -namely those matched by C. Details are in -L. - -User-defined property handlers that need to match differently under -C must change to read the new boolean parameter passed it which is -non-zero if case-insensitive matching is in effect; 0 if not. See -L. - -=head2 regex: \p{} in pattern implies Unicode semantics - -Now, a Unicode property match specified in the pattern will indicate -that the pattern is meant for matching according to Unicode rules -(e40e74f) - -=head2 add GvCV_set() and GvGP_set() macros and change GvGP() - -This allows a future commit to eliminate some backref magic between GV -and CVs, which will require complete control over assignment to the -gp_cv slot. - -If you've been using GvGP() in lvalue context this change will break -your code, you should use GvGP_set() instead. (c43ae56) - -=head2 _swash_inversion_hash is no longer exported as part of the API - -This function shouldn't be called from XS code. (4c2e113) - -=head2 Unreferenced objects in global destruction - -The fix for [perl #36347], which made sure that destructors were called on -unreferenced objects, broke the tests for three CPAN modules, which -apparently rely on the bug. - -To provide more time for fixing them (as this is such a minor bug), we -have reverted the fix until after perl 5.14.0. - -This resolves [perl #82542] and other related tickets. - -=head2 C on shared pipes - -The C function no longer waits for the child process to exit if the -underlying file descriptor is still in use by another thread, to avoid -deadlocks. It returns true in such cases. - -=head1 Deprecations - -=over - -=item Deprecated Modules - -The following modules will be removed from the core distribution in a -future release, and should be installed from CPAN instead. Distributions -on CPAN which require these should add them to their prerequisites. The -core versions of these modules warnings will issue a deprecation warning. - -If you ship a packaged version of Perl, either alone or as part of a -larger system, then you should carefully consider the repercussions of -core module deprecations. You may want to consider shipping your default -build of Perl with packages for some or all deprecated modules which -install into C or C perl library directories. This will -inhibit the deprecation warnings. - -Alternatively, you may want to consider patching F -to provide deprecation warnings specific to your packaging system -or distribution of Perl, consistent with how your packaging system -or distribution manages a staged transition from a release where the -installation of a single package provides the given functionality, to -a later release where the system administrator needs to know to install -multiple packages to get that same functionality. - -You can silence these deprecation warnings by installing the modules -in question from CPAN. To install the latest version of all of them, -just install C. - -=over - -=item L - -We strongly recommend that you install and used L in -preference, as it offers significantly improved profiling and reporting. - -=back - -=back - -=head2 User-defined case-mapping - -This feature is being deprecated due to its many issues, as documented in -L. -It is planned to remove this feature in Perl 5.16. A CPAN module -providing improved functionality is being prepared for release by the -time 5.14 is. - -=head1 Modules and Pragmata - -=head2 New Modules and Pragmata - -=over 4 - -=item * - -C version 2.110440 has been added as a dual-life module. It -provides a standard library to read, interpret and write CPAN distribution -metadata files (e.g. META.json and META.yml) which describes a -distribution, its contents, and the requirements for building it and -installing it. The latest CPAN distribution metadata specification is -included as C and notes on changes in the specification -over time are given in C. - -=item * - -C version 0.101020 has been added as a dual-life -module. It provides a standard library to model and manipulates module -prerequisites and version constraints as defined in the L. - -=back - -=head2 Updated Modules and Pragmata - -=over 4 - -=item * - -C has been upgraded from version 1.27 to 1.28. - -=item * - -C has been upgraded from version 1.19 to 1.20. - -[perl #82854] It now avoids using regular expressions that cause perl to -load its Unicode tables, in order to avoid the 'BEGIN not safe after -errors' error that will ensue if there has been a syntax error. - -=item * - -C has been upgraded from version 3.51 to 3.52 - -=item * - -C has been upgraded from version 1.94_64 to 1.94_65 - -Includes support for META.json and MYMETA.json. - -=item * - -C has been upgraded from version 0.9011 to 0.9101 - -Includes support for META.json and MYMETA.json and a change to -using Digest::SHA for CPAN checksums. - -=item * - -C has been upgraded from version 0.01 to 0.02. - -=item * - -C has been upgraded from version 1.21 to 1.22. - -It now renders pod links slightly better, and has been taught to find -descriptions for messages that share their descriptions with other -messages. - -=item * - -C has been upgraded from version 20080331.00 to 20110217.00. - -Merely loading C now no longer triggers profiling to start. -C and C still behave as before and start -the profiler. - -NOTE: C is deprecated and will be removed from a future -version of Perl. We strongly recommend that you install and use -L instead, as it offers significantly improved -profiling and reporting. - -=item * - -C has been upgraded from version 1.12 to 1.13. - -[perl #84358] It no longer inherits from AutoLoader; hence it no longer -produces weird error messages for unsuccessful method calls on classes that -inherit from DynaLoader. - -=item * - -C has been upgraded from version 1.17 to 1.18. - -It now allows IO::Handle objects (and objects in derived classes) to be -removed from an IO::Select set even if the underlying file descriptor is -closed or invalid. - -=item * - -C has been upgraded from version 0.68 to 0.70 - -=item * - -C has been upgraded from version 0.009 to 0.010 - -=item * - -C has been upgraded from version 1.99_04 to 1.992. - -=item * - -C has been upgraded from version 0.3607 to 0.37_05. - -A notable change is the deprecation of several modules. -Module::Build::Version has been deprecated and Module::Build now relies -directly upon L. Module::Build::ModuleInfo has been deprecated in -favor of a standalone copy of it called L. -Module::Build::YAML has been deprecated in favor of L. - -Module::Build now also generates META.json and MYMETA.json files -in accordance with version 2 of the CPAN distribution metadata specification, -L. The older format META.yml and MYMETA.yml files are -still generated, as well. - -=item * - -C has been upgraded from version 0.40 to 0.44 - -=item * - -C has been upgraded from version 1.000003 to 1.000004. - -=item * - -C has been upgraded from version 1.12 to 1.13. - -The documentation has greatly improved. See L below. - -=item * - -C has been upgraded from version 1.40 to 1.4401. - -The latest Parse::CPAN::Meta can now read YAML or JSON files using -L and L, which are now part of the Perl core. - -=item * - -C has been upgraded from version 0.16 to 0.17. - -It now supports the double-a flag: C - -The C function used to crash when called on a regular expression -belonging to a pluggable engine. Now it has been disabled for those. - -C no longer leaks memory. - -=item * - -C has been upgraded from version 0.24 to 0.26 - -=item * - -C has been upgraded from version 0.68 to 0.72 - -This also sees the switch from using the pure-perl version of this -module to the XS version.` - -=item * - -C has been upgraded from version 1.04 to 1.05. - -Two bugs have been fixed [perl #84086]: - -The symbol table name was lost when tying a hash, due to a thinko in -C. The result was that all tied hashes interacted with the -local symbol table. - -Unless a symbol table name had been explicitly specified in the call -to the constructor, querying the special key ':LOCAL' failed to -identify objects connected to the local symbol table. - -=item * - -Added new function C. This function will return the -numeric value of the string passed it; C if the string in its -entirety has no safe numeric value. - -To be safe, a string must be a single character which has a numeric -value, or consist entirely of characters that match \d, coming from the -same Unicode block of digits. Thus, a mix of Bengali and Western -digits would be considered unsafe, as well as a mix of half- and -full-width digits, but strings consisting entirely of Devanagari digits -or of "Mathematical Bold" digits would would be safe. - -=item * - -C has been upgraded from version 1.94_63 to 1.94_64. - -=back - -=head1 Documentation - -=head2 Changes to Existing Documentation - -=head3 L - -=over 4 - -=item * - -L's documentation has practically undergone a rewrite. It -is now much more straightforward and clear. - -=back - -=head3 L and perlrepository - -=over 4 - -=item * - -The L and perlrepository documents have been heavily edited and -split up into several new documents. - -The L document is now much shorter, and focuses on the Perl 5 -development process and submitting patches to Perl. The technical content has -been moved to several new documents, L, L, -L, and L. This technical content has only been -lightly edited. - -The perlrepository document has been renamed to L. This new document -is just a how-to on using git with the Perl source code. Any other content -that used to be in perlrepository has been moved to perlhack. - -=back - -=head3 L - -=over 4 - -=item * - -The documentation for the C function now contains more examples, -see B (f947627) - -=back - -=head3 L - -=over 4 - -=item * - -Examples in L have been updated to show the use of -L. (9243591) - -=back - -=head3 Miscellaneous - -=over 4 - -=item * - -Many POD related RT bugs and other issues which are too numerous to -enumerate have been solved by Michael Stevens. - -=back - -=head1 Diagnostics - -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. - -=head2 New Diagnostics - -=over 4 - -=item "\b{" is deprecated; use "\b\{" instead - -=item "\B{" is deprecated; use "\B\{" instead - -Use of an unescaped "{" immediately following a C<\b> or C<\B> is now -deprecated so as to reserve its use for Perl itself in a future release. - -=item regcomp: Add warning if \p is used under locale. (fb2e24c) - -C<\p> implies Unicode matching rules, which are likely going to be -different than the locale's. - -=item panic: gp_free failed to free glob pointer - something is repeatedly re-creating entries - -This new error is triggered if a destructor called on an object in a -typeglob that is being freed creates a new typeglob entry containing an -object with a destructor that creates a new entry containing an object.... - -=item refcnt: fd %d%s - -This new error only occurs if a internal consistency check fails when a -pipe is about to be closed. - -=back - -=head2 Changes to Existing Diagnostics - -=over 4 - -=item * - -The warning message about regex unrecognized escapes passed through is -changed to include any literal '{' following the 2-char escape. e.g., -"\q{" will include the { in the message as part of the escape -(216bfc0). - -=item * - -C no longer warns (8250589) - -Perl will now no longer produce this warning: - - $ perl -we 'open my $f, ">", \my $x; binmode $f, "scalar"' - Use of uninitialized value in binmode at -e line 1. - -=back - -=head1 Utility Changes - -=head3 L - -=over 4 - -=item * - -[perl #82996] Use the user's from address as return-path in perlbug - -Many systems these days don't have a valid Internet domain name and -perlbug@perl.org does not accept email with a return-path that does -not resolve. Therefore pass the user's address to sendmail so it's -less likely to get stuck in a mail queue somewhere. (019cfd2) - -=back - -=head1 Configuration and Compilation - -=over 4 - -=item * - -make reg_eval_scope.t TODOs consistently fail (daaf7ac) - -Some of the TODO tests in reg_eval_scope.t spuriously passed under -non-threaded builds. Make the tests harder so they always fail. - -Since one of the key bugs in (?{..}) is the trashing of the parent pad, -add some extra lexical vars to the parent scope and check they're still -there at the end. - -=item * - -Stop EU::CBuilder's tests from failing in parallel (cbf59d5) - -It used to use the same paths for temporary files in all tests. This -blew up randomly when the tests were run in parallel. - -=back - -=head1 Testing - -=over 4 - -=item * - -F now skips all tests on a static (-Uusedl) build -of perl. - -=item * - -F now passes on non-Win32 platforms when some -extensions are built statically. - -=back - -=head1 Platform Support - -=head2 Platform-Specific Notes - -=over 4 - -=item Windows - -=over 4 - -=item * - -The C build target now depends on F to allow the -F test to run successfully. - -=back - -=item MirBSD - -=over 4 - -=item * - -[perl #82988] Skip hanging taint.t test on MirBSD 10 (1fb83d0) - -Skip a hanging test under MirBSD that was already being skipped under -OpenBSD. - -=item * - -Previously if you build perl with a shared libperl.so on MirBSD (the -default config), it will work up to the installation; however, once -installed, it will be unable to find libperl. Treat path handling -like in the other BSD dialects. - -=back - -=back - -=head1 Internal Changes - -=over 4 - -=item * - -Fix harmless invalid read in Perl_re_compile() (f6d9469) - -[perl #2460] described a case where electric fence reported an invalid -read. This could be reproduced under valgrind with blead and -e'/x/', -but only on a non-debugging build. - -This was because it was checking for certain pairs of nodes (e.g. BOL + END) -and wasn't allowing for EXACT nodes, which have the string at the next -node position when using a naive NEXTOPER(first). In the non-debugging -build, the nodes aren't initialised to zero, and a 1-char EXACT node isn't -long enough to spill into the type field of the "next node". - -Fix this by only using NEXTOPER(first) when we know the first node is -kosher. - -=item * - -Break out the generated function Perl_keywords() into F, a new file. (26ea9e1) - -As it and Perl_yylex() both need FEATURE_IS_ENABLED, feature_is_enabled() is -no longer static, and the two macro definitions move from toke.c to perl.h - -Previously, one had to cut and paste the output of perl_keywords.pl into the -middle of toke.c, and it was not clear that it was generated code. - -=item * - -A lot of tests have been ported from Test to Test::More, e.g. in -3842ad6. - -=item * - -Increase default PerlIO buffer size. (b83080d) - -The previous default size of a PerlIO buffer (4096 bytes) has been increased -to the larger of 8192 bytes and your local BUFSIZ. Benchmarks show that doubling -this decade-old default increases read and write performance in the neighborhood -of 25% to 50% when using the default layers of perlio on top of unix. To choose -a non-default size, such as to get back the old value or to obtain and even -larger value, configure with: - - ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N - -where N is the desired size in bytes; it should probably be a multiple of -your page size. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -A Unicode C<\p{}> property match in a regular expression pattern will -now force Unicode rules for the rest of the regular expression - -=item * - -[perl #38456] binmode FH, ":crlf" only modifies top crlf layer (7826b36) - -When pushed on top of the stack, crlf will no longer enable crlf layers -lower in the stack. This will prevent unexpected results. - -=item * - -Fix 'raw' layer for RT #80764 (ecfd064) - -Made a ':raw' open do what it advertises to do (first open the file, -then binmode it), instead of leaving off the top layer. - -=item * - -Use PerlIOBase_open for pop, utf8 and bytes layers (c0888ac) - -Three of Perl's builtin PerlIO layers (C<:pop>, C<:utf8> and -C<:bytes>) didn't allow stacking when opening a file. For example -this: - - open FH, '>:pop:perlio', 'some.file' or die $!; - -Would throw an error: "Invalid argument". This has been fixed in this -release. - -=item * - -An issue present since 5.13.1, where s/A/B/ with A utf8 and B -non-utf8, could cause corruption or segfaults has been -fixed. (c95ca9b) - -=item * - -String evals will no longer fail after 2 billion scopes have been -compiled (d1bfb64, 2df5bdd, 0d311cd and 6012dc8) - -=item * - -[perl #81750] When strict 'refs' mode is off, -C<%{...}> in rvalue context returns C if -its argument is undefined. An optimisation introduced in perl 5.12.0 to -make C faster when used as a boolean did not take this into -account, causing C (and C when C<$foo> is -undefined) to be an error, which it should only be in strict mode. - -=item * - -[perl #83194] Combining the vector (%v) flag and dynamic precision would -cause sprintf to confuse the order of its arguments, making it treat the -string as the precision and vice versa. - -=item * - -[perl #77692] Sometimes the UTF8 length cache would not be reset on a value -returned by substr, causing C to give -wrong answers. With C<${^UTF8CACHE}> set to -1, it would produce a 'panic' -error message, too. - -=item * - -During the restoration of a localised typeglob on scope exit, any -destructors called as a result would be able to see the typeglob in an -inconsistent state, containing freed entries, which could result in a -crash. This would affect code like this: - - local *@; - eval { die bless [] }; # puts an object in $@ - sub DESTROY { - local $@; # boom - } - -Now the glob entries are cleared before any destructors are called. This -also means that destructors can vivify entries in the glob. So perl tries -again and, if the entries are re-created too many times, dies with a -'panic: gp_free...' error message. - -=item * - -[perl #78494] When pipes are shared between threads, the C function -(and any implicit close, such as on thread exit) no longer blocks. - -=item * - -Several contexts no longer allow a Unicode character to begin a word -that should never begin words, for an example an accent that must follow -another character previously could precede all other characters. - -=item * - -Case insensitive matching in regular expressions compiled under C now works much more sanely when the pattern and/or target string -are encoded in UTF-8. Previously, under these conditions the localeness -was completely lost. Now, code points above 255 are treated as Unicode, -but code points between 0 and 255 are treated using the current locale -rules, regardless of whether the pattern or string are encoded in UTF-8. -The few case insensitive matches that cross the 255/256 boundary are not -allowed. For example, 0xFF does not caselessly match the character at -0x178, LATIN CAPITAL LETTER Y WITH DIAERESIS, because 0xFF may not be -LATIN SMALL LETTER Y in the current locale, and Perl has no way of -knowing if that character even exists in the locale, much less what code -point it is. - -=back - -=head1 Acknowledgements - -Perl 5.13.10 represents approximately one month of development since -Perl 5.13.9 and contains approximately 63000 lines of changes across -609 files from 38 authors and committers: - -Abigail, Alexander Hartmaier, brian d foy, Charles Bailey, Chip -Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry, Curtis Jewell, -Dave Rolsky, David Golden, David Leadbeater, David Mitchell, David -Wheeler, Father Chrysostomos, Florian Ragwitz, Franz Fasching, George -Greer, H.Merijn Brand, Hongwen Qiu, Hugo van der Sanden, Jay Hannah, -Jesse Vincent, Karl Williamson, Larwan Berke, Leon Timmermans, Michael -Breen, Michael Stevens, Nicholas Clark, Noirin Shirley, Paul Evans, -Peter John Acklam, Ricardo Signes, Robin Barker, Steven Schubiger, Tom -Christiansen, Tony Cook, Zsbán Ambrus and Ævar Arnfjörð Bjarmason - -=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 L -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl51311delta.pod b/pod/perl51311delta.pod deleted file mode 100644 index 812af75134b..00000000000 --- a/pod/perl51311delta.pod +++ /dev/null @@ -1,514 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl51311delta - what is new for perl v5.13.11 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.10 release and -the 5.13.11 release. - -If you are upgrading from an earlier release such as 5.13.9, first read -L, which describes differences between 5.13.9 and -5.13.10. - -=head1 Security - -=head2 User-defined regular expression properties - -Perl no longer allows a tainted regular expression to invoke a user-defined -property via C<\p{...}> syntax. It simply dies instead [perl #82616]. - -=head1 Incompatible Changes - -=head2 local($_) will strip all magic from $_ - -local() on scalar variables will give them a new value, but keep all -their magic intact. This has proven to be problematic for the default -scalar variable $_, where L recommends that any subroutine -that assigns to $_ should localize it first. This would throw an -exception if $_ is aliased to a read-only variable, and could have -various unintentional side-effects in general. - -Therefore, as an exception to the general rule, local($_) will not -only assign a new value to $_, but also remove all existing magic from -it as well. - -=head2 Passing references to warn() - -An earlier Perl 5.13.x release changed C to leave the reference -unchanged, allowing C<$SIG{__WARN__}> handlers to access the original -reference. But this stopped warnings that were references from having the -file and line number appended even when there was no C<$SIG{__WARN__}> -handler in place. - -Now C checks for the presence of such a handler and, if there is -none, proceeds to stringify the reference and append the file and line -number. This allows simple uses of C for debugging to continue to -work as they did before. - -=head2 fork() emulation will not wait for signalled children - -On Windows parent processes would not terminate until all forked -childred had terminated first. However, C is -inherently unstable on pseudo-processes, and C -might not get delivered if the child if blocked in a system call. - -To avoid the deadlock and still provide a safe mechanism to terminate -the hosting process, Perl will now no longer wait for children that -have been sent a SIGTERM signal. It is up to the parent process to -waitpid() for these children if child clean-up processing must be -allowed to finish. However, it is also the responsibility of the -parent then to avoid the deadlock by making sure the child process -can't be blocked on I/O either. - -See L for more information about the fork() emulation on -Windows. - -=head2 Perl source code is read in text mode on Windows - -Perl scripts used to be read in binary mode on Windows for the benefit -of the ByteLoader module (which is no longer part of core Perl). This -had the side effect of breaking various operations on the DATA filehandle, -including seek()/tell(), and even simply reading from DATA after file handles -have been flushed by a call to system(), backticks, fork() etc. - -The default build options for Windows have been changed to read Perl source -code on Windows in text mode now. Hopefully ByteLoader will be updated on -CPAN to automatically handle this situation. - -=head1 Performance Enhancements - -=over 4 - -=item * - -An earlier optimisation to speed up C and -C assignments caused a bug and was disabled in Perl 5.12.0. - -Now we have found another way to speed up these assignments [perl #82110]. - -=back - -=head1 Modules and Pragmata - -=head2 Updated Modules and Pragmata - -=over 4 - -=item * - -C has been upgraded from version 0.13 to 0.14. - -=item * - -C has been upgraded from version 2.15 to 2.16. - -=item * - -C has been upgraded from version 1.94_65 to 1.9600. - -=item * - -C has been upgraded from version 0.9101 to 0.9103 - -=item * - -C has been upgraded from version 0.52 to 0.54 - -=item * - -C has been downgraded from version 3.37 to 3.36. - -An optimisation that recent core changes have rendered unnecessary has been -reverted. - -=item * - -C has been upgraded from version 20110225.01 to 20110228.00. - -=item * - -C has been upgraded from version 5.50 to 5.61 - -New SHA-512/224 and SHA-512/256 transforms ref. NIST Draft FIPS 180-4 (February 2011) - -=item * - -C has been upgraded from version 1.16 to 1.17. - -=item * - -C has been downgraded from version 2.22 to 2.21. - -An optimisation that recent core changes have rendered unnecessary has been -reverted. - -=item * - -C has been upgraded from version 1.11 to 1.12. - -=item * - -C has been upgraded from version 1.13 to 1.14. - -=item * - -C has been upgraded from version 0.10 to 0.11. - -=item * - -C has been upgraded from version 1.08 to 1.09. - -=item * - -C has been upgraded from version 0.010 to 0.011. - -=item * - -C has been upgraded from version 0.07 to 0.08. - -=item * - -C has been upgraded from version 1.25_03 to 1.25_04. - -=item * - -C has been upgraded from version 2.27103 to 2.27105 - -=item * - -C has been upgraded from version 3.15 to 3.16 - -=item * - -C has been upgraded from version 1.992 to 1.994 - -=item * - -C has been upgraded from version 0.24_02 to 0.28 - -=item * - -C has been upgraded from version 0.37_05 to 0.3800 - -=item * - -C has been upgraded from version 2.45 to 2.46. - -=item * - -C has been upgraded from version 1.06 to 1.07. - -=item * - -C has been upgraded from version 1.11 to 1.12. - -=item * - -C has been upgraded from version 0.224 to 0.225 - -=item * - -C has been upgraded from version 3.15 to 3.16 - -=item * - -C has been upgraded from version 2.26 to 2.27. - -=item * - -C has been upgraded from version 1.15 to 1.16. - -=item * - -C has been upgraded from version 3.22 to 3.23 - -=item * - -C has been upgraded from version 0.97_01 to 0.98 - -=item * - -C has been upgraded from version 0.07 to 0.08. - -Some of the Perl code has been converted to XS for efficiency's sake. - -=item * - -C has been upgraded from version 1.38 to 1.39. - -=item * - -C has been upgraded from version 0.72 to 0.73 - -DUCET has been updated for Unicode 6.0.0 as Collate/allkeys.txt and -the default UCA_Version is 22. - -=item * - -C has been upgraded from version 0.31 to 0.32. -This includes a number of bug fixes: - -=over 4 - -=item charinfo() - -=over 4 - -=item * - -It is now updated to Unicode Version 6 with Corrigendum #8, except, -as with Perl 5.14, the code point at U+1F514 has no name. - -=item * - -The Hangul syllable code points have the correct names, and their -decompositions are always output without requiring L -to be installed. - -=item * - -The CJK (Chinese-Japanese-Korean) code points U+2A700 - U+2B734 -and U+2B740 - 2B81D are now properly handled. - -=item * - -The numeric values are now output for those CJK code points that have them. - -=item * - -The names that are output for code points with multiple aliases are now the -corrected ones. - -=back - -=item charscript() - -This now correctly returns "Unknown" instead of C for the script -of a code point that hasn't been assigned another one. - -=item charblock() - -This now correctly returns "No_Block" instead of C for the block -of a code point that hasn't been assigned to another one. - -=back - -=item * - -C has been upgraded from version 0.04 to 0.05. - -=back - -=head1 Documentation - -=head2 Changes to Existing Documentation - -=head3 L - -=over 4 - -=item * - -Clarified the order in which to check C<$@> and C<$!> after C. -(RT #80626) - -=back - -=head1 Diagnostics - -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. - -=head2 New Diagnostics - -=over 4 - -=item * - -Regexp modifier "/%c" may not appear twice - -(F syntax) The regular expression pattern had one of the mutually exclusive -modifiers repeated. Remove all but one of the occurrences. - -=item * - -Regexp modifiers "/%c" and "/%c" are mutually exclusive - -(F syntax) The regular expression pattern had more than one of the mutually -exclusive modifiers. Retain only the modifier that is supposed to be there. - -=item * - -Insecure user-defined property %s - -(F) Perl detected tainted data when trying to compile a regular -expression that contains a call to a user-defined character property -function, i.e. C<\p{IsFoo}> or C<\p{InFoo}>. -See L and L. - -=back - -=head1 Testing - -Many of the tests have been refactored to use testing libraries more -consistently. In some cases test files were created or deleted: - -=over 4 - -=item * - -The tests for C and Unicode have been moved from -F to the new F. - -=item * - -F has been moved to F. - -=item * - -The tests for [perl #72922] have been moved from F to the new -F. - -=item * - -F has been deleted and its only test moved to -F. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -A fix for a bug in C in 5.13.4 introduced a regression that -meant C did not warn when warnings were enabled. It now -correctly warns [perl #85508]. - -=item * - -The C<(?|...)> regular expression construct no longer crashes if the final -branch has more sets of capturing parentheses than any other branch. This -was fixed in Perl 5.10.1 for the case of a single branch, but that fix did -not take multiple branches into account [perl #84746]. - -=item * - -Accessing an element of a package array with a hard-coded number (as -opposed to an arbitrary expression) would crash if the array did not exist. -Usually the array would be autovivified during compilation, but typeglob -manipulation could remove it, as in these two cases which used to crash: - - *d = *a; print $d[0]; - undef *d; print $d[0]; - -=item * - -C<#line> directives in string evals were not properly updating the arrays -of lines of code (C<< @{"_<..."} >>) that the debugger (or any debugging or -profiling module) uses. In threaded builds, they were not being updated at -all. In non-threaded builds, the line number was ignored, so any change to -the existing line number would cause the lines to be misnumbered -[perl #79442]. - -=item * - -C<$AUTOLOAD> used to remain tainted forever if it ever became tainted. Now -it is correctly untainted if an autoloaded method is called and the method -name was not tainted. - -=item * - -A bug has been fixed in the implementation of C<{...}> quantifiers in -regular expressions that prevented the code block in -C from seeing the C<$2> sometimes -[perl #84294]. - -=item * - -C now dies when passed a tainted scalar for the format. It did -already die for arbitrary expressions, but not for simple scalars -[perl #82250]. - -=item * - -DESTROY methods of objects implementing ties are no longer able to crash by -accessing the tied variable through a weak reference [perl #86328]. - -=item * - -On Windows, calling kill(9, $child) on a pseudo-process created by the fork() -emulation is inherently unstable. It can also be responsible for overriding -the parent process exit code with a value of '9' if the parent terminates -right after killing the child. This condition will now happen a lot less -often than before. - -See also L for a -better way to terminate child processes that avoids deadlocks altogether. - -=item * - -Ensure that the C idiom continues to work as documented. - -A change post-5.12 caused the documented idiom not to work if Errno was loaded -after the C code had been compiled, as the compiler implicitly creates -typeglobs in the Errno symbol table when it builds the optree for the C. - -=back - -=head1 Acknowledgements - -Perl 5.13.11 represents approximately one month of development since Perl -5.13.10 and contains approximately 80,000 lines of changes across 549 files from -31 authors and committers: - -Alastair Douglas, Arvan, Boris Ratner, brian d foy, Chris 'BinGOs' Williams, -Craig A. Berry, David Golden, David Leadbeater, David Mitchell, Father -Chrysostomos, Florian Ragwitz, Jan Dubois, Karl Williamson, Kevin Ryde, Leon -Brocard, Leon Timmermans, Michael Stevens, Michael Witten, Moritz Lenz, Nicholas -Clark, Paul Johnson, Peter John Acklam, Reini Urban, Robin Barker, Steve Hay, -Sullivan Beck, Tony Cook, Vadim Konovalov, Yves Orton, Zefram and Ævar Arnfjörð -Bjarmason - -=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 L -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5131delta.pod b/pod/perl5131delta.pod deleted file mode 100644 index 71a732a0553..00000000000 --- a/pod/perl5131delta.pod +++ /dev/null @@ -1,288 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5131delta - what is new for perl v5.13.1 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.0 release and -the 5.13.1 release. - -If you are upgrading from an earlier release such as 5.10, first read -L, which describes differences between 5.10 and -5.12. - -=head1 Incompatible Changes - -=head2 "C<\cI>" - -The backslash-c construct was designed as a way of specifying -non-printable characters, but there were no restrictions (on ASCII -platforms) on what the character following the C could be. Now, that -character must be one of the ASCII characters. - -=head2 localised tied hashes, arrays and scalars are no longed tied - -In the following: - - tie @a, ...; - { - local @a; - # here, @a is a now a new, untied array - } - # here, @a refers again to the old, tied array - -The new local array used to be made tied too, which was fairly pointless, -and has now been fixed. This fix could however potentially cause a change -in behaviour of some code. - -=head2 C return values - -Starting from this release, C blocks returns the last evaluated -expression, or an empty list if the block was exited by C. Thus you -can now write: - - my $type = do { - given ($num) { - break when undef; - 'integer' when /^[+-]?[0-9]+$/; - 'float' when /^[+-]?[0-9]+(?:\.[0-9]+)?$/; - 'unknown'; - } - }; - -See L for details. - -=head1 Core Enhancements - -=head2 Exception Handling Reliability - -Several changes have been made to the way C, C, and C<$@> -behave, in order to make them more reliable and consistent. - -When an exception is thrown inside an C, the exception is no -longer at risk of being clobbered by code running during unwinding -(e.g., destructors). Previously, the exception was written into C<$@> -early in the throwing process, and would be overwritten if C was -used internally in the destructor for an object that had to be freed -while exiting from the outer C. Now the exception is written -into C<$@> last thing before exiting the outer C, so the code -running immediately thereafter can rely on the value in C<$@> correctly -corresponding to that C. - -Likewise, a C inside an C will no longer clobber any -exception thrown in its scope. Previously, the restoration of C<$@> upon -unwinding would overwrite any exception being thrown. Now the exception -gets to the C anyway. So C is safe inside an C, -albeit of rather limited use. - -Exceptions thrown from object destructors no longer modify the C<$@> -of the surrounding context. (If the surrounding context was exception -unwinding, this used to be another way to clobber the exception being -thrown. Due to the above change it no longer has that significance, -but there are other situations where C<$@> is significant.) Previously -such an exception was sometimes emitted as a warning, and then either -string-appended to the surrounding C<$@> or completely replaced the -surrounding C<$@>, depending on whether that exception and the surrounding -C<$@> were strings or objects. Now, an exception in this situation is -always emitted as a warning, leaving the surrounding C<$@> untouched. -In addition to object destructors, this also affects any function call -performed by XS code using the C flag. - -C<$@> is also no longer used as an internal temporary variable when -preparing to C. Previously it was internally necessary to put -any exception object (any non-string exception) into C<$@> first, -before it could be used as an exception. (The C API still offers the -old option, so an XS module might still clobber C<$@> in the old way.) -This change together with the foregoing means that, in various places, -C<$@> may be observed to contain its previously-assigned value, rather -than having been overwritten by recent exception-related activity. - -Warnings for C can now be objects, in the same way as exceptions -for C. If an object-based warning gets the default handling, -of writing to standard error, it will of course still be stringified -along the way. But a C<$SIG{__WARN__}> handler will now receive an -object-based warning as an object, where previously it was passed the -result of stringifying the object. - -=head1 Modules and Pragmata - -=head2 Updated Modules - -=over - -=item C - -The implementation of C has been refactored to use about 55% less memory. -There should be no user-visible changes. - -=item Perl 4 C<.pl> libraries - -These historical libraries have been minimally modified to avoid using -C<$[>. This is to prepare them for the deprecation of C<$[>. - -=item C - -A bug has been fixed when deparsing a nextstate op that has both a -change of package (relative to the previous nextstate), or a change of -C<%^H> or other state, and a label. Previously the label was emitted -first, leading to syntactically invalid output because a label is not -permitted immediately before a package declaration, B block, -or some other things. Now the label is emitted last. - -=back - -=head2 Removed Modules and Pragmata - -The following modules have been removed from the core distribution, and if -needed should be installed from CPAN instead. - -=over - -=item C - -=item C - -=item C - -=back - -The removal of C has been deferred until after 5.14, as the -implementation of C shipped with 5.12.0 did not correctly issue the -warning that it was to be removed from core. - -=head1 New Documentation - -=over 4 - -=item perlgpl - -L has been updated to contain GPL version 1, as is included in the -F distributed with perl. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -Naming a deprecated character in \N{...} will not leak memory. - -=item * - -FETCH is no longer called needlessly on some tied variables. - -=item * - -The trie runtime code should no longer allocate massive amounts of memory, -fixing #74484. - -=back - -=head1 Changed Internals - -=over 4 - -=item * - -The protocol for unwinding the C stack at the last stage of a C -has changed how it identifies the target stack frame. This now uses -a separate variable C, where previously it relied on -the C pointer in the C context frame that -has nominally just been discarded. This change means that code running -during various stages of Perl-level unwinding no longer needs to take -care to avoid destroying the ghost frame. - -=item * - -The format of entries on the scope stack has been changed, resulting in a -reduction of memory usage of about 10%. In particular, the memory used by -the scope stack to record each active lexical variable has been halved. - -=item * - -Memory allocation for pointer tables has been changed. Previously -C allocated memory from the same arena system as C -bodies and Cs, with freed memory remaining bound to those arenas until -interpreter exit. Now it allocates memory from arenas private to the specific -pointer table, and that memory is returned to the system when -C is called. Additionally, allocation and release are both -less CPU intensive. - -=item * - -A new function, Perl_magic_methcall has been added that wraps the setup needed -to call a magic method like FETCH (the existing S_magic_methcall function has -been renamed S_magic_methcall1). - -=back - -=head1 Deprecations - -The following items are now deprecated. - -=over 4 - -=item C - -C is no longer part of Perl's public API. Calling it now -generates a deprecation warning, and it will be removed in a future -release. - -=back - -=head1 Acknowledgements - -Perl 5.13.1 represents thirty days of development since Perl 5.13.0 and -contains 15390 lines of changes across 289 files from 34 authors and -committers. - -Thank you to the following for contributing to this release: - -Ævar Arnfjörð Bjarmason, Arkturuz, Chris 'BinGOs' Williams, Craig A. Berry, -Curtis Jewell, Dan Dascalescu, David Golden, David Mitchell, Father -Chrysostomos, Gene Sullivan, gfx, Gisle Aas, H.Merijn Brand, James E Keenan, -James Mastros, Jan Dubois, Jesse Vincent, Karl Williamson, Leon Brocard, -Lubomir Rintel (GoodData), Nicholas Clark, Philippe Bruhat (BooK), Rafael -Garcia-Suarez, Rainer Tammer, Ricardo Signes, Richard Soderberg, Robin Barker, -Ruslan Zakirov, Steffen Mueller, Todd Rinaldo, Tony Cook, Vincent Pit, Zefram - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5132delta.pod b/pod/perl5132delta.pod deleted file mode 100644 index 29b4c0abe44..00000000000 --- a/pod/perl5132delta.pod +++ /dev/null @@ -1,410 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5132delta - what is new for perl v5.13.2 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.2 release and -the 5.13.1 release. - -If you are upgrading from an earlier release such as 5.10, first read -L, which describes differences between 5.10 and -5.12. - -=head1 Incompatible Changes - -=head2 localised tied scalars are tied again. - -The change in behaviour in 5.13.1 of localising tied scalar values has -been reverted to the existing 5.12.0 and earlier behaviour (the change for -arrays and hashes remains). - -=head2 Naming fixes in Policy_sh.SH may invalidate Policy.sh - -Several long-standing typos and naming confusions in Policy_sh.SH have -been fixed, standardizing on the variable names used in config.sh. - -This will change the behavior of Policy.sh if you happen to have been -accidentally relying on the Policy.sh incorrect behavior. We'd appreciate -feedback from anyone using Policy.sh to be sure nothing is broken by -this change (c1bd23). - -=head2 Stashes are now always defined - -C now always returns true, even when no symbols have yet been -defined in that package. - -This is a side effect of removing a special case kludge in the tokeniser, -added for 5.10.0, to hide side effects of changes to the internal storage of -hashes that to drastically reduce their memory usage overhead. - -Calling defined on a stash has been deprecated since 5.6.0, warned on -lexicals since 5.6.0, and has warned for stashes (and other package -variables) since 5.12.0. C has always exposed an -implementation detail - emptying a hash by deleting all entries from it does -not make C false, hence C is not valid code to -determine whether an arbitrary hash is empty. Instead, use the behaviour -that an empty C<%hash> always returns false in a scalar context. - -=head1 Core Enhancements - -=head2 Non-destructive substitution - -The substitution operator now supports a C option that -copies the input variable, carries out the substitution on -the copy and returns the result. The original remains unmodified. - - my $old = 'cat'; - my $new = $old =~ s/cat/dog/r; - # $old is 'cat' and $new is 'dog' - -This is particularly useful with C. See L for more examples -(4f4d75, 000c65). - -=head2 package block syntax - -A package declaration can now contain a code block, in which case the -declaration is in scope only inside that block. So C -is precisely equivalent to C<{ package Foo; ... }>. It also works with -a version number in the declaration, as in C. -See L (434da3..36f77d, 702646). - -=head2 CLONE_PARAMS structure added to ease correct thread creation - -Modules that create threads should now create C structures -by calling the new function C, and free them with -C. This will ensure compatibility with any future -changes to the internals of the C structure layout, and that -it is correctly allocated and initialised. - -=head2 perl -h no longer recommends -w - -perl -h used to mark the -w option as recommended; since this option is -far less useful than it used to be due to lexical 'use warnings' and since -perl -h is primary a list and brief explanation of the command line switches, -the recommendation has now been removed (60eaec). - -=head1 Modules and Pragmata - -=head2 Updated Modules - -=head3 Locale-Codes 3.13 - -Locale::Country, Locale::Language and Locale::Currency were updated from -3.12 to 3.13 of the Locale-Codes distribution to include locale code changes -(e1137b). - -=head3 Thread-Semaphore 2.11 - -Added new methods -Edown_nb() and -Edown_force() at the suggestion -of Rick Garlick. - -Refactored methods to skip argument validation when no argument is supplied. - -(04febe, f06daa) - -=head3 CPAN.pm 1.94_57 - -=over 4 - -=item * release 1.94_57 - -=item * bugfix: treat modules correctly that are deprecated in perl 5.12. - -=item * bugfix: RT #57482 and #57788 revealed that configure_requires -implicitly assumed build_requires instead of normal requires. (Reported -by Andrew Whatson and Father Chrysostomos respectively) - -=item * testfix: solaris should run the tests without expect because (some?) -solaris have a broken expect - -=item * testfix: run tests with cache_metadata off to prevent spill over -effects from previous test runs - -=back - -(742adb) - -=head3 Hash::Util warning fix - -Hash::Util now enables "no warnings 'uninitialized'" to suppress spurious -warnings from undefined hash values (RT #74280). - -=head3 B::Deparse now handles 'no VERSION' - -The 'no 5.13.2' or similar form is now correctly handled by B::Deparse. - -=head3 IO::Socket doc additions - -getsockopt and setsockopt are now documented. - -=head3 B::Concise updated for OPpDEREF - -B::Concise marks rv2sv, rv2av and rv2hv ops with the new OPpDEREF flag -as "DREFed". - -=head3 File::Copy doc clarification - -An extra stanza was added explaining behaviours when the copy destination -already exists and is a directory. - -=head3 Multiple POD spelling fixes. - -Fixes were made to VMS::DCLsym, mro, Search::Dist, B::t::OptreeCheck -and UNIVERSAL. - -=head1 Changes to Existing Documentation - -=head2 Replace wrong tr/// table in perlebcdic.pod - -perlebcdic.pod contains a helpful table to use in tr/// to convert -between EBCDIC and Latin1/ASCII. Unfortunately, the table was the -inverse of the one it describes, though the code that used the table -worked correctly for the specific example given. - -The table has been changed to its inverse, and the sample code changed -to correspond, as this is easier for the person trying to follow the -instructions since deriving the old table is somewhat more complicated. - -The table has also been changed to hex from octal, as that is more the norm -these days, and the recipes in the pod altered to print out leading -zeros to make all the values the same length, as the table that they can -generate has them (5f26d5). - -=head2 Document tricks for user-defined casing - -perlunicode.pod now contains an explanation of how to override, mangle -and otherwise tweak the way perl handles upper, lower and other case -conversions on unicode data, and how to provide scoped changes to alter -one's own code's behaviour without stomping on anybody else (71648f). - -=head2 Document $# and $* as removed and clarify $#array usage - -$# and $* were both disabled as of perl5 version 10; this release adds -documentation to that effect, a description of the results of continuing -to try and use them, and a note explaining that $# can also function as a -sigil in the $#array form (7f315d2). - -=head2 INSTALL explicitly states the requirement for C89 - -This was already true but it's now Officially Stated For The Record (51eec7). - -=head2 No longer advertise Math::TrulyRandom - -This module hasn't been updated since 1996 so we can't recommend it any more -(83918a). - -=head2 perlfaq synchronised to upstream - -The FAQ has been updated to commit -37550b8f812e591bcd0dd869d61677dac5bda92c from the perlfaq repository -at git@github.com:briandfoy/perlfaq.git - -=head1 Performance Enhancements - -Only allocate entries for @_ on demand - this not only saves memory per -subroutine defined but should hopefully improve COW behaviour (77bac2). - -=head2 Multiple small improvements to threads - -The internal structures of threading now make fewer API calls and fewer -allocations, resulting in noticeably smaller object code. Additionally, -many thread context checks have been deferred so that they're only done -when required (although this is only possible for non-debugging builds). - -=head2 Size optimisations to SV and HV structures - -xhv_fill has been eliminated from struct xpvhv, saving 1 IV per hash and -on some systems will cause struct xpvhv to become cache aligned. To avoid -this memory saving causing a slowdown elsewhere, boolean use of HvFILL -now calls HvTOTALKEYS instead (which is equivalent) - so while the fill -data when actually required is now calculated on demand, the cases when -this needs to be done should be few and far between (f4431c .. fcd245). - -The order of structure elements in SV bodies has changed. Effectively, -the NV slot has swapped location with STASH and MAGIC. As all access to -SV members is via macros, this should be completely transparent. This -change allows the space saving for PVHVs documented above, and may reduce -the memory allocation needed for PVIVs on some architectures. - -=head2 Optimisation of regexp engine string comparison work - -The foldEQ_utf8 API function for case-insensitive comparison of strings (which -is used heavily by the regexp engine) was substantially refactored and -optimised - and its documentation much improved as a free bonus gift -(8b3587, e6226b). - -=head2 Memory consumption improvements to Exporter - -The @EXPORT_FAIL AV is no longer created unless required, hence neither is -the typeglob backing it - this saves about 200 bytes per Exporter using -package that doesn't use this functionality. - -=head1 Installation and Configuration Improvements - -=head2 Compilation improvements - -Fix CCINCDIR and CCLIBDIR for mingw64 cross compiler to correctly be under -$(CCHOME)\mingw\include and \lib rather than immediately below $(CCHOME). - -This means the 'incpath', 'libpth', 'ldflags', 'lddlflags' and -'ldflags_nolargefiles' values in Config.pm and Config_heavy.pl are now -set correctly (23ae7f). - -=head1 Selected Bug Fixes - -=over 4 - -=item * Timely cleanup of SVs that are cloned into a new thread but then -discovered to be orphaned (i.e. their owners are -not- cloned) (e42956) - -=item * Don't accidentally clone lexicals in scope within active stack frames in -the parent when creating a child thread (RT #73086) (05d04d). - -=item * Avoid loading feature.pm when 'no 5.13.2;' or similar is -encountered (faee19). - -=item * Trap invalid use of SvIVX on SVt_REGEXP when assertions are on -(e77da3) - -=item * Don't stamp on $DB::single, $DB::trace and $DB::signal if they -already have values when $^P is assigned to (RT #72422) (4c0f30). - -=item * chop now correctly handles perl's extended UTF-8 (RT #73246) (65ab92) - -=item * Defer signal handling when shared SV locks are held to avoid -deadlocks (RT #74868) (65c742). - -=item * glob() no longer crashes when %File::Glob:: is empty and -CORE::GLOBAL::glob isn't present (4984aa). - -=item * perlbug now always permits the sender address to be changed -before sending - if you were having trouble sending bug reports before -now, this should fix it, we hope (e6eb90). - -=item * Overloading now works properly in conjunction with tied -variables. What formerly happened was that most ops checked their -arguments for overloading I checking for magic, so for example -an overloaded object returned by a tied array access would usually be -treated as not overloaded (RT #57012) (6f1401, ed3b9b, 6a5f8c .. 24328f). - -=item * Independently, a bug was fixed that prevented $tied-E() from -always calling FETCH correctly (RT #8438) (7c7501) - -=back - -=head1 Changed Internals - -=over 4 - -=item * The implementation of sv_dup_inc() has changed from a macro to a function. - -=item * - -The C function has been deprecated. It appeared that -its design was insufficient to reliably get the lexical C<$_> at run-time. - -Use the new C function or the C macro instead. -They directly return the right SV representing C<$_>, whether it's lexical -or dynamic (789bd8 .. 03d5bc). - -=item * - -The following new functions or macros have been added to the public API: -C, C, C. - -=item * - -The C macro now calls C. C is now a -noop but should still be used to ensure past and future compatibility. - -=item * - -The ibcmp_* functions have been renamed and are now called foldEQ, -foldEQ_locale and foldEQ_utf8 (e6226b). - -=back - -=head1 Deprecations - -The following items are now deprecated. - -=over 4 - -=item * - -Omitting a space between a regex pattern or pattern modifiers and the following -word is deprecated. For example, C<< m/foo/sand $bar >> will still be parsed -as C<< m/foo/s and $bar >> but will issue a warning. - -=back - -=head1 Platform Specific Notes - -=head2 Recent OpenBSDs now use perl's malloc - -OpenBSD E 3.7 has a new malloc implementation which is mmap based -and as such can release memory back to the OS; however for perl using -this malloc causes a substantial slowdown so we now default to using -perl's malloc instead (RT #75742) (9b58b5). - -=head1 Acknowledgements - -Perl 5.13.2 represents thirty days of development since Perl 5.13.1 (and -two days of waiting around while the release manager remembered where he -left his brain) and contains 3685 lines of changes across 194 files from -30 authors and committers. - -Thank you to the following for contributing to this release: - -Abigail, Andreas J. Koenig, Chas. Owens, Chris 'BinGOs' Williams, -Craig A. Berry, David Caldwell, David Golden, David Mitchell, -Father Chrysostomos, George Greer, H.Merijn Brand, Jerry D. Hedden, -Karl Williamson, Maik Hentsche, Matt S Trout, Nicholas Clark, Rafael -Garcia-Suarez, Ricardo Signes, Salvador Fandino, Salvador Ortiz Garcia, -Shlomi Fish, Sinan Unur, Sisyphus, Slaven Rezic, Sullivan Beck, Tony Cook, -Vincent Pit, Zefram, brian d foy, Ævar Arnfjörð Bjarmason - -Your humble release manager would like to specifically call out -Karl Williamson for making the tests a better place to be, and Shlomi -Fish for a passel of tiny incremental docfixes of the sort that don't get -made often enough. - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5133delta.pod b/pod/perl5133delta.pod deleted file mode 100644 index cda95eaa0f6..00000000000 --- a/pod/perl5133delta.pod +++ /dev/null @@ -1,668 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5133delta - what is new for perl v5.13.3 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.3 release and -the 5.13.2 release. - -If you are upgrading from an earlier release such as 5.13.1, first read -L, which describes differences between 5.13.1 and -5.13.2. - -=head1 Core Enhancements - -=head2 \o{...} for octals - -There is a new escape sequence, C<"\o">, in double-quote-like contexts. -It must be followed by braces enclosing an octal number of at least one -digit. It interpolates as the character with an ordinal value equal to -the octal number. This construct allows large octal ordinals beyond the -current max of 0777 to be represented. It also allows you to specify a -character in octal which can safely be concatenated with other regex -snippets and which won't be confused with being a backreference to -a regex capture group. See L. - -=head2 C<\N{I}> and C enhancements - -C<\N{}> and C now know about the abbreviated -character names listed by Unicode, such as NBSP, SHY, LRO, ZWJ, etc., as -well as all the customary abbreviations for the C0 and C1 control -characters (such as ACK, BEL, CAN, etc.), as well as a few new variants -in common usage of some C1 full names. - -In the past, it was ineffective to override one of Perl's abbreviations -with your own custom alias. Now it works. - -You can also create a custom alias directly to the ordinal of a -character, known by C<\N{...}>, C, and -C. Previously, an alias had to be to an official -Unicode character name. This made it impossible to create an alias for -a code point that had no name, such as the ones reserved for private -use. So this change allows you to make more effective use of private -use characters. Only if there is no official name will -C return your custom one. - -See L for details on all these changes. - -=head2 Uppercase X/B allowed in hexadecimal/binary literals - -Literals may now use either upper case C<0X...> or C<0B...> prefixes, -in addition to the already supported C<0x...> and C<0b...> -syntax. (RT#76296) (a674e8d, 333f87f) - -C, Ruby, Python and PHP already supported this syntax, and it makes -Perl more internally consistent. A round-trip with C now returns C<16> in addition to C, which worked before. - -=head1 Incompatible Changes - -=head2 \400 - \777 - -Use of C<\400> - C<\777> in regexes in certain circumstances has given -different, anomalous behavior than their use in all other -double-quote-like contexts. Since 5.10.1, a deprecated warning message -has been raised when this happens. Now, all double-quote-like contexts -have the same behavior, namely to be equivalent to C<\x{100}> - -C<\x{1FF}>, with no deprecation warning. Use of these values in the -command line option C<"-0"> retains the current meaning to slurp input -files whole; previously, this was documented only for C<"-0777">. It is -recommended, however, because of various ambiguities, to use the new -C<\o{...}> construct to represent characters in octal. -(fa1639c..f6993e9). - -=head1 Deprecations - -=head2 Omitting a space between a regular expression and subsequent word - -Omitting a space between a regex pattern or pattern modifiers and the -following word is deprecated. Deprecation for regular expression -I was added in Perl 5.13.2. In this release, the deprecation -is extended to regular expression I. For example, -C<< s/foo/bar/sand $bar >> will still be parsed as -C<< s/foo/bar/s and $bar >> but will issue a warning. (aa78b66) - -=head2 Deprecation warning added for deprecated-in-core .pl libs - -This is a mandatory warning, not obeying -X or lexical warning bits. -The warning is modelled on that supplied by deprecate.pm for -deprecated-in-core .pm libraries. It points to the specific CPAN -distribution that contains the .pl libraries. The CPAN version, of -course, does not generate the warning. (0111154) - -=head1 Performance Enhancements - -There are several small optimizations to reduce CPU cache misses in various very -commonly used modules like C and C as well in accessing -file-handles for reading. - -=head1 Modules and Pragmata - -=head2 Updated Modules and Pragmata - -=over 4 - -=item C - -Upgraded from version 2.06_01 to 2.10. - -=item C - -Upgraded from version 1.08 to 1.10. - -C is now significantly faster. (f3227b7) - -=item C - -Upgraded from version 0.62 to 0.63. - -=item C - -Upgraded from version 1.77_02 to 1.77_03. - -=item C - -Upgraded from version 1.33_01 to 1.33_02. - -=item C - -Upgraded from version 1.09 to 1.10. - -Calling C without arguments is now significantly more efficient. -(8452af9) - -=item C - -Upgraded from version 0.38 to 0.42. - -Updates since 0.38 include: a safe print method that guards -Archive::Extract from changes to $\; a fix to the tests when run in core -perl; support for TZ files; and a modification for the lzma logic to favour -IO::Uncompress::Unlzma (d7f8799) - -=item C - -Upgraded from version 1.54 to 1.64. - -Important changes since 1.54 include: compatibility with busybox -implementations of tar; a fix so that C and C -close only handles they opened; and a bug was fixed regarding the exit code -of extract_archive. (afabe0e) - -=item C - -Upgraded from version 0.87 to 0.88. - -=item C - -Upgraded from version 2.024 to 2.027. - -=item C - -Upgraded from version 2.024 to 2.027_01. - -=item C - -Upgraded from version 2.024 to 2.027. - -=item C - -Upgraded from version 0.90 to 0.9007. - -Fixed the shell test to skip if test is not being run under a terminal; -resolved the issue where a prereq on Config would not be recognised as a -core module. (d4e225a) - -=item C - -Upgraded from version 2.39 to 2.40. - -=item C - -Upgraded from version 5.47 to 5.48. - -=item C - -Upgraded from version 5.64_02 to 5.64_03. - -Exporter no longer overrides C<$SIG{__WARN__}> (RT #74472) (9b86bb5) - -=item C - -Upgraded from version 0.27 to 0.2703. - -=item C - -Upgraded from version 1.57 to 1.58. - -=item C - -Upgraded from version 2.2205 to 2.2206. - -=item C - -Upgraded from version 2.19 to 2.20. - -Skips suid tests on a nosuid partition. These tests were being skipped on -OpenBSD, but nosuid partitions can exist on other systems too. Now it just -checks if it can create a suid directory, if not the tests are skipped. -Perl builds without errors in a nosuid /tmp with this patch. (cae9400) - -=item C - -Upgraded from version 0.35 to 0.35_01. - -=item C - -Upgraded from version 0.58 to 0.60. - -=item C - -Upgraded from version 2.01 to 2.03. - -=item C - -Upgraded from version 1.14 to 1.15. - -Locale::Maketext guts have been merged back into the main module (87d86da) -and adds external cache support (ace47d6) - -=item C - -Upgraded from version 0.3603 to 0.3607. - -=item C - -Upgraded from version 2.34 to 2.36. - -=item C - -Upgraded from version 0.16 to 0.18. - -=item C - -Upgraded from version 2.02 to 3.00. - -=item C - -Upgraded from version 3.17 to 3.21. - -The core update from Test-Harness 3.17 to 3.21 fixed some things, but -also L with argument -passing to non-Perl tests. - -=item C - -Upgraded from version 1.9719 to 1.9721. - -=item C - -Upgraded from version 1.15_01 to 1.20_01. - -=item C - -Upgraded from version 0.52_01 to 0.53. - -Includes Unicode Collation Algorithm 18 (74b94a7) - -=item C - -Upgraded from version 1.03 to 1.06. - -=back - -=head1 Documentation - -=head2 New Documentation - -=head3 L - -The Perl 5.12.1 perldelta file was added from the Perl maintenance branch - -=head2 Changes to Existing Documentation - -=head3 General changes - -=over - -=item * - -Octal character escapes in documentation now prefer a three-digit octal -escape or the new C<\o{...}> escape as they have more consistent behavior -in different contexts than other forms. (ce7b6f0) (d8b950d) (e1f120a) - -=item * - -Documentation now standardizes on the term 'capture group' over 'buffer' -in regular expression documentation (c27a5cf) - -=back - -=head3 L - -=over - -=item * - -Added cautionary note about "no VERSION" (e0de7c2) - -=item * - -Added additional notes regarding srand when forking (d460397) - -=back - -=head3 L - -=over 4 - -=item * - -Improved documentation of unusual character escapes (4068718, 9644846) - -=item * - -Clarified how hexadecimal escapes are interpreted, with particular -attention to the treatment of invalid characters (9644846) - -=back - -=head3 L - -=over - -=item * - -Clarified the behavior of the C<-0NNN> switch for C<-0400> or higher (7ba31cb) - -=back - -=head3 L - -=over - -=item * - -Added the policy on compatibility and deprecation along with definitions of -terms like "deprecation" (70e4a83) - -=back - -=head3 L - -=over - -=item * - -Added examples of the perils of not using \g{} when there are more -than nine back-references (9d86067) - -=back - -=head3 L - -=over - -=item * - -Updated some examples for modern Perl style (67d00dd) - -=back - -=head1 Utility Changes - -=head3 L - -=over - -=item * - -The remote terminal works after forking and spawns new sessions - one -for each forked process (11653f7) - -=item * - -Uses the less pager path from Config instead of searching for it (bf320d6) - -=back - -=head1 Configuration and Compilation - -=over 4 - -=item * - -Adjusted 'make test.valgrind' to account for cpan/dist/ext separation -(e07ce2e) - -=back - -=head1 Testing - -=over 4 - -=item * - -F clears PERL5LIB, PERLLIB, PERL5OPT as t/TEST does (a2d3de1) - -=item * - -Many common testing routines were refactored into t/lib/common.pl - -=item * - -Several test files have been modernized to use Test::More - -=back - -=head1 Platform Support - -=head2 Discontinued Platforms - -=over 4 - -=item MacOS Classic - -Support for MacOS Classic within ExtUtils::MakeMaker was removed from Perl in -December 2004. Vestigial MacOS Classic specific code has now been removed -from other core modules as well (8f8c2a4..c457df0) - -=back - -=head2 Platform-Specific Notes - -=over 4 - -=item Win32 - -t/io/openpid.t now uses the alarm() watchdog strategy for more -robustness (5732108) - -=back - -=head1 Internal Changes - -=over 4 - -=item * - -Under some circumstances, the C field of a CV is now reference -counted. To ensure consistent behaviour, direct assignment to it, for -example C is now a compile-time error. A new macro, -C has been introduced to perform this operation safely. -Note that modification of this field is not part of of the public API, -regardless of this new macro. This change caused some -L in modules that used the private C -field. - -=item * - -It is now possible for XS code to hook into Perl's lexical scope -mechanism at compile time, using the new C -function. See L. - -=item * - -Added C to implement -C (6ad8f25) - -=item * - -Added prototypes for C and C to allow overloading (RT#75902) -(1db4d19) - -=item * - -Adds C to replace C. C and -C call get magic on the stack arg, so create C<_flags()> -variants that allow us to control this. (0d7d409) - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -Some work has been done on the internal pointers that link between symbol -tables (stashes), typeglobs and subroutines. This has the effect that -various edge cases related to deleting stashes or stash entries (e.g. -<%FOO:: = ()>), and complex typeglob or code reference aliasing, will no -longer crash the interpreter. - -=item * - -Fixed readline() when interrupted by signals so it no longer returns -the "same thing" as before or random memory - -=item * - -Fixed a regression of kill() when a match variable is used for the -process ID to kill (RT#75812) (8af710e) - -=item * - -Fixed several subtle bugs in sort() when @_ is accessed within a subroutine -used for sorting (RT#72334) (8f443ca) - -=item * - -Catch yyparse() exceptions in C<< (?{...}) >> (RT#2353) (634d691) - -=item * - -Avoid UTF-8 cache panics with offsets beyond a string (RT #75898) (3e2d381) - -=item * - -Fixed POSIX::strftime memory leak (RT#73520) (c4bc4aa) - -=item * - -Doesn't set strict with C if C is greater than 5.12 -(da8fb5d) - -=item * - -Avoids multiple FETCH/stringify on filetest ops (40c852d) - -=item * - -Fixed issue with string C not detecting taint of overloaded/tied -arguments (RT #75716) (895b760) - -=item * - -Fix potential crashes of string C when evaluating a object with -overloaded stringification by creating a stringified copy when necessary -(3e5c018) - -=item * - -Fixed bug where overloaded stringification could remove tainting -(RT #75716) (a02ec77) - -=item * - -Plugs more memory leaks in vms.c. (9e2bec0) - -=item * - -Fix pthread include error for Time::Piece (e9f284c) - -=back - -=head1 Known Problems - -=over 4 - -=item * - -Bug fixes involving CvGV reference counting break Sub::Name. A -patch has been sent upstream to the maintainer - -=item * - -readline() returns an empty string instead of undef when it is -interrupted by a signal - -=item * - -Test-Harness was updated from 3.17 to 3.21 for this release. A rewrite -in how it handles non-Perl tests (in 3.17_01) broke argument passing to -non-Perl tests with L (RT #59186), and required that non-Perl -tests be run as C instead of C These -issues are being solved upstream, but didn't make it into this release. -They're expected to be fixed in time for perl v5.13.4. (RT #59457) - -=item * - -C now prevents object methods from being called as class methods -(d808b68) - -=back - -=head1 Errata - -=over 4 - -=item * - -Retroactively added the Acknowledgements list to L, -which was excluded in the original release (d1e2db0) - -=back - -=head1 Acknowledgements - -Perl 5.13.3 represents approximately one month of development since Perl -5.13.2, and contains 12,184 lines of changes across 575 files from 104 -authors and committers. - -Thank you to the following for contributing to this release: - -Abhijit Menon-Sen, Abigail, Alex Davies, Alex Vandiver, Alexandr -Ciornii, Andreas J. Koenig, Andrew Rodland, Andy Dougherty, Aristotle -Pagaltzis, Arkturuz, Ben Morrow, Bo Borgerson, Bo Lindbergh, Brad -Gilbert, Bram, Brian Phillips, Chas. Owens, Chip Salzenberg, Chris -Williams, Craig A. Berry, Curtis Jewell, Dan Dascalescu, Daniel -Frederick Crisman, Dave Rolsky, David Caldwell, David E. Wheeler, David -Golden, David Leadbeater, David Mitchell, Dennis Kaarsemaker, Eric -Brine, Father Chrysostomos, Florian Ragwitz, Frank Wiegand, Gene -Sullivan, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Graham -Barr, H.Merijn Brand, Harmen, Hugo van der Sanden, James E Keenan, James -Mastros, Jan Dubois, Jerry D. Hedden, Jesse Vincent, Jim Cromie, John -Peacock, Jos Boumans, Josh ben Jore, Karl Williamson, Kevin Ryde, Leon -Brocard, Lubomir Rintel, Maik Hentsche, Marcus Holland-Moritz, Matt -Johnson, Matt S Trout, Max Maischein, Michael Breen, Michael G Schwern, -Moritz Lenz, Nga Tang Chan, Nicholas Clark, Nick Cleaton, Nick Johnston, -Niko Tyni, Offer Kaye, Paul Marquess, Philip Hazel, Philippe Bruhat, -Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, -Richard Soderberg, Robin Barker, Ruslan Zakirov, Salvador Fandino, -Salvador Ortiz Garcia, Shlomi Fish, Sinan Unur, Sisyphus, Slaven Rezic, -Steffen Mueller, Stepan Kasal, Steve Hay, Steve Peters, Sullivan Beck, -Tim Bunce, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tony Cook, -Vincent Pit, Yuval Kogman, Yves Orton, Zefram, brian d foy, chromatic, -kmx, Ævar Arnfjörð Bjarmason - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5134delta.pod b/pod/perl5134delta.pod deleted file mode 100644 index 5db6cfbaf81..00000000000 --- a/pod/perl5134delta.pod +++ /dev/null @@ -1,543 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5134delta - what is new for perl v5.13.4 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.4 release and -the 5.13.3 release. - -If you are upgrading from an earlier release such as 5.13.2, first read -L, which describes differences between 5.13.2 and -5.13.3. - -=head1 Core Enhancements - -=head2 C now returns the seed - -This allows programs that need to have repeatable results to not have to come -up with their own seed generating mechanism. Instead, they can use C -and somehow stash the return for future use. Typical is a test program which -has too many combinations to test comprehensively in the time available to it -each run. It can test a random subset each time, and should there be a failure, -log the seed used for that run so that it can later be used to reproduce the -exact results. - -=head2 C<\N{I}> and C enhancements - -C<\N{}>, C, C now know about every -character in Unicode. Previously, they didn't know about the Hangul syllables -nor a number of CJK (Chinese/Japanese/Korean) characters. - -=head1 Incompatible Changes - -=head2 Declare API incompatibility between blead releases - -Only stable releases (5.10.x, 5.12.x, 5.14.x, ...) guarantee binary -compatibility with each other, while blead releases (5.13.x, 5.15.x, ...) often -break this compatibility. However, prior to perl 5.13.4, all blead releases had -the same C, C, and C, -effectively declaring them as binary compatible, which they weren't. From now -on, blead releases will have a C equal to their -C, explicitly marking them as incompatible with each other. - -Maintenance releases of stable perl versions will continue to make no -intentionally incompatible API changes. - -=head2 Check API compatibility when loading XS modules - -When perl's API changes in incompatible ways (which usually happens between -every major release), XS modules compiled for previous versions of perl will not -work anymore. They will need to be recompiled against the new perl. - -In order to ensure that modules are recompiled, and to prevent users from -accidentally loading modules compiled for old perls into newer ones, the -C macro has been added. That macro, which is called -when loading every newly compiled extension, compares the API version of the -running perl with the version a module has been compiled for and raises an -exception if they don't match. - -=head2 Binary Incompatible with all previous Perls - -Some bit fields have been reordered; therefore, this release will not be binary -compatible with any previous Perl release. - -=head2 Change in the parsing of certain prototypes - -Functions declared with the following prototypes now behave correctly as unary -functions: - -=over 4 - -=item * - -C<*> - -=item * - -C<\sigil> - -=item * - -C<\[...]> - -=item * - -C<;$> - -=item * - -C<;*> - -=item * - -C<;\sigil> - -=item * - -C<;\[...]> - -=back - -Due to this bug fix, functions using the C<(*)>, C<(;$)> and C<(;*)> prototypes -are parsed with higher precedence than before. So in the following example: - - sub foo($); - foo $a < $b; - -the second line is now parsed correctly as C<< foo($a) < $b >>, rather than -C<< foo($a < $b) >>. This happens when one of these operators is used in -an unparenthesised argument: - - < > <= >= lt gt le ge - == != <=> eq ne cmp ~~ - & - | ^ - && - || // - .. ... - ?: - = += -= *= etc. - -=head1 Deprecations - -=head2 List assignment to C<$[> - -After assignment to C<$[> has been deprecated and started to give warnings in -perl version 5.12.0, this version of perl also starts to emit a warning when -assigning to C<$[> in list context. This fixes an oversight in 5.12.0. - -=head1 Performance Enhancements - -=over 4 - -=item * - -Make string appending 100 times faster - -When doing a lot of string appending, perl could end up allocating a lot more -memory than needed in a very inefficient way, if perl was configured to use the -system's C implementation instead of its own. - -C, which is what's being used to allocate more memory if necessary when -appending to a string, has now been taught how to round up the memory it -requests to a certain geometric progression, making it much faster on certain -platforms and configurations. On Win32, it's now about 100 times faster. - -=item * - -For weak references, the common case of just a single weak reference per -referent has been optimised to reduce the storage required. In this case it -saves the equivalent of one small perl array per referent. - -=item * - -C, C, and C now only allocate the parts of the C body -they actually use, saving some space. - -=back - -=head1 Modules and Pragmata - -=head2 New Modules and Pragmata - -This release does not introduce any new modules or pragmata. - -=head2 Updated Modules and Pragmata - -=over 4 - -=item C - -Upgraded from version 1.64 to 1.68. - -Among other things, the new version adds a new option to C to allow safe -creation of tarballs without world-writable files on Windows, allowing those -archives to be uploaded to CPAN. - -=item C - -Upgraded from version 1.11 to 1.12. - -=item C - -Upgraded from version 1.16 to 1.18. - -L now detects incomplete L 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 caused by modules -overriding C incorrectly. - -=item C - -Upgraded from version 2.027 to 2.030. - -=item C - -Upgraded from version 2.027 to 2.030. - -=item C - -Upgraded from version 3.31 to 3.31_01. - -Various issues in L have been fixed. - -=item C - -Upgraded from version 0.03 to 0.04. - -C now defaults to using C<$_> if there is no argument given, just -like the documentation always claimed it did. - -=item C - -Upgraded from version 2.027 to 2.030. - -=item C - -Upgraded from version 2.36 to 2.37. - -Besides listing the updated core modules of this release, it also stops listing -the C module. That module never existed in core. The scripts -generating C confused it with C, which actually -is a core module, since the time of perl 5.8.7. - -=item C - -Upgraded from version 3.21 to 3.22. - -=item C - -Upgraded from version 0.94 to 0.96. - -Among many other things, subtests without a C or C now have an -implicit C added to them. - -=item C - -Upgraded from version 0.53 to 0.56. - -Among other things, it is now using UCA Revision 20 (based on Unicode 5.2.0) and -supports a couple of new locales. - -=item C - -Upgraded from version 1.17 to 1.18. - -=back - -=head2 Removed Modules and Pragmata - -This release does not remove any modules or pragmata. - -=head1 Documentation - -=head2 Changes to Existing Documentation - -=head3 L - -=over 4 - -=item * - -The following existing diagnostics are now documented: - -=over 4 - -=item * - -L - -=item * - -L - -=item * - -L - -=item * - -L - -=item * - -L - -=item * - -L - -=item * - -L - -=back - -=back - -=head3 L - -=over 4 - -=item * - -Documented a L of L -on Win32. - -=back - -=head3 L - -=over 4 - -=item * - -Minor fix to a multiple scalar match example. - -=back - -=head1 Configuration and Compilation - -=over 4 - -=item * - -Compatibility with C compilers has been improved. - -=item * - -On compilers that support it, C<-Wwrite-strings> is now added to cflags by -default. - -=back - -=head1 Testing - -=over 4 - -=item * - -F has been added to test implicit printing of C<$_>. - -=item * - -F has been added to test for restoration of C<$!> when -leaving signal handlers. - -=item * - -F has been added to see if C is only called once -on tied variables. - -=item * - -F has been added to make sure the, previously untested, -L keeps working. - -=item * - -F has been added to test against string corruption in pattern -matches on overloaded objects. This is a TODO test. - -=back - -=head1 Platform Support - -=head2 Platform-Specific Notes - -=over 4 - -=item Win32 - -=over 4 - -=item * - -Fixed a possible hang in F. - -=item * - -Fixed build process for SDK2003SP1 compilers. - -=item * - -When using old 32-bit compilers, the define C<_USE_32BIT_TIME_T> will now be set -in C<$Config{ccflags}>. This improves portability when compiling XS extensions -using new compilers, but for a perl compiled with old 32-bit compilers. - -=back - -=back - -=head1 Internal Changes - -=over 4 - -=item Removed C - -The option to define C to expose older 5.005 symbols for backwards -compatibility has been removed. It's use was always discouraged, and MakeMaker -contains a more specific escape hatch: - - perl Makefile.PL POLLUTE=1 - -This can be used for modules that have not been upgraded to 5.6 naming -conventions (and really should be completely obsolete by now). - -=item Added C - -The C define has been added to provide the best-guess -incantation to use for static inline functions, if the C compiler supports -C99-style static inline. If it doesn't, it'll give a plain C. - -C can be used to check if the compiler actually supports -inline functions. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -A possible memory leak when using L to set -C<@DB::args> has been fixed. - -=item * - -Several memory leaks when loading XS modules were fixed. - -=item * - -A panic in the regular expression optimizer has been fixed (RT#75762). - -=item * - -Assignments to lvalue subroutines now honor copy-on-write behavior again, which -has been broken since version 5.10.0 (RT#75656). - -=item * - -Assignments to glob copies now behave just like assignments to regular globs -(RT#1804). - -=item * - -Within signal handlers, C<$!> is now implicitly localized. - -=item * - -L now honors C<< <> >> overloading on tied -arguments. - -=item * - -L, -L, L, -and L could, when used in combination -with lvalues, result in leaking the scalar value they operate on, and cause its -destruction to happen too late. This has now been fixed. - -=item * - -Building with C, which has been broken accidentally in -5.13.3, now works again. - -=back - -=head1 Known Problems - -=over 4 - -=item * - -The changes in L -broke C <= 3.66. A fixed C is available as version -3.67 on CPAN. - -=item * - -The changes in prototype handling break C. A patch has been sent -upstream and will hopefully appear on CPAN soon. - -=back - -=head1 Acknowledgements - -Perl 5.13.4 represents approximately one month of development since Perl 5.13.3, -and contains 91,200 lines of changes across 436 files from 34 authors and -committers. - -Thank you to the following for contributing to this release: - -Abigail, Andy Armstrong, Andy Dougherty, Chas. Owens, Chip Salzenberg, Chris -'BinGOs' Williams, Craig A. Berry, David Cantrell, David Golden, David Mitchell, -Eric Brine, Father Chrysostomos, Florian Ragwitz, George Greer, Gerard Goossen, -H.Merijn Brand, James Mastros, Jan Dubois, Jerry D. Hedden, Joshua ben Jore, -Karl Williamson, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯, Leon Brocard, Lubomir Rintel, Nicholas -Clark, Paul Marquess, Rafael Garcia-Suarez, Reini Urban, Robin Barker, Slaven -Rezic, Steve Peters, Tony Cook, Wolfram Humann, Zefram - -=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 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, -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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5135delta.pod b/pod/perl5135delta.pod deleted file mode 100644 index 3a1358bad81..00000000000 --- a/pod/perl5135delta.pod +++ /dev/null @@ -1,593 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5135delta - what is new for perl v5.13.5 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.4 release and -the 5.13.5 release. - -If you are upgrading from an earlier release such as 5.13.3, first read -L, which describes differences between 5.13.3 and -5.13.4. - -=head1 Core Enhancements - -=head2 Adjacent pairs of nextstate opcodes are now optimized away - -Previously, in code such as - - use constant DEBUG => 0; - - sub GAK { - warn if DEBUG; - print "stuff\n"; - } - -the ops for C would be folded to a C op (C), but -the C op would remain, resulting in a runtime op dispatch of -C, C, ... - -The execution of a sequence of C ops is indistinguishable from just -the last C op so the peephole optimizer now eliminates the first of -a pair of C ops, except where the first carries a label, since labels -must not be eliminated by the optimizer and label usage isn't conclusively known -at compile time. - -=head2 API function to parse statements - -The C function has been added to allow parsing of a single -complete Perl statement. See L for details. - -=head2 API functions for accessing the runtime hinthash - -A new C API for introspecting the hinthash C<%^H> at runtime has been added. -See C, C, C, -C, and C in L for details. - -=head2 C interface to C - -The C function has been added as an XSUB-writer's equivalent of -C. See L for details. - -=head1 Incompatible Changes - -=head2 Magic variables outside the main package - -In previous versions of Perl, magic variables like C<$!>, C<%SIG>, etc. would -'leak' into other packages. So C<%foo::SIG> could be used to access signals, -C<${"foo::!"}> (with strict mode off) to access C's C, etc. - -This was a bug, or an 'unintentional' feature, which caused various ill effects, -such as signal handlers being wiped when modules were loaded, etc. - -This has been fixed (or the feature has been removed, depending on how you see -it). - -=head2 Smart-matching against array slices - -Previously, the following code resulted in a successful match: - - my @a = qw(a y0 z); - my @b = qw(a x0 z); - @a[0 .. $#b] ~~ @b; - -This odd behaviour has now been fixed -L<[perl #77468]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=77468>. - -=head2 C API changes - -The first argument of the C API function C has changed -from C to C, to better insulate the user from -implementation details. - -This API function was marked as "may change", and likely isn't in use outside -the core. (Neither an unpacked CPAN, nor Google's codesearch, finds any other -references to it.) - -=head1 Deprecations - -=head2 Use of qw(...) as parentheses - -Historically the parser fooled itself into thinking that C literals -were always enclosed in parentheses, and as a result you could sometimes omit -parentheses around them: - - for $x qw(a b c) { ... } - -The parser no longer lies to itself in this way. Wrap the list literal in -parentheses, like: - - for $x (qw(a b c)) { ... } - -=head1 Performance Enhancements - -=over 4 - -=item * - -Scalars containing regular expressions now only allocate the part of the C -body they actually use, saving some space. - -=item * - -Compiling regular expressions has been made faster for the case where upgrading -the regex to utf8 is necessary but that isn't known when the compilation begins. - -=back - -=head1 Modules and Pragmata - -=head2 Updated Modules and Pragmata - -=over 4 - -=item C - -Upgraded from version 0.23 to 0.25. - -=item C - -Upgraded from version 1.05 to 1.06. - -=item C - -Upgraded from version 1.07 to 1.08. - -=item C - -Upgraded from version 1.33_02 to 1.33_03. - -=item C and C - -Upgraded from version 1.10 to 1.11 and from version 1.01 to 1.02 respectively. - -It is now possible to register warning categories other than the names of -packages using C. See L for more information. - -=item C - -Upgraded from version 1.12 to 1.16. - -=item C - -Upgraded from version 0.46 to 0.48. - -=item C - -Upgraded from version 2.126 to 2.128. - -This fixes a crash when using custom sort functions that might cause the stack -to change. - -=item C - -Upgraded from version 2.39 to 2.40. - -=item C - -Upgraded from version 1.12 to 1.13. - -On some platforms with unusual header files, like Win32/gcc using mingw64 -headers, some constants which weren't actually error numbers have been exposed -by C. This has been fixed -L<[perl #77416]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=77416>. - -=item C - -Upgraded from version 6.5601 to 6.57_05. - -=item C - -Upgraded from version 0.84 to 0.85. - -=item C - -Upgraded from version 0.08 to 0.09. - -=item C - -Upgraded from version 1.89_01 to 1.95. - -This fixes, among other things, incorrect results when computing binomial -coefficients -L<[perl #77640]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77640>. - -=item C - -Upgraded from version 0.19 to 0.22. - -=item C - -Upgraded from version 0.24 to 0.26. - -=item C - -Upgraded from version 2.37 to 2.38. - -=item C - -Upgraded from version 0.08 to 0.09. - -=item C - -Upgraded from version 1.19 to 1.20. - -It now includes constants for POSIX signal constants. - -=item C - -Upgraded from version 2.27 to 2.28. - -This fixes a possible infinite loop when looking for coderefs. - -=item C - -Upgraded from version 0.96 to 0.97_01. - -=item C - -Upgraded from version 1.03 to 1.04. - -Calling C<< Tie::Hash-ETIEHASH() >> used to loop forever. Now it Cs. - -=item C - -Upgraded from version 0.56 to 0.59. - -=item C - -Upgraded from version 0.10 to 0.11. - -=back - -=head1 Documentation - -=head2 Changes to Existing Documentation - -=head3 L - -=over 4 - -=item * - -Many of the optree construction functions are now documented. - -=back - -=head3 L - -=over 4 - -=item * - -Expanded to cover many more popular books. - -=back - -=head3 L - -=over 4 - -=item * - -L, L, L, L, L, L, and -L have seen various updates and modernizations. - -=back - -=head1 Diagnostics - -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. - -=head2 New Diagnostics - -=over 4 - -=item * - -Parsing code internal error (%s) - -New fatal error produced when parsing code supplied by an extension violated the -parser's API in a detectable way. - -=item * - -Use of qw(...) as parentheses is deprecated - -See L for details. - -=back - -=head2 Changes to Existing Diagnostics - -=over 4 - -=item * - -C and C now produce 'Wide character' warnings when fed a -character outside the byte range if STDERR is a byte-sized handle. - -=back - -=head1 Utility Changes - -=head3 L - -=over 4 - -=item * - -The use of a deprecated C construct has been removed -L<[perl #74404]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=74404>. - -=back - -=head1 Testing - -=over 4 - -=item * - -The new F script tests the Internal::* functions and other -things in F. - -=item * - -A rare race condition in F has been fixed, stopping it -from failing randomly when running tests in parallel. - -=item * - -The new F script tests that magic applied to variables in -the main packages does not affect other packages. - -=back - -=head1 Platform Support - -=head2 Platform-Specific Notes - -=over 4 - -=item VMS - -=over 4 - -=item * - -Make C honour default permissions on VMS. - -When C became the default and C became the default bottom layer, -the most common path for creating files from Perl became C, -which has always explicitly used C<0666> as the permission mask. - -To avoid this, C<0777> is now passed as the permissions to C. In the -VMS CRTL, C<0777> has a special meaning over and above intersecting with the -current umask; specifically, it allows Unix syscalls to preserve native default -permissions. - -=back - -=back - -=head1 Internal Changes - -=over 4 - -=item * - -C and C have been deprecated. - -Those are left from an old implementation of C using C++ objects, -which was removed in Perl 5.8. Nowadays these macros do exactly nothing, so -they shouldn't be used anymore. - -For compatibility, they are still defined for external C code. Only -extensions defining C must be updated now. - -=item * - -C has been added as a convenience macro wrapping -C for literal strings. - -=item * - -The recursive part of the peephole optimizer is now hookable. - -In addition to C, for hooking into the toplevel peephole optimizer, a -C is now available to hook into the optimizer recursing into -side-chains of the optree. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -A regression introduced in Perl 5.12.0, making -C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been -fixed. C<$x> will now be C. - -=item * - -A fatal error in regular expressions when processing UTF-8 data has been fixed -L<[perl #75680]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75680>. - -=item * - -An erroneous regular expression engine optimization that caused regex verbs like -C<*COMMIT> to sometimes be ignored has been removed. - -=item * - -The Perl debugger now also works in taint mode -L<[perl #76872]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76872>. - -=item * - -Several memory leaks in cloning and freeing threaded Perl interpreters have been -fixed L<[perl #77352]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77352>. - -=item * - -A possible string corruption when doing regular expression matches on overloaded -objects has been fixed -L<[perl #77084]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77084>. - -=item * - -Magic applied to variables in the main package no longer affects other packages. -See L above -L<[perl #76138]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76138>. - -=item * - -Opening a glob reference via C<< open $fh, "E", \*glob >> will no longer -cause the glob to be corrupted when the filehandle is printed to. This would -cause perl to crash whenever the glob's contents were accessed -L<[perl #77492]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77492>. - -=item * - -The postincrement and postdecrement operators, C<++> and C<-->, used to cause -leaks when being used on references. This has now been fixed. - -=item * - -A bug when replacing the glob of a loop variable within the loop has been fixed -L<[perl #21469]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=21469>. This -means the following code will no longer crash: - - for $x (...) { - *x = *y; - } - -=item * - -Perl would segfault if the undocumented C functions that used -reference prototypes were called with the C<&foo()> syntax, e.g. -C<&Internals::SvREADONLY(undef)> -L<[perl #77776]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77776>. - -These functions now call C on their arguments before dereferencing them -with C, and we test for this case in F. - -=item * - -When assigning a list with duplicated keys to a hash, the assignment used to -return garbage and/or freed values: - - @a = %h = (list with some duplicate keys); - -This has now been fixed -L<[perl #31865]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=31865>. - -=item * - -An earlier release of the 5.13 series of Perl changed the semantics of opening a -reference to a copy of a glob: - - my $var = *STDOUT; - open my $fh, '>', \$var; - -This was a mistake, and the previous behaviour from Perl 5.10 and 5.12, which is -to treat \$var as a scalar reference, has now been restored. - -=item * - -The regular expression bracketed character class C<[\8\9]> was effectively the -same as C<[89\000]>, incorrectly matching a NULL character. It also gave -incorrect warnings that the C<8> and C<9> were ignored. Now C<[\8\9]> is the -same as C<[89]> and gives legitimate warnings that C<\8> and C<\9> are -unrecognized escape sequences, passed-through. - -=item * - -C and C now respect utf8-encoded scalars -L<[perl #45549]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=45549>. - -=back - -=head1 Known Problems - -=over 4 - -=item * - -The upgrade to Encode-2.40 has caused some tests in the libwww-perl distribution -on CPAN to fail. (Specifically, F tests 33-36 in version -5.836 of that distribution now fail.) - -=item * - -The upgrade to ExtUtils-MakeMaker-6.57_05 has caused some tests in the -Module-Install distribution on CPAN to fail. (Specifically, F<02_mymeta.t> tests -5 and 21, F<18_all_from.t> tests 6 and 15, F<19_authors.t> tests 5, 13, 21 and -29, and F<20_authors_with_special_characters.t> tests 6, 15 and 23 in version -1.00 of that distribution now fail.) - -=back - -=head1 Acknowledgements - -Perl 5.13.5 represents approximately one month of development since -Perl 5.13.4 and contains 74558 lines of changes across 549 files -from 45 authors and committers: - -Abigail, Alexander Alekseev, Aristotle Pagaltzis, Ben Morrow, Bram, brian d foy, -Chas. Owens, Chris 'BinGOs' Williams, Craig A. Berry, Curtis Jewell, Dagfinn -Ilmari Mannsåker, David Golden, David Leadbeater, David Mitchell, Eric Brine, -Father Chrysostomos, Florian Ragwitz, Gisle Aas, Jan Dubois, Jerry D. Hedden, -Jesse Vincent, Jim Cromie, Jirka Hruška, Karl Williamson, Michael G. Schwern, -Nicholas Clark, Paul Johnson, Philippe Bruhat (BooK), Piotr Fusik, Rafael -Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Rob Hoelz, Robin -Barker, Steffen Mueller, Steve Hay, Steve Peters, Todd Rinaldo, Tony Cook, -Vincent Pit, Yves Orton, Zefram, Zsbán Ambrus, Ævar Arnfjörð Bjarmason. - -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. - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5136delta.pod b/pod/perl5136delta.pod deleted file mode 100644 index a0b02d436e3..00000000000 --- a/pod/perl5136delta.pod +++ /dev/null @@ -1,800 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5136delta - what is new for perl v5.13.6 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.5 release and -the 5.13.6 release. - -If you are upgrading from an earlier release such as 5.13.4, first read -L, which describes differences between 5.13.4 and -5.13.5. - -=head1 Core Enhancements - -=head2 C<(?^...)> regex construct added to signify default modifiers - -A caret (also called a "circumflex accent") C<"^"> immediately following -a C<"(?"> in a regular expression now means that the subexpression is to -not inherit the surrounding modifiers such as C, but to revert to the -Perl defaults. Any modifiers following the caret override the defaults. - -The stringification of regular expressions now uses this -notation. E.g., before, C would be stringified as -C<(?i-xsm:hlagh)>, but now it's stringified as C<(?^i:hlagh)>. - -The main purpose of this is to allow tests that rely on the -stringification to not have to change when new modifiers are added. -See L. - -=head2 C<"d">, C<"l">, and C<"u"> regex modifiers added - -These modifiers are currently only available within a C<(?...)> construct. - -The C<"l"> modifier says to compile the regular expression as if it were -in the scope of C, even if it is not. - -The C<"u"> modifier says to compile the regular expression as if it were -in the scope of a C pragma. - -The C<"d"> modifier is used to override any C and -C pragmas that are in effect at the time -of compiling the regular expression. - -See just below and L. - -=head2 C now applies to some regex matching - -Another chunk of the L is fixed in this -release. Now, regular expressions compiled within the scope of the -"unicode_strings" feature will match the same whether or not the target -string is encoded in utf8, with regard to C<\s>, C<\w>, C<\b>, and their -complements. Work is underway to add the C<[[:posix:]]> character -classes and case sensitive matching to the control of this feature, but -was not complete in time for this dot release. - -=head2 C<\N{...}> now handles Unicode named character sequences - -Unicode has a number of named character sequences, in which particular sequences -of code points are given names. C<\N{...}> now recognizes these. -See L. - -=head2 New function C - -This function is a run-time version of C<\N{...}>, returning the string -of characters whose Unicode name is its parameter. It can handle -Unicode named character sequences, whereas the pre-existing -C cannot, as the latter returns a single code -point. -See L. - -=head2 Reentrant regular expression engine - -It is now safe to use regular expressions within C<(?{...})> and -C<(??{...})> code blocks inside regular expressions. - -These block are still experimental, however, and still have problems with -lexical (C) variables, lexical pragmata and abnormal exiting. - -=head2 Custom per-subroutine check hooks - -XS code in an extension module can now annotate a subroutine (whether -implemented in XS or in Perl) so that nominated XS code will be called -at compile time (specifically as part of op checking) to change the op -tree of that subroutine. The compile-time check function (supplied by -the extension module) can implement argument processing that can't be -expressed as a prototype, generate customised compile-time warnings, -perform constant folding for a pure function, inline a subroutine -consisting of sufficiently simple ops, replace the whole call with a -custom op, and so on. This was previously all possible by hooking the -C op checker, but the new mechanism makes it easy to tie the -hook to a specific subroutine. See L. - -To help in writing custom check hooks, several subtasks within standard -C op checking have been separated out and exposed in the API. - -=head2 Return value of C - -Custom regular expression engines can now determine the return value of -C on an entry of C<%+> or C<%->. - -=head2 C, C work on arrays - -You can now use the C, C, C builtin functions on arrays -(previously you could only use them on hashes). See L for details. -This is actually a change introduced in perl 5.12.0, but it was missed from -that release's perldelta. - -=head1 Incompatible Changes - -=head2 Stringification of regexes has changed - -Default regular expression modifiers are now notated by using -C<(?^...)>. Code relying on the old stringification will fail. The -purpose of this is so that when new modifiers are added, such code will -not have to change (after this one time), as the stringification will -automatically incorporate the new modifiers. - -Code that needs to work properly with both old- and new-style regexes -can avoid the whole issue by using (for Perls since 5.9.5): - - use re qw(regexp_pattern); - my ($pat, $mods) = regexp_pattern($re_ref); - -where C<$re_ref> is a reference to a compiled regular expression. Upon -return, C<$mods> will be a string containing all the non-default -modifiers used when the regular expression was compiled, and C<$pattern> -the actual pattern. - -If the actual stringification is important, or older Perls need to be -supported, you can use something like the following: - - # Accept both old and new-style stringification - my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism'; - -And then use C<$modifiers> instead of C<-xism>. - -=head2 Regular expressions retain their localeness when interpolated - -Regular expressions compiled under C<"use locale"> now retain this when -interpolated into a new regular expression compiled outside a -C<"use locale">, and vice-versa. - -Previously, a regular expression interpolated into another one inherited -the localeness of the surrounding one, losing whatever state it -originally had. This is considered a bug fix, but may trip up code that -has come to rely on the incorrect behavior. - -=head2 Directory handles not copied to threads - -On systems that do not have a C function, newly-created threads no -longer inherit directory handles from their parent threads. Such programs -would probably have crashed anyway -L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>. - -=head2 Negation treats strings differently from before - -The unary negation operator C<-> now treats strings that look like numbers -as numbers -L<[perl #57706]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=57706>. - -=head2 Negative zero - -Negative zero (-0.0), when converted to a string, now becomes "0" on all -platforms. It used to become "-0" on some, but "0" on others. - -If you still need to determine whether a zero is negative, use -C or the L module on CPAN. - -=head1 Performance Enhancements - -=over 4 - -=item * - -The bulk of the C module used to be in the perl -core. It has now been moved to an XS module, to reduce the overhead for -programs that do not use C<%+> or C<%->. - -=item * - -Eliminate C accessor functions under ithreads. - -When C was first developed, and interpreter state moved into an -interpreter struct, thread and interpreter local C variables were defined -as macros that called accessor functions, returning the address of the value, -outside of the perl core. The intent was to allow members within the interpreter -struct to change size without breaking binary compatibility, so that bug fixes -could be merged to a maintenance branch that necessitated such a size change. - -However, some non-core code defines C, sometimes intentionally to -bypass this mechanism for speed reasons, sometimes for other reasons but with -the inadvertent side effect of bypassing this mechanism. As some of this code is -widespread in production use, the result is that the core B change the -size of members of the interpreter struct, as it will break such modules -compiled against a previous release on that maintenance branch. The upshot is -that this mechanism is redundant, and well-behaved code is penalised by -it. Hence it can and should be removed. - -=back - -=head1 Modules and Pragmata - -=head2 Updated Modules and Pragmata - -=over 4 - -=item * - -C has been upgraded from version 0.42 to 0.44 - -=item * - -C has been upgraded from version 1.18 to 1.19. - -It no longer autovivifies the C<*CORE::GLOBAL::caller> glob, something it -started doing in 1.18, which was released with perl 5.13.4 -L<[perl #78082]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78082> - -=item * - -C has been upgraded from version 2.030 to 2.031 - -Updated to use bzip2 1.0.6 - -=item * - -C has been upgraded from version 1.94_57 to 1.94_61 - -=item * - -C has been upgraded from version 2.128 to 2.129. - -C no longer crashes with globs returned by C<*$io_ref> -L<[perl #72332]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72332>. - -=item * - -C has been upgraded from version 2.40 to 2.51. - -It is now safe to use this module in combination with threads. - -=item * - -C has been upgraded from version 1.02 to 1.03. - -It allows patterns containing literal parentheses (they no longer need to -be escaped). On Windows, it no longer adds an extra F<./> to the file names -returned when the pattern is a relative glob with a drive specification, -like F -L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>. - -=item * - -C has been upgraded from version 1.17 to 1.18. - -It improves handling of backslashes on Windows, so that paths such as -F are no longer generated -L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>. - -=item * - -C has been upgraded from version 0.05 to 0.06 - -=item * - -C has been upgraded from version 0.60 to 0.64 - -=item * - -C has been upgraded from version 1.06 to 1.07. - -The internal C routine now knows how to handle file descriptors, as -documented, so duplicating STDIN in a child process using its file -descriptor now works -L<[perl #76474]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>. - -=item * - -C has been upgraded from version 3.13 to 3.14. - -=item * - -C has been upgraded from version 1.15 to 1.16. - -It fixes an infinite loop in C when -working with tainted values -(L). - -C<< ->maketext >> calls will now backup and restore C<$@> so that error -messages are not suppressed -(L). - -=item * - -C has been upgraded from version 1.95 to 1.97. - -This prevents C from crashing under C -L<[perl #73534]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73534>. - -=item * - -C has been upgraded from version 0.64 to 0.65. - -=item * - -C has been upgraded from version 1.10 to 1.11. - -C can now handle subroutines that are themselves blessed -into overloaded classes -L<[perl #71998]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71998>. - -=item * - -C has been upgraded from version 3.31_01 to 3.34. - -=item * - -C has been upgraded from version 2.3.1 to 2.4.0 - -=item * - -C has been upgraded from version 1.04 to 1.05. - -It no longer tries to modify read-only arguments when generating a -backtrace -L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>. - -=item * - -C has been upgraded from version 1.77_03 to 1.81_01. - -=item * - -C has been upgrade from version 1.33_03 to 1.34 - -=item * - -C has been upgraded from version 0.59 to 0.63 - -U::C::Locale newly supports locales: ar, be, bg, de__phonebook, hu, hy, kk, mk, nso, om, -tn, vi, hr, ig, ru, sq, se, sr, to and uk - -=item * - -C has been upgraded from version 1.06 to 1.07 - -=item * - -C has been upgraded from version 0.98 to 0.99 - -B::Deparse now properly handles the code that applies a conditional -pattern match against implicit C<$_> as it was fixed in -L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>. - -=item * - -C has been upgraded from version 1.10 to 1.11 - -=back - -=head1 Documentation - -=head2 Changes to Existing Documentation - -=head3 L - -=over 4 - -=item * - -The documentation for the C macro was simply wrong in stating that -get-magic is not processed. It has been corrected. - -=back - -=head1 Diagnostics - -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. - -=head2 Changes to Existing Diagnostics - -=over 4 - -=item * - -The 'Layer does not match this perl' error message has been replaced with -these more helpful messages: - -=over 4 - -=item * - -PerlIO layer function table size (%d) does not match size expected by this -perl (%d) - -=item * - -PerlIO layer instance size (%d) does not match size expected by this perl -(%d) - -=back - -L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754> - -=back - -=head1 Testing - -=over 4 - -=item * - -The script F has been added, which tests interaction -of threads and directory handles. - -=back - -=head1 Platform Support - -=head2 Platform-Specific Notes - -=over 4 - -=item IRIX - -Conversion of strings to floating-point numbers is now more accurate on -IRIX systems -L<[perl #32380]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=32380>. - -=item Mac OS X - -Early versions of Mac OS X (Darwin) had buggy implementations of the -C, C, C and C functions, so perl -would pretend they did not exist. - -These functions are now recognised on Mac OS 10.5 (Leopard; Darwin 9) and -higher, as they have been fixed -L<[perl #72990]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72990>. - -=item OpenVOS - -perl now builds again with OpenVOS (formerly known as Stratus VOS) -L<[perl #78132]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78132>. - -=item VMS - -The shortening of symbols longer than 31 characters in the C sources is -now done by the compiler rather than by xsubpp (which could only do so -for generated symbols in XS code). - -=item Windows - -C<$Config{gccversion}> is now set correctly when perl is built using the -mingw64 compiler from L -L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>. - -The build process proceeds more smoothly with mingw and dmake when -F is in the PATH, due to a C fix. - -=back - -=head1 Internal Changes - -=over 4 - -=item * - -See L, -above. - -=item * - -The C, C, C and -C functions have been added. These are like their -non-_flags counterparts, but allow one to specify whether get-magic is -processed. - -The C, C, C and C functions have -been replaced with wrappers around the new functions. - -=item * - -A new C function has been added. - -This is like C, but it lets the calling code decide whether -get-magic is handled. C is now a macro that calls the new -function. - -=item * - -A new macro, C, has been added. - -This is like C, except that it does not process magic. It uses the -new C function. - -=item * - -C no longer calls C on its second argument (the -source string) if the flags passed to it do not include SV_GMAGIC. So it -now matches the documentation. - -=item * - -A new interface has been added for custom check hooks on subroutines. See -L, above. - -=item * - -List op building functions have been added to the -API. See L, -L, and -L. - -=item * - -The L macro, part of op building that -constructs the execution-order op chain, has been added to the API. - -=item * - -Many functions ending with pvn now have equivalent pv/pvs/sv versions. - -=item * - -The C, C, C and C -functions have been added to the API. - -=item * - -The new API function C parses a sequence of statements, up -to closing brace or EOF. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -A regular expression match in the right-hand side of a global substitution -(C) that is in the same scope will no longer cause match variables -to have the wrong values on subsequent iterations. This can happen when an -array or hash subscript is interpolated in the right-hand side, as in -C -L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>. - -=item * - -Constant-folding used to cause - - $text =~ ( 1 ? /phoo/ : /bear/) - -to turn into - - $text =~ /phoo/ - -at compile time. Now it correctly matches against C<$_> -L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>. - -=item * - -Parsing Perl code (either with string C or by loading modules) from -within a C block no longer causes the interpreter to crash -L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>. - -=item * - -When C<-d> is used on the shebang (C<#!>) line, the debugger now has access -to the lines of the main program. In the past, this sometimes worked and -sometimes did not, depending on what order things happened to be arranged -in memory -L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>. - -=item * - -The C or C operator now calls get-magic (e.g., the C -method of a tie) on its left-hand side just once, not twice -L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>. - -=item * - -String comparison (C, C, C, C, C, C and -C) and logical not (C and C) operators no longer call magic -(e.g., tie methods) twice on their operands -L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>. - -This bug was introduced in an earlier 5.13 release, and does not affect -perl 5.12. - -=item * - -When a tied (or other magic) variable is used as, or in, a regular -expression, it no longer has its C method called twice -L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>. - -This bug was introduced in an earlier 5.13 release, and does not affect -perl 5.12. - -=item * - -The C<-C> command line option can now be followed by other options -L<[perl #72434]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72434>. - -=item * - -Assigning a glob to a PVLV used to convert it to a plain string. Now it -works correctly, and a PVLV can hold a glob. This would happen when a -nonexistent hash or array element was passed to a subroutine: - - sub { $_[0] = *foo }->($hash{key}); - # $_[0] would have been the string "*main::foo" - -It also happened when a glob was assigned to, or returned from, an element -of a tied array or hash -L<[perl #36051]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=36051>. - -=item * - -Creating a new thread when directory handles were open used to cause a -crash, because the handles were not cloned, but simply passed to the new -thread, resulting in a double free. - -Now directory handles are cloned properly, on systems that have a C -function. On other systems, new threads simply do not inherit directory -handles from their parent threads -L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>. - -=item * - -The regular expression parser no longer hangs when parsing C<\18> and -C<\88>. - -This bug was introduced in version 5.13.5 and did not affect earlier -versions -L<[perl #78058]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78058>. - -=item * - -Subroutine redefinition works once more in the debugger -L<[perl #48332]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=48332>. - -=item * - -The C<&> C<|> C<^> bitwise operators no longer coerce read-only arguments -L<[perl #20661]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=20661>. - -=item * - -Stringifying a scalar containing -0.0 no longer has the affect of turning -false into true -L<[perl #45133]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=45133>. - -=item * - -Aliasing packages by assigning to globs or deleting packages by deleting -their containing stash elements used to have erratic effects on method -resolution, because the internal 'isa' caches were not reset. This has been -fixed. - -=item * - -C with a custom sort routine could crash if too many nested -subroutine calls occurred from within the sort routine -L<[perl #77930]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77930>. - -This bug was introduced in an earlier 5.13 release, and did not affect -perl 5.12. - -=item * - -The C and C C functions now set C<$@> correctly when -there is a syntax error and no C flag, and never set it if the -C flag is present -L<[perl #3719]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=3719>. - -=item * - -Nested C and C blocks no longer leak memory when processing -large lists -L<[perl #48004]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=48004>. - -=item * - -Malformed C objects no longer cause crashes -L<[perl #78286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78286>. - -=item * - -The interpreter no longer crashes when freeing deeply-nested arrays of -arrays. Hashes have not been fixed yet -L<[perl #44225]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=44225>. - -=item * - -The mechanism for freeing objects in globs used to leave dangling -pointers to freed SVs, meaning Perl users could see corrupted state -during destruction. - -Perl now only frees the affected slots of the GV, rather than freeing -the GV itself. This makes sure that there are no dangling refs or -corrupted state during destruction. - -=item * - -The typeglob C<*,>, which holds the scalar variable C<$,> (output field -separator), had the wrong reference count in child threads. - -=item * - -C now calls set-magic. This means that, for instance, changes made -by C are respected by method calls -L<[perl #78400]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78400>. - -=item * - -C no longer leaks memory -L<[perl #78436]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78436>. - -=item * - -The XS multicall API no longer causes subroutines to lose reference counts -if called via the multicall interface from within those very subroutines. -This affects modules like List::Util. Calling one of its functions with an -active subroutine as the first argument could cause a crash -L<[perl #78070]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78070>. - -=back - -=head1 Errata - -=over 4 - -=item * - -Fixed a typo in L regarding array slices and smart matching - -=back - -=head1 Acknowledgements - -Perl 5.13.6 represents approximately one month of development since Perl -5.13.5 and contains 67920 lines of changes across 566 files from 47 authors -and committers: - -A. Sinan Unur, Aaron Crane, Alex Davies, Ali Polatel, Allen Smith, Andrew Rodland, -Andy Dougherty, Ben Morrow, brian d foy, Casey West, Chip Salzenberg, Chris -'BinGOs' Williams, Craig A. Berry, David Golden, David Mitchell, Eric Brine, -Father Chrysostomos, Florian Ragwitz, George Greer, gregor herrmann, Jan Dubois, -Jerry D. Hedden, Jesse Vincent, Joshua Pritikin, Karl Williamson, kmx, Michael -G Schwern, Mike Kelly, Nicholas Clark, Paul Green, Rafael Garcia-Suarez, Renee -Baecker, Ricardo Signes, Sisyphus, Slaven Rezic, Steffen Müller, Steve Hay, -Sullivan Beck, Tatsuhiko Miyagawa, Todd Rinaldo, Tony Cook, Tye McQueen, Vernon -Lyon, Walt Mankowski, Zefram, Zsbán Ambrus, Ævar Arnfjörð Bjarmason. - -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. - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5137delta.pod b/pod/perl5137delta.pod deleted file mode 100644 index 082edb760b4..00000000000 --- a/pod/perl5137delta.pod +++ /dev/null @@ -1,946 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5137delta - what is new for perl v5.13.7 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.6 release and -the 5.13.7 release. - -If you are upgrading from an earlier release such as 5.13.5, first read -L, which describes differences between 5.13.5 and -5.13.6. - -=head1 Core Enhancements - -=head2 Single term prototype - -The C<+> prototype is a special alternative to C<$> that will act like -C<\[@%]> when given a literal array or hash variable, but will otherwise -force scalar context on the argument. This is useful for functions which -should accept either a literal array or an array reference as the argument: - - sub smartpush (+@) { - my $aref = shift; - die "Not an array or arrayref" unless ref $aref eq 'ARRAY'; - push @$aref, @_; - } - -When using the C<+> prototype, your function must check that the argument -is of an acceptable type. - -=head2 C - -The C pragma now has the ability to turn on regular expression flags -till the end of the lexical scope: - - use re '/x'; - "foo" =~ / (.+) /; # /x implied - -See L for details. - -=head2 Statement labels can appear in more places - -Statement labels can now occur before any type of statement or declaration, -such as C. - -=head2 C now applies to more regex matching - -Another chunk of the L is fixed in this -release. Now, regular expressions compiled within the scope of the -"unicode_strings" feature (or under the "u" regex modifier (specifiable -currently only with infix notation C<(?u:...)> or via C) -will match the same whether or not the target string is encoded in utf8, -with regard to C<[[:posix:]]> character classes - -Work is underway to add the case sensitive matching to the control of -this feature, but was not complete in time for this dot release. - -=head2 Array and hash container functions accept references - -All built-in functions that operate directly on array or hash -containers now also accept hard references to arrays or hashes: - - |----------------------------+---------------------------| - | Traditional syntax | Terse syntax | - |----------------------------+---------------------------| - | push @$arrayref, @stuff | push $arrayref, @stuff | - | unshift @$arrayref, @stuff | unshift $arrayref, @stuff | - | pop @$arrayref | pop $arrayref | - | shift @$arrayref | shift $arrayref | - | splice @$arrayref, 0, 2 | splice $arrayref, 0, 2 | - | keys %$hashref | keys $hashref | - | keys @$arrayref | keys $arrayref | - | values %$hashref | values $hashref | - | values @$arrayref | values $arrayref | - | ($k,$v) = each %$hashref | ($k,$v) = each $hashref | - | ($k,$v) = each @$arrayref | ($k,$v) = each $arrayref | - |----------------------------+---------------------------| - -This allows these built-in functions to act on long dereferencing chains -or on the return value of subroutines without needing to wrap them in -C<@{}> or C<%{}>: - - push @{$obj->tags}, $new_tag; # old way - push $obj->tags, $new_tag; # new way - - for ( keys %{$hoh->{genres}{artists}} ) {...} # old way - for ( keys $hoh->{genres}{artists} ) {...} # new way - -For C, C and C, the reference will auto-vivify -if it is not defined, just as if it were wrapped with C<@{}>. - -Calling C or C directly on a reference gives a substantial -performance improvement over explicit dereferencing. - -For C, C, C, when overloaded dereferencing is -present, the overloaded dereference is used instead of dereferencing the -underlying reftype. Warnings are issued about assumptions made in the -following three ambiguous cases: - - (a) If both %{} and @{} overloading exists, %{} is used - (b) If %{} overloading exists on a blessed arrayref, %{} is used - (c) If @{} overloading exists on a blessed hashref, @{} is used - -=head2 y///r - -The C flag, which was added to C in 5.13.2, has been extended to -the C operator. - -It causes it to perform the substitution on a I of its operand, -returning that copy instead of a character count. - -=head2 New global variable C<${^GLOBAL_PHASE}> - -A new global variable, C<${^GLOBAL_PHASE}>, has been added to allow -introspection of the current phase of the perl interpreter. It's explained in -detail in L and -L. - -=head2 Unicode Version 6.0 is now supported (mostly) - -Perl comes with the Unicode 6.0 data base updated with -L, -with one exception noted below. -See L for details on the new -release. Perl does not support any Unicode provisional properties, -including the new ones for this release, but their database files are -packaged with Perl. - -Unicode 6.0 has chosen to use the name C for the character at U+1F514, -which is a symbol that looks like a bell, and used in Japanese cell -phones. This conflicts with the long-standing Perl usage of having -C mean the ASCII C character, U+0007. In Perl 5.14, -C<\N{BELL}> will continue to mean U+0007, but its use will generate a -deprecated warning message, unless such warnings are turned off. The -new name for U+0007 in Perl will be C, which corresponds nicely -with the existing shorthand sequence for it, C<"\a">. C<\N{BEL}> will -mean U+0007, with no warning given. The character at U+1F514 will not -have a name in 5.14, but can be referred to by C<\N{U+1F514}>. The plan -is that in Perl 5.16, C<\N{BELL}> will refer to U+1F514, and so all code -that uses C<\N{BELL}> should convert by then to using C<\N{ALERT}>, -C<\N{BEL}>, or C<"\a"> instead. - -=head2 Improved support for custom OPs - -Custom ops can now be registered with the new C C -function and the C structure. This will make it easier to add new -properties of custom ops in the future. Two new properties have been added -already, C and C. - -C is one of the OA_*OP constants, and allows L and other -introspection mechanisms to work with custom ops that aren't BASEOPs. -C is a pointer to a function that will be called for ops of this -type from C. - -See L and L for more -detail. - -The old C/C interface is still -supported but discouraged. - -=head1 Incompatible Changes - -=head2 Dereferencing typeglobs - -If you assign a typeglob to a scalar variable: - - $glob = *foo; - -the glob that is copied to C<$glob> is marked with a special flag -indicating that the glob is just a copy. This allows subsequent assignments -to C<$glob> to overwrite the glob. The original glob, however, is -immutable. - -Many Perl operators did not distinguish between these two types of globs. -This would result in strange behaviour in edge cases: C -would do nothing if the last thing assigned to the scalar was a glob -(because it treated it as C, which unties a handle). -Assignment to a glob slot (e.g., C<(*$glob) = \@some_array>) would simply -assign C<\@some_array> to C<$glob>. - -To fix this, the C<*{}> operator (including the C<*foo> and C<*$foo> forms) -has been modified to make a new immutable glob if its operand is a glob -copy. Various operators that make a distinction between globs and scalars -have been modified to treat only immutable globs as globs. - -This causes an incompatible change in code that assigns a glob to the -return value of C<*{}> when that operator was passed a glob copy. Take the -following code, for instance: - - $glob = *foo; - *$glob = *bar; - -The C<*$glob> on the second line returns a new immutable glob. That new -glob is made an alias to C<*bar>. Then it is discarded. So the second -assignment has no effect. - -It also means that C will now tie C<$handle> as a scalar, even -if it has had a glob assigned to it. - -The upside to this incompatible change is that bugs -L<[perl #77496]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77496>, -L<[perl #77502]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77502>, -L<[perl #77508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77508>, -L<[perl #77688]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77688>, -and -L<[perl #77812]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77812>, -and maybe others, too, have been fixed. - -See L for even -more detail. - -=head2 Clearing stashes - -Stash list assignment C<%foo:: = ()> used to make the stash anonymous -temporarily while it was being emptied. Consequently, any of its -subroutines referenced elsewhere would become anonymous (showing up as -"(unknown)" in C). Now they retain their package names, such that -C will return the original sub name if there is still a reference -to its typeglob, or "foo::__ANON__" otherwise -L<[perl #79208]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79208>. - -=head1 Deprecations - -=head2 C<\N{BELL}> is deprecated - -This is because Unicode is using that name for a different character. -See L for more -explanation. - -=head1 Performance Enhancements - -=over 4 - -=item * - -When an object has many weak references to it, freeing that object -can under some some circumstances take O(N^2) time to free (where N is the -number of references). The number of circumstances has been reduced. -L<[perl #75254]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75254>. - -=back - -=head1 Modules and Pragmata - -=head2 New Modules and Pragmata - -=over 4 - -=item * - -The following modules were added by the C -upgrade from 0.63 to 0.67. See below for details. - -C - -C - -C - -C - -C - -C - -=back - -=head2 Updated Modules and Pragmata - -=over 4 - -=item * - -C has been upgraded from 0.44 to 0.46 - -Resolves an issue with NetBSD-current and its new unzip -executable. - -=item * - -C has been upgraded from 1.68 to 1.72 - -This adds the ptargrep utility for using regular expressions against -the contents of files in a tar archive. - -=item * - -C has been upgraded from 1.24 to 1.26. - -It no longer crashes when taking apart a C containing characters -outside the octet range or compiled in a C scope. - -The size of the shared object has been reduced by about 40%, with no -reduction in functionality. - -=item * - -C has been upgraded from 0.99 to 1.01. - -It fixes deparsing of C followed by a variable with funny characters -(as permitted under the C pragma) -L<[perl #33752]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=33752>. - -=item * - -C has been upgraded from 3.49 to 3.50 - -This provides the following security fixes: the MIME boundary in -multipart_init is now random and improvements to the handling of -newlines embedded in header values. - -The documentation for param_fetch() has been corrected and clarified. - -=item * - -C has been upgraded from 1.94_61 to 1.94_62 - -=item * - -C has been upgraded from 0.9007 to 0.9010 - -Fixes for the SQLite source engine and resolving of issues with the -testsuite when run under local::lib and/or cpanminus - -=item * - -C has been upgraded from 0.48 to 0.50 - -=item * - -C has been upgraded from 2.129 to 2.130_01. - -=item * - -C has been upgraded from 1.10 to 1.11. - -It fixes a buffer overflow when passed a very long file name. - -=item * - -C has been upgraded from 0.22 to 0.23. - -The C helper code generated by C -can now C for missing constants, or generate a complete C -subroutine in XS, allowing simplification of many modules that use it. -(C, C, C, C, C, C) - -C can now optionally push the names of all -constants onto the package's C{@EXPORT_OK}. This has been used to replace -less space-efficient code in C, helping considerably shrink the size of its -shared object. - -=item * - -C has been upgraded from 1.09 to 1.10. - -=item * - -C has been upgraded from 0.24 to 0.28 - -C is now supported for 'http' scheme. - -The C utility is supported on FreeBSD, NetBSD and -Dragonfly BSD for the C and C schemes. - -=item * - -C has been upgraded from 1.09 to 1.10. - -=item * - -C has been upgraded from 1.03 to 1.04. - -The C<-x> and C<-X> file test operators now work correctly under the root -user. - -=item * - -C has been upgraded from 1.11 to 1.12. - -This fixes a memory leak when DBM filters are used. - -=item * - -C has been upgraded from 0.09 to 0.10. - -=item * - -C has been upgraded from 1.05 to 1.06. - -=item * - -C has been upgraded from 0.06 to 0.07. - -=item * - -C has been upgraded from 1.16 to 1.17. - -=item * - -C has been upgraded from 1.97 to 1.99_01. - -=item * - -C has been upgraded from 0.26 to 0.26_01 - -=item * - -C has been upgraded from 0.22 to 0.24_01. - -=item * - -C has been upgraded from 3.09 to 3.10 - -Includes new functions to calculate the length of encoded and decoded -base64 strings. - -=item * - -C has been upgraded from 1.04 to 1.05. - -=item * - -C has been upgraded from 1.09 to 1.10. - -This fixes a memory leak when DBM filters are used. - -=item * - -C has been upgraded from 1.08 to 1.09. - -This fixes a memory leak when DBM filters are used. - -=item * - -C has been upgraded from 1.16 to 1.17. - -=item * - -C has been upgraded from 0.223 to 0.224 - -=item * - -C has been upgraded from 3.14 to 3.15 - -Includes various fixes to C and C handling. - -=item * - -C has been upgraded from 1.21 to 1.22. - -=item * - -C has been upgraded from 0.13 to 0.14, for the sake of the new -C pragma. - -=item * - -C has been upgraded from 2.28 to 2.29. - -It adds C<&version::vxs::VCMP> to the default share. - -=item * - -C has been upgraded from 1.07 to 1.08. - -=item * - -C has been upgraded from 1.17 to 1.18. - -It now works in taint mode -L<[perl #72062]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72062>. - -=item * - -C has been upgraded from 1.90 to 1.91. - -=item * - -C has been upgraded from 2.22 to 2.24 - -Includes performance improvement for overloaded classes. - -=item * - -C has been upgraded from 1.13 to 1.14. - -=item * - -C has been upgraded from 0.63 to 0.67 - -This release newly adds locales C C and C and its variants -( C, C, C, C ). - -Supported UCA_Version 22 for Unicode 6.0.0. - -The following modules have been added: - -C for C which makes -tailoring of CJK Unified Ideographs in the order of CLDR's big5han ordering. - -C for C which makes -tailoring of CJK Unified Ideographs in the order of CLDR's gb2312han ordering. - -C which makes tailoring of 6355 kanji -(CJK Unified Ideographs) in the JIS X 0208 order. - -C which makes tailoring of CJK Unified Ideographs -in the order of CLDR's Korean ordering. - -C for C which makes -tailoring of CJK Unified Ideographs in the order of CLDR's pinyin ordering. - -C for C which makes -tailoring of CJK Unified Ideographs in the order of CLDR's stroke ordering. - -=back - -=head1 Documentation - -L reorders the variables and groups them by topic. Each variable -introduced after Perl 5.000 notes the first version in which it is -available. L also has a new section for deprecated variables to -note when they were removed. - -=head2 New Documentation - -=head3 L - -New style guide for POD documentation, -split mostly from the NOTES section of the pod2man man page. - -( This was added to C but was not documented with that release ). - -=head2 Changes to Existing Documentation - -=over - -=item * - -Array and hash slices in scalar context are now documented in L. - -=item * - -L and L have been corrected to state that -C affects formats. - -=back - -=head1 Diagnostics - -=head2 New Diagnostics - -=over 4 - -=item * - -"Using !~ with %s doesn't make sense": This message was actually added in -5.13.2, but was omitted from perldelta. It now applies also to the C -operator, and has been documented. - -=back - -=head1 Utility Changes - -=head3 L - -=over 4 - -=item * - -L is a utility to apply pattern matching to the contents of files -in a tar archive. It comes with C. - -=back - -=head1 Testing - -=over 4 - -=item * - -The new F has been added, which tests that -C<*Foo::ISA = *Bar::ISA> works properly. - -=item * - -F has been added, which tests that C (accessible -at the Perl level via C) is updated properly. - -=item * - -F has been added, which tests that -L<[perl #78586]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78586> -has been fixed (related to line numbers in the debugger). - -=back - -=head1 Platform Support - -=head2 Platform-Specific Notes - -=over 4 - -=item Windows - -Directory handles are now properly cloned when threads are created. In perl -5.13.6, child threads simply stopped inheriting directory handles. In -previous versions, threads would share handles, resulting in crashes. - -Support for building with Visual C++ 2010 is now underway, but is not yet -complete. See F for more details. - -=item VMS - -Record-oriented files (record format variable or variable with fixed control) -opened for write by the perlio layer will now be line buffered to prevent the -introduction of spurious line breaks whenever the perlio buffer fills up. - -=back - -=head1 Internal Changes - -=over 4 - -=item * - -C has been added to the API, but is considered experimental. - -=item * - -A new C function has been added to the API -L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>. - -=item * - -A new, experimental API has been added for accessing the internal -structure that Perl uses for C<%^H>. See the functions beginning with -C in L. - -=item * - -A stash can now have a list of effective names in addition to its usual -name. The first effective name can be accessed via the C macro, -which is now the recommended name to use in MRO linearisations (C -being a fallback if there is no C). - -These names are added and deleted via C and -C. These two functions are I part of the API. - -=item * - -The way the parser handles labels has been cleaned up and refactored. As a -result, the C constructor function no longer takes a parameter -stating what label is to go in the state op. - -=item * - -The C and C functions no longer accept a line -number as a parameter. - -=item * - -A new C function has been added, for parsing a statement -without a label. - -=item * - -A new C function has been added, that parses a statement -label, separate from statements. - -=item * - -The C macro can now only be used as an rvalue. C -has been added to replace assignment to C. This is to ensure -that backreferences are handled properly. These macros are not part of the -API. - -=item * - -The C and C functions have been added to the API, -but are considered experimental. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -The C C function added in earlier in the 5.13.x series has been -fixed to work with statements ending with C<}> -L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>. - -=item * - -The C C function added in 5.13.5 has been fixed to work -when called while an expression is being parsed. - -=item * - -Characters in the Latin-1 non-ASCII range (0x80 to 0xFF) used not to match -themselves if the string happened to be UTF8-encoded internally, the -regular expression was not, and the character in the regular expression was -inside a repeated group (e.g., -C) -L<[perl #78464]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78464>. - -=item * - -The C<(?d)> regular expression construct now overrides a previous C<(?u)> -or C -L<[perl #78508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78508>. - -=item * - -A memory leak in C, introduced in perl 5.13.6, has been fixed -L<[perl #78488]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78488>. - -=item * - -Various bugs related to typeglob dereferencing have been fixed. See -L, above. - -=item * - -The C function available to XS modules now calls magic before -downgrading the SV, to avoid warnings about wide characters -L<[perl #72398]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72398>. - -=item * - -The C<=> operator used to ignore magic (e.g., tie methods) on its -right-hand side if the scalar happened to hold a typeglob. This could -happen if a typeglob was the last thing returned from or assigned to a tied -scalar -L<[perl #77498]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77498>. - -=item * - -C was ignoring locales when called with constant arguments -L<[perl #78632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78632>. - -=item * - -A non-ASCII character in the Latin-1 range could match both a Posix -class, such as C<[[:alnum:]]>, and its inverse C<[[:^alnum:]]>. This is -now fixed for regular expressions compiled under the C<"u"> modifier. -See L now applies to more regex matching>. -L<[perl #18281]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=18281>. - -=item * - -Concatenating long strings under C no longer causes perl to -crash -L<[perl #78674]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78674>. - -=item * - -Typeglob assignments would crash if the glob's stash no longer existed, so -long as the glob assigned to was named 'ISA' or the glob on either side of -the assignment contained a subroutine. - -=item * - -Calling C<< ->import >> on a class lacking an import method could corrupt -the stack, resulting in strange behaviour. For instance, - - push @a, "foo", $b = bar->import; - -would assign 'foo' to C<$b> -L<[perl #63790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63790>. - -=item * - -Creating an alias to a package when that package had been detached from the -symbol table would result in corrupted isa caches -L<[perl #77358]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77358>. - -=item * - -C<.=> followed by C<< <> >> or C would leak memory if C<$/> -contained characters beyond the octet range and the scalar assigned to -happened to be encoded as UTF8 internally -L<[perl #72246]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72246>. - -=item * - -The C function could crash when called with the MSG_TRUNC flag -L<[perl #75082]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75082>. - -=item * - -Evaluating a simple glob (like C<*a>) was calling get-magic on the glob, -even when its contents were not being used -L<[perl #78580]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78580>. - -This bug was introduced in 5.13.2 and did not affect earlier perl versions. - -=item * - -Matching a Unicode character against an alternation containing characters -that happened to match continuation bytes in the former's UTF8 -representation (C) would cause erroneous -warnings -L<[perl #70998]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=70998>. - -=item * - -C (added in 5.13.2) no longer leaks. - -=item * - -The trie optimisation was not taking empty groups into account, preventing -'foo' from matching C -L<[perl #78356]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78356>. - -=item * - -A pattern containing a C<+> inside a lookahead would sometimes cause an -incorrect match failure in a global match (e.g., C) -L<[perl #68564]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68564>. - -=item * - -Iterating with C over an array returned by an lvalue sub now works -L<[perl #23790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=23790>. - -=item * - -C<$@> is now localised during calls to C to prevent action at a -distance -L<[perl #78844]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78844>. - -=item * - -C, which is accessible to Perl via C is now -updated properly when packages are deleted or removed from the C<@ISA> of -other classes. This allows many packages to be created and deleted without -causing a memory leak -L<[perl #75176]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75176>. - -=item * - -C and C and C -used not to update the internal isa caches if the -stash or C<@ISA> array had a reference elsewhere. In -fact, C would stop a new C<@Foo::ISA> array from updating -caches. - -=item * - -C<@ISA> arrays can now be shared between classes via -C<*Foo::ISA = \@Bar::ISA> or C<*Foo::ISA = *Bar::ISA> -L<[perl #77238]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77238>. - -=item * - -The parser no longer hangs when encountering certain Unicode characters, -such as U+387 -L<[perl #74022]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=74022>. - -=item * - -C no longer crashes when passed a tainted format picture. It also -taints C<$^A> now if its arguments are tainted -L<[perl #79138]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79138>. - -=item * - -A signal handler called within a signal handler could cause leaks or -double-frees. Now fixed. -L<[perl #76248]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76248>. - -=item * - -When trying to report C, crashes could -occur if the GLOB of the global variable causing the warning has been detached -from its original stash by, for example C. This has been -fixed by disabling the reporting of variable names in the warning in those -cases. - -=back - -=head1 Obituary - -Randy Kobes, creator of the kobesearch alternative to search.cpan.org and -contributor/maintainer to several core Perl toolchain modules, passed away -on September 18, 2010 after a battle with lung cancer. His contributions -to the Perl community will be missed. - -=head1 Acknowledgements - -Perl 5.13.7 represents approximately one month of development since Perl 5.13.6 -and contains 73100 lines of changes across 518 files from 39 authors and committers: - -Abhijit Menon-Sen, Abigail, Ben Morrow, Chas. J. Owens IV, Chris 'BinGOs' Williams, Craig A. Berry, -David Golden, David Mitchell, Father Chrysostomos, Fingle Nark, Florian Ragwitz, George Greer, -Grant McLean, H.Merijn Brand, Ian Goodacre, Jan Dubois, Jerry D. Hedden, Jesse Vincent, Karl Williamson, -Lubomir Rintel, Marty Pauley, Moritz Lenz, Nicholas Clark, Nicolas Kaiser, Niko Tyni, Peter John Acklam, -Rafael Garcia-Suarez, Shlomi Fish, Steffen Mueller, Steve Hay, Tatsuhiko Miyagawa, Tim Bunce, Todd Rinaldo, -Tom Christiansen, Tom Hukins, Tony Cook, Yves Orton, Zefram and brian d foy - -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. - -=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 -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5138delta.pod b/pod/perl5138delta.pod deleted file mode 100644 index 99204c1c545..00000000000 --- a/pod/perl5138delta.pod +++ /dev/null @@ -1,913 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5138delta - what is new for perl v5.13.8 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.7 release and -the 5.13.8 release. - -If you are upgrading from an earlier release such as 5.13.6, first read -L, which describes differences between 5.13.6 and -5.13.7. - -=head1 Core Enhancements - -=head2 C<-d:-foo> calls C - -The syntax C<-dIfoo>> was extended in 5.6.1 to make C<-dI<:fooB<=bar>>> -equivalent to C<-MDevel::foo=bar>, which expands -internally to C. -F now allows prefixing the module name with C<->, with the same -semantics as C<-M>, I - -=over 4 - -=item C<-d:-foo> - -Equivalent to C<-M-Devel::foo>, expands to -C, calls C<< Devel::foo->unimport() >> -if the method exists. - -=item C<-d:-foo=bar> - -Equivalent to C<-M-Devel::foo=bar>, expands to C, -calls C<< Devel::foo->unimport('bar') >> if the method exists. - -=back - -This is particularly useful to suppresses the default actions of a -C module's C method whilst still loading it for debugging. - -=head2 Filehandle method calls load L on demand - -When a method call on a filehandle would die because the method cannot -be resolved, and L has not been loaded, Perl now loads L -via C and attempts method resolution again: - - open my $fh, ">", $file; - $fh->binmode(":raw"); # loads IO::File and succeeds - -This also works for globs like STDOUT, STDERR and STDIN: - - STDOUT->autoflush(1); - -Because this on-demand load only happens if method resolution fails, the -legacy approach of manually loading an L parent class for partial -method support still works as expected: - - use IO::Handle; - open my $fh, ">", $file; - $fh->autoflush(1); # IO::File not loaded - -=head2 Full functionality for C - -This release provides full functionality for C. Under its scope, all string operations executed and -regular expressions compiled (even if executed outside its scope) have -Unicode semantics. See L. - -This feature avoids most forms of the "Unicode Bug" (See -L for details.) If there is a -possibility that your code will process Unicode strings, you are -B encouraged to use this subpragma to avoid nasty surprises. - -The availability of this should strongly affect the whole tone of -various documents, such as L and L, but this -work has not been done yet. - -=head2 Exception Handling Backcompat Hack - -When an exception is thrown in an C, C<$@> is now set before -unwinding, as well as being set after unwinding as the eval block exits. This -early setting supports code that has historically treated C<$@> during unwinding -as an indicator of whether the unwinding was due to an exception. These modules -had been broken by 5.13.1's change from setting C<$@> early to setting it late. -This double setting arrangement is a stopgap until the reason for unwinding can -be made properly introspectable. C<$@> has never been a reliable indicator of -the reason for unwinding. - -=head2 printf-like functions understand post-1980 size modifiers - -Perl's printf and sprintf operators, and Perl's internal printf replacement -function, now understand the C90 size modifiers "hh" (C), "z" -(C), and "t" (C). Also, when compiled with a C99 -compiler, Perl now understands the size modifier "j" (C). - -So, for example, on any modern machine, C returns '1'. - -=head2 DTrace probes now include package name - -The DTrace probes now include an additional argument (C) which contains -the package the subroutine being entered or left was compiled in. - -For example using the following DTrace script: - - perl$target:::sub-entry - { - printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3)); - } - -and then running: - - perl -e'sub test { }; test' - -DTrace will print: - - main::test - -=head2 Stacked labels - -Multiple statement labels can now appear before a single statement. - -=head1 Incompatible Changes - -=head2 C<:=> is now a syntax error - -Previously C was exactly equivalent to C, -with the C<:> being treated as the start of an attribute list, ending before -the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now -a syntax error. This will allow the future use of C<:=> as a new token. - -We find no Perl 5 code on CPAN using this construction, outside the core's -tests for it, so we believe that this change will have very little impact on -real-world codebases. - -If it is absolutely necessary to have empty attribute lists (for example, -because of a code generator) then avoid the error by adding a space before -the C<=>. - -=head2 Run-time code block in regular expressions - -Code blocks in regular expressions (C<(?{...})> and C<(??{...})>) used not -to inherit any pragmata (strict, warnings, etc.) if the regular expression -was compiled at run time as happens in cases like these two: - - use re 'eval'; - $foo =~ $bar; # when $bar contains (?{...}) - $foo =~ /$bar(?{ $finished = 1 })/; - -This was a bug, which has now been fixed. But it has the potential to break -any code that was relying on this bug. - -=head1 Deprecations - -=head2 C is deprecated - -C (without the initial m) has been deprecated and now produces -a warning. This is to allow future use of C in new operators. -The match-once functionality is still available in the form of C. - -=head2 C is now deprecated - -The C API function is now deprecated. Searches suggest -that nothing on CPAN is using it, so this should have zero impact. - -It attempted to provide an API to compile code down to an optree, but failed -to bind correctly to lexicals in the enclosing scope. It's not possible to -fix this problem within the constraints of its parameters and return value. - -=head2 Tie functions on scalars holding typeglobs - -Calling a tie function (C, C, C) with a scalar argument -acts on a file handle if the scalar happens to hold a typeglob. - -This is a long-standing bug that will be removed in Perl 5.16, as -there is currently no way to tie the scalar itself when it holds -a typeglob, and no way to untie a scalar that has had a typeglob -assigned to it. - -This bug was fixed in 5.13.7 but, because of the breakage it caused, the -fix has been reverted. Now there is a deprecation warning whenever a tie -function is used on a handle without an explicit C<*>. - -=head1 Modules and Pragmata - -=head2 Updated Modules and Pragmata - -=over 4 - -=item * - -C has been upgraded from version 1.72 to 1.74. - -Skip extracting pax extended headers. - -=item * - -C has been upgraded from version 2.10 to 2.1001. - -Test fix in blead for VMS. - -=item * - -C has been upgraded from version 1.26 to 1.27. - -Avoid compiler warnings. - -=item * - -C has been upgraded from version 0.81 to 0.82. - -It no longer produces mangled output with the C<-tree> option -L<[perl #80632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80632>. - -=item * - -C has been upgraded from version 1.01 to 1.02. - -Test improvements. - -=item * - -C has been upgraded from version 3.34 to 3.35. - -Avoid compiler warnings. - -=item * - -C has been upgraded from version 2.130_01 to 2.130_02. - -Avoid compiler warnings. - -=item * - -C has been upgraded from version 1.05 to 1.06. - -Avoid compiler warnings. - -Test improvements. - -=item * - -C has been upgraded from version 1.03 to 1.05. - -Whitespace changes. - -=item * - -C has been upgraded from 5.48 to 5.50. - -C now more closely mimics C/C. - -C accepts all POSIX filenames. - -=item * - -C has been upgraded from version 1.14 to 1.15. - -Test improvements. - -=item * - -C has been upgraded from version 1.11 to 1.12. - -Remove obsolete RCS keywords. - -=item * - -C has been upgraded from version 1.01 to 1.02. - -Test improvements. - -=item * - -C has been upgraded from 0.2703 to 0.280201. - -Handle C and C++ compilers separately. - -Preserves exit status on VMS. - -Test improvements. - -=item * - -C has been upgraded from 0.02 to 0.03. - -Refactoring and fixing of backcompat code, preparing for resynchronisation -with CPAN. - -=item * - -C has been upgraded from 1.29 to 1.30. - -Remove obsolete RCS keywords. - -=item * - -C has been upgraded from 2.2207 to 2.2208. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 1.10 to 1.11. - -Avoid compiler warnings. - -Test improvements. - -=item * - -C has been upgraded from 1.18 to 1.19. - -Documentation and test updates for the C feature. -See L>. - -=item * - -C has been upgraded from 4.4 to 4.41. - -Whitespace changes. - -=item * - -C has been upgraded from 1.10 to 1.11. - -Avoid compiler warnings. - -Test improvements. - -=item * - -C has been upgraded from 1.12 to 1.13. - -Test improvements. - -Remove obsolete RCS keywords. - -=item * - -C has been upgraded from 1.06 to 1.07. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 1.01 to 1.02. - -Whitespace changes. - -Test improvements. - -=item * - -C has been upgraded from 0.06 to 0.0601. - -Test improvements. - -=item * - -C has been upgraded from 1.25_02 to 1.25_03. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 0.64 to 0.66. - -Resolves an issue with splitting Win32 command lines. - -Documentation enhancements. - -=item * - -C has been upgraded from 1.07 to 1.08. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * - -C has been upgraded from version 3.14 to 3.15. - -Adds some codes. - -=item * - -C has been upgraded from 1.99_01 to 1.99_02. - -Documentation and comment spelling fixes. - -=item * - -C has been upgraded from version 1.01_03 to 1.02. - -Remove obsolete RCS keywords. - -Whitespace changes. - -=item * - -C has been upgraded from 3.10 to 3.13. - -Now provides C and C functions to process -the base64 scheme for "URL applications". - -=item * - -C has been upgraded from version 1.05 to 1.06. - -C I now take into account that every class inherits -from UNIVERSAL -L<[perl #68654]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68654>. - -=item * - -C has been upgraded from 1.10 to 1.11. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * - -C has been upgraded from 2.36 to 2.37. - -Remove obsolete RCS keywords. - -=item * - -C has been upgraded from 1.09 to 1.10. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * - -C has been upgraded from 1.17 to 1.18. - -Avoid compiler warnings. - -Test improvements. - -=item * - -C has been upgraded from 1.11 to 1.12. - -Avoid a taint problem in use of sprintf. - -Test asymmetric fallback cases -L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>. - -=item * - -C has been upgraded from 0.13 to 0.14. - -Avoid compiler warnings. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * - -C has been upgraded from 0.10 to 0.11. - -A C after a C beyond the end of the string no longer thinks it -has data to read -L<[perl #78716]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78716>. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 0.10 to 0.11. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 1.22 to 1.23. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 0.14 to 0.15. - -Enforce that C, C, and C are mutually exclusive. - -=item * - -C has been upgraded from 1.08 to 1.09. - -Avoid compiler warnings. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * - -C has been upgraded from 1.91 to 1.92. - -It has several new functions for handling IPv6 addresses. - -=item * - -C has been upgraded from 2.24 to 2.25. - -This adds support for serialising code references that contain UTF-8 strings -correctly. The Storable minor version number changed as a result, meaning that -Storable users who set C<$Storable::accept_future_minor> to a C value -will see errors (see L for more details). - -Freezing no longer gets confused if the Perl stack gets reallocated -during freezing -L<[perl #80074]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80074>. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 1.81_02 to 1.81_03. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 1.34 to 1.35. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 1.9721 to 1.9721_01. - -Build fix in blead for VMS. - -=item * - -C has been upgraded from 0.67 to 0.6801. - -Documentation clarification. - -Test improvements. - -=item * - -C has been upgraded from 1.07 to 1.08. - -Avoid compiler warnings. - -=item * - -C has been upgraded from 0.29 to 0.30. - -Add info about named sequence alternatives. - -Don't use C. - -=item * - -C has been upgraded from 0.82 to 0.86. - -Modify export logic for C and C. - -Various backcompat fixes. - -=item * - -C has been upgraded from 0.39 to 0.41. - -Add several functions. - -Corrections to names returned by C and -C. - -=item * - -C has been upgraded from 0.26 to 0.27. - -Test new API functions. - -Avoid compiler warnings. - -=back - -=head2 Dual-life Modules and Pragmata - -These modules were formerly distributed only in the Perl core -distribution, and are now dual-lifed (meaning they are now also available -separately on CPAN): - -=over 4 - -=item * - -C - -=item * - -C - -=item * - -C - -=item * - -C - -=item * - -C - -=item * - -C - -=back - -=head1 Diagnostics - -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. - -=head2 New Diagnostics - -=over 4 - -=item * - -There is a new "Closure prototype called" error -L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. - -=back - -=head2 Changes to Existing Diagnostics - -=over 4 - -=item * - -The "Found = in conditional" warning that is emitted when a constant is -assigned to a variable in a condition is now withheld if the constant is -actually a subroutine or one generated by C, since the value -of the constant may not be known at the time the program is written -L<[perl #77762]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77762>. - -=back - -=head1 Configuration and Compilation - -=over 4 - -=item * - -The C module can now (once again) be included in a static Perl -build. The special-case handling for this situation got broken in Perl -5.11.0, and has now been repaired. - -=back - -=head1 Testing - -=over 4 - -=item * - -Tests for C, C, C, C, -C, C, C, C, C, -and C now use the L framework. - -=back - -=head1 Platform Support - -=head2 Platform-Specific Notes - -=over 4 - -=item NetBSD - -The NetBSD hints file has been changed to make the system's malloc the -default. - -=item Windows - -The option to use an externally-supplied C, or to build with no -C at all, has been removed. Perl supplies its own C -implementation for Windows, and the political situation that required -this part of the distribution to sometimes be omitted is long gone. - -=back - -=head1 Internal Changes - -=over 4 - -=item * - -The L|perlapi/mg_findext> and -L|perlapi/sv_unmagicext> -functions have been added to the API. -They allow extension authors to find and remove magic attached to -scalars based on both the magic type and the magic virtual table, similar to how -C attaches magic of a certain type and with a given virtual table -to a scalar. This eliminates the need for extensions to walk the list of -C pointers of an C to find the magic that belongs to them. - -=item * - -The -L|perlapi/parse_fullexpr>, -L|perlapi/parse_listexpr>, -L|perlapi/parse_termexpr>, and -L|perlapi/parse_arithexpr> -functions have been added to the API. They perform -recursive-descent parsing of expressions at various precedence levels. -They are expected to be used by syntax plugins. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -C now behaves as documented, rather than behaving -identically to C. Previously, C in a C block -was erroneously executing the C and -C behaviour, which only C was documented to -provide -L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>. - -=item * - -C -L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>, -C and C no longer leak memory. - -=item * - -C no longer leaks memory on non-threaded builds. - -=item * - -PerlIO no longer crashes when called recursively, e.g., from a signal -handler. Now it just leaks memory -L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>. - -=item * - -Defining a constant with the same name as one of perl's special blocks -(e.g., INIT) stopped working in 5.12.0, but has now been fixed -L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>. - -=item * - -A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used -to be stringified, even if the hash was tied -L<[perl #79178]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79178>. - -=item * - -A closure containing an C statement followed by a constant or variable -is no longer treated as a constant -L<[perl #63540]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63540>. - -=item * - -Calling a closure prototype (what is passed to an attribute handler for a -closure) now results in a "Closure prototype called" error message instead -of a crash -L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. - -=item * - -A regular expression optimisation would sometimes cause a match with a -C<{n,m}> quantifier to fail when it should match -L<[perl #79152]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79152>. - -=item * - -What has become known as the "Unicode Bug" is mostly resolved in this release. -Under C, the internal storage format of a -string no longer affects the external semantics. There are two known -exceptions. User-defined case changing functions, which are planned to -be deprecated in 5.14, require utf8-encoded strings to function; and the -character C in regular expression -case-insensitive matching has a somewhat different set of bugs depending -on the internal storage format. Case-insensitive matching of all -characters that have multi-character matches, as this one does, is -problematical in Perl. -L<[perl #58182]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=58182>. - -=item * - -Mentioning a read-only lexical variable from the enclosing scope in a -string C no longer causes the variable to become writable -L<[perl #19135]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=19135>. - -=item * - -C can now be used with attributes. It used to mean the same thing as -C if attributes were present -L<[perl #68658]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68658>. - -=item * - -Expressions like C<< @$a > 3 >> no longer cause C<$a> to be mentioned in -the "Use of uninitialized value in numeric gt" warning when C<$a> is -undefined (since it is not part of the C> expression, but the operand -of the C<@>) -L<[perl #72090]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72090>. - -=item * - -C no longer causes C to return the wrong file name for -the scope that called C and other scopes higher up that had the -same file name -L<[perl #68712]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68712>. - -=item * - -The ref types in the typemap for XS bindings now support magical variables -L<[perl #72684]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72684>. - -=item * - -Match variables (e.g., C<$1>) no longer persist between calls to a sort -subroutine -L<[perl #76026]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76026>. - -=item * - -The C module was returning Cs instead of Cs for C -L<[perl #80622]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80622>. -This was due to a bug in the perl core, not in C itself. - -=item * - -Some numeric operators were converting integers to floating point, -resulting in loss of precision on 64-bit platforms -L<[perl #77456]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77456>. - -=item * - -The fallback behaviour of overloading on binary operators was asymmetric -L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>. - -=back - -=head1 Acknowledgements - -Perl 5.13.8 represents approximately one month of development since -Perl 5.13.7 and contains 38715 lines of changes across 546 files from -38 authors and committers. - -Thank you to the following for contributing to this release: - -Abhijit Menon-Sen, Abigail, Andreas KE<0xf6>nig, Ben Morrow, Brad Gilbert, -brian d foy, Chip Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry, -David Golden, David Leadbeater, David Mitchell, Father Chrysostomos, -Florian Ragwitz, Goro Fuji, H.Merijn Brand, Jan Dubois, Jerry D. Hedden, -Jesse Vincent, John Peacock, Karl Williamson, Lukas Mai, Marvin Humphrey, -Max Maischein, Michael Breen, Michael Fig, Nicholas Clark, Nick Cleaton, -Paul Evans, Peter J. Holzer, Peter John Acklam, Rafael Garcia-Suarez, -Reini Urban, Renee Baecker, Ricardo Signes, Tony Cook, Yves Orton, Zefram - -=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 L -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl5139delta.pod b/pod/perl5139delta.pod deleted file mode 100644 index f09e97694ec..00000000000 --- a/pod/perl5139delta.pod +++ /dev/null @@ -1,644 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5139delta - what is new for perl v5.13.9 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.8 release and -the 5.13.9 release. - -If you are upgrading from an earlier release such as 5.13.7, first read -L, which describes differences between 5.13.7 and -5.13.8. - -=head1 Core Enhancements - -=head2 New regular expression modifier C - -The C regular expression modifier restricts C<\s> to match precisely -the five characters C<[ \f\n\r\t]>, C<\d> to match precisely the 10 -characters C<[0-9]>, C<\w> to match precisely the 63 characters -C<[A-Za-z0-9_]>, and the Posix (C<[[:posix:]]>) character classes to -match only the appropriate ASCII characters. The complements, of -course, match everything but; and C<\b> and C<\B> are correspondingly -affected. Otherwise, C behaves like the C modifier, in that -case-insensitive matching uses Unicode semantics; for example, "k" will -match the Unicode C<\N{KELVIN SIGN}> under C matching, and code -points in the Latin1 range, above ASCII will have Unicode semantics when -it comes to case-insensitive matching. Like its cousins (C, C, -and C), and in spite of the terminology, C in 5.14 will not -actually be able to be used as a suffix at the end of a regular -expression (this restriction is planned to be lifted in 5.16). It must -occur either as an infix modifier, such as C<(?a:...)> or (C<(?a)...>, -or it can be turned on within the lexical scope of C. -Turning on C turns off the other "character set" modifiers. - -=head2 Any unsigned value can be encoded as a character - -With this release, Perl is adopting a model that any unsigned value can -be treated as a code point and encoded internally (as utf8) without -warnings -- not just the code points that are legal in Unicode. -However, unless utf8 warnings have been -explicitly lexically turned off, outputting or performing a -Unicode-defined operation (such as upper-casing) on such a code point -will generate a warning. Attempting to input these using strict rules -(such as with the C<:encoding('UTF-8')> layer) will continue to fail. -Prior to this release the handling was very inconsistent, and incorrect -in places. Also, the Unicode non-characters, some of which previously were -erroneously considered illegal in places by Perl, contrary to the Unicode -standard, are now always legal internally. But inputting or outputting -them will work the same as for the non-legal Unicode code points, as the -Unicode standard says they are illegal for "open interchange". - -=head2 Regular expression debugging output improvement - -Regular expression debugging output (turned on by C) now -uses hexadecimal when escaping non-ASCII characters, instead of octal. - -=head1 Security - -=head2 Restrict \p{IsUserDefined} to In\w+ and Is\w+ - -In L, it says you can -create custom properties by defining subroutines whose names begin with -"In" or "Is". However, perl doesn't actually enforce that naming -restriction, so \p{foo::bar} will call foo::Bar() if it exists. - -This commit finally enforces this convention. Note that this broke a -number of existing tests for properties, since they didn't always use an -Is/In prefix. - -=head1 Incompatible Changes - -=head2 All objects are destroyed - -It used to be possible to prevent a destructor from being called during -global destruction by artificially increasing the reference count of an -object. - -Now such objects I will be destroyed, as a result of a bug fix -L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>. - -This has the potential to break some XS modules. (In fact, it break some. -See L, below.) - -=head1 Modules and Pragmata - -=head2 New Modules and Pragmata - -=over 4 - -=item * - -C 0.003 has been added as a dual-life module. It supports a -subset of YAML sufficient for reading and writing META.yml and MYMETA.yml files -included with CPAN distributions or generated by the module installation -toolchain. It should not be used for any other general YAML parsing or -generation task. - -=item * - -C 0.009 has been added as a dual-life module. It is a very -small, simple HTTP/1.1 client designed for simple GET requests and file -mirroring. It has has been added to enable CPAN.pm and CPANPLUS to -"bootstrap" HTTP access to CPAN using pure Perl without relying on external -binaries like F or F. - -=item * - -C 2.27103 has been added as a dual-life module, for the sake of -reading F files in CPAN distributions. - -=item * - -C 1.000003 has been added as a dual-life module. It gathers -package and POD information from Perl module files. It is a standalone module -based on Module::Build::ModuleInfo for use by other module installation -toolchain components. Module::Build::ModuleInfo has been deprecated in -favor of this module instead. - -=item * - -C 1.002 has been added as a dual-life module. It maps Perl -operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic types -with standardized names (e.g. "Unix" or "Windows"). It has been refactored -out of Module::Build and ExtUtils::CBuilder and consolidates such mappings into -a single location for easier maintenance. - -=back - -=head2 Updated Modules and Pragmata - -=over 4 - -=item * - -C has been upgraded from version 0.46 to 0.48 - -=item * - -C has been upgraded from version 1.74 to 1.76 - -=item * - -C has been upgraded from version 3.50 to 3.51 - -Further improvements have been made to guard against newline injections -in headers. - -=item * - -C has been upgraded from version 2.031 to 2.033 - -=item * - -C has been upgraded from version 2.030 to 2.033 - -=item * - -C has been upgraded from version 1.94_62 to 1.94_63 - -=item * - -C has been upgraded from version 0.9010 to 0.9011 - -=item * - -C has been upgraded from version 0.50 to 0.52 - -=item * - -C has been upgraded from version 1.820 to 1.821 - -=item * - -C has been upgraded from version 2.40 to 2.42. -Now, all 66 Unicode non-characters are treated the same way U+FFFF has -always been treated; if it was disallowed, all 66 are disallowed; if it -warned, all 66 warn. - -=item * - -C has been upgraded from version 0.28 to 0.32 - -=item * - -C has been upgraded from version 2.030 to 2.033 - -=item * - -C has been upgraded from version 0.66 to 0.68 - -=item * - -C has been upgraded from version 0.02 to 0.04 - -=item * - -C has been upgraded from version 0.06 to 0.08 - -=item * - -C has been upgraded from version 0.38 to 0.40 - -=item * - -C has been upgraded from version 0.36 to 0.38 - -=item * - -C has been upgraded from version 0.26 to 0.28 - -=item * - -C has been upgraded from version 0.58 to 0.59 - -=item * - -C has been updated with new affordances for IPv6, -including implementations of the C and -C functions, along with related constants. - -=item * - -C has been upgraded from version 0.20 to 0.24 - -=item * - -C has been upgraded from version 2.11 to 2.12. - -=item * - -C has been upgraded from version 2.11 to 2.12. - -=item * - -C has been upgraded from version 1.81_03 to 1.82 - -=item * - -C has been upgraded from version 1.35 to 1.36 - -=item * - -C has been upgraded from version 1.1901_01 to 1.2000. - -=item * - -C has been upgraded from version 1.07 to 1.10 - -=item * - -C has been upgraded from 0.86 to 0.88. - -=item * - -C has been upgraded from version 0.41 to 0.44. - -=back - -=head1 Documentation - -=head2 Changes to Existing Documentation - -=head3 All documentation - -=over - -=item * - -Numerous POD warnings were fixed. - -=item * - -Many, many spelling errors and typographical mistakes were corrected throughout Perl's core. - -=back - -=head3 C - -=over 4 - -=item * - -C was extensively reorganized. - -=back - -=head3 C - -=over 4 - -=item * - -It has now been documented that C returns 0 for an empty string. - -=back - -=head1 Diagnostics - -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. - -=head2 New Diagnostics - -=over 4 - -=item * - -Performing an operation requiring Unicode semantics (such as case-folding) -on a Unicode surrogate or a non-Unicode character now triggers a warning: -'Operation "%s" returns its argument for ...'. - -=back - -=head2 Changes to Existing Diagnostics - -=over 4 - -=item * - -Previously, if none of the C, C and -C functions were implemented on a given platform, they would -all die with the message 'Unsupported socket function "gethostent" called', -with analogous messages for C and C. This has been -corrected. - -=back - -=head1 Utility Changes - -=head3 C - -=over 4 - -=item * - -C did not previously generate a From: header, potentially -resulting in dropped mail. Now it does include that header. - -=back - -=head3 C - -=over 4 - -=item * - -F has been modernized and can now be used to test the -well-formedness of F automatically. - -=back - -=head1 Testing - -=over 4 - -=item * - -C has been modernized and now uses C. - -=item * - -A new test script, C, makes sure that filenames and -paths are reasonably portable. - -=item * - -C is now several orders of magnitude faster. - -=item * - -C now tests that the documentation TOC file is current and well-formed. - -=item * - -C now tests the basics of a while loop with minimal dependencies. - -=item * - -C now uses F for better maintainability. - -=item * - -C now tests calls to C without any pattern specified. - -=back - - - -=head1 Platform Support - -=head2 Discontinued Platforms - -=over 4 - -=item Apollo DomainOS - -The last vestiges of support for this platform have been excised from the -Perl distribution. It was officially discontinued in version 5.12.0. It had -not worked for years before that. - -=item MacOS Classic - -The last vestiges of support for this platform have been excised from the -Perl distribution. It was officially discontinued in an earlier version. - -=back - -=head2 Platform-Specific Notes - -=over 4 - -=item Cygwin - -=over - -=item * - -Updated MakeMaker to build man pages on cygwin. - -=item * - -Improved rebase behaviour - -If a dll is updated on cygwin reuse the old imagebase address. -This solves most rebase errors, esp when updating on core dll's. -See L for more information. - -=item * - -Support the standard cyg dll prefix, which is e.g. needed for FFI's. - -=item * - -Updated build hints file - -=back - -=item Solaris - -DTrace is now supported on Solaris. There used to be build failures, but -these have been fixed -L<[perl #73630]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=73630>. - -=back - -=head1 Internal Changes - -=over 4 - -=item * - -The opcode bodies for C and C and for C and C have -been merged. The implementation functions C and -C, never part of the public API, have been merged and moved to -a static function in F. This shrinks the perl binary slightly, and should -not affect any code outside the core (unless it is relying on the order of side -effects when C is passed a I of values). - -=item * - -Some of the flags parameters to the uvuni_to_utf8_flags() and -utf8n_to_uvuni() have changed. This is a result of Perl now allowing -internal storage and manipulation of code points that are problematic -in some situations. Hence, the default actions for these functions has -been complemented to allow these code points. The new flags are -documented in L. Code that requires the problematic code -points to be rejected needs to change to use these flags. Some flag -names are retained for backward source compatibility, though they do -nothing, as they are now the default. However the flags -C, C, C, and -C have been removed, as they stem from a -fundamentally broken model of how the Unicode non-character code points -should be handled, which is now described in -L. See also L. - -=item * - -Certain shared flags in the C and C -structures have been removed. These are: C, -C, and C. Instead there are encodes and -three static in-line functions for accessing the information: -C, C, and C, -which are defined in the places where the original flags were. - -=item * - -A new option has been added to C to dump all characters above -ASCII in hexadecimal. Before, one could get all characters as hexadecimal -or the Latin1 non-ASCII as octal - -=item * - -Generate pp_* prototypes in pp_proto.h, and remove pp.sym - -Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13 -locations that relied on them. - -regen/opcode.pl now generates prototypes for the PP functions directly, into -pp_proto.h. It no longer writes pp.sym, and regen/embed.pl no longer reads -this, removing the only ordering dependency in the regen scripts. opcode.pl -is now responsible for prototypes for pp_* functions. (embed.pl remains -responsible for ck_* functions, reading from regen/opcodes) - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -The handling of Unicode non-characters has changed. -Previously they were mostly considered illegal, except that only one of -the 66 of them was known about in places. The Unicode standard -considers them legal, but forbids the "open interchange" of them. -This is part of the change to allow the internal use of any code point -(see L). Together, these changes resolve -L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>, -L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>, -L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>, -L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446> - -=item * - -Sometimes magic (ties, tainted, etc.) attached to variables could cause an -object to last longer than it should, or cause a crash if a tied variable -were freed from within a tie method. These have been fixed -L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>. - -=item * - -Most I/O functions were not warning for unopened handles unless the -'closed' and 'unopened' warnings categories were both enabled. Now only -C is necessary to trigger these warnings (as was -always meant to be the case. - -=item * - -C<< EexprE >> always respects overloading now if the expression is -overloaded. - -Due to the way that 'EE as glob' was parsed differently from -'EE as filehandle' from 5.6 onwards, something like C<< E$foo[0]E >> did -not handle overloading, even if C<$foo[0]> was an overloaded object. This -was contrary to the documentation for overload, and meant that C<< EE >> -could not be used as a general overloaded iterator operator. - -=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) or if a closure referenced a -blessed variable (C). - -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 -L<[perl #36347]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=36347>. - -=item * - -A long standing bug has now been fully fixed (partial fixes came in -earlier releases), in which some Latin-1 non-ASCII characters on -ASCII-platforms would match both a character class and its complement, -such as U+00E2 being both in C<\w> and C<\W>, depending on the -UTF-8-ness of the regular expression pattern and target string. -Fixing this did expose some bugs in various modules and tests that -relied on the previous behavior of C<[[:alpha:]]> not ever matching -U+00FF, "LATIN SMALL LETTER Y WITH DIAERESIS", even when it should, in -Unicode mode; now it does match when appropriate. -L<[perl #60156]|http://rt.perl.org/rt3/Ticket/Display.html?id=60156>. - -=back - -=head1 Known Problems - -=over 4 - -=item * - -The fix for [perl #81230] causes test failures for C version 804.029. -This is still being investigated. - -=back - -=head1 Acknowledgements - -Perl 5.13.9 represents approximately one month of development since -Perl 5.13.8 and contains approximately 48000 lines of changes across -809 files from 35 authors and committers: - -Abigail, Ævar Arnfjörð Bjarmason, brian d foy, Chris 'BinGOs' Williams, -Craig A. Berry, David Golden, David Leadbeater, David Mitchell, Father -Chrysostomos, Florian Ragwitz, Gerard Goossen, H.Merijn Brand, Jan -Dubois, Jerry D. Hedden, Jesse Vincent, John Peacock, Karl Williamson, -Leon Timmermans, Michael Parker, Michael Stevens, Nicholas Clark, -Nuno Carvalho, Paul "LeoNerd" Evans, Peter J. Acklam, Peter Martini, -Rainer Tammer, Reini Urban, Renee Baecker, Ricardo Signes, Robin Barker, -Tony Cook, Vadim Konovalov, Vincent Pit, Zefram, and Zsbán Ambrus. - -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. - -=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 L -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, 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 file for an explanation of how to view exhaustive details -on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl570delta.pod b/pod/perl570delta.pod deleted file mode 100644 index dcc2f0f1889..00000000000 --- a/pod/perl570delta.pod +++ /dev/null @@ -1,899 +0,0 @@ -=head1 NAME - -perl570delta - what's new for perl v5.7.0 - -=head1 DESCRIPTION - -This document describes differences between the 5.6.0 release and -the 5.7.0 release. - -=head1 Security Vulnerability Closed - -A potential security vulnerability in the optional suidperl component -of Perl has been identified. suidperl is neither built nor installed -by default. As of September the 2nd, 2000, the only known vulnerable -platform is Linux, most likely all Linux distributions. CERT and -various vendors have been alerted about the vulnerability. - -The problem was caused by Perl trying to report a suspected security -exploit attempt using an external program, /bin/mail. On Linux -platforms the /bin/mail program had an undocumented feature which -when combined with suidperl gave access to a root shell, resulting in -a serious compromise instead of reporting the exploit attempt. If you -don't have /bin/mail, or if you have 'safe setuid scripts', or if -suidperl is not installed, you are safe. - -The exploit attempt reporting feature has been completely removed from -the Perl 5.7.0 release, so that particular vulnerability isn't there -anymore. However, further security vulnerabilities are, -unfortunately, always possible. The suidperl code is being reviewed -and if deemed too risky to continue to be supported, it may be -completely removed from future releases. In any case, suidperl should -only be used by security experts who know exactly what they are doing -and why they are using suidperl instead of some other solution such as -sudo ( see http://www.courtesan.com/sudo/ ). - -=head1 Incompatible Changes - -=over 4 - -=item * - -Arrays now always interpolate into double-quoted strings: -constructs like "foo@bar" now always assume C<@bar> is an array, -whether or not the compiler has seen use of C<@bar>. - -=item * - -The semantics of bless(REF, REF) were unclear and until someone proves -it to make some sense, it is forbidden. - -=item * - -A reference to a reference now stringify as "REF(0x81485ec)" instead -of "SCALAR(0x81485ec)" in order to be more consistent with the return -value of ref(). - -=item * - -The very dusty examples in the eg/ directory have been removed. -Suggestions for new shiny examples welcome but the main issue is that -the examples need to be documented, tested and (most importantly) -maintained. - -=item * - -The obsolete chat2 library that should never have been allowed -to escape the laboratory has been decommissioned. - -=item * - -The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are still -recognised but now cause fatal errors. The previous behaviour of -ignoring them by default and warning if requested was unacceptable -since it, in a way, falsely promised that the features could be used. - -=item * - -The (bogus) escape sequences \8 and \9 now give an optional warning -("Unrecognized escape passed through"). There is no need to \-escape -any C<\w> character. - -=item * - -lstat(FILEHANDLE) now gives a warning because the operation makes no sense. -In future releases this may become a fatal error. - -=item * - -The long deprecated uppercase aliases for the string comparison -operators (EQ, NE, LT, LE, GE, GT) have now been removed. - -=item * - -The regular expression captured submatches ($1, $2, ...) are now -more consistently unset if the match fails, instead of leaving false -data lying around in them. - -=item * - -The tr///C and tr///U features have been removed and will not return; -the interface was a mistake. Sorry about that. For similar -functionality, see pack('U0', ...) and pack('C0', ...). - -=back - -=head1 Core Enhancements - -=over 4 - -=item * - -C now works (previously one couldn't pass -in multiple arguments.) - -=item * - -my __PACKAGE__ $obj now works. - -=item * - -C now works even if there is no "sub unimport" in the Module. - -=item * - -The numerical comparison operators return C if either operand -is a NaN. Previously the behaviour was unspecified. - -=item * - -C can now be used to force a string to UTF-8. - -=item * - -prototype(\&) is now available. - -=item * - -There is now an UNTIE method. - -=back - -=head1 Modules and Pragmata - -=head2 New Modules - -=over 4 - -=item * - -File::Temp allows one to create temporary files and directories in an -easy, portable, and secure way. - -=item * - -Storable gives persistence to Perl data structures by allowing the -storage and retrieval of Perl data to and from files in a fast and -compact binary format. - -=back - -=head2 Updated And Improved Modules and Pragmata - -=over 4 - -=item * - -The following independently supported modules have been updated to -newer versions from CPAN: CGI, CPAN, DB_File, File::Spec, Getopt::Long, -the podlators bundle, Pod::LaTeX, Pod::Parser, Term::ANSIColor, Test. - -=item * - -Bug fixes and minor enhancements have been applied to B::Deparse, -Data::Dumper, IO::Poll, IO::Socket::INET, Math::BigFloat, -Math::Complex, Math::Trig, Net::protoent, the re pragma, SelfLoader, -Sys::SysLog, Test::Harness, Text::Wrap, UNIVERSAL, and the warnings -pragma. - -=item * - -The attributes::reftype() now works on tied arguments. - -=item * - -AutoLoader can now be disabled with C, - -=item * - -The English module can now be used without the infamous performance -hit by saying - - use English '-no_performance_hit'; - -(Assuming, of course, that one doesn't need the troublesome variables -C<$`>, C<$&>, or C<$'>.) Also, introduced C<@LAST_MATCH_START> and -C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>. - -=item * - -File::Find now has pre- and post-processing callbacks. It also -correctly changes directories when chasing symbolic links. Callbacks -(naughtily) exiting with "next;" instead of "return;" now work. - -=item * - -File::Glob::glob() renamed to File::Glob::bsd_glob() to avoid -prototype mismatch with CORE::glob(). - -=item * - -IPC::Open3 now allows the use of numeric file descriptors. - -=item * - -use lib now works identically to @INC. Removing directories -with 'no lib' now works. - -=item * - -C<%INC> now localised in a Safe compartment so that use/require work. - -=item * - -The Shell module now has an OO interface. - -=back - -=head1 Utility Changes - -=over 4 - -=item * - -The Emacs perl mode (emacs/cperl-mode.el) has been updated to version -4.31. - -=item * - -Perlbug is now much more robust. It also sends the bug report to -perl.org, not perl.com. - -=item * - -The perlcc utility has been rewritten and its user interface (that is, -command line) is much more like that of the Unix C compiler, cc. - -=item * - -The xsubpp utility for extension writers now understands POD -documentation embedded in the *.xs files. - -=back - -=head1 New Documentation - -=over 4 - -=item * - -perl56delta details the changes between the 5.005 release and the -5.6.0 release. - -=item * - -perldebtut is a Perl debugging tutorial. - -=item * - -perlebcdic contains considerations for running Perl on EBCDIC platforms. -Note that unfortunately EBCDIC platforms that used to supported back in -Perl 5.005 are still unsupported by Perl 5.7.0; the plan, however, is to -bring them back to the fold. - -=item * - -perlnewmod tells about writing and submitting a new module. - -=item * - -perlposix-bc explains using Perl on the POSIX-BC platform -(an EBCDIC mainframe platform). - -=item * - -perlretut is a regular expression tutorial. - -=item * - -perlrequick is a regular expressions quick-start guide. -Yes, much quicker than perlretut. - -=item * - -perlutil explains the command line utilities packaged with the Perl -distribution. - -=back - -=head1 Performance Enhancements - -=over 4 - -=item * - -map() that changes the size of the list should now work faster. - -=item * - -sort() has been changed to use mergesort internally as opposed to the -earlier quicksort. For very small lists this may result in slightly -slower sorting times, but in general the speedup should be at least -20%. Additional bonuses are that the worst case behaviour of sort() -is now better (in computer science terms it now runs in time O(N log N), -as opposed to quicksort's Theta(N**2) worst-case run time behaviour), -and that sort() is now stable (meaning that elements with identical -keys will stay ordered as they were before the sort). - -=back - -=head1 Installation and Configuration Improvements - -=head2 Generic Improvements - -=over 4 - -=item * - -INSTALL now explains how you can configure Perl to use 64-bit -integers even on non-64-bit platforms. - -=item * - -Policy.sh policy change: if you are reusing a Policy.sh file -(see INSTALL) and you use Configure -Dprefix=/foo/bar and in the old -Policy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of -them will now be changed to the new prefix, /foo/bar. (Previously -only $prefix changed.) If you do not like this new behaviour, -specify prefix, siteprefix, and vendorprefix explicitly. - -=item * - -A new optional location for Perl libraries, otherlibdirs, is available. -It can be used for example for vendor add-ons without disturbing Perl's -own library directories. - -=item * - -In many platforms the vendor-supplied 'cc' is too stripped-down to -build Perl (basically, 'cc' doesn't do ANSI C). If this seems -to be the case and 'cc' does not seem to be the GNU C compiler -'gcc', an automatic attempt is made to find and use 'gcc' instead. - -=item * - -gcc needs to closely track the operating system release to avoid -build problems. If Configure finds that gcc was built for a different -operating system release than is running, it now gives a clearly visible -warning that there may be trouble ahead. - -=item * - -If binary compatibility with the 5.005 release is not wanted, Configure -no longer suggests including the 5.005 modules in @INC. - -=item * - -Configure C<-S> can now run non-interactively. - -=item * - -configure.gnu now works with options with whitespace in them. - -=item * - -installperl now outputs everything to STDERR. - -=item * - -$Config{byteorder} is now computed dynamically (this is more robust -with "fat binaries" where an executable image contains binaries for -more than one binary platform.) - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -Several debugger fixes: exit code now reflects the script exit code, -condition C<"0"> now treated correctly, the C command now checks -line number, the C<$.> no longer gets corrupted, all debugger output now -goes correctly to the socket if RemotePort is set. - -=item * - -C<*foo{FORMAT}> now works. - -=item * - -Lexical warnings now propagating correctly between scopes. - -=item * - -Line renumbering with eval and C<#line> now works. - -=item * - -Fixed numerous memory leaks, especially in eval "". - -=item * - -Modulus of unsigned numbers now works (4063328477 % 65535 used to -return 27406, instead of 27047). - -=item * - -Some "not a number" warnings introduced in 5.6.0 eliminated to be -more compatible with 5.005. Infinity is now recognised as a number. - -=item * - -our() variables will not cause "will not stay shared" warnings. - -=item * - -pack "Z" now correctly terminates the string with "\0". - -=item * - -Fix password routines which in some shadow password platforms -(e.g. HP-UX) caused getpwent() to return every other entry. - -=item * - -printf() no longer resets the numeric locale to "C". - -=item * - -C now parses correctly as C<'a\\b'>. - -=item * - -Printing quads (64-bit integers) with printf/sprintf now works -without the q L ll prefixes (assuming you are on a quad-capable platform). - -=item * - -Regular expressions on references and overloaded scalars now work. - -=item * - -scalar() now forces scalar context even when used in void context. - -=item * - -sort() arguments are now compiled in the right wantarray context -(they were accidentally using the context of the sort() itself). - -=item * - -Changed the POSIX character class C<[[:space:]]> to include the (very -rare) vertical tab character. Added a new POSIX-ish character class -C<[[:blank:]]> which stands for horizontal whitespace (currently, -the space and the tab). - -=item * - -$AUTOLOAD, sort(), lock(), and spawning subprocesses -in multiple threads simultaneously are now thread-safe. - -=item * - -Allow read-only string on left hand side of non-modifying tr///. - -=item * - -Several Unicode fixes (but still not perfect). - -=over 8 - -=item * - -BOMs (byte order marks) in the beginning of Perl files -(scripts, modules) should now be transparently skipped. -UTF-16 (UCS-2) encoded Perl files should now be read correctly. - -=item * - -The character tables have been updated to Unicode 3.0.1. - -=item * - -chr() for values greater than 127 now create utf8 when under use -utf8. - -=item * - -Comparing with utf8 data does not magically upgrade non-utf8 data into -utf8. - -=item * - -C, C, and C now match titlecase. - -=item * - -Concatenation with the C<.> operator or via variable interpolation, -C, C, C, C, the C operator, -substitution with C, single-quoted UTF-8, should now work--in -theory. - -=item * - -The C operator now works I better but is still rather -broken. Note that the C functionality has been removed (but -see pack('U0', ...)). - -=item * - -vec() now refuses to deal with characters >255. - -=item * - -Zero entries were missing from the Unicode classes like C. - -=back - -=item * - -UNIVERSAL::isa no longer caches methods incorrectly. (This broke -the Tk extension with 5.6.0.) - -=back - -=head2 Platform Specific Changes and Fixes - -=over 4 - -=item * - -BSDI 4.* - -Perl now works on post-4.0 BSD/OSes. - -=item * - -All BSDs - -Setting C<$0> now works (as much as possible; see perlvar for details). - -=item * - -Cygwin - -Numerous updates; currently synchronised with Cygwin 1.1.4. - -=item * - -EPOC - -EPOC update after Perl 5.6.0. See README.epoc. - -=item * - -FreeBSD 3.* - -Perl now works on post-3.0 FreeBSDs. - -=item * - -HP-UX - -README.hpux updated; C now almost works. - -=item * - -IRIX - -Numerous compilation flag and hint enhancements; accidental mixing -of 32-bit and 64-bit libraries (a doomed attempt) made much harder. - -=item * - -Linux - -Long doubles should now work (see INSTALL). - -=item * - -Mac OS Classic - -Compilation of the standard Perl distribution in Mac OS Classic should -now work if you have the Metrowerks development environment and the -missing Mac-specific toolkit bits. Contact the macperl mailing list -for details. - -=item * - -MPE/iX - -MPE/iX update after Perl 5.6.0. See README.mpeix. - -=item * - -NetBSD/sparc - -Perl now works on NetBSD/sparc. - -=item * - -OS/2 - -Now works with usethreads (see INSTALL). - -=item * - -Solaris - -64-bitness using the Sun Workshop compiler now works. - -=item * - -Tru64 (aka Digital UNIX, aka DEC OSF/1) - -The operating system version letter now recorded in $Config{osvers}. -Allow compiling with gcc (previously explicitly forbidden). Compiling -with gcc still not recommended because buggy code results, even with -gcc 2.95.2. - -=item * - -Unicos - -Fixed various alignment problems that lead into core dumps either -during build or later; no longer dies on math errors at runtime; -now using full quad integers (64 bits), previously was using -only 46 bit integers for speed. - -=item * - -VMS - -chdir() now works better despite a CRT bug; now works with MULTIPLICITY -(see INSTALL); now works with Perl's malloc. - -=item * - -Windows - -=over 8 - -=item * - -accept() no longer leaks memory. - -=item * - -Better chdir() return value for a non-existent directory. - -=item * - -New %ENV entries now propagate to subprocesses. - -=item * - -$ENV{LIB} now used to search for libs under Visual C. - -=item * - -A failed (pseudo)fork now returns undef and sets errno to EAGAIN. - -=item * - -Allow REG_EXPAND_SZ keys in the registry. - -=item * - -Can now send() from all threads, not just the first one. - -=item * - -Fake signal handling reenabled, bugs and all. - -=item * - -Less stack reserved per thread so that more threads can run -concurrently. (Still 16M per thread.) - -=item * - -C<< File::Spec->tmpdir() >> now prefers C:/temp over /tmp -(works better when perl is running as service). - -=item * - -Better UNC path handling under ithreads. - -=item * - -wait() and waitpid() now work much better. - -=item * - -winsock handle leak fixed. - -=back - -=back - -=head1 New or Changed Diagnostics - -All regular expression compilation error messages are now hopefully -easier to understand both because the error message now comes before -the failed regex and because the point of failure is now clearly -marked. - -The various "opened only for", "on closed", "never opened" warnings -drop the C prefix for filehandles in the C
package, -for example C instead of . - -The "Unrecognized escape" warning has been extended to include C<\8>, -C<\9>, and C<\_>. There is no need to escape any of the C<\w> characters. - -=head1 Changed Internals - -=over 4 - -=item * - -perlapi.pod (a companion to perlguts) now attempts to document the -internal API. - -=item * - -You can now build a really minimal perl called microperl. -Building microperl does not require even running Configure; -C should be enough. Beware: microperl makes -many assumptions, some of which may be too bold; the resulting -executable may crash or otherwise misbehave in wondrous ways. -For careful hackers only. - -=item * - -Added rsignal(), whichsig(), do_join() to the publicised API. - -=item * - -Made possible to propagate customised exceptions via croak()ing. - -=item * - -Added is_utf8_char(), is_utf8_string(), bytes_to_utf8(), and utf8_to_bytes(). - -=item * - -Now xsubs can have attributes just like subs. - -=back - -=head1 Known Problems - -=head2 Unicode Support Still Far From Perfect - -We're working on it. Stay tuned. - -=head2 EBCDIC Still A Lost Platform - -The plan is to bring them back. - -=head2 Building Extensions Can Fail Because Of Largefiles - -Certain extensions like mod_perl and BSD::Resource are known to have -issues with `largefiles', a change brought by Perl 5.6.0 in which file -offsets default to 64 bits wide, where supported. Modules may fail to -compile at all or compile and work incorrectly. Currently there is no -good solution for the problem, but Configure now provides appropriate -non-largefile ccflags, ldflags, libswanted, and libs in the %Config -hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are -having problems can try configuring themselves without the -largefileness. This is admittedly not a clean solution, and the -solution may not even work at all. One potential failure is whether -one can (or, if one can, whether it's a good idea) link together at -all binaries with different ideas about file offsets, all this is -platform-dependent. - -=head2 ftmp-security tests warn 'system possibly insecure' - -Don't panic. Read INSTALL 'make test' section instead. - -=head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX - -If perl is configured with -Duse64bitall, the successful result of the -subtest 10 of lib/posix may arrive before the successful result of the -subtest 9, which confuses the test harness so much that it thinks the -subtest 9 failed. - -=head2 Long Doubles Still Don't Work In Solaris - -The experimental long double support is still very much so in Solaris. -(Other platforms like Linux and Tru64 are beginning to solidify in -this area.) - -=head2 Linux With Sfio Fails op/misc Test 48 - -No known fix. - -=head2 Storable tests fail in some platforms - -If any Storable tests fail the use of Storable is not advisable. - -=over 4 - -=item * - -Many Storable tests fail on AIX configured with 64 bit integers. - -So far unidentified problems break Storable in AIX if Perl is -configured to use 64 bit integers. AIX in 32-bit mode works and -other 64-bit platforms work with Storable. - -=item * - -DOS DJGPP may hang when testing Storable. - -=item * - -st-06compat fails in UNICOS and UNICOS/mk. - -This means that you cannot read old (pre-Storable-0.7) Storable images -made in other platforms. - -=item * - -st-store.t and st-retrieve may fail with Compaq C 6.2 on OpenVMS Alpha 7.2. - -=back - -=head2 Threads Are Still Experimental - -Multithreading is still an experimental feature. Some platforms -emit the following message for lib/thr5005 - - # - # This is a KNOWN FAILURE, and one of the reasons why threading - # is still an experimental feature. It is here to stop people - # from deploying threads in production. ;-) - # - -and another known thread-related warning is - - pragma/overload......Unbalanced saves: 3 more saves than restores - panic: magic_mutexfree during global destruction. - ok - lib/selfloader.......Unbalanced saves: 3 more saves than restores - panic: magic_mutexfree during global destruction. - ok - lib/st-dclone........Unbalanced saves: 3 more saves than restores - panic: magic_mutexfree during global destruction. - ok - -=head2 The Compiler Suite Is Still Experimental - -The compiler suite is slowly getting better but is nowhere near -working order yet. The backend part that has seen perhaps the most -progress is the bytecode compiler. - -=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://bugs.perl.org/ There may also be -information at http://www.perl.com/perl/ , the Perl Home Page. - -If you believe you have an unreported bug, please run the B -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=head1 HISTORY - -Written by Jarkko Hietaniemi >, with many contributions -from The Perl Porters and Perl Users submitting feedback and patches. - -Send omissions or corrections to >. - -=cut diff --git a/pod/perl571delta.pod b/pod/perl571delta.pod deleted file mode 100644 index aa0945d001e..00000000000 --- a/pod/perl571delta.pod +++ /dev/null @@ -1,1075 +0,0 @@ -=head1 NAME - -perl571delta - what's new for perl v5.7.1 - -=head1 DESCRIPTION - -This document describes differences between the 5.7.0 release and the -5.7.1 release. - -(To view the differences between the 5.6.0 release and the 5.7.0 -release, see L.) - -=head1 Security Vulnerability Closed - -(This change was already made in 5.7.0 but bears repeating here.) - -A potential security vulnerability in the optional suidperl component -of Perl was identified in August 2000. suidperl is neither built nor -installed by default. As of April 2001 the only known vulnerable -platform is Linux, most likely all Linux distributions. CERT and -various vendors and distributors have been alerted about the vulnerability. -See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt -for more information. - -The problem was caused by Perl trying to report a suspected security -exploit attempt using an external program, /bin/mail. On Linux -platforms the /bin/mail program had an undocumented feature which -when combined with suidperl gave access to a root shell, resulting in -a serious compromise instead of reporting the exploit attempt. If you -don't have /bin/mail, or if you have 'safe setuid scripts', or if -suidperl is not installed, you are safe. - -The exploit attempt reporting feature has been completely removed from -all the Perl 5.7 releases (and will be gone also from the maintenance -release 5.6.1), so that particular vulnerability isn't there anymore. -However, further security vulnerabilities are, unfortunately, always -possible. The suidperl code is being reviewed and if deemed too risky -to continue to be supported, it may be completely removed from future -releases. In any case, suidperl should only be used by security -experts who know exactly what they are doing and why they are using -suidperl instead of some other solution such as sudo -( see http://www.courtesan.com/sudo/ ). - -=head1 Incompatible Changes - -=over 4 - -=item * - -Although "you shouldn't do that", it was possible to write code that -depends on Perl's hashed key order (Data::Dumper does this). The new -algorithm "One-at-a-Time" produces a different hashed key order. -More details are in L. - -=item * - -The list of filenames from glob() (or <...>) is now by default sorted -alphabetically to be csh-compliant. (bsd_glob() does still sort platform -natively, ASCII or EBCDIC, unless GLOB_ALPHASORT is specified.) - -=back - -=head1 Core Enhancements - -=head2 AUTOLOAD Is Now Lvaluable - -AUTOLOAD is now lvaluable, meaning that you can add the :lvalue attribute -to AUTOLOAD subroutines and you can assign to the AUTOLOAD return value. - -=head2 PerlIO is Now The Default - -=over 4 - -=item * - -IO is now by default done via PerlIO rather than system's "stdio". -PerlIO allows "layers" to be "pushed" onto a file handle to alter the -handle's behaviour. Layers can be specified at open time via 3-arg -form of open: - - open($fh,'>:crlf :utf8', $path) || ... - -or on already opened handles via extended C: - - binmode($fh,':encoding(iso-8859-7)'); - -The built-in layers are: unix (low level read/write), stdio (as in -previous Perls), perlio (re-implementation of stdio buffering in a -portable manner), crlf (does CRLF <=> "\n" translation as on Win32, -but available on any platform). A mmap layer may be available if -platform supports it (mostly Unixes). - -Layers to be applied by default may be specified via the 'open' pragma. - -See L for the effects -of PerlIO on your architecture name. - -=item * - -File handles can be marked as accepting Perl's internal encoding of Unicode -(UTF-8 or UTF-EBCDIC depending on platform) by a pseudo layer ":utf8" : - - open($fh,">:utf8","Uni.txt"); - -Note for EBCDIC users: the pseudo layer ":utf8" is erroneously named -for you since it's not UTF-8 what you will be getting but instead -UTF-EBCDIC. See L, L, and -http://www.unicode.org/unicode/reports/tr16/ for more information. -In future releases this naming may change. - -=item * - -File handles can translate character encodings from/to Perl's internal -Unicode form on read/write via the ":encoding()" layer. - -=item * - -File handles can be opened to "in memory" files held in Perl scalars via: - - open($fh,'>', \$variable) || ... - -=item * - -Anonymous temporary files are available without need to -'use FileHandle' or other module via - - open($fh,"+>", undef) || ... - -That is a literal undef, not an undefined value. - -=item * - -The list form of C is now implemented for pipes (at least on Unix): - - open($fh,"-|", 'cat', '/etc/motd') - -creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in -the child process. - -=item * - -The following builtin functions are now overridable: chop(), chomp(), -each(), keys(), pop(), push(), shift(), splice(), unshift(). - -=item * - -Formats now support zero-padded decimal fields. - -=item * - -Perl now tries internally to use integer values in numeric conversions -and basic arithmetics (+ - * /) if the arguments are integers, and -tries also to keep the results stored internally as integers. -This change leads into often slightly faster and always less lossy -arithmetics. (Previously Perl always preferred floating point numbers -in its math.) - -=item * - -The printf() and sprintf() now support parameter reordering using the -C<%\d+\$> and C<*\d+\$> syntaxes. For example - - print "%2\$s %1\$s\n", "foo", "bar"; - -will print "bar foo\n"; This feature helps in writing -internationalised software. - -=item * - -Unicode in general should be now much more usable. Unicode can be -used in hash keys, Unicode in regular expressions should work now, -Unicode in tr/// should work now (though tr/// seems to be a -particularly tricky to get right, so you have been warned) - -=item * - -The Unicode Character Database coming with Perl has been upgraded -to Unicode 3.1. For more information, see http://www.unicode.org/ , -and http://www.unicode.org/unicode/reports/tr27/ - -For developers interested in enhancing Perl's Unicode capabilities: -almost all the UCD files are included with the Perl distribution in -the lib/unicode subdirectory. The most notable omission, for space -considerations, is the Unihan database. - -=item * - -The Unicode character classes \p{Blank} and \p{SpacePerl} have been -added. "Blank" is like C isblank(), that is, it contains only -"horizontal whitespace" (the space character is, the newline isn't), -and the "SpacePerl" is the Unicode equivalent of C<\s> (\p{Space} -isn't, since that includes the vertical tabulator character, whereas -C<\s> doesn't.) - -=back - -=head2 Signals Are Now Safe - -Perl used to be fragile in that signals arriving at inopportune moments -could corrupt Perl's internal state. - -=head1 Modules and Pragmata - -=head2 New Modules - -=over 4 - -=item * - -B::Concise, by Stephen McCamant, is a new compiler backend for -walking the Perl syntax tree, printing concise info about ops. -The output is highly customisable. - -See L for more information. - -=item * - -Class::ISA, by Sean Burke, for reporting the search path for a -class's ISA tree, has been added. - -See L for more information. - -=item * - -Cwd has now a split personality: if possible, an extension is used, -(this will hopefully be both faster and more secure and robust) but -if not possible, the familiar Perl library implementation is used. - -=item * - -Digest, a frontend module for calculating digests (checksums), -from Gisle Aas, has been added. - -See L for more information. - -=item * - -Digest::MD5 for calculating MD5 digests (checksums), by Gisle Aas, -has been added. - - use Digest::MD5 'md5_hex'; - - $digest = md5_hex("Thirsty Camel"); - - print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1 - -NOTE: the MD5 backward compatibility module is deliberately not -included since its use is discouraged. - -See L for more information. - -=item * - -Encode, by Nick Ing-Simmons, provides a mechanism to translate -between different character encodings. Support for Unicode, -ISO-8859-*, ASCII, CP*, KOI8-R, and three variants of EBCDIC are -compiled in to the module. Several other encodings (like Japanese, -Chinese, and MacIntosh encodings) are included and will be loaded at -runtime. - -Any encoding supported by Encode module is also available to the -":encoding()" layer if PerlIO is used. - -See L for more information. - -=item * - -Filter::Simple is an easy-to-use frontend to Filter::Util::Call, -from Damian Conway. - - # in MyFilter.pm: - - package MyFilter; - - use Filter::Simple sub { - while (my ($from, $to) = splice @_, 0, 2) { - s/$from/$to/g; - } - }; - - 1; - - # in user's code: - - use MyFilter qr/red/ => 'green'; - - print "red\n"; # this code is filtered, will print "green\n" - print "bored\n"; # this code is filtered, will print "bogreen\n" - - no MyFilter; - - print "red\n"; # this code is not filtered, will print "red\n" - -See L for more information. - -=item * - -Filter::Util::Call, by Paul Marquess, provides you with the -framework to write I in Perl. For most uses -the frontend Filter::Simple is to be preferred. -See L for more information. - -=item * - -Locale::Constants, Locale::Country, Locale::Currency, and Locale::Language, -from Neil Bowers, have been added. They provide the codes for various -locale standards, such as "fr" for France, "usd" for US Dollar, and -"jp" for Japanese. - - use Locale::Country; - - $country = code2country('jp'); # $country gets 'Japan' - $code = country2code('Norway'); # $code gets 'no' - -See L, L, L, -and L for more information. - -=item * - -MIME::Base64, by Gisle Aas, allows you to encode data in base64. - - use MIME::Base64; - - $encoded = encode_base64('Aladdin:open sesame'); - $decoded = decode_base64($encoded); - - print $encoded, "\n"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ==" - -See L for more information. - -=item * - -MIME::QuotedPrint, by Gisle Aas, allows you to encode data in -quoted-printable encoding. - - use MIME::QuotedPrint; - - $encoded = encode_qp("Smiley in Unicode: \x{263a}"); - $decoded = decode_qp($encoded); - - print $encoded, "\n"; # "Smiley in Unicode: =263A" - -MIME::QuotedPrint has been enhanced to provide the basic methods -necessary to use it with PerlIO::Via as in : - - use MIME::QuotedPrint; - open($fh,">Via(MIME::QuotedPrint)",$path) - -See L for more information. - -=item * - -PerlIO::scalar, by Nick Ing-Simmons, provides the implementation of -IO to "in memory" Perl scalars as discussed above. It also serves as -an example of a loadable layer. Other future possibilities include -PerlIO::array and PerlIO::code. See L for more -information. - -=item * - -PerlIO::Via, by Nick Ing-Simmons, acts as a PerlIO layer and wraps -PerlIO layer functionality provided by a class (typically implemented -in perl code). - - use MIME::QuotedPrint; - open($fh,">Via(MIME::QuotedPrint)",$path) - -This will automatically convert everything output to C<$fh> -to Quoted-Printable. See L for more information. - -=item * - -Pod::Text::Overstrike, by Joe Smith, has been added. -It converts POD data to formatted overstrike text. -See L for more information. - -=item * - -Switch from Damian Conway has been added. Just by saying - - use Switch; - -you have C and C available in Perl. - - use Switch; - - switch ($val) { - - case 1 { print "number 1" } - case "a" { print "string a" } - case [1..10,42] { print "number in list" } - case (@array) { print "number in list" } - case /\w+/ { print "pattern" } - case qr/\w+/ { print "pattern" } - case (%hash) { print "entry in hash" } - case (\%hash) { print "entry in hash" } - case (\&sub) { print "arg to subroutine" } - else { print "previous case not true" } - } - -See L for more information. - -=item * - -Text::Balanced from Damian Conway has been added, for -extracting delimited text sequences from strings. - - use Text::Balanced 'extract_delimited'; - - ($a, $b) = extract_delimited("'never say never', he never said", "'", ''); - -$a will be "'never say never'", $b will be ', he never said'. - -In addition to extract_delimited() there are also extract_bracketed(), -extract_quotelike(), extract_codeblock(), extract_variable(), -extract_tagged(), extract_multiple(), gen_delimited_pat(), and -gen_extract_tagged(). With these you can implement rather advanced -parsing algorithms. See L for more information. - -=item * - -Tie::RefHash::Nestable, by Edward Avis, allows storing hash references -(unlike the standard Tie::RefHash) The module is contained within -Tie::RefHash. - -=item * - -XS::Typemap, by Tim Jenness, is a test extension that exercises XS -typemaps. Nothing gets installed but for extension writers the code -is worth studying. - -=back - -=head2 Updated And Improved Modules and Pragmata - -=over 4 - -=item * - -B::Deparse should be now more robust. It still far from providing a full -round trip for any random piece of Perl code, though, and is under active -development: expect more robustness in 5.7.2. - -=item * - -Class::Struct can now define the classes in compile time. - -=item * - -Math::BigFloat has undergone much fixing, and in addition the fmod() -function now supports modulus operations. - -( The fixed Math::BigFloat module is also available in CPAN for those -who can't upgrade their Perl: http://www.cpan.org/authors/id/J/JP/JPEACOCK/ ) - -=item * - -Devel::Peek now has an interface for the Perl memory statistics -(this works only if you are using perl's malloc, and if you have -compiled with debugging). - -=item * - -IO::Socket has now atmark() method, which returns true if the socket -is positioned at the out-of-band mark. The method is also exportable -as a sockatmark() function. - -=item * - -IO::Socket::INET has support for ReusePort option (if your platform -supports it). The Reuse option now has an alias, ReuseAddr. For clarity -you may want to prefer ReuseAddr. - -=item * - -Net::Ping has been enhanced. There is now "external" protocol which -uses Net::Ping::External module which runs external ping(1) and parses -the output. An alpha version of Net::Ping::External is available in -CPAN and in 5.7.2 the Net::Ping::External may be integrated to Perl. - -=item * - -The C pragma allows layers other than ":raw" and ":crlf" when -using PerlIO. - -=item * - -POSIX::sigaction() is now much more flexible and robust. -You can now install coderef handlers, 'DEFAULT', and 'IGNORE' -handlers, installing new handlers was not atomic. - -=item * - -The Test module has been significantly enhanced. Its use is -greatly recommended for module writers. - -=item * - -The utf8:: name space (as in the pragma) provides various -Perl-callable functions to provide low level access to Perl's -internal Unicode representation. At the moment only length() -has been implemented. - -=back - -The following modules have been upgraded from the versions at CPAN: -CPAN, CGI, DB_File, File::Temp, Getopt::Long, Pod::Man, Pod::Text, -Storable, Text-Tabs+Wrap. - -=head1 Performance Enhancements - -=over 4 - -=item * - -Hashes now use Bob Jenkins "One-at-a-Time" hashing key algorithm -( http://burtleburtle.net/bob/hash/doobs.html ). This algorithm is -reasonably fast while producing a much better spread of values than -the old hashing algorithm (originally by Chris Torek, later tweaked by -Ilya Zakharevich). Hash values output from the algorithm on a hash of -all 3-char printable ASCII keys comes much closer to passing the -DIEHARD random number generation tests. According to perlbench, this -change has not affected the overall speed of Perl. - -=item * - -unshift() should now be noticeably faster. - -=back - -=head1 Utility Changes - -=over 4 - -=item * - -h2xs now produces template README. - -=item * - -s2p has been completely rewritten in Perl. (It is in fact a full -implementation of sed in Perl.) - -=item * - -xsubpp now supports OUT keyword. - -=back - -=head1 New Documentation - -=head2 perlclib - -Internal replacements for standard C library functions. -(Interesting only for extension writers and Perl core hackers.) - -=head2 perliol - -Internals of PerlIO with layers. - -=head2 README.aix - -Documentation on compiling Perl on AIX has been added. AIX has -several different C compilers and getting the right patch level -is essential. On install README.aix will be installed as L. - -=head2 README.bs2000 - -Documentation on compiling Perl on the POSIX-BC platform (an EBCDIC -mainframe environment) has been added. - -This was formerly known as README.posix-bc but the name was considered -to be too confusing (it has nothing to do with the POSIX module or the -POSIX standard). On install README.bs2000 will be installed as L. - -=head2 README.macos - -In perl 5.7.1 (and in the 5.6.1) the MacPerl sources have been -synchronised with the standard Perl sources. To compile MacPerl -some additional steps are required, and this file documents those -steps. On install README.macos will be installed as L. - -=head2 README.mpeix - -The README.mpeix has been podified, which means that this information -about compiling and using Perl on the MPE/iX miniframe platform will -be installed as L. - -=head2 README.solaris - -README.solaris has been created and Solaris wisdom from elsewhere -in the Perl documentation has been collected there. On install -README.solaris will be installed as L. - -=head2 README.vos - -The README.vos has been podified, which means that this information -about compiling and using Perl on the Stratus VOS miniframe platform -will be installed as L. - -=head2 Porting/repository.pod - -Documentation on how to use the Perl source repository has been added. - -=head1 Installation and Configuration Improvements - -=over 4 - -=item * - -Because PerlIO is now the default on most platforms, "-perlio" doesn't -get appended to the $Config{archname} (also known as $^O) anymore. -Instead, if you explicitly choose not to use perlio (Configure command -line option -Uuseperlio), you will get "-stdio" appended. - -=item * - -Another change related to the architecture name is that "-64all" -(-Duse64bitall, or "maximally 64-bit") is appended only if your -pointers are 64 bits wide. (To be exact, the use64bitall is ignored.) - -=item * - -APPLLIB_EXP, a less-know configuration-time definition, has been -documented. It can be used to prepend site-specific directories -to Perl's default search path (@INC), see INSTALL for information. - -=item * - -Building Berkeley DB3 for compatibility modes for DB, NDBM, and ODBM -has been documented in INSTALL. - -=item * - -If you are on IRIX or Tru64 platforms, new profiling/debugging options -have been added, see L for more information about pixie and -Third Degree. - -=back - -=head2 New Or Improved Platforms - -For the list of platforms known to support Perl, -see L. - -=over 4 - -=item * - -AIX dynamic loading should be now better supported. - -=item * - -After a long pause, AmigaOS has been verified to be happy with Perl. - -=item * - -EBCDIC platforms (z/OS, also known as OS/390, POSIX-BC, and VM/ESA) -have been regained. Many test suite tests still fail and the -co-existence of Unicode and EBCDIC isn't quite settled, but the -situation is much better than with Perl 5.6. See L, -L (for POSIX-BC), and L for more information. - -=item * - -Building perl with -Duseithreads or -Duse5005threads now works under -HP-UX 10.20 (previously it only worked under 10.30 or later). You will -need a thread library package installed. See README.hpux. - -=item * - -Mac OS Classic (MacPerl has of course been available since -perl 5.004 but now the source code bases of standard Perl -and MacPerl have been synchronised) - -=item * - -NCR MP-RAS is now supported. - -=item * - -NonStop-UX is now supported. - -=item * - -Amdahl UTS is now supported. - -=item * - -z/OS (formerly known as OS/390, formerly known as MVS OE) has now -support for dynamic loading. This is not selected by default, -however, you must specify -Dusedl in the arguments of Configure. - -=back - -=head2 Generic Improvements - -=over 4 - -=item * - -Configure no longer includes the DBM libraries (dbm, gdbm, db, ndbm) -when building the Perl binary. The only exception to this is SunOS 4.x, -which needs them. - -=item * - -Some new Configure symbols, useful for extension writers: - -=over 8 - -=item d_cmsghdr - -For struct cmsghdr. - -=item d_fcntl_can_lock - -Whether fcntl() can be used for file locking. - -=item d_fsync - -=item d_getitimer - -=item d_getpagsz - -For getpagesize(), though you should prefer POSIX::sysconf(_SC_PAGE_SIZE)) - -=item d_msghdr_s - -For struct msghdr. - -=item need_va_copy - -Whether one needs to use Perl_va_copy() to copy varargs. - -=item d_readv - -=item d_recvmsg - -=item d_sendmsg - -=item sig_size - -The number of elements in an array needed to hold all the available signals. - -=item d_sockatmark - -=item d_strtoq - -=item d_u32align - -Whether one needs to access character data aligned by U32 sized pointers. - -=item d_ualarm - -=item d_usleep - -=back - -=item * - -Removed Configure symbols: the PDP-11 memory model settings: huge, -large, medium, models. - -=item * - -SOCKS support is now much more robust. - -=item * - -If your file system supports symbolic links you can build Perl outside -of the source directory by - - mkdir perl/build/directory - cd perl/build/directory - sh /path/to/perl/source/Configure -Dmksymlinks ... - -This will create in perl/build/directory a tree of symbolic links -pointing to files in /path/to/perl/source. The original files are left -unaffected. After Configure has finished you can just say - - make all test - -and Perl will be built and tested, all in perl/build/directory. - -=back - -=head1 Selected Bug Fixes - -Numerous memory leaks and uninitialized memory accesses have been hunted down. -Most importantly anonymous subs used to leak quite a bit. - -=over 4 - -=item * - -chop(@list) in list context returned the characters chopped in -reverse order. This has been reversed to be in the right order. - -=item * - -The order of DESTROYs has been made more predictable. - -=item * - -mkdir() now ignores trailing slashes in the directory name, -as mandated by POSIX. - -=item * - -Attributes (like :shared) didn't work with our(). - -=item * - -The PERL5OPT environment variable (for passing command line arguments -to Perl) didn't work for more than a single group of options. - -=item * - -The tainting behaviour of sprintf() has been rationalized. It does -not taint the result of floating point formats anymore, making the -behaviour consistent with that of string interpolation. - -=item * - -All but the first argument of the IO syswrite() method are now optional. - -=item * - -Tie::ARRAY SPLICE method was broken. - -=item * - -vec() now tries to work with characters <= 255 when possible, but it leaves -higher character values in place. In that case, if vec() was used to modify -the string, it is no longer considered to be utf8-encoded. - -=back - -=head2 Platform Specific Changes and Fixes - -=over 4 - -=item * - -Linux previously had problems related to sockaddrlen when using -accept(), revcfrom() (in Perl: recv()), getpeername(), and getsockname(). - -=item * - -Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O. - -=item * - -Windows - -=over 8 - -=item * - -Borland C++ v5.5 is now a supported compiler that can build Perl. -However, the generated binaries continue to be incompatible with those -generated by the other supported compilers (GCC and Visual C++). - -=item * - -Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root. -Other bugs in chdir() and Cwd::cwd() have also been fixed. - -=item * - -Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x. - -=item * - -HTML files will be installed in c:\perl\html instead of c:\perl\lib\pod\html - -=item * - -The makefiles now provide a single switch to bulk-enable all the features -enabled in ActiveState ActivePerl (a popular binary distribution). - -=back - -=back - -=head1 New or Changed Diagnostics - -Two new debugging options have been added: if you have compiled your -Perl with debugging, you can use the -DT and -DR options to trace -tokenising and to add reference counts to displaying variables, -respectively. - -=over 4 - -=item * - -If an attempt to use a (non-blessed) reference as an array index -is made, a warning is given. - -=item * - -C and C (with no values to push or unshift) -now give a warning. This may be a problem for generated and eval'ed -code. - -=back - -=head1 Changed Internals - -=over 4 - -=item * - -Some new APIs: ptr_table_clear(), ptr_table_free(), sv_setref_uv(). -For the full list of the available APIs see L. - -=item * - -dTHR and djSP have been obsoleted; the former removed (because it's -a no-op) and the latter replaced with dSP. - -=item * - -Perl now uses system malloc instead of Perl malloc on all 64-bit -platforms, and even in some not-always-64-bit platforms like AIX, -IRIX, and Solaris. This change breaks backward compatibility but -Perl's malloc has problems with large address spaces and also the -speed of vendors' malloc is generally better in large address space -machines (Perl's malloc is mostly tuned for space). - -=back - -=head1 New Tests - -Many new tests have been added. The most notable is probably the -lib/1_compile: it is very notable because running it takes quite a -long time. It test compiles all the Perl modules in the distribution. -Please be patient. - -=head1 Known Problems - -Note that unlike other sections in this document (which describe -changes since 5.7.0) this section is cumulative containing known -problems for all the 5.7 releases. - -=head2 AIX vac 5.0.0.0 May Produce Buggy Code For Perl - -The AIX C compiler vac version 5.0.0.0 may produce buggy code, -resulting in few random tests failing, but when the failing tests -are run by hand, they succeed. We suggest upgrading to at least -vac version 5.0.1.0, that has been known to compile Perl correctly. -"lslpp -L|grep vac.C" will tell you the vac version. - -=head2 lib/ftmp-security tests warn 'system possibly insecure' - -Don't panic. Read INSTALL 'make test' section instead. - -=head2 lib/io_multihomed Fails In LP64-Configured HP-UX - -The lib/io_multihomed test may hang in HP-UX if Perl has been -configured to be 64-bit. Because other 64-bit platforms do not hang in -this test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The -test attempts to create and connect to "multihomed" sockets (sockets -which have multiple IP addresses). - -=head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX - -If perl is configured with -Duse64bitall, the successful result of the -subtest 10 of lib/posix may arrive before the successful result of the -subtest 9, which confuses the test harness so much that it thinks the -subtest 9 failed. - -=head2 lib/b test 19 - -The test fails on various platforms (PA64 and IA64 are known), but the -exact cause is still being investigated. - -=head2 Linux With Sfio Fails op/misc Test 48 - -No known fix. - -=head2 sigaction test 13 in VMS - -The test is known to fail; whether it's because of VMS of because -of faulty test is not known. - -=head2 sprintf tests 129 and 130 - -The op/sprintf tests 129 and 130 are known to fail on some platforms. -Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX. -The failing platforms do not comply with the ANSI C Standard, line -19ff on page 134 of ANSI X3.159 1989 to be exact. (They produce -something else than "1" and "-1" when formatting 0.6 and -0.6 using -the printf format "%.0f", most often they produce "0" and "-0".) - -=head2 Failure of Thread tests - -The subtests 19 and 20 of lib/thr5005.t test are known to fail due to -fundamental problems in the 5.005 threading implementation. These are -not new failures--Perl 5.005_0x has the same bugs, but didn't have -these tests. (Note that support for 5.005-style threading remains -experimental.) - -=head2 Localising a Tied Variable Leaks Memory - - use Tie::Hash; - tie my %tie_hash => 'Tie::StdHash'; - - ... - - local($tie_hash{Foo}) = 1; # leaks - -Code like the above is known to leak memory every time the local() -is executed. - -=head2 Self-tying of Arrays and Hashes Is Forbidden - -Self-tying of arrays and hashes is broken in rather deep and -hard-to-fix ways. As a stop-gap measure to avoid people from getting -frustrated at the mysterious results (core dumps, most often) it is -for now forbidden (you will get a fatal error even from an attempt). - -=head2 Building Extensions Can Fail Because Of Largefiles - -Some extensions like mod_perl are known to have issues with -`largefiles', a change brought by Perl 5.6.0 in which file offsets -default to 64 bits wide, where supported. Modules may fail to compile -at all or compile and work incorrectly. Currently there is no good -solution for the problem, but Configure now provides appropriate -non-largefile ccflags, ldflags, libswanted, and libs in the %Config -hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are -having problems can try configuring themselves without the -largefileness. This is admittedly not a clean solution, and the -solution may not even work at all. One potential failure is whether -one can (or, if one can, whether it's a good idea) link together at -all binaries with different ideas about file offsets, all this is -platform-dependent. - -=head2 The Compiler Suite Is Still Experimental - -The compiler suite is slowly getting better but is nowhere near -working order yet. - -=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://bugs.perl.org/ There may also be -information at http://www.perl.com/perl/ , the Perl Home Page. - -If you believe you have an unreported bug, please run the B -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=head1 HISTORY - -Written by Jarkko Hietaniemi >, with many contributions -from The Perl Porters and Perl Users submitting feedback and patches. - -Send omissions or corrections to >. - -=cut diff --git a/pod/perl572delta.pod b/pod/perl572delta.pod deleted file mode 100644 index c41b0dab847..00000000000 --- a/pod/perl572delta.pod +++ /dev/null @@ -1,831 +0,0 @@ -=head1 NAME - -perl572delta - what's new for perl v5.7.2 - -=head1 DESCRIPTION - -This document describes differences between the 5.7.1 release and the -5.7.2 release. - -(To view the differences between the 5.6.0 release and the 5.7.0 -release, see L. To view the differences between the -5.7.0 release and the 5.7.1 release, see L.) - -=head1 Security Vulnerability Closed - -(This change was already made in 5.7.0 but bears repeating here.) - -A security vulnerability affecting all Perl versions prior to 5.6.1 -was found in August 2000. The vulnerability does not affect default -installations and as far as is known affects only the Linux platform. - -You should upgrade your Perl to 5.6.1 as soon as possible. Patches -for earlier releases exist but using the patches require full -recompilation from the source code anyway, so 5.6.1 is your best -choice. - -See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt -for more information. - -=head1 Incompatible Changes - -=head2 64-bit platforms and malloc - -If your pointers are 64 bits wide, the Perl malloc is no more being -used because it simply does not work with 8-byte pointers. Also, -usually the system malloc on such platforms are much better optimized -for such large memory models than the Perl malloc. - -=head2 AIX Dynaloading - -The AIX dynaloading now uses in AIX releases 4.3 and newer the native -dlopen interface of AIX instead of the old emulated interface. This -change will probably break backward compatibility with compiled -modules. The change was made to make Perl more compliant with other -applications like modperl which are using the AIX native interface. - -=head2 Socket Extension Dynamic in VMS - -The Socket extension is now dynamically loaded instead of being -statically built in. This may or may not be a problem with ancient -TCP/IP stacks of VMS: we do not know since we weren't able to test -Perl in such configurations. - -=head2 Different Definition of the Unicode Character Classes \p{In...} - -As suggested by the Unicode consortium, the Unicode character classes -now prefer I as opposed to I (as defined by Unicode); -in Perl, when the C<\p{In....}> and the C<\p{In....}> regular expression -constructs are used. This has changed the definition of some of those -character classes. - -The difference between scripts and blocks is that scripts are the -glyphs used by a language or a group of languages, while the blocks -are more artificial groupings of 256 characters based on the Unicode -numbering. - -In general this change results in more inclusive Unicode character -classes, but changes to the other direction also do take place: -for example while the script C includes all the Latin -characters and their various diacritic-adorned versions, it -does not include the various punctuation or digits (since they -are not solely C). - -Changes in the character class semantics may have happened if a script -and a block happen to have the same name, for example C. -In such cases the script wins and C<\p{InHebrew}> now means the script -definition of Hebrew. The block definition in still available, -though, by appending C to the name: C<\p{InHebrewBlock}> means -what C<\p{InHebrew}> meant in perl 5.6.0. For the full list -of affected character classes, see L. - -=head2 Deprecations - -The current user-visible implementation of pseudo-hashes (the weird -use of the first array element) is deprecated starting from Perl 5.8.0 -and will be removed in Perl 5.10.0, and the feature will be -implemented differently. Not only is the current interface rather -ugly, but the current implementation slows down normal array and hash -use quite noticeably. The C pragma interface will remain -available. - -The syntaxes C<< @a->[...] >> and C<< @h->{...} >> have now been deprecated. - -The suidperl is also considered to be too much a risk to continue -maintaining and the suidperl code is likely to be removed in a future -release. - -The C syntax (C without an argument has been -deprecated. Its semantics were never that clear and its -implementation even less so. If you have used that feature to -disallow all but fully qualified variables, C instead. - -The chdir(undef) and chdir('') behaviors to match chdir() has been -deprecated. In future versions, chdir(undef) and chdir('') will -simply fail. - -=head1 Core Enhancements - -In general a lot of fixing has happened in the area of Perl's -understanding of numbers, both integer and floating point. Since in -many systems the standard number parsing functions like C -and C seem to have bugs, Perl tries to work around their -deficiencies. This results hopefully in more accurate numbers. - -=over 4 - -=item * - -The rules for allowing underscores (underbars) in numeric constants -have been relaxed and simplified: now you can have an underscore -B. - -=item * - -GMAGIC (right-hand side magic) could in many cases such as string -concatenation be invoked too many times. - -=item * - -Lexicals I: lexicals outside an eval "" weren't resolved -correctly inside a subroutine definition inside the eval "" if they -were not already referenced in the top level of the eval""ed code. - -=item * - -Lexicals II: lexicals leaked at file scope into subroutines that -were declared before the lexicals. - -=item * - -Lvalue subroutines can now return C in list context. - -=item * - -The C and C are now exported. - -=item * - -A new special regular expression variable has been introduced: -C<$^N>, which contains the most-recently closed group (submatch). - -=item * - -L now supports C to change the -file timestamps to the current time. - -=item * - -The Perl parser has been stress tested using both random input and -Markov chain input. - -=item * - -C now works. - -=item * - -VMS now works under PerlIO. - -=item * - -END blocks are now run even if you exit/die in a BEGIN block. -The execution of END blocks is now controlled by -PL_exit_flags & PERL_EXIT_DESTRUCT_END. This enables the new -behaviour for perl embedders. This will default in 5.10. See -L. - -=back - -=head1 Modules and Pragmata - -=head2 New Modules and Distributions - -=over 4 - -=item * - -L - Simpler definition of attribute handlers - -=item * - -L - generate XS code to import C header constants - -=item * - -L - query locale information - -=item * - -L - functions for dealing with RFC3066-style language tags - -=item * - -L - a collection of perl5 modules related to network programming - -Perl installation leaves libnet unconfigured, use F to configure. - -=item * - -L - selection of general-utility list subroutines - -=item * - -L - framework for localization - -=item * - -L - Make your functions faster by trading space for time - -=item * - -L - pseudo-class for method redispatch - -=item * - -L - selection of general-utility scalar subroutines - -=item * - -L - yet another framework for writing test scripts - -=item * - -L - Basic utilities for writing tests - -=item * - -L - high resolution ualarm, usleep, and gettimeofday - -=item * - -L - Object Oriented time objects - -(Previously known as L.) - -=item * - -L - a simple API to convert seconds to other date values - -=item * - -L - Unicode Character Database - -=back - -=head2 Updated And Improved Modules and Pragmata - -=over 4 - -=item * - -L module has been significantly enhanced. It now -can deparse almost all of the standard test suite (so that the -tests still succeed). There is a make target "test.deparse" -for trying this out. - -=item * - -L now assigns the array/hash element if the accessor -is called with an array/hash element as the B argument. - -=item * - -L extension is now (even) faster. - -=item * - -L extension has been updated to version 1.77. - -=item * - -L, L, and L have been rewritten to use the -new-style constant dispatch section (see L). - -=item * - -L is now (again) reentrant. It also has been made -more portable. - -=item * - -L now supports C constant to limit the -size of the returned list of filenames. - -=item * - -L now supports C of zero (usually meaning -that the operating system will make one up.) - -=item * - -The L pragma now supports declaring fully qualified variables. -(Something that C does not and will not support.) - -=back - -=head1 Utility Changes - -=over 4 - -=item * - -The F is now much faster. - -=item * - -L now supports C trigraphs. - -=item * - -L uses the new L module which will affect -newly created extensions that define constants. Since the new code is -more correct (if you have two constants where the first one is a -prefix of the second one, the first constant B gets defined), -less lossy (it uses integers for integer constant, as opposed to the -old code that used floating point numbers even for integer constants), -and slightly faster, you might want to consider regenerating your -extension code (the new scheme makes regenerating easy). -L now also supports C trigraphs. - -=item * - -L has been added to configure the libnet. - -=item * - -The F (and thusly L) now allows specifying -a cache directory. - -=back - -=head1 New Documentation - -=over 4 - -=item * - -L is an article about software localization, -originally published in The Perl Journal #13, republished here with -kind permission. - -=item * - -More README.$PLATFORM files have been converted into pod, which also -means that they also be installed as perl$PLATFORM documentation -files. The new files are L, L, L, -L, L, L, L, L, -and L. - -=item * - -The F and F files have been merged into L. - -=item * - -Use of the F tool to profile Perl has been documented in -L. There is a make target "perl.gprof" for generating a -gprofiled Perl executable. - -=back - -=head1 Installation and Configuration Improvements - -=head2 New Or Improved Platforms - -=over 4 - -=item * - -AIX should now work better with gcc, threads, and 64-bitness. Also the -long doubles support in AIX should be better now. See L. - -=item * - -AtheOS ( http://www.atheos.cx/ ) is a new platform. - -=item * - -DG/UX platform now supports the 5.005-style threads. See L. - -=item * - -DYNIX/ptx platform (a.k.a. dynixptx) is supported at or near osvers 4.5.2. - -=item * - -Several Mac OS (Classic) portability patches have been applied. We -hope to get a fully working port by 5.8.0. (The remaining problems -relate to the changed IO model of Perl.) See L. - -=item * - -Mac OS X (or Darwin) should now be able to build Perl even on HFS+ -filesystems. (The case-insensitivity confused the Perl build process.) - -=item * - -NetWare from Novell is now supported. See L. - -=item * - -The Amdahl UTS Unix mainframe platform is now supported. - -=back - -=head2 Generic Improvements - -=over 4 - -=item * - -In AFS installations one can configure the root of the AFS to be -somewhere else than the default F by using the Configure -parameter C<-Dafsroot=/some/where/else>. - -=item * - -The version of Berkeley DB used when the Perl (and, presumably, the -DB_File extension) was built is now available as -C<@Config{qw(db_version_major db_version_minor db_version_patch)}> -from Perl and as C from C. - -=item * - -The Thread extension is now not built at all under ithreads -(C) because it wouldn't work anyway (the -Thread extension requires being Configured with C<-Duse5005threads>). - -=item * - -The C compiler backend has been so significantly improved -that almost the whole Perl test suite passes after being deparsed. A -make target has been added to help in further testing: C. - -=back - -=head1 Selected Bug Fixes - -=over 5 - -=item * - -The autouse pragma didn't work for Multi::Part::Function::Names. - -=item * - -The behaviour of non-decimal but numeric string constants such as -"0x23" was platform-dependent: in some platforms that was seen as 35, -in some as 0, in some as a floating point number (don't ask). This -was caused by Perl using the operating system libraries in a situation -where the result of the string to number conversion is undefined: now -Perl consistently handles such strings as zero in numeric contexts. - -=item * - -L -R didn't work. - -=item * - -PERL5OPT with embedded spaces didn't work. - -=item * - -L ignored the C constant. - -=back - -=head2 Platform Specific Changes and Fixes - -=over 4 - -=item * - -Some versions of glibc have a broken modfl(). This affects builds -with C<-Duselongdouble>. This version of Perl detects this brokenness -and has a workaround for it. The glibc release 2.2.2 is known to have -fixed the modfl() bug. - -=back - -=head1 New or Changed Diagnostics - -=over 4 - -=item * - -In the regular expression diagnostics the CE HERE> marker -introduced in 5.7.0 has been changed to be C-- HERE> since too -many people found the CE> to be too similar to here-document -starters. - -=item * - -If you try to L a number less than 0 or larger than 255 -using the C<"C"> format you will get an optional warning. Similarly -for the C<"c"> format and a number less than -128 or more than 127. - -=item * - -Certain regex modifiers such as C<(?o)> make sense only if applied to -the entire regex. You will an optional warning if you try to do otherwise. - -=item * - -Using arrays or hashes as references (e.g. C<< %foo->{bar} >> has been -deprecated for a while. Now you will get an optional warning. - -=back - -=head1 Source Code Enhancements - -=head2 MAGIC constants - -The MAGIC constants (e.g. C<'P'>) have been macrofied -(e.g. C) for better source code readability -and maintainability. - -=head2 Better commented code - -F, F, and F have now been extensively commented. - -=head2 Regex pre-/post-compilation items matched up - -The regex compiler now maintains a structure that identifies nodes in -the compiled bytecode with the corresponding syntactic features of the -original regex expression. The information is attached to the new -C member of the C. See L for more -complete information. - -=head2 gcc -Wall - -The C code has been made much more C clean. Some warning -messages still remain, though, so if you are compiling with gcc you -will see some warnings about dubious practices. The warnings are -being worked on. - -=head1 New Tests - -Several new tests have been added, especially for the F subsection. - -The tests are now reported in a different order than in earlier Perls. -(This happens because the test scripts from under t/lib have been moved -to be closer to the library/extension they are testing.) - -=head1 Known Problems - -Note that unlike other sections in this document (which describe -changes since 5.7.0) this section is cumulative containing known -problems for all the 5.7 releases. - -=head2 AIX - -=over 4 - -=item * - -In AIX 4.2 Perl extensions that use C++ functions that use statics -may have problems in that the statics are not getting initialized. -In newer AIX releases this has been solved by linking Perl with -the libC_r library, but unfortunately in AIX 4.2 the said library -has an obscure bug where the various functions related to time -(such as time() and gettimeofday()) return broken values, and -therefore in AIX 4.2 Perl is not linked against the libC_r. - -=item * - -vac 5.0.0.0 May Produce Buggy Code For Perl - -The AIX C compiler vac version 5.0.0.0 may produce buggy code, -resulting in few random tests failing, but when the failing tests -are run by hand, they succeed. We suggest upgrading to at least -vac version 5.0.1.0, that has been known to compile Perl correctly. -"lslpp -L|grep vac.C" will tell you the vac version. - -=back - -=head2 Amiga Perl Invoking Mystery - -One cannot call Perl using the C syntax, that is, C -works, but for example C doesn't. The exact reason is -known but the current suspect is the F library. - -=head2 lib/ftmp-security tests warn 'system possibly insecure' - -Don't panic. Read INSTALL 'make test' section instead. - -=head2 Cygwin intermittent failures of lib/Memoize/t/expire_file 11 and 12 - -The subtests 11 and 12 sometimes fail and sometimes work. - -=head2 HP-UX lib/io_multihomed Fails When LP64-Configured - -The lib/io_multihomed test may hang in HP-UX if Perl has been -configured to be 64-bit. Because other 64-bit platforms do not hang in -this test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The -test attempts to create and connect to "multihomed" sockets (sockets -which have multiple IP addresses). - -=head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured - -If perl is configured with -Duse64bitall, the successful result of the -subtest 10 of lib/posix may arrive before the successful result of the -subtest 9, which confuses the test harness so much that it thinks the -subtest 9 failed. - -=head2 Linux With Sfio Fails op/misc Test 48 - -No known fix. - -=head2 OS/390 - -OS/390 has rather many test failures but the situation is actually -better than it was in 5.6.0, it's just that so many new modules and -tests have been added. - - Failed Test Stat Wstat Total Fail Failed List of Failed - ----------------------------------------------------------------------------- - ../ext/B/Deparse.t 14 1 7.14% 14 - ../ext/B/Showlex.t 1 1 100.00% 1 - ../ext/Encode/Encode/Tcl.t 610 13 2.13% 592 594 596 598 - 600 602 604-610 - ../ext/IO/lib/IO/t/io_unix.t 113 28928 5 3 60.00% 3-5 - ../ext/POSIX/POSIX.t 29 1 3.45% 14 - ../ext/Storable/t/lock.t 255 65280 5 3 60.00% 3-5 - ../lib/locale.t 129 33024 117 19 16.24% 99-117 - ../lib/warnings.t 434 1 0.23% 75 - ../lib/ExtUtils.t 27 1 3.70% 25 - ../lib/Math/BigInt/t/bigintpm.t 1190 1 0.08% 1145 - ../lib/Unicode/UCD.t 81 48 59.26% 1-16 49-64 66-81 - ../lib/User/pwent.t 9 1 11.11% 4 - op/pat.t 660 6 0.91% 242-243 424-425 - 626-627 - op/split.t 0 9 ?? ?? % ?? - op/taint.t 174 3 1.72% 156 162 168 - op/tr.t 70 3 4.29% 50 58-59 - Failed 16/422 test scripts, 96.21% okay. 105/23251 subtests failed, 99.55% okay. - -=head2 op/sprintf tests 129 and 130 - -The op/sprintf tests 129 and 130 are known to fail on some platforms. -Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX. -The failing platforms do not comply with the ANSI C Standard, line -19ff on page 134 of ANSI X3.159 1989 to be exact. (They produce -something other than "1" and "-1" when formatting 0.6 and -0.6 using -the printf format "%.0f", most often they produce "0" and "-0".) - -=head2 Failure of Thread tests - -B - -The following tests are known to fail due to fundamental problems in -the 5.005 threading implementation. These are not new failures--Perl -5.005_0x has the same bugs, but didn't have these tests. - - lib/autouse.t 4 - t/lib/thr5005.t 19-20 - -=head2 UNICOS - -=over 4 - -=item * - -ext/POSIX/sigaction subtests 6 and 13 may fail. - -=item * - -lib/ExtUtils may spuriously claim that subtest 28 failed, -which is interesting since the test only has 27 tests. - -=item * - -Numerous numerical test failures - - op/numconvert 209,210,217,218 - op/override 7 - ext/Time/HiRes/HiRes 9 - lib/Math/BigInt/t/bigintpm 1145 - lib/Math/Trig 25 - -These tests fail because of yet unresolved floating point inaccuracies. - -=back - -=head2 UTS - -There are a few known test failures, see L. - -=head2 VMS - -Rather many tests are failing in VMS but that actually more tests -succeed in VMS than they used to, it's just that there are many, -many more tests than there used to be. - -Here are the known failures from some compiler/platform combinations. - -DEC C V5.3-006 on OpenVMS VAX V6.2 - - [-.ext.list.util.t]tainted..............FAILED on test 3 - [-.ext.posix]sigaction..................FAILED on test 7 - [-.ext.time.hires]hires.................FAILED on test 14 - [-.lib.file.find]taint..................FAILED on test 17 - [-.lib.math.bigint.t]bigintpm...........FAILED on test 1183 - [-.lib.test.simple.t]exit...............FAILED on test 1 - [.lib]vmsish............................FAILED on test 13 - [.op]sprintf............................FAILED on test 12 - Failed 8/399 tests, 91.23% okay. - -DEC C V6.0-001 on OpenVMS Alpha V7.2-1 and -Compaq C V6.2-008 on OpenVMS Alpha V7.1 - - [-.ext.list.util.t]tainted..............FAILED on test 3 - [-.lib.file.find]taint..................FAILED on test 17 - [-.lib.test.simple.t]exit...............FAILED on test 1 - [.lib]vmsish............................FAILED on test 13 - Failed 4/399 tests, 92.48% okay. - -Compaq C V6.4-005 on OpenVMS Alpha 7.2.1 - - [-.ext.b]showlex........................FAILED on test 1 - [-.ext.list.util.t]tainted..............FAILED on test 3 - [-.lib.file.find]taint..................FAILED on test 17 - [-.lib.test.simple.t]exit...............FAILED on test 1 - [.lib]vmsish............................FAILED on test 13 - [.op]misc...............................FAILED on test 49 - Failed 6/401 tests, 92.77% okay. - -=head2 Win32 - -In multi-CPU boxes there are some problems with the I/O buffering: -some output may appear twice. - -=head2 Localising a Tied Variable Leaks Memory - - use Tie::Hash; - tie my %tie_hash => 'Tie::StdHash'; - - ... - - local($tie_hash{Foo}) = 1; # leaks - -Code like the above is known to leak memory every time the local() -is executed. - -=head2 Self-tying of Arrays and Hashes Is Forbidden - -Self-tying of arrays and hashes is broken in rather deep and -hard-to-fix ways. As a stop-gap measure to avoid people from getting -frustrated at the mysterious results (core dumps, most often) it is -for now forbidden (you will get a fatal error even from an attempt). - -=head2 Variable Attributes are not Currently Usable for Tying - -This limitation will hopefully be fixed in future. (Subroutine -attributes work fine for tying, see L). - -=head2 Building Extensions Can Fail Because Of Largefiles - -Some extensions like mod_perl are known to have issues with -`largefiles', a change brought by Perl 5.6.0 in which file offsets -default to 64 bits wide, where supported. Modules may fail to compile -at all or compile and work incorrectly. Currently there is no good -solution for the problem, but Configure now provides appropriate -non-largefile ccflags, ldflags, libswanted, and libs in the %Config -hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are -having problems can try configuring themselves without the -largefileness. This is admittedly not a clean solution, and the -solution may not even work at all. One potential failure is whether -one can (or, if one can, whether it's a good idea) link together at -all binaries with different ideas about file offsets, all this is -platform-dependent. - -=head2 The Compiler Suite Is Still Experimental - -The compiler suite is slowly getting better but is nowhere near -working order yet. - -=head2 The Long Double Support is Still Experimental - -The ability to configure Perl's numbers to use "long doubles", -floating point numbers of hopefully better accuracy, is still -experimental. The implementations of long doubles are not yet -widespread and the existing implementations are not quite mature -or standardised, therefore trying to support them is a rare -and moving target. The gain of more precision may also be offset -by slowdown in computations (more bits to move around, and the -operations are more likely to be executed by less optimised -libraries). - -=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://bugs.perl.org/ There may also be -information at http://www.perl.com/perl/ , the Perl Home Page. - -If you believe you have an unreported bug, please run the B -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=head1 HISTORY - -Written by Jarkko Hietaniemi >, with many contributions -from The Perl Porters and Perl Users submitting feedback and patches. - -Send omissions or corrections to >. - -=cut diff --git a/pod/perl573delta.pod b/pod/perl573delta.pod deleted file mode 100644 index ddef460c798..00000000000 --- a/pod/perl573delta.pod +++ /dev/null @@ -1,246 +0,0 @@ -=head1 NAME - -perl573delta - what's new for perl v5.7.3 - -=head1 DESCRIPTION - -This document describes differences between the 5.7.2 release and the -5.7.3 release. - -(To view the differences between the 5.6.0 release and the 5.7.0 -release, see L. To view the differences between the -5.7.0 release and the 5.7.1 release, see L. To view -the differences between the 5.7.1 release and the 5.7.2 release, -see L.) - -=head1 Changes - -This is just a selected list of some of the more notable changes. -The numbers refer to the Perl repository change numbers; see -F (or F in Perl 5.8.1). In addition to these -changes, lots of work took place in integrating threads, PerlIO, and -Unicode; general code cleanup; and last but not least porting to -non-Unix lands such as Win32, VMS, Cygwin, DJGPP, VOS, MacOS Classic, -and EBCDIC. - -=over 4 - -=item 11362 - -add LC_MESSAGES to POSIX :locale_h export tag - -=item 11371 - -add DEL to [:cntrl:] - -=item 11375 - -make h2ph understand constants like 1234L and 5678LL - -=item 11405 - -Win32: fix bugs in handling of the virtualized environment - -=item 11410 - -fix a bug in the security taint checking of open() - -=item 11423 - -make perl fork() safe even on platforms that don't have pthread_atfork() - -=item 11459 - -make switching optimization and debugging levels during Perl builds -easier via the OPTIMIZE environment variable - -=item 11475 - -make split()'s unused captures to be undef, not '' - -=item 11485 - -Search::Dict: allow transforming lines before comparing - -=item 11490 - -allow installing extra modules or bundles when building Perl - -=item 11516 - -add -Wall in cflags when compiling with gcc to weed out dubious -C practices - -=item 11541 - -pluggable optimizer - -=item 11549 - -WinCE: integrate the port - -=item 11589 - -Win32: 4-arg select was broken - -=item 11594 - -introduce the perlivp utility for verifying the Perl installation -(IVP = Installation Verification Procedure) - -=item 11623 - -rename lib/unicode to lib/unicore to avoid case-insensitivity problems -with lib/Unicode - -=item 111631 - -remove Time::Piece - -=item 11643 - -document that use utf8 is not the right way most of the time - -=item 11656 - -allow building perl with -DUSE_UTF8_SCRIPTS which makes UTF-8 -the default script encoding (not the default since that would -break all scripts having legacy eight-bit data in them) - -=item 11725 - -division preserving 64-bit integers - -=item 11743 - -document the coderef-in-@INC feature - -=item 11794 - -modulo (%) preserving 64-bit integers - -=item 11825 - -update to Unicode 3.1.1 - -=item 11865 - -add the \[$@%&*] prototype support - -=item 11874 - -oct() and hex() in glorious 64 bit - -=item 11877 - -Class::Struct: allow recursive classes - -=item 11993 - -fix unpack U to be the reverse of pack U - -=item 12056 - -VMS: waitpid enhancements - -=item 12180 - -unpack("Z*Z*", pack("Z*Z*", ..)) was broken - -=item 12243 - -Devel::Peek: display UTF-8 SVs also as \x{...} - -=item 12288 - -Data::Dumper: option to sort hashes - -=item 12542 - -add perlpodspec - -=item 12652 - -threadsafe DynaLoader, re, Opcode, File::Glob, and B - -=item 12756 - -support BeOS better - -=item 12874 - -read-only hashes (user-level interface is Hash::Util) - -=item 13162 - -add Devel::PPPort - -=item 13179 - -add the sort pragma - -=item 13326 - -VMS: fix perl -P - -=item 13358 - -add perlpacktut - -=item 13452 - -SUPER-UX: add hints file - -=item 13575 - -Win32: non-blocking waitpid(-1,WNOHANG) - -=item 13684 - -introduce the -t option for gentler taint checking - -=item 14694 - -add the if pragma - -=item 14832 - -implement IV/UV/NV/long double un/packing with j/J/F/D - -=item 14854 - -document the new taint behaviour of exec LIST and system LIST - -=back - -=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://bugs.perl.org. There may also be -information at http://www.perl.com/, the Perl Home Page. - -If you believe you have an unreported bug, please run the B -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=head1 HISTORY - -Written by Jarkko Hietaniemi >, with many contributions -from The Perl Porters and Perl Users submitting feedback and patches. - -Send omissions or corrections to >. - -=cut diff --git a/pod/perl590delta.pod b/pod/perl590delta.pod deleted file mode 100644 index a19bf7a0768..00000000000 --- a/pod/perl590delta.pod +++ /dev/null @@ -1,1015 +0,0 @@ -=head1 NAME - -perl590delta - what is new for perl v5.9.0 - -=head1 DESCRIPTION - -This document describes differences between the 5.8.0 release and -the 5.9.0 release. - -=head1 Incompatible Changes - -=head2 Hash Randomisation - -Mainly due to security reasons, the "random ordering" of hashes -has been made even more random. Previously while the order of hash -elements from keys(), values(), and each() was essentially random, -it was still repeatable. Now, however, the order varies between -different runs of Perl. - -B, and the -ordering has already changed several times during the lifetime of -Perl 5. Also, the ordering of hash keys has always been, and -continues to be, affected by the insertion order. - -The added randomness may affect applications. - -One possible scenario is when output of an application has included -hash data. For example, if you have used the Data::Dumper module to -dump data into different files, and then compared the files to see -whether the data has changed, now you will have false positives since -the order in which hashes are dumped will vary. In general the cure -is to sort the keys (or the values); in particular for Data::Dumper to -use the C option. If some particular order is really -important, use tied hashes: for example the Tie::IxHash module -which by default preserves the order in which the hash elements -were added. - -More subtle problem is reliance on the order of "global destruction". -That is what happens at the end of execution: Perl destroys all data -structures, including user data. If your destructors (the DESTROY -subroutines) have assumed any particular ordering to the global -destruction, there might be problems ahead. For example, in a -destructor of one object you cannot assume that objects of any other -class are still available, unless you hold a reference to them. -If the environment variable PERL_DESTRUCT_LEVEL is set to a non-zero -value, or if Perl is exiting a spawned thread, it will also destruct -the ordinary references and the symbol tables that are no longer in use. -You can't call a class method or an ordinary function on a class that -has been collected that way. - -The hash randomisation is certain to reveal hidden assumptions about -some particular ordering of hash elements, and outright bugs: it -revealed a few bugs in the Perl core and core modules. - -To disable the hash randomisation in runtime, set the environment -variable PERL_HASH_SEED to 0 (zero) before running Perl (for more -information see L), or to disable the feature -completely in compile time, compile with C<-DNO_HASH_SEED> (see F). - -See L for the original -rationale behind this change. - -=head2 UTF-8 On Filehandles No Longer Activated By Locale - -In Perl 5.8.0 all filehandles, including the standard filehandles, -were implicitly set to be in Unicode UTF-8 if the locale settings -indicated the use of UTF-8. This feature caused too many problems, -so the feature was turned off and redesigned: see L. - -=head2 Single-number v-strings are no longer v-strings before "=>" - -The version strings or v-strings (see L) -feature introduced in Perl 5.6.0 has been a source of some confusion-- -especially when the user did not want to use it, but Perl thought it -knew better. Especially troublesome has been the feature that before -a "=>" a version string (a "v" followed by digits) has been interpreted -as a v-string instead of a string literal. In other words: - - %h = ( v65 => 42 ); - -has meant since Perl 5.6.0 - - %h = ( 'A' => 42 ); - -(at least in platforms of ASCII progeny) Perl 5.8.1 restored the -more natural interpretation - - %h = ( 'v65' => 42 ); - -The multi-number v-strings like v65.66 and 65.66.67 still continue to -be v-strings in Perl 5.8. - -=head2 (Win32) The -C Switch Has Been Repurposed - -The -C switch has changed in an incompatible way. The old semantics -of this switch only made sense in Win32 and only in the "use utf8" -universe in 5.6.x releases, and do not make sense for the Unicode -implementation in 5.8.0. Since this switch could not have been used -by anyone, it has been repurposed. The behavior that this switch -enabled in 5.6.x releases may be supported in a transparent, -data-dependent fashion in a future release. - -For the new life of this switch, see L<"UTF-8 no longer default under -UTF-8 locales">, and L. - -=head2 (Win32) The /d Switch Of cmd.exe - -Since version 5.8.1, perl uses the /d switch when running the cmd.exe shell -internally for system(), backticks, and when opening pipes to external -programs. The extra switch disables the execution of AutoRun commands -from the registry, which is generally considered undesirable when -running external programs. If you wish to retain compatibility with -the older behavior, set PERL5SHELL in your environment to C. - -=head2 The C<$*> variable has been removed - -C<$*>, which was deprecated in favor of the C and C regexp -modifiers, has been removed. - -=head1 Core Enhancements - -=head2 Assertions - -Perl 5.9.0 has experimental support for assertions. Note that the user -interface is not fully stabilized yet, and it may change until the 5.10.0 -release. A new command-line switch, B<-A>, is used to activate -assertions, which are declared with the C pragma. See -L. - -=head2 Defined-or operators - -A new operator C (defined-or) has been implemented. -The following statement: - - $a // $b - -is merely equivalent to - - defined $a ? $a : $b - -and - - $c //= $d; - -can be used instead of - - $c = $d unless defined $c; - -This operator has the same precedence and associativity as C<||>. -It has a low-precedence counterpart, C, which has the same precedence -and associativity as C. Special care has been taken to ensure that -those operators Do What You Mean while not breaking old code, but some -edge cases involving the empty regular expression may now parse -differently. See L for details. - -=head2 UTF-8 no longer default under UTF-8 locales - -In Perl 5.8.0 many Unicode features were introduced. One of them -was found to be of more nuisance than benefit: the automagic -(and silent) "UTF-8-ification" of filehandles, including the -standard filehandles, if the user's locale settings indicated -use of UTF-8. - -For example, if you had C as your locale, your STDIN and -STDOUT were automatically "UTF-8", in other words an implicit -binmode(..., ":utf8") was made. This meant that trying to print, say, -chr(0xff), ended up printing the bytes 0xc3 0xbf. Hardly what -you had in mind unless you were aware of this feature of Perl 5.8.0. -The problem is that the vast majority of people weren't: for example -in RedHat releases 8 and 9 the B locale setting is UTF-8, so -all RedHat users got UTF-8 filehandles, whether they wanted it or not. -The pain was intensified by the Unicode implementation of Perl 5.8.0 -(still) having nasty bugs, especially related to the use of s/// and -tr///. (Bugs that have been fixed in 5.8.1) - -Therefore a decision was made to backtrack the feature and change it -from implicit silent default to explicit conscious option. The new -Perl command line option C<-C> and its counterpart environment -variable PERL_UNICODE can now be used to control how Perl and Unicode -interact at interfaces like I/O and for example the command line -arguments. See L and L for more -information. - -=head2 Unsafe signals again available - -In Perl 5.8.0 the so-called "safe signals" were introduced. This -means that Perl no longer handles signals immediately but instead -"between opcodes", when it is safe to do so. The earlier immediate -handling easily could corrupt the internal state of Perl, resulting -in mysterious crashes. - -However, the new safer model has its problems too. Because now an -opcode, a basic unit of Perl execution, is never interrupted but -instead let to run to completion, certain operations that can take a -long time now really do take a long time. For example, certain -network operations have their own blocking and timeout mechanisms, and -being able to interrupt them immediately would be nice. - -Therefore perl 5.8.1 introduced a "backdoor" to restore the pre-5.8.0 -(pre-5.7.3, really) signal behaviour. Just set the environment variable -PERL_SIGNALS to C, and the old immediate (and unsafe) -signal handling behaviour returns. See L -and L. - -In completely unrelated news, you can now use safe signals with -POSIX::SigAction. See L. - -=head2 Tied Arrays with Negative Array Indices - -Formerly, the indices passed to C, C, C, and -C methods in tied array class were always non-negative. If -the actual argument was negative, Perl would call FETCHSIZE implicitly -and add the result to the index before passing the result to the tied -array method. This behaviour is now optional. If the tied array class -contains a package variable named C<$NEGATIVE_INDICES> which is set to -a true value, negative values will be passed to C, C, -C, and C unchanged. - -=head2 local ${$x} - -The syntaxes - - local ${$x} - local @{$x} - local %{$x} - -now do localise variables, given that the $x is a valid variable name. - -=head2 Unicode Character Database 4.0.0 - -The copy of the Unicode Character Database included in Perl 5.8 has -been updated to 4.0.0 from 3.2.0. This means for example that the -Unicode character properties are as in Unicode 4.0.0. - -=head2 Miscellaneous Enhancements - -C now defaults to unpacking the C<$_>. - -C in void context is no longer expensive. C is now context -aware, and will not construct a list if called in void context. - -If a socket gets closed by the server while printing to it, the client -now gets a SIGPIPE. While this new feature was not planned, it fell -naturally out of PerlIO changes, and is to be considered an accidental -feature. - -PerlIO::get_layers(FH) returns the names of the PerlIO layers -active on a filehandle. - -PerlIO::via layers can now have an optional UTF8 method to -indicate whether the layer wants to "auto-:utf8" the stream. - -utf8::is_utf8() has been added as a quick way to test whether -a scalar is encoded internally in UTF-8 (Unicode). - -=head1 Modules and Pragmata - -=head2 Updated Modules And Pragmata - -The following modules and pragmata have been updated since Perl 5.8.0: - -=over 4 - -=item base - -=item B::Bytecode - -In much better shape than it used to be. Still far from perfect, but -maybe worth a try. - -=item B::Concise - -=item B::Deparse - -=item Benchmark - -An optional feature, C<:hireswallclock>, now allows for high -resolution wall clock times (uses Time::HiRes). - -=item ByteLoader - -See B::Bytecode. - -=item bytes - -Now has bytes::substr. - -=item CGI - -=item charnames - -One can now have custom character name aliases. - -=item CPAN - -There is now a simple command line frontend to the CPAN.pm -module called F. - -=item Data::Dumper - -A new option, Pair, allows choosing the separator between hash keys -and values. - -=item DB_File - -=item Devel::PPPort - -=item Digest::MD5 - -=item Encode - -Significant updates on the encoding pragma functionality -(tr/// and the DATA filehandle, formats). - -If a filehandle has been marked as to have an encoding, unmappable -characters are detected already during input, not later (when the -corrupted data is being used). - -The ISO 8859-6 conversion table has been corrected (the 0x30..0x39 -erroneously mapped to U+0660..U+0669, instead of U+0030..U+0039). The -GSM 03.38 conversion did not handle escape sequences correctly. The -UTF-7 encoding has been added (making Encode feature-complete with -Unicode::String). - -=item fields - -=item libnet - -=item Math::BigInt - -A lot of bugs have been fixed since v1.60, the version included in Perl -v5.8.0. Especially noteworthy are the bug in Calc that caused div and mod to -fail for some large values, and the fixes to the handling of bad inputs. - -Some new features were added, e.g. the broot() method, you can now pass -parameters to config() to change some settings at runtime, and it is now -possible to trap the creation of NaN and infinity. - -As usual, some optimizations took place and made the math overall a tad -faster. In some cases, quite a lot faster, actually. Especially alternative -libraries like Math::BigInt::GMP benefit from this. In addition, a lot of the -quite clunky routines like fsqrt() and flog() are now much much faster. - -=item MIME::Base64 - -=item NEXT - -Diamond inheritance now works. - -=item Net::Ping - -=item PerlIO::scalar - -Reading from non-string scalars (like the special variables, see -L) now works. - -=item podlators - -=item Pod::LaTeX - -=item PodParsers - -=item Pod::Perldoc - -Complete rewrite. As a side-effect, no longer refuses to startup when -run by root. - -=item Scalar::Util - -New utilities: refaddr, isvstring, looks_like_number, set_prototype. - -=item Storable - -Can now store code references (via B::Deparse, so not foolproof). - -=item strict - -Earlier versions of the strict pragma did not check the parameters -implicitly passed to its "import" (use) and "unimport" (no) routine. -This caused the false idiom such as: - - use strict qw(@ISA); - @ISA = qw(Foo); - -This however (probably) raised the false expectation that the strict -refs, vars and subs were being enforced (and that @ISA was somehow -"declared"). But the strict refs, vars, and subs are B enforced -when using this false idiom. - -Starting from Perl 5.8.1, the above B cause an error to be -raised. This may cause programs which used to execute seemingly -correctly without warnings and errors to fail when run under 5.8.1. -This happens because - - use strict qw(@ISA); - -will now fail with the error: - - Unknown 'strict' tag(s) '@ISA' - -The remedy to this problem is to replace this code with the correct idiom: - - use strict; - use vars qw(@ISA); - @ISA = qw(Foo); - -=item Term::ANSIcolor - -=item Test::Harness - -Now much more picky about extra or missing output from test scripts. - -=item Test::More - -=item Test::Simple - -=item Text::Balanced - -=item Time::HiRes - -Use of nanosleep(), if available, allows mixing subsecond sleeps with -alarms. - -=item threads - -Several fixes, for example for join() problems and memory -leaks. In some platforms (like Linux) that use glibc the minimum memory -footprint of one ithread has been reduced by several hundred kilobytes. - -=item threads::shared - -Many memory leaks have been fixed. - -=item Unicode::Collate - -=item Unicode::Normalize - -=item Win32::GetFolderPath - -=item Win32::GetOSVersion - -Now returns extra information. - -=back - -=head1 Utility Changes - -The C utility now produces a more modern layout: -F instead of F. -Also, the boilerplate test is now called F -instead of F. - -The Perl debugger (F) has now been extensively -documented and bugs found while documenting have been fixed. - -C has been rewritten from scratch to be more robust and -feature rich. - -C works now at least somewhat better, while C -is rather more broken. (The Perl compiler suite as a whole continues -to be experimental.) - -=head1 New Documentation - -perl573delta has been added to list the differences between the -(now quite obsolete) development releases 5.7.2 and 5.7.3. - -perl58delta and perl581delta have been added: these are the perldeltas -of 5.8.0 and 5.8.1, detailing the differences respectively between -5.6.0 and 5.8.0, and between 5.8.0 and 5.8.1. - -perlartistic has been added: it is the Artistic License in pod format, -making it easier for modules to refer to it. - -perlcheat has been added: it is a Perl cheat sheet. - -perlgpl has been added: it is the GNU General Public License in pod -format, making it easier for modules to refer to it. - -perlmacosx has been added to tell about the installation and use -of Perl in Mac OS X. - -perlos400 has been added to tell about the installation and use -of Perl in OS/400 PASE. - -perlreref has been added: it is a regular expressions quick reference. - -=head1 Installation and Configuration Improvements - -The Unix standard Perl location, F, is no longer -overwritten by default if it exists. This change was very prudent -because so many Unix vendors already provide a F, -but simultaneously many system utilities may depend on that -exact version of Perl, so better not to overwrite it. - -One can now specify installation directories for site and vendor man -and HTML pages, and site and vendor scripts. See F. - -One can now specify a destination directory for Perl installation -by specifying the DESTDIR variable for C. (This feature -is slightly different from the previous C.) -See F. - -gcc versions 3.x introduced a new warning that caused a lot of noise -during Perl compilation: C. This warning has now been avoided by -Configure weeding out such directories before the compilation. - -One can now build subsets of Perl core modules by using the -Configure flags C<-Dnoextensions=...> and C<-Donlyextensions=...>, -see F. - -=head2 Platform-specific enhancements - -In Cygwin Perl can now be built with threads (C). -This works with both Cygwin 1.3.22 and Cygwin 1.5.3. - -In newer FreeBSD releases Perl 5.8.0 compilation failed because of -trying to use F, which in FreeBSD is just a dummy file, and -a fatal error to even try to use. Now F is not used. - -Perl is now known to build also in Hitachi HI-UXMPP. - -Perl is now known to build again in LynxOS. - -Mac OS X now installs with Perl version number embedded in -installation directory names for easier upgrading of user-compiled -Perl, and the installation directories in general are more standard. -In other words, the default installation no longer breaks the -Apple-provided Perl. On the other hand, with C -you can now really replace the Apple-supplied Perl (B). - -Mac OS X now builds Perl statically by default. This change was done -mainly for faster startup times. The Apple-provided Perl is still -dynamically linked and shared, and you can enable the sharedness for -your own Perl builds by C. - -Perl has been ported to IBM's OS/400 PASE environment. The best way -to build a Perl for PASE is to use an AIX host as a cross-compilation -environment. See README.os400. - -Yet another cross-compilation option has been added: now Perl builds -on OpenZaurus, an Linux distribution based on Mandrake + Embedix for -the Sharp Zaurus PDA. See the Cross/README file. - -Tru64 when using gcc 3 drops the optimisation for F to C<-O2> -because of gigantic memory use with the default C<-O3>. - -Tru64 can now build Perl with the newer Berkeley DBs. - -Building Perl on WinCE has been much enhanced, see F -and F. - -=head1 Selected Bug Fixes - -=head2 Closures, eval and lexicals - -There have been many fixes in the area of anonymous subs, lexicals and -closures. Although this means that Perl is now more "correct", it is -possible that some existing code will break that happens to rely on -the faulty behaviour. In practice this is unlikely unless your code -contains a very complex nesting of anonymous subs, evals and lexicals. - -=head2 Generic fixes - -If an input filehandle is marked C<:utf8> and Perl sees illegal UTF-8 -coming in when doing C<< >>, if warnings are enabled a warning is -immediately given - instead of being silent about it and Perl being -unhappy about the broken data later. (The C<:encoding(utf8)> layer -also works the same way.) - -binmode(SOCKET, ":utf8") only worked on the input side, not on the -output side of the socket. Now it works both ways. - -For threaded Perls certain system database functions like getpwent() -and getgrent() now grow their result buffer dynamically, instead of -failing. This means that at sites with lots of users and groups the -functions no longer fail by returning only partial results. - -Perl 5.8.0 had accidentally broken the capability for users -to define their own uppercase<->lowercase Unicode mappings -(as advertised by the Camel). This feature has been fixed and -is also documented better. - -In 5.8.0 this - - $some_unicode .= ; - -didn't work correctly but instead corrupted the data. This has now -been fixed. - -Tied methods like FETCH etc. may now safely access tied values, i.e. -resulting in a recursive call to FETCH etc. Remember to break the -recursion, though. - -At startup Perl blocks the SIGFPE signal away since there isn't much -Perl can do about it. Previously this blocking was in effect also for -programs executed from within Perl. Now Perl restores the original -SIGFPE handling routine, whatever it was, before running external -programs. - -Linenumbers in Perl scripts may now be greater than 65536, or 2**16. -(Perl scripts have always been able to be larger than that, it's just -that the linenumber for reported errors and warnings have "wrapped -around".) While scripts that large usually indicate a need to rethink -your code a bit, such Perl scripts do exist, for example as results -from generated code. Now linenumbers can go all the way to -4294967296, or 2**32. - -=head2 Platform-specific fixes - -Linux - -=over 4 - -=item * - -Setting $0 works again (with certain limitations that -Perl cannot do much about: see L) - -=back - -HP-UX - -=over 4 - -=item * - -Setting $0 now works. - -=back - -VMS - -=over 4 - -=item * - -Configuration now tests for the presence of C, and IO::Poll -now uses the vendor-supplied function if detected. - -=item * - -A rare access violation at Perl start-up could occur if the Perl image was -installed with privileges or if there was an identifier with the -subsystem attribute set in the process's rightslist. Either of these -circumstances triggered tainting code that contained a pointer bug. -The faulty pointer arithmetic has been fixed. - -=item * - -The length limit on values (not keys) in the %ENV hash has been raised -from 255 bytes to 32640 bytes (except when the PERL_ENV_TABLES setting -overrides the default use of logical names for %ENV). If it is -necessary to access these long values from outside Perl, be aware that -they are implemented using search list logical names that store the -value in pieces, each 255-byte piece (up to 128 of them) being an -element in the search list. When doing a lookup in %ENV from within -Perl, the elements are combined into a single value. The existing -VMS-specific ability to access individual elements of a search list -logical name via the $ENV{'foo;N'} syntax (where N is the search list -index) is unimpaired. - -=item * - -The piping implementation now uses local rather than global DCL -symbols for inter-process communication. - -=item * - -File::Find could become confused when navigating to a relative -directory whose name collided with a logical name. This problem has -been corrected by adding directory syntax to relative path names, thus -preventing logical name translation. - -=back - -Win32 - -=over 4 - -=item * - -A memory leak in the fork() emulation has been fixed. - -=item * - -The return value of the ioctl() built-in function was accidentally -broken in 5.8.0. This has been corrected. - -=item * - -The internal message loop executed by perl during blocking operations -sometimes interfered with messages that were external to Perl. -This often resulted in blocking operations terminating prematurely or -returning incorrect results, when Perl was executing under environments -that could generate Windows messages. This has been corrected. - -=item * - -Pipes and sockets are now automatically in binary mode. - -=item * - -The four-argument form of select() did not preserve $! (errno) properly -when there were errors in the underlying call. This is now fixed. - -=item * - -The "CR CR LF" problem of has been fixed, binmode(FH, ":crlf") -is now effectively a no-op. - -=back - -=head1 New or Changed Diagnostics - -All the warnings related to pack() and unpack() were made more -informative and consistent. - -=head2 Changed "A thread exited while %d threads were running" - -The old version - - A thread exited while %d other threads were still running - -was misleading because the "other" included also the thread giving -the warning. - -=head2 Removed "Attempt to clear a restricted hash" - -It is not illegal to clear a restricted hash, so the warning -was removed. - -=head2 New "Illegal declaration of anonymous subroutine" - -You must specify the block of code for C. - -=head2 Changed "Invalid range "%s" in transliteration operator" - -The old version - - Invalid [] range "%s" in transliteration operator - -was simply wrong because there are no "[] ranges" in tr///. - -=head2 New "Missing control char name in \c" - -Self-explanatory. - -=head2 New "Newline in left-justified string for %s" - -The padding spaces would appear after the newline, which is -probably not what you had in mind. - -=head2 New "Possible precedence problem on bitwise %c operator" - -If you think this - - $x & $y == 0 - -tests whether the bitwise AND of $x and $y is zero, -you will like this warning. - -=head2 New "read() on %s filehandle %s" - -You cannot read() (or sysread()) from a closed or unopened filehandle. - -=head2 New "Tied variable freed while still in use" - -Something pulled the plug on a live tied variable, Perl plays -safe by bailing out. - -=head2 New "To%s: illegal mapping '%s'" - -An illegal user-defined Unicode casemapping was specified. - -=head2 New "Use of freed value in iteration" - -Something modified the values being iterated over. This is not good. - -=head1 Changed Internals - -These news matter to you only if you either write XS code or like to -know about or hack Perl internals (using Devel::Peek or any of the -C modules counts), or like to run Perl with the C<-D> option. - -The embedding examples of L have been reviewed to be -up to date and consistent: for example, the correct use of -PERL_SYS_INIT3() and PERL_SYS_TERM(). - -Extensive reworking of the pad code (the code responsible -for lexical variables) has been conducted by Dave Mitchell. - -Extensive work on the v-strings by John Peacock. - -UTF-8 length and position cache: to speed up the handling of Unicode -(UTF-8) scalars, a cache was introduced. Potential problems exist if -an extension bypasses the official APIs and directly modifies the PV -of an SV: the UTF-8 cache does not get cleared as it should. - -APIs obsoleted in Perl 5.8.0, like sv_2pv, sv_catpvn, sv_catsv, -sv_setsv, are again available. - -Certain Perl core C APIs like cxinc and regatom are no longer -available at all to code outside the Perl core of the Perl core -extensions. This is intentional. They never should have been -available with the shorter names, and if you application depends on -them, you should (be ashamed and) contact perl5-porters to discuss -what are the proper APIs. - -Certain Perl core C APIs like C are no longer available -without their C prefix. If your XS module stops working -because some functions cannot be found, in many cases a simple fix is -to add the C prefix to the function and the thread context -C as the first argument of the function call. This is also how -it should always have been done: letting the Perl_-less forms to leak -from the core was an accident. For cleaner embedding you can also -force this for all APIs by defining at compile time the cpp define -PERL_NO_SHORT_NAMES. - -Perl_save_bool() has been added. - -Regexp objects (those created with C) now have S-magic rather than -R-magic. This fixed regexps of the form /...(??{...;$x})/ to no -longer ignore changes made to $x. The S-magic avoids dropping -the caching optimization and making (??{...}) constructs obscenely -slow (and consequently useless). See also L. -Regexp::Copy was affected by this change. - -The Perl internal debugging macros DEBUG() and DEB() have been renamed -to PERL_DEBUG() and PERL_DEB() to avoid namespace conflicts. - -C<-DL> removed (the leaktest had been broken and unsupported for years, -use alternative debugging mallocs or tools like valgrind and Purify). - -Verbose modifier C added for C<-DXv> and C<-Dsv>, see L. - -=head1 New Tests - -In Perl 5.8.0 there were about 69000 separate tests in about 700 test files, -in Perl 5.9.0 there are about 77000 separate tests in about 780 test files. -The exact numbers depend on the Perl configuration and on the operating -system platform. - -=head1 Known Problems - -The hash randomisation mentioned in L is definitely -problematic: it will wake dormant bugs and shake out bad assumptions. - -Many of the rarer platforms that worked 100% or pretty close to it -with perl 5.8.0 have been left a little bit untended since their -maintainers have been otherwise busy lately, and therefore there will -be more failures on those platforms. Such platforms include Mac OS -Classic, IBM z/OS (and other EBCDIC platforms), and NetWare. The most -common Perl platforms (Unix and Unix-like, Microsoft platforms, and -VMS) have large enough testing and expert population that they are -doing well. - -=head2 Tied hashes in scalar context - -Tied hashes do not currently return anything useful in scalar context, -for example when used as boolean tests: - - if (%tied_hash) { ... } - -The current nonsensical behaviour is always to return false, -regardless of whether the hash is empty or has elements. - -The root cause is that there is no interface for the implementors of -tied hashes to implement the behaviour of a hash in scalar context. - -=head2 Net::Ping 450_service and 510_ping_udp failures - -The subtests 9 and 18 of lib/Net/Ping/t/450_service.t, and the -subtest 2 of lib/Net/Ping/t/510_ping_udp.t might fail if you have -an unusual networking setup. For example in the latter case the -test is trying to send a UDP ping to the IP address 127.0.0.1. - -=head2 B::C - -The C-generating compiler backend B::C (the frontend being -C) is even more broken than it used to be because of -the extensive lexical variable changes. (The good news is that -B::Bytecode and ByteLoader are better than they used to be.) - -=head1 Platform Specific Problems - -=head2 EBCDIC Platforms - -IBM z/OS and other EBCDIC platforms continue to be problematic -regarding Unicode support. Many Unicode tests are skipped when -they really should be fixed. - -=head2 Cygwin 1.5 problems - -In Cygwin 1.5 the F and F tests have failures for -some yet unknown reason. In 1.5.5 the threads tests stress_cv, -stress_re, and stress_string are failing unless the environment -variable PERLIO is set to "perlio" (which makes also the io/tell -failure go away). - -Perl 5.8.1 does build and work well with Cygwin 1.3: with (uname -a) -C -a 100% "make test" was achieved with C. - -=head2 HP-UX: HP cc warnings about sendfile and sendpath - -With certain HP C compiler releases (e.g. B.11.11.02) you will -get many warnings like this (lines wrapped for easier reading): - - cc: "/usr/include/sys/socket.h", line 504: warning 562: - Redeclaration of "sendfile" with a different storage class specifier: - "sendfile" will have internal linkage. - cc: "/usr/include/sys/socket.h", line 505: warning 562: - Redeclaration of "sendpath" with a different storage class specifier: - "sendpath" will have internal linkage. - -The warnings show up both during the build of Perl and during certain -lib/ExtUtils tests that invoke the C compiler. The warning, however, -is not serious and can be ignored. - -=head2 IRIX: t/uni/tr_7jis.t falsely failing - -The test t/uni/tr_7jis.t is known to report failure under 'make test' -or the test harness with certain releases of IRIX (at least IRIX 6.5 -and MIPSpro Compilers Version 7.3.1.1m), but if run manually the test -fully passes. - -=head2 Mac OS X: no usemymalloc - -The Perl malloc (C<-Dusemymalloc>) does not work at all in Mac OS X. -This is not that serious, though, since the native malloc works just -fine. - -=head2 Tru64: No threaded builds with GNU cc (gcc) - -In the latest Tru64 releases (e.g. v5.1B or later) gcc cannot be used -to compile a threaded Perl (-Duseithreads) because the system -C<< >> file doesn't know about gcc. - -=head2 Win32: sysopen, sysread, syswrite - -As of the 5.8.0 release, sysopen()/sysread()/syswrite() do not behave -like they used to in 5.6.1 and earlier with respect to "text" mode. -These built-ins now always operate in "binary" mode (even if sysopen() -was passed the O_TEXT flag, or if binmode() was used on the file -handle). Note that this issue should only make a difference for disk -files, as sockets and pipes have always been in "binary" mode in the -Windows port. As this behavior is currently considered a bug, -compatible behavior may be re-introduced in a future release. Until -then, the use of sysopen(), sysread() and syswrite() is not supported -for "text" mode operations. - -=head1 TODO - -Here are some things that are planned for perl 5.10.0 : - -=over 4 - -=item * - -Various Copy-On-Write techniques will be investigated in hopes -of speeding up Perl. - -=item * - -CPANPLUS, Inline, and Module::Build will become core modules. - -=item * - -The ability to write true lexically scoped pragmas will be introduced, -perhaps via a C pragma. - -=item * - -Work will continue on the bytecompiler and byteloader. - -=item * - -v-strings as they currently exist are scheduled to be deprecated. The -v-less form (1.2.3) will become a "version object" when used with C, -C, and C<$VERSION>. $^V will also be a "version object" so the -printf("%vd",...) construct will no longer be needed. The v-ful version -(v1.2.3) will become obsolete. The equivalence of strings and v-strings (e.g. -that currently 5.8.0 is equal to "\5\8\0") will go away. B, though: it is quite hard to detect when -v-strings are being used safely, and when they are not. - -=back - -=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 F. There may also be -information at F, the Perl Home Page. - -If you believe you have an unreported bug, please run the B -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. You can browse and search -the Perl 5 bugs at F. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl591delta.pod b/pod/perl591delta.pod deleted file mode 100644 index 349c49a40f2..00000000000 --- a/pod/perl591delta.pod +++ /dev/null @@ -1,323 +0,0 @@ -=head1 NAME - -perl591delta - what is new for perl v5.9.1 - -=head1 DESCRIPTION - -This document describes differences between the 5.9.0 and the 5.9.1 -development releases. See L for the differences between -5.8.0 and 5.9.0. - -=head1 Incompatible Changes - -=head2 substr() lvalues are no longer fixed-length - -The lvalues returned by the three argument form of substr() used to be a -"fixed length window" on the original string. In some cases this could -cause surprising action at distance or other undefined behaviour. Now the -length of the window adjusts itself to the length of the string assigned to -it. - -=head2 The C<:unique> attribute is only meaningful for globals - -Now applying C<:unique> to lexical variables and to subroutines will -result in a compilation error. - -=head1 Core Enhancements - -=head2 Lexical C<$_> - -The default variable C<$_> can now be lexicalized, by declaring it like -any other lexical variable, with a simple - - my $_; - -The operations that default on C<$_> will use the lexically-scoped -version of C<$_> when it exists, instead of the global C<$_>. - -In a C or a C block, if C<$_> was previously my'ed, then the -C<$_> inside the block is lexical as well (and scoped to the block). - -In a scope where C<$_> has been lexicalized, you can still have access to -the global version of C<$_> by using C<$::_>, or, more simply, by -overriding the lexical declaration with C. - -=head2 Tied hashes in scalar context - -As of perl 5.8.2/5.9.0, tied hashes did not return anything useful in -scalar context, for example when used as boolean tests: - - if (%tied_hash) { ... } - -The old nonsensical behaviour was always to return false, -regardless of whether the hash is empty or has elements. - -There is now an interface for the implementors of tied hashes to implement -the behaviour of a hash in scalar context, via the SCALAR method (see -L). Without a SCALAR method, perl will try to guess whether -the hash is empty, by testing if it's inside an iteration (in this case -it can't be empty) or by calling FIRSTKEY. - -=head2 Formats - -Formats were improved in several ways. A new field, C<^*>, can be used for -variable-width, one-line-at-a-time text. Null characters are now handled -correctly in picture lines. Using C<@#> and C<~~> together will now -produce a compile-time error, as those format fields are incompatible. -L has been improved, and miscellaneous bugs fixed. - -=head2 Stacked filetest operators - -As a new form of syntactic sugar, it's now possible to stack up filetest -operators. You can now write C<-f -w -x $file> in a row to mean -C<-x $file && -w _ && -f _>. See L. - -=head1 Modules and Pragmata - -=over 4 - -=item Benchmark - -In C, cmpthese() and timestr() now use the time statistics of -children instead of parent when the selected style is 'nop'. - -=item Carp - -The error messages produced by C now include spaces between the -arguments in function argument lists: this makes long error messages -appear more nicely in browsers and other tools. - -=item Exporter - -C will now recognize grouping tags (such as C<:name>) anywhere -in the import list, not only at the beginning. - -=item FindBin - -A function C is provided to resolve problems where modules in different -directories wish to use FindBin. - -=item List::Util - -You can now weaken references to read only values. - -=item threads::shared - -C has a new two argument form. C has been added. - -=back - -=head1 Utility Changes - -C now assumes C<-print> as a default action. Previously, it -needed to be specified explicitly. - -A new utility, C, makes it easy to run an individual regression test -at the command line. C is part of Test::Harness, which users of earlier -Perl versions can install from CPAN. - -The perl debugger now supports a C command, to save the current -history to a file, and an C command, which prints the inheritance tree -of its argument (if the C module is installed.) - -=head1 Documentation - -The documentation has been revised in places to produce more standard manpages. - -The long-existing feature of C regexps setting C<$_> and pos() -is now documented. - -=head1 Performance Enhancements - -Sorting arrays in place (C<@a = sort @a>) is now optimized to avoid -making a temporary copy of the array. - -The operations involving case mapping on UTF-8 strings (uc(), lc(), -C, etc.) have been greatly speeded up. - -Access to elements of lexical arrays via a numeric constant between 0 and -255 is now faster. (This used to be only the case for global arrays.) - -=head1 Selected Bug Fixes - -=head2 UTF-8 bugs - -Using substr() on a UTF-8 string could cause subsequent accesses on that -string to return garbage. This was due to incorrect UTF-8 offsets being -cached, and is now fixed. - -join() could return garbage when the same join() statement was used to -process 8 bit data having earlier processed UTF-8 data, due to the flags -on that statement's temporary workspace not being reset correctly. This -is now fixed. - -Using Unicode keys with tied hashes should now work correctly. - -chop() and chomp() used to mangle UTF-8 strings. This has been fixed. - -sprintf() used to misbehave when the format string was in UTF-8. This is -now fixed. - -=head2 Threading bugs - -Hashes with the C<:unique> attribute weren't made read-only in new -threads. They are now. - -=head2 More bugs - -C<$a .. $b> will now work as expected when either $a or $b is C. - -Reading $^E now preserves $!. Previously, the C code implementing $^E -did not preserve C, so reading $^E could cause C and therefore -C<$!> to change unexpectedly. - -C wasn't in effect in regexp-eval blocks (C). - -=head1 New or Changed Diagnostics - -A new deprecation warning, I, -has been added, to warn against the use of the dubious and deprecated -construct - - my $x if 0; - -See L. - -The fatal error I is now -documented in L. - -A new error, I<%ENV is aliased to %s>, is produced when taint checks are -enabled and when C<*ENV> has been aliased (and thus doesn't reflect the -program's environment anymore.) - -=head1 Changed Internals - -These news matter to you only if you either write XS code or like to -know about or hack Perl internals (using Devel::Peek or any of the -C modules counts), or like to run Perl with the C<-D> option. - -=head2 Reordering of SVt_* constants - -The relative ordering of constants that define the various types of C -have changed; in particular, C has been moved before C, -C, C and C. This is unlikely to make any -difference unless you have code that explicitly makes assumptions about that -ordering. (The inheritance hierarchy of C objects has been changed -to reflect this.) - -=head2 Removal of CPP symbols - -The C preprocessor symbols C and -C, which were supposed to give the version number of -the oldest perl binary-compatible (resp. source-compatible) with the -present one, were not used, and sometimes had misleading values. They have -been removed. - -=head2 Less space is used by ops - -The C structure now uses less space. The C field has been -removed and replaced by two one-bit fields, C and C. -C is now 9 bits long. (Consequently, the C class doesn't -provide an C method anymore.) - -=head2 New parser - -perl's parser is now generated by bison (it used to be generated by -byacc.) As a result, it seems to be a bit more robust. - -=head1 Configuration and Building - -C now invokes callbacks regardless of the value of the variable -they are called for. Previously callbacks were only invoked in the -C branch. This change should only affect platform -maintainers writing configuration hints files. - -The portability and cleanliness of the Win32 makefiles has been improved. - -=head1 Known Problems - -There are still a couple of problems in the implementation of the lexical -C<$_>: it doesn't work inside C blocks and with regard to the -reverse() built-in used without arguments. (See the TODO tests in -F.) - -=head2 Platform Specific Problems - -The test F may fail on OpenBSD. This hasn't been -diagnosed yet. - -On some configurations on AIX 5, one test in F fails. -When configured with long doubles, perl may fail tests 224-236 in -F on the same platform. - -For threaded builds, F has been reported to -fail some tests on HP-UX 10.20. - -=head1 To-do for perl 5.10.0 - -This is a non-exhaustive, non-ordered, non-contractual and non-definitive -list of things to do (or nice to have) for perl 5.10.0 : - -Clean up and finish support for assertions. See L. - -Reimplement the mechanism of lexical pragmas to be more extensible. Fix -current pragmas that don't work well (or at all) with lexical scopes or in -run-time eval(STRING) (C, C, C for example). MJD has a -preliminary patch that implements this. - -Fix (or rewrite) the implementation of the C closures. - -Conversions from byte strings to UTF-8 currently map high bit characters -to Unicode without translation (or, depending on how you look at it, by -implicitly assuming that the byte strings are in Latin-1). As perl assumes -the C locale by default, upgrading a string to UTF-8 may change the -meaning of its contents regarding character classes, case mapping, etc. -This should probably emit a warning (at least). - -Introduce a new special block, UNITCHECK, which is run at the end of a -compilation unit (module, file, eval(STRING) block). This will correspond to -the Perl 6 CHECK. Perl 5's CHECK cannot be changed or removed because the -O.pm/B.pm backend framework depends on it. - -Study the possibility of adding a new prototype character, C<_>, meaning -"this argument defaults to $_". - -Make the peephole optimizer optional. - -Allow lexical aliases (maybe via the syntax C. - -Fix the bugs revealed by running the test suite with the C<-t> switch (via -C). - -Make threads more robust. - -Make C and C work (opposite of C, etc.). - -A test suite for the B module would be nice. - -A ponie. - -=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://bugs.perl.org/ . 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 -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl592delta.pod b/pod/perl592delta.pod deleted file mode 100644 index db8be417d2b..00000000000 --- a/pod/perl592delta.pod +++ /dev/null @@ -1,342 +0,0 @@ -=head1 NAME - -perl592delta - what is new for perl v5.9.2 - -=head1 DESCRIPTION - -This document describes differences between the 5.9.1 and the 5.9.2 -development releases. See L and L for the -differences between 5.8.0 and 5.9.1. - -=head1 Incompatible Changes - -=head2 Packing and UTF-8 strings - -The semantics of pack() and unpack() regarding UTF-8-encoded data has been -changed. Processing is now by default character per character instead of -byte per byte on the underlying encoding. Notably, code that used things -like C to see through the encoding of string will now -simply get back the original $string. Packed strings can also get upgraded -during processing when you store upgraded characters. You can get the old -behaviour by using C. - -To be consistent with pack(), the C in unpack() templates indicates -that the data is to be processed in character mode, i.e. character by -character; on the contrary, C in unpack() indicates UTF-8 mode, where -the packed string is processed in its UTF-8-encoded Unicode form on a byte -by byte basis. This is reversed with regard to perl 5.8.X. - -Moreover, C and C can also be used in pack() templates to specify -respectively character and byte modes. - -C and C in the middle of a pack or unpack format now switch to the -specified encoding mode, honoring parens grouping. Previously, parens were -ignored. - -Also, there is a new pack() character format, C, which is intended to -replace the old C. C is kept for unsigned chars coded as bytes in -the strings internal representation. C represents unsigned (logical) -character values, which can be greater than 255. It is therefore more -robust when dealing with potentially UTF-8-encoded data (as C will wrap -values outside the range 0..255, and not respect the string encoding). - -In practice, that means that pack formats are now encoding-neutral, except -C. - -For consistency, C in unpack() format now trims all Unicode whitespace -from the end of the string. Before perl 5.9.2, it used to strip only the -classical ASCII space characters. - -=head2 Miscellaneous - -The internal dump output has been improved, so that non-printable characters -such as newline and backspace are output in C<\x> notation, rather than -octal. - -The B<-C> option can no longer be used on the C<#!> line. It wasn't -working there anyway. - -=head1 Core Enhancements - -=head2 Malloc wrapping - -Perl can now be built to detect attempts to assign pathologically large chunks -of memory. Previously such assignments would suffer from integer wrap-around -during size calculations causing a misallocation, which would crash perl, and -could theoretically be used for "stack smashing" attacks. The wrapping -defaults to enabled on platforms where we know it works (most AIX -configurations, BSDi, Darwin, DEC OSF/1, FreeBSD, HP-UX, GNU Linux, OpenBSD, -Solaris, VMS and most Win32 compilers) and defaults to disabled on other -platforms. - -=head2 Unicode Character Database 4.0.1 - -The copy of the Unicode Character Database included in Perl 5.9 has -been updated to 4.0.1 from 4.0.0. - -=head2 suidperl less insecure - -Paul Szabo has analysed and patched C to remove existing known -insecurities. Currently there are no known holes in C, but previous -experience shows that we cannot be confident that these were the last. You may -no longer invoke the set uid perl directly, so to preserve backwards -compatibility with scripts that invoke #!/usr/bin/suidperl the only set uid -binary is now CI (C for this release). C -is installed as a hard link to C; both C and C will -invoke C automatically the set uid binary, so this change should -be completely transparent. - -For new projects the core perl team would strongly recommend that you use -dedicated, single purpose security tools such as C in preference to -C. - -=head2 PERLIO_DEBUG - -The C environment variable has no longer any effect for -setuid scripts and for scripts run with B<-T>. - -Moreover, with a thread-enabled perl, using C could lead to -an internal buffer overflow. This has been fixed. - -=head2 Formats - -In addition to bug fixes, C's features have been enhanced. See -L. - -=head2 Unicode Character Classes - -Perl's regular expression engine now contains support for matching on the -intersection of two Unicode character classes. You can also now refer to -user-defined character classes from within other user defined character -classes. - -=head2 Byte-order modifiers for pack() and unpack() - -There are two new byte-order modifiers, C> (big-endian) and C> -(little-endian), that can be appended to most pack() and unpack() template -characters and groups to force a certain byte-order for that type or group. -See L and L for details. - -=head2 Byte count feature in pack() - -A new pack() template character, C<".">, returns the number of characters -read so far. - -=head2 New variables - -A new variable, ${^RE_DEBUG_FLAGS}, controls what debug flags are in -effect for the regular expression engine when running under C. See L for details. - -A new variable ${^UTF8LOCALE} indicates where a UTF-8 locale was detected -by perl at startup. - -=head1 Modules and Pragmata - -=head2 New modules - -=over 4 - -=item * - -C, by Audrey Tang, is a module to emit warnings -whenever an ASCII character string containing high-bit bytes is implicitly -converted into UTF-8. - -=item * - -C, by Richard Clamp, is a small handy module that tells -you what versions of core modules ship with any versions of Perl 5. It -comes with a command-line frontend, C. - -=back - -=head2 Updated And Improved Modules and Pragmata - -Dual-lived modules have been updated to be kept up-to-date with respect to -CPAN. - -The dual-lived modules which contain an C<_> in their version number are -actually I of the corresponding CPAN release. - -=over 4 - -=item B::Concise - -C was significantly improved. - -=item Socket - -There is experimental support for Linux abstract Unix domain sockets. - -=item Sys::Syslog - -C can now use numeric constants for facility names and priorities, -in addition to strings. - -=item threads - -Detached threads are now also supported on Windows. - -=back - -=head1 Utility Changes - -=over 4 - -=item * - -The C utility is now installed with perl (see L -above). - -=item * - -C and C have been made a bit more robust with regard to -"modern" C code. - -=item * - -Several bugs have been fixed in C, regarding C<-exec> and -C<-eval>. Also the options C<-path>, C<-ipath> and C<-iname> have been -added. - -=item * - -The Perl debugger can now save all debugger commands for sourcing later; -notably, it can now emulate stepping backwards, by restarting and -rerunning all bar the last command from a saved command history. - -It can also display the parent inheritance tree of a given class. - -Perl has a new -dt command-line flag, which enables threads support in the -debugger. - -=back - -=head1 Performance Enhancements - -=over 4 - -=item * - -Unicode case mappings (C, C, C, etc) are faster. - -=item * - -C<@a = sort @a> was optimized to do in-place sort. Likewise, C is now optimized to sort in reverse, avoiding the generation of -a temporary intermediate list. - -=item * - -Unnecessary assignments are optimised away in - - my $s = undef; - my @a = (); - my %h = (); - -=item * - -C in scalar context is now optimized. - -=item * - -The regexp engine now implements the trie optimization : it's able to -factor out common prefixes and suffixes in regular expressions. A new -special variable, ${^RE_TRIE_MAXBUF}, has been added to fine-tune this -optimization. - -=back - -=head1 Installation and Configuration Improvements - -Run-time customization of @INC can be enabled by passing the -C<-Dusesitecustomize> flag to configure. When enabled, this will make perl -run F<$sitelibexp/sitecustomize.pl> before anything else. This script can -then be set up to add additional entries to @INC. - -There is alpha support for relocatable @INC entries. - -Perl should build on Interix and on GNU/kFreeBSD. - -=head1 Selected Bug Fixes - -Most of those bugs were reported in the perl 5.8.x maintenance track. -Notably, quite a few utf8 bugs were fixed, and several memory leaks were -suppressed. The perl58Xdelta manpages have more details on them. - -Development-only bug fixes include : - -C<$Foo::_> was wrongly forced as C<$main::_>. - -=head1 New or Changed Diagnostics - -A new warning, C, is emitted to prevent this misspelling -of the non-matching operator. - -The warning I has been removed. - -The error I has been reformulated to be more -descriptive. - -There is a new compilation error, I, -for an obscure case of syntax errors. - -The diagnostic output of Carp has been changed slightly, to add a space after -the comma between arguments. This makes it much easier for tools such as -web browsers to wrap it, but might confuse any automatic tools which perform -detailed parsing of Carp output. - -C has several improvements, making it more useable from shell -scripts to get the value of configuration variables. See L for -details. - -=head1 Changed Internals - -The perl core has been refactored and reorganised in several places. -In short, this release will not be binary compatible with any previous -perl release. - -=head1 Known Problems - -For threaded builds, F has been reported to -fail some tests on HP-UX 10.20. - -Net::Ping might fail some tests on HP-UX 11.00 with the latest OS -upgrades. - -F, F and F fail some -tests on some BSD flavours. - -=head1 Plans for the next release - -The current plan for perl 5.9.3 is to add CPANPLUS as a core module. -More regular expression optimizations are also in the works. - -It is planned to release a development version of perl more frequently, -i.e. each time something major changes. - -=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://bugs.perl.org/ . 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 -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl593delta.pod b/pod/perl593delta.pod deleted file mode 100644 index 11f53ab0885..00000000000 --- a/pod/perl593delta.pod +++ /dev/null @@ -1,551 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl593delta - what is new for perl v5.9.3 - -=head1 DESCRIPTION - -This document describes differences between the 5.9.2 and the 5.9.3 -development releases. See L, L and -L for the differences between 5.8.0 and 5.9.2. - -=head1 Incompatible Changes - -=head2 Parsing of C<-f _> - -The identifier C<_> is now forced to be a bareword after a filetest -operator. This solves a number of misparsing issues when a global C<_> -subroutine is defined. - -=head2 C - -C without arguments now defaults to C<$_>. - -=head2 Magic goto and eval - -The construct C is now disallowed. (Note that the -similar construct, but with C instead, was already forbidden.) - -=head2 C<$#> has been removed - -The deprecated C<$#> variable (output format for numbers) has been -removed. A new warning, C<$# is no longer supported>, has been added. - -=head2 C<:unique> - -The C<:unique> attribute has been made a no-op, since its current -implementation was fundamentally flawed and not threadsafe. - -=head2 Scoping of the C pragma - -The C pragma is now lexically scoped. Its effect used to be global. - -=head1 Core Enhancements - -=head2 The C pragma - -The C pragma is used to enable new syntax that would break Perl's -backwards-compatibility with older releases of the language. It's a lexical -pragma, like C or C. - -Currently the following new features are available: C (adds a -switch statement), C<~~> (adds a Perl 6-like smart match operator), C -(adds a C built-in function), and C (adds an C keyword). -Those features are described below. - -Note that C low-precedence defined-or operator used to be enabled by -default (although as a weak keyword, meaning that any function would -override it). It's now only recognized when explicitly turned on (and is -then a regular keyword). - -Those features, and the C pragma itself, have been contributed by -Robin Houston. - -=head2 Switch and Smart Match operator - -Perl 5 now has a switch statement. It's available when C is in effect. This feature introduces three new keywords, -C, C, and C: - - given ($foo) { - when (/^abc/) { $abc = 1; } - when (/^def/) { $def = 1; } - when (/^xyz/) { $xyz = 1; } - default { $nothing = 1; } - } - -A more complete description of how Perl matches the switch variable -against the C conditions is given in L. - -This kind of match is called I, and it's also possible to use -it outside of switch statements, via the new C<~~> operator (enabled via -the C directive). See L. - -=head2 C - -say() is a new built-in, only available when C is in -effect, that is similar to print(), but that implicitly appends a newline -to the printed string. See L. - -=head2 C - -Perl has now support for the C special subroutine. Like -C, C is called once per package; however, it is called -just before cloning starts, and in the context of the parent thread. If it -returns a true value, then no objects of that class will be cloned. See -L for details. (Contributed by Dave Mitchell.) - -=head2 C<${^CHILD_ERROR_NATIVE}> - -A new internal variable, C<${^CHILD_ERROR_NATIVE}>, gives the native -status returned by the last pipe close, backtick command, successful call -to wait() or waitpid(), or from the system() operator. See L for -details. (Contributed by Gisle Aas.) - -=head2 Assertions - -The support for assertions, introduced in perl 5.9.0, has been improved. -The syntax for the C<-A> command-line switch has changed; it now accepts -an optional module name, defaulting to C. See -L and L. (Contributed by Salvador Fandiño García.) - -=head2 Unicode Character Database 4.1.0 - -The copy of the Unicode Character Database included in Perl 5.9 has -been updated to 4.1.0. - -=head2 C - -You can now use C followed by a version number to specify that you -want to use a version of perl older than the specified one. - -=head2 Recursive sort subs - -You can now use recursive subroutines with sort(), thanks to Robin Houston. - -=head2 Effect of pragmas in eval - -The compile-time value of the C<%^H> hint variable can now propagate into -eval("")uated code. This makes it more useful to implement lexical -pragmas. - -As a side-effect of this, the overloaded-ness of constants now propagates -into eval(""). - -=head2 New B<-E> command-line switch - -B<-E> is equivalent to B<-e>, but it implicitly enables all -optional features (like C). - -=head2 C, C and C on filehandles - -C, C and C can now work on filehandles as well as -filenames, if the system supports respectively C, C and -C, thanks to a patch provided by Gisle Aas. - -=head2 OS groups - -C<$(> and C<$)> now return groups in the order where the OS returns them, -thanks to Gisle Aas. This wasn't previously the case. - -=head1 Modules and Pragmata - -=head2 New Core Modules - -=over 4 - -=item * - -A new pragma, C, has been added; see above in L. - -=item * - -C, also available on CPAN, allows the use of assertions on -perl versions prior to 5.9.0 (that is the first one to natively support -them). - -=item * - -C is an XS-enabled, and thus faster, version of -C. - -=item * - -C is an interface to the zlib compression library. It -comes with a bundled version of zlib, so having a working zlib is not a -prerequisite to install it. It's used by C (see below). - -=item * - -C is an C-style interface to C. - -=item * - -C is a module to manipulate C archives. - -=item * - -C is a module used to calculate many types of SHA digests, -has been included for SHA support in the CPAN module. - -=item * - -C and C have been added. - -=back - -=head1 Utility Changes - -=head2 C - -C is a pure perl implementation of C, that comes with -C. - -=head2 C - -C is a small script used to generate a diff between the contents -of a tar archive and a directory tree. Like C, it comes with -C. - -=head2 C - -This command-line utility, used to print or to check SHA digests, comes -with the new C module. - -=head2 C enhancements - -C implements a new option C<--use-xsloader> to force use of -C even in backwards compatible modules. - -The handling of authors' names that had apostrophes has been fixed. - -Any enums with negative values are now skipped. - -=head2 C enhancements - -C no longer checks for F<*.ph> files by default. Use the new C<-a> -option to run I tests. - -=head1 Documentation - -=head2 Perl Glossary - -The L manpage is a glossary of terms used in the Perl -documentation, technical and otherwise, kindly provided by O'Reilly Media, -Inc. - -L now lists a rough roadmap to Perl 5.10. - -=head1 Performance Enhancements - -=head2 XS-assisted SWASHGET - -Some pure-perl code that perl was using to retrieve Unicode properties and -transliteration mappings has been reimplemented in XS. - -=head2 Constant subroutines - -The interpreter internals now support a far more memory efficient form of -inlineable constants. Storing a reference to a constant value in a symbol -table is equivalent to a full typeglob referencing a constant subroutine, -but using about 400 bytes less memory. This proxy constant subroutine is -automatically upgraded to a real typeglob with subroutine if necessary. -The approach taken is analogous to the existing space optimisation for -subroutine stub declarations, which are stored as plain scalars in place -of the full typeglob. - -Several of the core modules have been converted to use this feature for -their system dependent constants - as a result C now takes about -200K less memory. - -=head2 C - -The new compilation flag C, introduced as an option -in perl 5.8.8, is turned on by default in perl 5.9.3. It prevents perl -from creating an empty scalar with every new typeglob. See L -for details. - -=head2 Weak references are cheaper - -Weak reference creation is now I rather than I, courtesy of -Nicholas Clark. Weak reference deletion remains I, but if deletion only -happens at program exit, it may be skipped completely. - -=head2 sort() enhancements - -Salvador Fandiño provided improvements to reduce the memory usage of C -and to speed up some cases. - -=head1 Installation and Configuration Improvements - -=head2 Compilation improvements - -Parallel makes should work properly now, although there may still be problems -if C is instructed to run in parallel. - -Building with Borland's compilers on Win32 should work more smoothly. In -particular Steve Hay has worked to side step many warnings emitted by their -compilers and at least one C compiler internal error. - -Perl extensions on Windows now can be statically built into the Perl DLL, -thanks to a work by Vadim Konovalov. - -=head2 New Or Improved Platforms - -Perl is being ported to Symbian OS. See L for more -information. - -The VMS port has been improved. See L. - -DynaLoader::dl_unload_file() now works on Windows. - -Portability of Perl on various recent compilers on Windows has been -improved (Borland C++, Visual C++ 7.0). - -=head2 New probes - -C will now detect C and C, thanks to a -patch from Alan Burlison. It will also probe for C (and use it -internally if available), and whether C correctly returns the -length of the formatted string. - -=head2 Module auxiliary files - -README files and changelogs for CPAN modules bundled with perl are no -longer installed. - -=head1 Selected Bug Fixes - -=head2 C - -C was ignoring taking a hard reference in an argument -to defined(), as in : - - use strict "refs"; - my $x = "foo"; - if (defined $$x) {...} - -This now correctly produces the run-time error C. (However, C and -C are still allowed. Those constructs are discouraged -anyway.) - -=head2 Calling CORE::require() - -CORE::require() and CORE::do() were always parsed as require() and do() -when they were overridden. This is now fixed. - -=head2 Subscripts of slices - -You can now use a non-arrowed form for chained subscripts after a list -slice, like in: - - ({foo => "bar"})[0]{foo} - -This used to be a syntax error; a C<< -> >> was required. - -=head2 Remove over-optimisation - -Perl 5.9.2 introduced a change so that assignments of C to a -scalar, or of an empty list to an array or a hash, were optimised out. As -this could cause problems when C jumps were involved, this change -was backed out. - -=head2 sprintf() fixes - -Using the sprintf() function with some formats could lead to a buffer -overflow in some specific cases. This has been fixed, along with several -other bugs, notably in bounds checking. - -In related fixes, it was possible for badly written code that did not follow -the documentation of C to have formatting vulnerabilities. -C has been changed to protect people from poor quality third -party code. - -=head2 no warnings 'category' works correctly with -w - -Previously when running with warnings enabled globally via C<-w>, selective -disabling of specific warning categories would actually turn off all warnings. -This is now fixed; now C will only turn off warnings in the -C class. Previously it would erroneously turn off all warnings. - -=head2 Smaller fixes - -=over 4 - -=item * - -C now works better with directories where access rights are more -restrictive than usual. - -=item * - -Several memory leaks in ithreads were closed. Also, ithreads were made -less memory-intensive. - -=item * - -Trailing spaces are now trimmed from C<$!> and C<$^E>. - -=item * - -Operations that require perl to read a process's list of groups, such as reads -of C<$(> and C<$)>, now dynamically allocate memory rather than using a -fixed sized array. The fixed size array could cause C stack exhaustion on -systems configured to use large numbers of groups. - -=item * - -C now works better with non-default C<$/> settings. - -=item * - -The C repetition operator is now able to operate on C lists. This -used to raise a syntax error. - -=item * - -The debugger now traces correctly execution in eval("")uated code that -contains #line directives. - -=item * - -The value of the C pragma is no longer ignored for three-argument -opens. - -=item * - -Perl will now use the C library calls C and C if present -to delete keys from C<%ENV> and delete C<%ENV> entirely, thanks to a patch -from Alan Burlison. - -=back - -=head2 More Unicode Fixes - -=over 4 - -=item * - -chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement -character, unless when the C pragma is in effect, where the low -eight bytes of the value are used. - -=item * - -Some case insensitive matches between UTF-8 encoded data and 8 bit regexps, -and vice versa, could give malformed character warnings. These have been -fixed by Dave Mitchell and Yves Orton. - -=item * - -C and C could corrupt the string for certain cases where -the length UTF-8 encoding of the string in lower case, upper case or title -case differed. This was fixed by Nicholas Clark. - -=back - -=head1 New or Changed Diagnostics - -=head2 Attempt to set length of freed array - -This is a new warning, produced in situations like the following one: - - $r = do {my @a; \$#a}; - $$r = 503; - -=head2 Non-string passed as bitmask - -This is a new warning, produced when number has been passed as a argument to -select(), instead of a bitmask. - - # Wrong, will now warn - $rin = fileno(STDIN); - ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout); - - # Should be - $rin = ''; - vec($rin,fileno(STDIN),1) = 1; - ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout); - -=head2 Search pattern not terminated or ternary operator parsed as search pattern - -This syntax error indicates that the lexer couldn't find the final -delimiter of a C construct. Mentioning the ternary operator in -this error message makes syntax diagnostic easier. - -=head2 "%s" variable %s masks earlier declaration - -This warning is now emitted in more consistent cases; in short, when one -of the declarations involved is a C variable: - - my $x; my $x; # warns - my $x; our $x; # warns - our $x; my $x; # warns - -On the other hand, the following: - - our $x; our $x; - -now gives a C<"our" variable %s redeclared> warning. - -=head2 readdir()/closedir()/etc. attempted on invalid dirhandle - -These new warnings are now emitted when a dirhandle is used but is -either closed or not really a dirhandle. - -=head1 Changed Internals - -In general, the source code of perl has been refactored, tied up, and -optimized in many places. Also, memory management and allocation has been -improved in a couple of points. - -Andy Lester supplied many improvements to determine which function -parameters and local variables could actually be declared C to the C -compiler. Steve Peters provided new C<*_set> macros and reworked the core to -use these rather than assigning to macros in LVALUE context. - -Dave Mitchell improved the lexer debugging output under C<-DT>. - -A new file, F, has been added. It contains functions that are -no longer used in the perl core, but that remain available for binary or -source compatibility reasons. However, those functions will not be -compiled in if you add C<-DNO_MATHOMS> in the compiler flags. - -The C macro has been removed. - -The C functions, used to manipulate arrays, no longer accept null -C parameters. - -=head2 B:: modules inheritance changed - -The inheritance hierarchy of C modules has changed; C now -inherits from C (it used to inherit from C). - -=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://bugs.perl.org/ . 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 -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl594delta.pod b/pod/perl594delta.pod deleted file mode 100644 index aa4358bc504..00000000000 --- a/pod/perl594delta.pod +++ /dev/null @@ -1,382 +0,0 @@ -=head1 NAME - -perl594delta - what is new for perl v5.9.4 - -=head1 DESCRIPTION - -This document describes differences between the 5.9.3 and the 5.9.4 -development releases. See L, L, L -and L for the differences between 5.8.0 and 5.9.3. - -=head1 Incompatible Changes - -=head2 chdir FOO - -A bareword argument to chdir() is now recognized as a file handle. -Earlier releases interpreted the bareword as a directory name. -(Gisle Aas) - -=head2 Handling of pmc files - -An old feature of perl was that before C or C look for a -file with a F<.pm> extension, they will first look for a similar filename -with a F<.pmc> extension. If this file is found, it will be loaded in -place of any potentially existing file ending in a F<.pm> extension. - -Previously, F<.pmc> files were loaded only if more recent than the -matching F<.pm> file. Starting with 5.9.4, they'll be always loaded if -they exist. (This trick is used by Pugs.) - -=head2 @- and @+ in patterns - -The special arrays C<@-> and C<@+> are no longer interpolated in regular -expressions. (Sadahiro Tomoyuki) - -=head2 $AUTOLOAD can now be tainted - -If you call a subroutine by a tainted name, and if it defers to an -AUTOLOAD function, then $AUTOLOAD will be (correctly) tainted. -(Rick Delaney) - -=head1 Core Enhancements - -=head2 state() variables - -A new class of variables has been introduced. State variables are similar -to C variables, but are declared with the C keyword in place of -C. They're visible only in their lexical scope, but their value is -persistent: unlike C variables, they're not undefined at scope entry, -but retain their previous value. (Rafael Garcia-Suarez) - -To use state variables, one needs to enable them by using - - use feature "state"; - -or by using the C<-E> command-line switch in one-liners. - -See L. - -=head2 UNIVERSAL::DOES() - -The C class has a new method, C. It has been added to -solve semantic problems with the C method. C checks for -inheritance, while C has been designed to be overridden when -module authors use other types of relations between classes (in addition -to inheritance). (chromatic) - -See L<< UNIVERSAL/"$obj->DOES( ROLE )" >>. - -=head2 Exceptions in constant folding - -The constant folding routine is now wrapped in an exception handler, and -if folding throws an exception (such as attempting to evaluate 0/0), perl -now retains the current optree, rather than aborting the whole program. -(Nicholas Clark, Dave Mitchell) - -=head2 Source filters in @INC - -It's possible to enhance the mechanism of subroutine hooks in @INC by -adding a source filter on top of the filehandle opened and returned by the -hook. This feature was planned a long time ago, but wasn't quite working -until now. See L for details. (Nicholas Clark) - -=head2 MAD - -MAD, which stands for I, is a -still-in-development work leading to a Perl 5 to Perl 6 converter. To -enable it, it's necessary to pass the argument C<-Dmad> to Configure. The -obtained perl isn't binary compatible with a regular perl 5.9.4, and has -space and speed penalties; moreover not all regression tests still pass -with it. (Larry Wall, Nicholas Clark) - -=head1 Modules and Pragmas - -=over 4 - -=item * - -C is now a lexical pragma. (Although on older perls, -which don't have support for lexical pragmas, it keeps its global -behaviour.) (Audrey Tang) - -=item * - -C is now a dual-life module, also available on CPAN. It has been -expanded in many ways. A kill() method is available for thread signalling. -One can get thread status, or the list of running or joinable threads. - -A new C<< threads->exit() >> method is used to exit from the application -(this is the default for the main thread) or from the current thread only -(this is the default for all other threads). On the other hand, the exit() -built-in now always causes the whole application to terminate. (Jerry -D. Hedden) - -=back - -=head2 New Core Modules - -=over 4 - -=item * - -C, by Anno Siegel, has been added. This module -provides support for I: hashes that maintain an association -of a reference with a value, in a thread-safe garbage-collected way. -Such hashes are useful to implement inside-out objects. - -=item * - -C, by Ken Williams, has been added. It's an alternative to -C to build and install perl modules. - -=item * - -C, by Jos Boumans, has been added. It provides a single -interface to load Perl modules and F<.pl> files. - -=item * - -C, by Jos Boumans, has been added. It's used to mark -modules as loaded or unloaded. - -=item * - -C, by Jos Boumans, has been added. It's a simple -helper to list all constants declared in a given package. - -=item * - -C, by Tye McQueen, has been added (for Windows builds). -This module provides low-level access to Win32 system API calls for -files/dirs. - -=back - -=head1 Utility Changes - -=head2 config_data - -C is a new utility that comes with C. It -provides a command-line interface to the configuration of Perl modules -that use Module::Build's framework of configurability (that is, -C<*::ConfigData> modules that contain local configuration information for -their parent modules.) - -=head1 Documentation - -=head2 New manpage, perlpragma - -The L manpage documents how to write one's own lexical -pragmas in pure Perl (something that is possible starting with 5.9.4). - -=head2 New manpage, perlreguts - -The L manpage, courtesy of Yves Orton, describes internals of the -Perl regular expression engine. - -=head2 New manpage, perlunitut - -The L manpage is an tutorial for programming with Unicode and -string encodings in Perl, courtesy of Juerd Waalboer. - -=head1 Performance Enhancements - -=head2 Memory optimisations - -Several internal data structures (typeglobs, GVs, CVs, formats) have been -restructured to use less memory. (Nicholas Clark) - -=head2 UTF-8 cache optimisation - -The UTF-8 caching code is now more efficient, and used more often. -(Nicholas Clark) - -=head2 Regular expressions - -=over 4 - -=item Engine de-recursivised - -The regular expression engine is no longer recursive, meaning that -patterns that used to overflow the stack will either die with useful -explanations, or run to completion, which, since they were able to blow -the stack before, will likely take a very long time to happen. If you were -experiencing the occasional stack overflow (or segfault) and upgrade to -discover that now perl apparently hangs instead, look for a degenerate -regex. (Dave Mitchell) - -=item Single char char-classes treated as literals - -Classes of a single character are now treated the same as if the character -had been used as a literal, meaning that code that uses char-classes as an -escaping mechanism will see a speedup. (Yves Orton) - -=item Trie optimisation of literal string alternations - -Alternations, where possible, are optimised into more efficient matching -structures. String literal alternations are merged into a trie and are -matched simultaneously. This means that instead of O(N) time for matching -N alternations at a given point the new code performs in O(1) time. (Yves -Orton) - -B Much code exists that works around perl's historic poor -performance on alternations. Often the tricks used to do so will disable -the new optimisations. Hopefully the utility modules used for this purpose -will be educated about these new optimisations by the time 5.10 is -released. - -=item Aho-Corasick start-point optimisation - -When a pattern starts with a trie-able alternation and there aren't -better optimisations available the regex engine will use Aho-Corasick -matching to find the start point. (Yves Orton) - -=back - -=head2 Sloppy stat on Windows - -On Windows, perl's stat() function normally opens the file to determine -the link count and update attributes that may have been changed through -hard links. Setting ${^WIN32_SLOPPY_STAT} to a true value speeds up -stat() by not performing this operation. (Jan Dubois) - -=head1 Installation and Configuration Improvements - -=head2 Relocatable installations - -There is now Configure support for creating a relocatable perl tree. If -you Configure with C<-Duserelocatableinc>, then the paths in @INC (and -everything else in %Config) can be optionally located via the path of the -perl executable. - -That means that, if the string C<".../"> is found at the start of any -path, it's substituted with the directory of $^X. So, the relocation can -be configured on a per-directory basis, although the default with -C<-Duserelocatableinc> is that everything is relocated. The initial -install is done to the original configured prefix. - -=head2 Ports - -Many improvements have been made towards making Perl work correctly on -z/OS. - -Perl has been reported to work on DragonFlyBSD. - -=head2 Compilation improvements - -All F files in the XS modules bundled with perl are now -autogenerated at build time. (Marcus Holland-Moritz) - -=head2 New probes - -The configuration process now detects whether strlcat() and strlcpy() are -available. When they are not available, perl's own version is used (from -Russ Allbery's public domain implementation). Various places in the perl -interpreter now use them. (Steve Peters) - -=head2 Windows build improvements - -=over 4 - -=item Building XS extensions - -Support for building XS extension modules with the free MinGW compiler has -been improved in the case where perl itself was built with the Microsoft -VC++ compiler. (ActiveState) - -=item Support for 64-bit compiler - -Support for building perl with Microsoft's 64-bit compiler has been -improved. (ActiveState) - -=back - -=head1 Selected Bug Fixes - -=head2 PERL5SHELL and tainting - -On Windows, the PERL5SHELL environment variable is now checked for -taintedness. (Rafael Garcia-Suarez) - -=head2 Using *FILE{IO} - -C and C<-X> filetests now treat *FILE{IO} filehandles like *FILE -filehandles. (Steve Peters) - -=head2 Overloading and reblessing - -Overloading now works when references are reblessed into another class. -Internally, this has been implemented by moving the flag for "overloading" -from the reference to the referent, which logically is where it should -always have been. (Nicholas Clark) - -=head2 Overloading and UTF-8 - -A few bugs related to UTF-8 handling with objects that have -stringification overloaded have been fixed. (Nicholas Clark) - -=head2 eval memory leaks fixed - -Traditionally, C has leaked badly. Many (but not all) -of these leaks have now been eliminated or reduced. (Dave Mitchell) - -=head2 Random device on Windows - -In previous versions, perl would read the file F if it -existed when seeding its random number generator. That file is unlikely -to exist on Windows, and if it did would probably not contain appropriate -data, so perl no longer tries to read it on Windows. (Alex Davies) - -=head1 New or Changed Diagnostics - -=over 4 - -=item State variable %s will be reinitialized - -One can assign initial values to state variables, but not when they're -declared as a sub-part of a list assignment. See L. - -=back - -=head1 Changed Internals - -A new file, F, contains functions that aren't used anymore in -the perl core, but remain around because modules out there might -still use them. They come from a factorization effort: for example, many -PP functions are now shared for several ops. - -The implementation of the special variables $^H and %^H has changed, to -allow implementing lexical pragmas in pure perl. - -=head1 Known Problems - -One warning test (number 263 in F) fails under UTF-8 -locales. - -Bytecode tests fail under several platforms. We are considering removing -support for byteloader and compiler before the 5.10.0 release. - -=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/rt3/ . 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 -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/pod/perl595delta.pod b/pod/perl595delta.pod deleted file mode 100644 index 097b6b4dc7d..00000000000 --- a/pod/perl595delta.pod +++ /dev/null @@ -1,587 +0,0 @@ -=head1 NAME - -perl595delta - what is new for perl v5.9.5 - -=head1 DESCRIPTION - -This document describes differences between the 5.9.4 and the 5.9.5 -development releases. See L, L, -L, L and L for the differences -between 5.8.0 and 5.9.4. - -=head1 Incompatible Changes - -=head2 Tainting and printf - -When perl is run under taint mode, C and C will now -reject any tainted format argument. (Rafael Garcia-Suarez) - -=head2 undef and signal handlers - -Undefining or deleting a signal handler via C is now -equivalent to setting it to C<'DEFAULT'>. (Rafael) - -=head2 strictures and array/hash dereferencing in defined() - -C and C are now subject to C -(that is, C<$foo> and C<$bar> shall be proper references there.) -(Nicholas Clark) - -(However, C and C are discouraged constructs -anyway.) - -=head2 C<(?p{})> has been removed - -The regular expression construct C<(?p{})>, which was deprecated in perl -5.8, has been removed. Use C<(??{})> instead. (Rafael) - -=head2 Pseudo-hashes have been removed - -Support for pseudo-hashes has been removed from Perl 5.9. (The C -pragma remains here, but uses an alternate implementation.) - -=head2 Removal of the bytecode compiler and of perlcc - -C, the byteloader and the supporting modules (B::C, B::CC, -B::Bytecode, etc.) are no longer distributed with the perl sources. Those -experimental tools have never worked reliably, and, due to the lack of -volunteers to keep them in line with the perl interpreter developments, it -was decided to remove them instead of shipping a broken version of those. -The last version of those modules can be found with perl 5.9.4. - -However the B compiler framework stays supported in the perl core, as with -the more useful modules it has permitted (among others, B::Deparse and -B::Concise). - -=head2 Removal of the JPL - -The JPL (Java-Perl Linguo) has been removed from the perl sources tarball. - -=head2 Recursive inheritance detected earlier - -Perl will now immediately throw an exception if you modify any package's -C<@ISA> in such a way that it would cause recursive inheritance. - -Previously, the exception would not occur until Perl attempted to make -use of the recursive inheritance while resolving a method or doing a -C<$foo-Eisa($bar)> lookup. - -=head1 Core Enhancements - -=head2 Regular expressions - -=over 4 - -=item Recursive Patterns - -It is now possible to write recursive patterns without using the C<(??{})> -construct. This new way is more efficient, and in many cases easier to -read. - -Each capturing parenthesis can now be treated as an independent pattern -that can be entered by using the C<(?PARNO)> syntax (C standing for -"parenthesis number"). For example, the following pattern will match -nested balanced angle brackets: - - / - ^ # start of line - ( # start capture buffer 1 - < # match an opening angle bracket - (?: # match one of: - (?> # don't backtrack over the inside of this group - [^<>]+ # one or more non angle brackets - ) # end non backtracking group - | # ... or ... - (?1) # recurse to bracket 1 and try it again - )* # 0 or more times. - > # match a closing angle bracket - ) # end capture buffer one - $ # end of line - /x - -Note, users experienced with PCRE will find that the Perl implementation -of this feature differs from the PCRE one in that it is possible to -backtrack into a recursed pattern, whereas in PCRE the recursion is -atomic or "possessive" in nature. (Yves Orton) - -=item Named Capture Buffers - -It is now possible to name capturing parenthesis in a pattern and refer to -the captured contents by name. The naming syntax is C<< (?....) >>. -It's possible to backreference to a named buffer with the C<< \k >> -syntax. In code, the new magical hashes C<%+> and C<%-> can be used to -access the contents of the capture buffers. - -Thus, to replace all doubled chars, one could write - - s/(?.)\k/$+{letter}/g - -Only buffers with defined contents will be "visible" in the C<%+> hash, so -it's possible to do something like - - foreach my $name (keys %+) { - print "content of buffer '$name' is $+{$name}\n"; - } - -The C<%-> hash is a bit more complete, since it will contain array refs -holding values from all capture buffers similarly named, if there should -be many of them. - -C<%+> and C<%-> are implemented as tied hashes through the new module -C. - -Users exposed to the .NET regex engine will find that the perl -implementation differs in that the numerical ordering of the buffers -is sequential, and not "unnamed first, then named". Thus in the pattern - - /(A)(?B)(C)(?D)/ - -$1 will be 'A', $2 will be 'B', $3 will be 'C' and $4 will be 'D' and not -$1 is 'A', $2 is 'C' and $3 is 'B' and $4 is 'D' that a .NET programmer -would expect. This is considered a feature. :-) (Yves Orton) - -=item Possessive Quantifiers - -Perl now supports the "possessive quantifier" syntax of the "atomic match" -pattern. Basically a possessive quantifier matches as much as it can and never -gives any back. Thus it can be used to control backtracking. The syntax is -similar to non-greedy matching, except instead of using a '?' as the modifier -the '+' is used. Thus C, C<*+>, C<++>, C<{min,max}+> are now legal -quantifiers. (Yves Orton) - -=item Backtracking control verbs - -The regex engine now supports a number of special-purpose backtrack -control verbs: (*THEN), (*PRUNE), (*MARK), (*SKIP), (*COMMIT), (*FAIL) -and (*ACCEPT). See L for their descriptions. (Yves Orton) - -=item Relative backreferences - -A new syntax C<\g{N}> or C<\gN> where "N" is a decimal integer allows a -safer form of back-reference notation as well as allowing relative -backreferences. This should make it easier to generate and embed patterns -that contain backreferences. See L. (Yves Orton) - -=item C<\K> escape - -The functionality of Jeff Pinyan's module Regexp::Keep has been added to -the core. You can now use in regular expressions the special escape C<\K> -as a way to do something like floating length positive lookbehind. It is -also useful in substitutions like: - - s/(foo)bar/$1/g - -that can now be converted to - - s/foo\Kbar//g - -which is much more efficient. (Yves Orton) - -=item Vertical and horizontal whitespace, and linebreak - -Regular expressions now recognize the C<\v> and C<\h> escapes, that match -vertical and horizontal whitespace, respectively. C<\V> and C<\H> -logically match their complements. - -C<\R> matches a generic linebreak, that is, vertical whitespace, plus -the multi-character sequence C<"\x0D\x0A">. - -=back - -=head2 The C<_> prototype - -A new prototype character has been added. C<_> is equivalent to C<$> (it -denotes a scalar), but defaults to C<$_> if the corresponding argument -isn't supplied. Due to the optional nature of the argument, you can only -use it at the end of a prototype, or before a semicolon. - -This has a small incompatible consequence: the prototype() function has -been adjusted to return C<_> for some built-ins in appropriate cases (for -example, C). (Rafael) - -=head2 UNITCHECK blocks - -C, a new special code block has been introduced, in addition to -C, C, C and C. - -C and C blocks, while useful for some specialized purposes, -are always executed at the transition between the compilation and the -execution of the main program, and thus are useless whenever code is -loaded at runtime. On the other hand, C blocks are executed -just after the unit which defined them has been compiled. See L -for more information. (Alex Gough) - -=head2 readpipe() is now overridable - -The built-in function readpipe() is now overridable. Overriding it permits -also to override its operator counterpart, C (a.k.a. C<``>). -Moreover, it now defaults to C<$_> if no argument is provided. (Rafael) - -=head2 default argument for readline() - -readline() now defaults to C<*ARGV> if no argument is provided. (Rafael) - -=head2 UCD 5.0.0 - -The copy of the Unicode Character Database included in Perl 5.9 has -been updated to version 5.0.0. - -=head2 Smart match - -The smart match operator (C<~~>) is now available by default (you don't -need to enable it with C any longer). (Michael G Schwern) - -=head2 Implicit loading of C - -The C pragma is now implicitly loaded when you require a minimal -perl version (with the C construct) greater than, or equal -to, 5.9.5. - -=head1 Modules and Pragmas - -=head2 New Pragma, C - -A new pragma, C (for Method Resolution Order) has been added. It -permits to switch, on a per-class basis, the algorithm that perl uses to -find inherited methods in case of a multiple inheritance hierarchy. The -default MRO hasn't changed (DFS, for Depth First Search). Another MRO is -available: the C3 algorithm. See L for more information. -(Brandon Black) - -Note that, due to changes in the implementation of class hierarchy search, -code that used to undef the C<*ISA> glob will most probably break. Anyway, -undef'ing C<*ISA> had the side-effect of removing the magic on the @ISA -array and should not have been done in the first place. - -=head2 bignum, bigint, bigrat - -The three numeric pragmas C, C and C are now -lexically scoped. (Tels) - -=head2 Math::BigInt/Math::BigFloat - -Many bugs have been fixed; noteworthy are comparisons with NaN, which -no longer warn about undef values. - -The following things are new: - -=over 4 - -=item config() - -The config() method now also supports the calling-style -C<< config('lib') >> in addition to C<< config()->{'lib'} >>. - -=item import() - -Upon import, using C<< lib => 'Foo' >> now warns if the low-level library -cannot be found. To suppress the warning, you can use C<< try => 'Foo' >> -instead. To convert the warning into a die, use C<< only => 'Foo' >> -instead. - -=item roundmode common - -A rounding mode of C is now supported. - -=back - -Also, support for the following methods has been added: - -=over 4 - -=item bpi(), bcos(), bsin(), batan(), batan2() - -=item bmuladd() - -=item bexp(), bnok() - -=item from_hex(), from_oct(), and from_bin() - -=item as_oct() - -=back - -In addition, the default math-backend (Calc (Perl) and FastCalc (XS)) now -support storing numbers in parts with 9 digits instead of 7 on Perls with -either 64bit integer or long double support. This means math operations -scale better and are thus faster for really big numbers. - -=head2 New Core Modules - -=over 4 - -=item * - -C, needed by CPANPLUS, is a simple wrapper around -C. Note that C isn't -included in the perl core; the behaviour of C -gracefully degrades when the later isn't present. - -=item * - -C implements a generic input parsing/checking mechanism. It -is used by CPANPLUS. - -=item * - -C simplifies the task to ask questions at a terminal prompt. - -=item * - -C provides an interface to create per-object accessors. - -=item * - -C is a simple framework to create modules that accept -pluggable sub-modules. - -=item * - -C provides simple ways to query and possibly -load installed modules. - -=item * - -C provides an object oriented interface to time functions, -overriding the built-ins localtime() and gmtime(). - -=item * - -C helps to find and run external commands, possibly -interactively. - -=item * - -C provide a simple generic file fetching mechanism. - -=item * - -C and C are used by the log facility -of C. - -=item * - -C is a generic archive extraction mechanism -for F<.tar> (plain, gzipped or bzipped) or F<.zip> files. - -=item * - -C provides an API and a command-line tool to access the CPAN -mirrors. - -=back - -=head2 Module changes - -=over 4 - -=item C - -The C pragma, its submodules C and -C and the B<-A> command-line switch have been removed. -The interface was not judged mature enough for inclusion in a stable -release. - -=item C - -The C pragma now warns if a class tries to inherit from itself. -(Curtis "Ovid" Poe) - -=item C and C - -C and C will now complain loudly if they are loaded via -incorrect casing (as in C). (Johan Vromans) - -=item C - -The C pragma doesn't load C anymore. That means that code -that used C routines without having loaded it at compile time might -need to be adjusted; typically, the following (faulty) code won't work -anymore, and will require parentheses to be added after the function name: - - use warnings; - require Carp; - Carp::confess "argh"; - -=item C - -C now does something useful (or at least it tries to). In fact, it -has been turned into a lexical pragma. So, in your modules, you can now -test whether your users have requested to use less CPU, or less memory, -less magic, or maybe even less fat. See L for more. (Joshua ben -Jore) - -=item C - -C can now report the caller's file and line number. -(David Feldman) - -=item C - -C is now based on C, and so can be extended -with plugins. (Joshua ben Jore) - -=item C - -It's now possible to access the lexical pragma hints (C<%^H>) by using the -method B::COP::hints_hash(). It returns a C object, which in turn -can be used to get a hash reference via the method B::RHE::HASH(). (Joshua -ben Jore) - -=for p5p XXX document this in B.pm too - -=item C - -As the old 5005thread threading model has been removed, in favor of the -ithreads scheme, the C module is now a compatibility wrapper, to -be used in old code only. It has been removed from the default list of -dynamic extensions. - -=back - -=head1 Utility Changes - -=head2 C - -C, the CPANPLUS shell, has been added. (C, an -helper for CPANPLUS operation, has been added too, but isn't intended for -direct use). - -=head2 C - -C is a new utility, that comes with CPANPLUS. It's a tool to -create distributions (or packages) from CPAN modules. - -=head2 C - -The output of C has been enhanced to be more customizable via -CSS. Some formatting problems were also corrected. (Jari Aalto) - -=head1 Documentation - -=head2 New manpage, perlunifaq - -A new manual page, L (the Perl Unicode FAQ), has been added -(Juerd Waalboer). - -=head1 Installation and Configuration Improvements - -=head2 C++ compatibility - -Efforts have been made to make perl and the core XS modules compilable -with various C++ compilers (although the situation is not perfect with -some of the compilers on some of the platforms tested.) - -=head2 Visual C++ - -Perl now can be compiled with Microsoft Visual C++ 2005. - -=head2 Static build on Win32 - -It's now possible to build a C that doesn't depend -on C on Win32. See the Win32 makefiles for details. -(Vadim Konovalov) - -=head2 win32 builds - -All win32 builds (MS-Win, WinCE) have been merged and cleaned up. - -=head2 C and C - -A new configuration variable, available as C<$Config{d_pseudofork}> in -the L module, has been added, to distinguish real fork() support -from fake pseudofork used on Windows platforms. - -A new configuration variable, C, has been added, -to see if printf-like formats are allowed to be NULL. - -=head2 Help - -C has been extended with the most used option. - -Much less 'Whoa there' messages. - -=head2 64bit systems - -Better detection of 64bit(only) systems, and setting all the (library) -paths accordingly. - -=head2 Ports - -Perl has been reported to work on MidnightBSD. - -Support for Cray XT4 Catamount/Qk has been added. - -Vendor patches have been merged for RedHat and GenToo. - -=head1 Selected Bug Fixes - -PerlIO::scalar will now prevent writing to read-only scalars. Moreover, -seek() is now supported with PerlIO::scalar-based filehandles, the -underlying string being zero-filled as needed. (Rafael, Jarkko Hietaniemi) - -study() never worked for UTF-8 strings, but could lead to false results. -It's now a no-op on UTF-8 data. (Yves Orton) - -The signals SIGILL, SIGBUS and SIGSEGV are now always delivered in an -"unsafe" manner (contrary to other signals, that are deferred until the -perl interpreter reaches a reasonably stable state; see -L). (Rafael) - -When a module or a file is loaded through an @INC-hook, and when this hook -has set a filename entry in %INC, __FILE__ is now set for this module -accordingly to the contents of that %INC entry. (Rafael) - -The C<-w> and C<-t> switches can now be used together without messing -up what categories of warnings are activated or not. (Rafael) - -Duping a filehandle which has the C<:utf8> PerlIO layer set will now -properly carry that layer on the duped filehandle. (Rafael) - -Localizing an hash element whose key was given as a variable didn't work -correctly if the variable was changed while the local() was in effect (as -in C). (Bo Lindbergh) - -=head1 New or Changed Diagnostics - -=head2 Deprecations - -Two deprecation warnings have been added: (Rafael) - - Opening dirhandle %s also as a file - Opening filehandle %s also as a directory - -=head1 Changed Internals - -The anonymous hash and array constructors now take 1 op in the optree -instead of 3, now that pp_anonhash and pp_anonlist return a reference to -an hash/array when the op is flagged with OPf_SPECIAL (Nicholas Clark). - -=for p5p XXX have we some docs on how to create regexp engine plugins, since that's now possible ? (perlreguts) - -=for p5p XXX new BIND SV type, #29544, #29642 - -=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/rt3/ . 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 -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, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. - -=head1 SEE ALSO - -The F file for exhaustive details on what changed. - -The F file for how to build Perl. - -The F file for general stuff. - -The F and F files for copyright information. - -=cut diff --git a/win32/pod.mak b/win32/pod.mak index 6cdabad36e6..ccce177036c 100644 --- a/win32/pod.mak +++ b/win32/pod.mak @@ -20,29 +20,11 @@ POD = perl.pod \ perl5005delta.pod \ perl5100delta.pod \ perl5101delta.pod \ - perl5110delta.pod \ - perl5111delta.pod \ - perl5112delta.pod \ - perl5113delta.pod \ - perl5114delta.pod \ - perl5115delta.pod \ perl5120delta.pod \ perl5121delta.pod \ perl5122delta.pod \ perl5123delta.pod \ perl5124delta.pod \ - perl5130delta.pod \ - perl51310delta.pod \ - perl51311delta.pod \ - perl5131delta.pod \ - perl5132delta.pod \ - perl5133delta.pod \ - perl5134delta.pod \ - perl5135delta.pod \ - perl5136delta.pod \ - perl5137delta.pod \ - perl5138delta.pod \ - perl5139delta.pod \ perl5140delta.pod \ perl5141delta.pod \ perl5150delta.pod \ @@ -51,10 +33,6 @@ POD = perl.pod \ perl5153delta.pod \ perl561delta.pod \ perl56delta.pod \ - perl570delta.pod \ - perl571delta.pod \ - perl572delta.pod \ - perl573delta.pod \ perl581delta.pod \ perl582delta.pod \ perl583delta.pod \ @@ -65,12 +43,6 @@ POD = perl.pod \ perl588delta.pod \ perl589delta.pod \ perl58delta.pod \ - perl590delta.pod \ - perl591delta.pod \ - perl592delta.pod \ - perl593delta.pod \ - perl594delta.pod \ - perl595delta.pod \ perlapi.pod \ perlapio.pod \ perlartistic.pod \ @@ -168,29 +140,11 @@ MAN = perl.man \ perl5005delta.man \ perl5100delta.man \ perl5101delta.man \ - perl5110delta.man \ - perl5111delta.man \ - perl5112delta.man \ - perl5113delta.man \ - perl5114delta.man \ - perl5115delta.man \ perl5120delta.man \ perl5121delta.man \ perl5122delta.man \ perl5123delta.man \ perl5124delta.man \ - perl5130delta.man \ - perl51310delta.man \ - perl51311delta.man \ - perl5131delta.man \ - perl5132delta.man \ - perl5133delta.man \ - perl5134delta.man \ - perl5135delta.man \ - perl5136delta.man \ - perl5137delta.man \ - perl5138delta.man \ - perl5139delta.man \ perl5140delta.man \ perl5141delta.man \ perl5150delta.man \ @@ -199,10 +153,6 @@ MAN = perl.man \ perl5153delta.man \ perl561delta.man \ perl56delta.man \ - perl570delta.man \ - perl571delta.man \ - perl572delta.man \ - perl573delta.man \ perl581delta.man \ perl582delta.man \ perl583delta.man \ @@ -213,12 +163,6 @@ MAN = perl.man \ perl588delta.man \ perl589delta.man \ perl58delta.man \ - perl590delta.man \ - perl591delta.man \ - perl592delta.man \ - perl593delta.man \ - perl594delta.man \ - perl595delta.man \ perlapi.man \ perlapio.man \ perlartistic.man \ @@ -316,29 +260,11 @@ HTML = perl.html \ perl5005delta.html \ perl5100delta.html \ perl5101delta.html \ - perl5110delta.html \ - perl5111delta.html \ - perl5112delta.html \ - perl5113delta.html \ - perl5114delta.html \ - perl5115delta.html \ perl5120delta.html \ perl5121delta.html \ perl5122delta.html \ perl5123delta.html \ perl5124delta.html \ - perl5130delta.html \ - perl51310delta.html \ - perl51311delta.html \ - perl5131delta.html \ - perl5132delta.html \ - perl5133delta.html \ - perl5134delta.html \ - perl5135delta.html \ - perl5136delta.html \ - perl5137delta.html \ - perl5138delta.html \ - perl5139delta.html \ perl5140delta.html \ perl5141delta.html \ perl5150delta.html \ @@ -347,10 +273,6 @@ HTML = perl.html \ perl5153delta.html \ perl561delta.html \ perl56delta.html \ - perl570delta.html \ - perl571delta.html \ - perl572delta.html \ - perl573delta.html \ perl581delta.html \ perl582delta.html \ perl583delta.html \ @@ -361,12 +283,6 @@ HTML = perl.html \ perl588delta.html \ perl589delta.html \ perl58delta.html \ - perl590delta.html \ - perl591delta.html \ - perl592delta.html \ - perl593delta.html \ - perl594delta.html \ - perl595delta.html \ perlapi.html \ perlapio.html \ perlartistic.html \ @@ -464,29 +380,11 @@ TEX = perl.tex \ perl5005delta.tex \ perl5100delta.tex \ perl5101delta.tex \ - perl5110delta.tex \ - perl5111delta.tex \ - perl5112delta.tex \ - perl5113delta.tex \ - perl5114delta.tex \ - perl5115delta.tex \ perl5120delta.tex \ perl5121delta.tex \ perl5122delta.tex \ perl5123delta.tex \ perl5124delta.tex \ - perl5130delta.tex \ - perl51310delta.tex \ - perl51311delta.tex \ - perl5131delta.tex \ - perl5132delta.tex \ - perl5133delta.tex \ - perl5134delta.tex \ - perl5135delta.tex \ - perl5136delta.tex \ - perl5137delta.tex \ - perl5138delta.tex \ - perl5139delta.tex \ perl5140delta.tex \ perl5141delta.tex \ perl5150delta.tex \ @@ -495,10 +393,6 @@ TEX = perl.tex \ perl5153delta.tex \ perl561delta.tex \ perl56delta.tex \ - perl570delta.tex \ - perl571delta.tex \ - perl572delta.tex \ - perl573delta.tex \ perl581delta.tex \ perl582delta.tex \ perl583delta.tex \ @@ -509,12 +403,6 @@ TEX = perl.tex \ perl588delta.tex \ perl589delta.tex \ perl58delta.tex \ - perl590delta.tex \ - perl591delta.tex \ - perl592delta.tex \ - perl593delta.tex \ - perl594delta.tex \ - perl595delta.tex \ perlapi.tex \ perlapio.tex \ perlartistic.tex \ From a03432f295f78eec5042079a07e54fd2afb2e56e Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Fri, 2 Sep 2011 15:05:48 -0600 Subject: [PATCH 002/316] Release managers guide changed to rmv stale perldeltas We have decided to not deliver the BLEAD-POINT perldeltas, as their information should have been consolidated into the BLEAD-FINAL perldelta. --- Porting/release_managers_guide.pod | 32 ++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/Porting/release_managers_guide.pod b/Porting/release_managers_guide.pod index 3e72e183c40..9498637c2dd 100644 --- a/Porting/release_managers_guide.pod +++ b/Porting/release_managers_guide.pod @@ -382,10 +382,39 @@ Another good HTML preview option is http://search.cpan.org/pod2html If you make changes, be sure to commit them. +=head3 remove stale perldeltas + +For the first RC release that is ONLY for a BLEAD-FINAL, the perldeltas +from the BLEAD-POINT releases since the previous BLEAD_FINAL should have +now been consolidated into the current perldelta, and hence are now just +useless clutter. They can be removed using: + + $ git rm ... + +For example, for RC0 of 5.16.0: + + $ cd pod + $ git rm perldelta515*.pod + +All mention to them should also be removed. Currently the files that +need to be edited for this task are F, F, +F, and F (including C<.man>, C<.html>, and +C<.tex> entries for each removed pod). + +Then build a clean perl and do a full test + + $ git status + $ git clean -dxf + $ ./Configure -Dusedevel -des + $ make + $ make test + +Once all tests pass, commit your changes. =head3 build a clean perl -Make sure you have a gitwise-clean perl directory (no modified files, +If you skipped the previous step (removing the stale perldeltas) +make sure you have a gitwise-clean perl directory (no modified files, unpushed commits etc): $ git status @@ -395,7 +424,6 @@ then configure and build perl so that you have a Makefile and porting tools: $ ./Configure -Dusedevel -des && make - =head3 update Module::CoreList Update C with module version data for the new release. From 924d3af1d7b5591ebab03fef27f1aef6364027da Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Tue, 6 Sep 2011 15:06:06 +0200 Subject: [PATCH 003/316] In Glob.xs, use memset() instead of bzero() 3c97495f56fb647c used bzero(), which isn't available on some platforms. --- ext/File-Glob/Glob.xs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/File-Glob/Glob.xs b/ext/File-Glob/Glob.xs index 5a08a0d0795..91b9f4d5f14 100644 --- a/ext/File-Glob/Glob.xs +++ b/ext/File-Glob/Glob.xs @@ -64,7 +64,7 @@ PPCODE: } /* call glob */ - bzero(&pglob, sizeof(glob_t)); + memset(&pglob, 0, sizeof(glob_t)); retval = bsd_glob(pattern, flags, errfunc, &pglob); GLOB_ERROR = retval; From d39de89300b9384bad8b2cf88917ce9f104ae8b2 Mon Sep 17 00:00:00 2001 From: Chris 'BinGOs' Williams Date: Wed, 7 Sep 2011 10:00:41 +0100 Subject: [PATCH 004/316] Update Module-Metadata to CPAN version 1.000006 [DELTA] 1.0.6 2011-08-29 04:00:00 - Support PACKAGE BLOCK syntax (VPIT) [Additional info] Reapplied the changes made by Craig Berry for VMS in commit 63f27fd71dd22aa00021eb1e4fde4faa55ec9524 Raised [https://rt.cpan.org/Public/Bug/Display.html?id=70781] to upstream these changes. --- Porting/Maintainers.pl | 2 +- cpan/Module-Metadata/lib/Module/Metadata.pm | 4 +- cpan/Module-Metadata/t/metadata.t | 44 +++++++++++++++++++-- pod/perldelta.pod | 4 ++ 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index 23737f4d768..0170b915858 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -1288,7 +1288,7 @@ package Maintainers; 'Module::Metadata' => { 'MAINTAINER' => 'dagolden', - 'DISTRIBUTION' => 'DAGOLDEN/Module-Metadata-1.000005.tar.gz', + 'DISTRIBUTION' => 'DAGOLDEN/Module-Metadata-1.000006.tar.gz', 'FILES' => q[cpan/Module-Metadata], 'EXCLUDED' => [ qr{^maint}, qr{^xt} ], 'UPSTREAM' => 'cpan', diff --git a/cpan/Module-Metadata/lib/Module/Metadata.pm b/cpan/Module-Metadata/lib/Module/Metadata.pm index 41d8214ef54..2016967d09a 100644 --- a/cpan/Module-Metadata/lib/Module/Metadata.pm +++ b/cpan/Module-Metadata/lib/Module/Metadata.pm @@ -11,7 +11,7 @@ package Module::Metadata; use strict; use vars qw($VERSION); -$VERSION = '1.000005_01'; +$VERSION = '1.000006'; $VERSION = eval $VERSION; use File::Spec; @@ -36,7 +36,7 @@ my $PKG_REGEXP = qr{ # match a package declaration \s* # optional whitespace ($V_NUM_REGEXP)? # optional version number \s* # optional whitesapce - ; # semicolon line terminator + [;\{] # semicolon line terminator or block start (since 5.16) }x; my $VARNAME_REGEXP = qr{ # match fully-qualified VERSION name diff --git a/cpan/Module-Metadata/t/metadata.t b/cpan/Module-Metadata/t/metadata.t index 60cb31651d4..c0e0f124643 100644 --- a/cpan/Module-Metadata/t/metadata.t +++ b/cpan/Module-Metadata/t/metadata.t @@ -7,9 +7,18 @@ use lib 't/lib'; use IO::File; use MBTest; +my $undef; + # parse various module $VERSION lines # these will be reversed later to create %modules my @modules = ( + $undef => <<'---', # no $VERSION line +package Simple; +--- + $undef => <<'---', # undefined $VERSION +package Simple; +our $VERSION; +--- '1.23' => <<'---', # declared & defined on same line with 'our' package Simple; our $VERSION = '1.23'; @@ -170,6 +179,26 @@ our $VERSION = '1.23_00_00'; package Simple; our $VERSION; $VERSION = 'onetwothree'; +--- + $undef => <<'---', # package NAME BLOCK, undef $VERSION +package Simple { + our $VERSION; +} +--- + '1.23' => <<'---', # package NAME BLOCK, with $VERSION +package Simple { + our $VERSION = '1.23'; +} +--- + '1.23' => <<'---', # package NAME VERSION BLOCK +package Simple 1.23 { + 1; +} +--- + 'v1.2.3_4' => <<'---', # package NAME VERSION BLOCK +package Simple v1.2.3_4 { + 1; +} --- ); my %modules = reverse @modules; @@ -242,11 +271,18 @@ foreach my $module ( sort keys %modules ) { # Test::Builder will prematurely numify objects, so use this form my $errs; - ok( $pm_info->version eq $expected, - "correct module version (expected '$expected')" ) - or $errs++; + my $got = $pm_info->version; + if ( defined $expected ) { + ok( $got eq $expected, + "correct module version (expected '$expected')" ) + or $errs++; + } else { + ok( !defined($got), + "correct module version (expected undef)" ) + or $errs++; + } is( $warnings, '', 'no warnings from parsing' ) or $errs++; - diag "Got: '@{[$pm_info->version]}'\nModule contents:\n$module" if $errs; + diag "Got: '$got'\nModule contents:\n$module" if $errs; } } diff --git a/pod/perldelta.pod b/pod/perldelta.pod index a1df93a7924..1b16783a872 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -177,6 +177,10 @@ support negative zero, so the resulting object was actually malformed =item * +L has been upgraded from version 1.000005_01 to version 1.000006. + +=item * + L has been upgraded from version 3.18 to version 3.19. =item * From 666c7ca6f69d448e1829e85a89fae74e72c1a677 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Wed, 7 Sep 2011 21:30:52 +0100 Subject: [PATCH 005/316] ODBM_File can use the same T_PTROBJ typemap as the other ?DBM_File modules. This simplifies the RETVAL handling in TIEHASH, and makes the code closer to the other 3 ?DBM_File modules. The difference in TIEHASH handling dates back to 5.000, where only ODBM_File needed helper code around the dbm_open() call. The other 3 were able to #define it as dbm_TIEHASH, and hence had no CODE: section when first written. --- ext/ODBM_File/ODBM_File.pm | 2 +- ext/ODBM_File/ODBM_File.xs | 4 ++-- ext/ODBM_File/typemap | 2 ++ pod/perldelta.pod | 7 +++++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ext/ODBM_File/ODBM_File.pm b/ext/ODBM_File/ODBM_File.pm index 5c8d10b7344..958232cb7fd 100644 --- a/ext/ODBM_File/ODBM_File.pm +++ b/ext/ODBM_File/ODBM_File.pm @@ -7,7 +7,7 @@ require Tie::Hash; require XSLoader; our @ISA = qw(Tie::Hash); -our $VERSION = "1.11"; +our $VERSION = "1.12"; XSLoader::load(); diff --git a/ext/ODBM_File/ODBM_File.xs b/ext/ODBM_File/ODBM_File.xs index 15c17256652..d1ece7ff9be 100644 --- a/ext/ODBM_File/ODBM_File.xs +++ b/ext/ODBM_File/ODBM_File.xs @@ -113,9 +113,9 @@ odbm_TIEHASH(dbtype, filename, flags, mode) dbp = (void*)(dbminit(filename) >= 0 ? &dbmrefcnt : 0); RETVAL = (ODBM_File)safecalloc(1, sizeof(ODBM_File_type)); RETVAL->dbp = dbp ; - ST(0) = sv_mortalcopy(&PL_sv_undef); - sv_setptrobj(ST(0), RETVAL, dbtype); } + OUTPUT: + RETVAL void DESTROY(db) diff --git a/ext/ODBM_File/typemap b/ext/ODBM_File/typemap index d1f16b4d2c9..2612dfda143 100644 --- a/ext/ODBM_File/typemap +++ b/ext/ODBM_File/typemap @@ -57,3 +57,5 @@ T_DATUM_V DBM_ckFilter($arg, filter[fetch_value],\"filter_fetch_value\"); T_GDATUM sv_usepvn($arg, $var.dptr, $var.dsize); +T_PTROBJ + sv_setref_pv($arg, dbtype, (void*)$var); diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 1b16783a872..e714e2f3ac0 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -181,6 +181,13 @@ L has been upgraded from version 1.000005_01 to version 1.0000 =item * +L has been upgraded from version 1.11 to version 1.12. + +This is only a minor refactoring of the XS code to bring it closer to the +other C modules. + +=item * + L has been upgraded from version 3.18 to version 3.19. =item * From 4bbdbd5179acbefcf9f85b21c8e529c8c4881e0e Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Wed, 7 Sep 2011 23:00:10 +0200 Subject: [PATCH 006/316] In Dumper.xs, use sv_newmortal() instead of sv_mortalcopy(&PL_sv_undef). The two produce identical results. The former is terser, and far more efficient. --- dist/Data-Dumper/Dumper.pm | 4 ++-- dist/Data-Dumper/Dumper.xs | 4 ++-- pod/perldelta.pod | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/dist/Data-Dumper/Dumper.pm b/dist/Data-Dumper/Dumper.pm index 9335d034c10..883572178f5 100644 --- a/dist/Data-Dumper/Dumper.pm +++ b/dist/Data-Dumper/Dumper.pm @@ -9,7 +9,7 @@ package Data::Dumper; -$VERSION = '2.133'; # Don't forget to set version and release date in POD! +$VERSION = '2.134'; # Don't forget to set version and release date in POD! #$| = 1; @@ -1297,7 +1297,7 @@ modify it under the same terms as Perl itself. =head1 VERSION -Version 2.133 (July 20 2011) +Version 2.134 (September 7 2011) =head1 SEE ALSO diff --git a/dist/Data-Dumper/Dumper.xs b/dist/Data-Dumper/Dumper.xs index cf0717e435b..c8e96cda74a 100644 --- a/dist/Data-Dumper/Dumper.xs +++ b/dist/Data-Dumper/Dumper.xs @@ -703,11 +703,11 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv, if (sortkeys) { char *key; svp = av_fetch(keys, i, FALSE); - keysv = svp ? *svp : sv_mortalcopy(&PL_sv_undef); + keysv = svp ? *svp : sv_newmortal(); key = SvPV(keysv, keylen); svp = hv_fetch((HV*)ival, key, SvUTF8(keysv) ? -(I32)keylen : (I32)keylen, 0); - hval = svp ? *svp : sv_mortalcopy(&PL_sv_undef); + hval = svp ? *svp : sv_newmortal(); } else { keysv = hv_iterkeysv(entry); diff --git a/pod/perldelta.pod b/pod/perldelta.pod index e714e2f3ac0..5d39bc958a8 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -155,6 +155,12 @@ descriptions [perl #94488]. =item * +L has been upgraded from version 2.133 to version 2.134. + +The XS code for sorting hash keys has been simplified slightly. + +=item * + L has been upgraded from version 3.17 to version 3.18. The CIA world added non-standard values, so this is no longer used as a source From d6ee8587bdce64301e0540956a01c5b2c8b18f9b Mon Sep 17 00:00:00 2001 From: Chris 'BinGOs' Williams Date: Wed, 7 Sep 2011 23:18:03 +0100 Subject: [PATCH 007/316] Update Module-Metadata to CPAN version 1.000007 [DELTA] 1.0.7 2001-09-07 12:00:00 - Apply VMS fixes backported from blead (Craig A. Berry) --- Porting/Maintainers.pl | 2 +- cpan/Module-Metadata/lib/Module/Metadata.pm | 2 +- pod/perldelta.pod | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index 0170b915858..11143692cc5 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -1288,7 +1288,7 @@ package Maintainers; 'Module::Metadata' => { 'MAINTAINER' => 'dagolden', - 'DISTRIBUTION' => 'DAGOLDEN/Module-Metadata-1.000006.tar.gz', + 'DISTRIBUTION' => 'DAGOLDEN/Module-Metadata-1.000007.tar.gz', 'FILES' => q[cpan/Module-Metadata], 'EXCLUDED' => [ qr{^maint}, qr{^xt} ], 'UPSTREAM' => 'cpan', diff --git a/cpan/Module-Metadata/lib/Module/Metadata.pm b/cpan/Module-Metadata/lib/Module/Metadata.pm index 2016967d09a..e2c83d306a6 100644 --- a/cpan/Module-Metadata/lib/Module/Metadata.pm +++ b/cpan/Module-Metadata/lib/Module/Metadata.pm @@ -11,7 +11,7 @@ package Module::Metadata; use strict; use vars qw($VERSION); -$VERSION = '1.000006'; +$VERSION = '1.000007'; $VERSION = eval $VERSION; use File::Spec; diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 5d39bc958a8..c9a8c0e1bc6 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -183,7 +183,7 @@ support negative zero, so the resulting object was actually malformed =item * -L has been upgraded from version 1.000005_01 to version 1.000006. +L has been upgraded from version 1.000005_01 to version 1.000007. =item * From cdad3b53476fc75fca269751d978ddef3278f18b Mon Sep 17 00:00:00 2001 From: Keith Thompson Date: Mon, 5 Sep 2011 16:37:46 -0700 Subject: [PATCH 008/316] Convert some files from Latin-1 to UTF-8 --- NetWare/CLIBsdio.h | 2 +- NetWare/CLIBstr.h | 2 +- NetWare/CLIBstuf.c | 2 +- NetWare/CLIBstuf.h | 2 +- NetWare/Main.c | 2 +- NetWare/NWTInfo.c | 2 +- NetWare/NWUtil.c | 2 +- NetWare/Nwmain.c | 2 +- NetWare/Nwpipe.c | 2 +- NetWare/deb.h | 2 +- NetWare/intdef.h | 2 +- NetWare/interface.c | 2 +- NetWare/interface.cpp | 2 +- NetWare/interface.h | 2 +- NetWare/iperlhost.h | 2 +- NetWare/netware.h | 2 +- NetWare/nw5.c | 2 +- NetWare/nw5iop.h | 2 +- NetWare/nw5sck.c | 2 +- NetWare/nw5sck.h | 2 +- NetWare/nw5thread.c | 2 +- NetWare/nw5thread.h | 2 +- NetWare/nwhashcls.cpp | 2 +- NetWare/nwhashcls.h | 2 +- NetWare/nwperlhost.h | 2 +- NetWare/nwperlsys.c | 2 +- NetWare/nwperlsys.h | 2 +- NetWare/nwpipe.h | 2 +- NetWare/nwplglob.c | 2 +- NetWare/nwplglob.h | 2 +- NetWare/nwstdio.h | 2 +- NetWare/nwtinfo.h | 2 +- NetWare/nwutil.h | 2 +- NetWare/nwvmem.h | 2 +- NetWare/perllib.cpp | 2 +- NetWare/win32ish.h | 2 +- Porting/Maintainers.pl | 8 +++++--- Porting/checkAUTHORS.pl | 3 ++- ext/attributes/attributes.xs | 2 +- gv.c | 2 +- locale.c | 4 ++-- malloc.c | 2 +- perl.c | 2 +- run.c | 2 +- taint.c | 2 +- utf8.c | 4 ++-- util.c | 2 +- 47 files changed, 54 insertions(+), 51 deletions(-) diff --git a/NetWare/CLIBsdio.h b/NetWare/CLIBsdio.h index 76aba02d601..b2db369c4ae 100644 --- a/NetWare/CLIBsdio.h +++ b/NetWare/CLIBsdio.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/CLIBstr.h b/NetWare/CLIBstr.h index e025c0428ca..4b26fc987b3 100644 --- a/NetWare/CLIBstr.h +++ b/NetWare/CLIBstr.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/CLIBstuf.c b/NetWare/CLIBstuf.c index 0e649dce976..26a4a4b5022 100644 --- a/NetWare/CLIBstuf.c +++ b/NetWare/CLIBstuf.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/CLIBstuf.h b/NetWare/CLIBstuf.h index 90f3557989c..78671fd1826 100644 --- a/NetWare/CLIBstuf.h +++ b/NetWare/CLIBstuf.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/Main.c b/NetWare/Main.c index d23ce6843bd..5116cbcfe1b 100644 --- a/NetWare/Main.c +++ b/NetWare/Main.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/NWTInfo.c b/NetWare/NWTInfo.c index 4180fa796f6..b057d56b2ad 100644 --- a/NetWare/NWTInfo.c +++ b/NetWare/NWTInfo.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/NWUtil.c b/NetWare/NWUtil.c index 8db93c60cfc..15e90cb4811 100644 --- a/NetWare/NWUtil.c +++ b/NetWare/NWUtil.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/Nwmain.c b/NetWare/Nwmain.c index a64534ecca1..0b9728a8ac8 100644 --- a/NetWare/Nwmain.c +++ b/NetWare/Nwmain.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/Nwpipe.c b/NetWare/Nwpipe.c index 9caf2daa4a9..ce9c19800d6 100644 --- a/NetWare/Nwpipe.c +++ b/NetWare/Nwpipe.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/deb.h b/NetWare/deb.h index ece19c2d432..e79a8f41a76 100644 --- a/NetWare/deb.h +++ b/NetWare/deb.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/intdef.h b/NetWare/intdef.h index ca8474691c4..4c566c4e45b 100644 --- a/NetWare/intdef.h +++ b/NetWare/intdef.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/interface.c b/NetWare/interface.c index 2cdadca2fa6..29a8dc0d243 100644 --- a/NetWare/interface.c +++ b/NetWare/interface.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/interface.cpp b/NetWare/interface.cpp index 47fef6709c0..aef71f9ffad 100644 --- a/NetWare/interface.cpp +++ b/NetWare/interface.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/interface.h b/NetWare/interface.h index b6dd4a076e4..98979937e34 100644 --- a/NetWare/interface.h +++ b/NetWare/interface.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/iperlhost.h b/NetWare/iperlhost.h index 3204c2cca99..cc1754afb3d 100644 --- a/NetWare/iperlhost.h +++ b/NetWare/iperlhost.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/netware.h b/NetWare/netware.h index 18089d58d58..c106476e28d 100644 --- a/NetWare/netware.h +++ b/NetWare/netware.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nw5.c b/NetWare/nw5.c index 7f9eebee787..531b308efad 100644 --- a/NetWare/nw5.c +++ b/NetWare/nw5.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nw5iop.h b/NetWare/nw5iop.h index 27cd0a11ebd..391c899da6c 100644 --- a/NetWare/nw5iop.h +++ b/NetWare/nw5iop.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nw5sck.c b/NetWare/nw5sck.c index 46069a3ab28..35dee92bf12 100644 --- a/NetWare/nw5sck.c +++ b/NetWare/nw5sck.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nw5sck.h b/NetWare/nw5sck.h index 5c0e333da4e..afe2f9369c2 100644 --- a/NetWare/nw5sck.h +++ b/NetWare/nw5sck.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nw5thread.c b/NetWare/nw5thread.c index 9ff2c326055..abedb5c2da1 100644 --- a/NetWare/nw5thread.c +++ b/NetWare/nw5thread.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nw5thread.h b/NetWare/nw5thread.h index ad70db01fa3..6bdba245b5d 100644 --- a/NetWare/nw5thread.h +++ b/NetWare/nw5thread.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwhashcls.cpp b/NetWare/nwhashcls.cpp index 1c582a59ad9..2bf24856e51 100644 --- a/NetWare/nwhashcls.cpp +++ b/NetWare/nwhashcls.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwhashcls.h b/NetWare/nwhashcls.h index 88956afb865..55ff2002203 100644 --- a/NetWare/nwhashcls.h +++ b/NetWare/nwhashcls.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwperlhost.h b/NetWare/nwperlhost.h index 9839184985d..c69e554489b 100644 --- a/NetWare/nwperlhost.h +++ b/NetWare/nwperlhost.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwperlsys.c b/NetWare/nwperlsys.c index 9eca5225f7f..32c15cb4380 100644 --- a/NetWare/nwperlsys.c +++ b/NetWare/nwperlsys.c @@ -1,5 +1,5 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwperlsys.h b/NetWare/nwperlsys.h index ff41d695621..3d82dd1c8dd 100644 --- a/NetWare/nwperlsys.h +++ b/NetWare/nwperlsys.h @@ -1,5 +1,5 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwpipe.h b/NetWare/nwpipe.h index 4e9354a4155..462a73dcf42 100644 --- a/NetWare/nwpipe.h +++ b/NetWare/nwpipe.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwplglob.c b/NetWare/nwplglob.c index 51a3e5e3e89..6810fd5e697 100644 --- a/NetWare/nwplglob.c +++ b/NetWare/nwplglob.c @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwplglob.h b/NetWare/nwplglob.h index 1c9d9e4b583..cf60e731696 100644 --- a/NetWare/nwplglob.h +++ b/NetWare/nwplglob.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwstdio.h b/NetWare/nwstdio.h index 4aabb0a8150..50ab6f3d43c 100644 --- a/NetWare/nwstdio.h +++ b/NetWare/nwstdio.h @@ -1,5 +1,5 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwtinfo.h b/NetWare/nwtinfo.h index 25d78a720fb..a08d060422c 100644 --- a/NetWare/nwtinfo.h +++ b/NetWare/nwtinfo.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwutil.h b/NetWare/nwutil.h index 6c8f14489f1..ff05d1830f3 100644 --- a/NetWare/nwutil.h +++ b/NetWare/nwutil.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/nwvmem.h b/NetWare/nwvmem.h index da41afd4e99..e82eaeef8b5 100644 --- a/NetWare/nwvmem.h +++ b/NetWare/nwvmem.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/perllib.cpp b/NetWare/perllib.cpp index a9eb8248608..32f8ed2aae7 100644 --- a/NetWare/perllib.cpp +++ b/NetWare/perllib.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/NetWare/win32ish.h b/NetWare/win32ish.h index a8fcbcde258..f6603d50f44 100644 --- a/NetWare/win32ish.h +++ b/NetWare/win32ish.h @@ -1,6 +1,6 @@ /* - * Copyright 2001 Novell, Inc. All Rights Reserved. + * Copyright © 2001 Novell, Inc. All Rights Reserved. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index 11143692cc5..f903bc3650a 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -7,8 +7,10 @@ package Maintainers; +use utf8; use File::Glob qw(:case); + %Maintainers = ( 'abergman' => 'Arthur Bergman ', @@ -18,7 +20,7 @@ package Maintainers; 'andya' => 'Andy Armstrong ', 'arandal' => 'Allison Randal ', 'audreyt' => 'Audrey Tang ', - 'avar' => 'var Arnfjr Bjarmason ', + 'avar' => 'Ævar Arnfjörð Bjarmason ', 'bingos' => 'Chris Williams ', 'chorny' => 'Alexandr Ciornii ', 'corion' => 'Max Maischein ', @@ -74,8 +76,8 @@ package Maintainers; 'rra' => 'Russ Allbery ', 'rurban' => 'Reini Urban ', 'sadahiro' => 'SADAHIRO Tomoyuki ', - 'salva' => 'Salvador Fandio Garca ', - 'saper' => 'Sbastien Aperghis-Tramoni ', + 'salva' => 'Salvador Fandiño García ', + 'saper' => 'Sébastien Aperghis-Tramoni ', 'sartak' => 'Shawn M Moore ', 'sbeck' => 'Sullivan Beck ', 'sburke' => 'Sean Burke ', diff --git a/Porting/checkAUTHORS.pl b/Porting/checkAUTHORS.pl index d59e41aa3f2..a5b770ccf0e 100755 --- a/Porting/checkAUTHORS.pl +++ b/Porting/checkAUTHORS.pl @@ -1,6 +1,7 @@ #!/usr/bin/perl -w use strict; my ($committer, $patch, $author, $date); +use utf8; use Getopt::Long; use Text::Wrap; $Text::Wrap::columns = 80; @@ -222,7 +223,7 @@ sub read_authors_files { $name =~ s/\s*\z//; $raw{$email} = $name; $count{$email}++; - } elsif (/^([-A-Za-z0-9 .\'--]+)[\t\n]/) { + } elsif (/^([-A-Za-z0-9 .\'À-ÖØöø-ÿ]+)[\t\n]/) { # Name only $untraced{$1}++; diff --git a/ext/attributes/attributes.xs b/ext/attributes/attributes.xs index 24f5f6185e9..3900c36d16f 100644 --- a/ext/attributes/attributes.xs +++ b/ext/attributes/attributes.xs @@ -12,7 +12,7 @@ * 'Perilous to us all are the devices of an art deeper than we possess * ourselves.' --Gandalf * - * [p.597 of _The Lord of the Rings_, III/xi: "The Palantr"] + * [p.597 of _The Lord of the Rings_, III/xi: "The Palantír"] */ #define PERL_NO_GET_CONTEXT diff --git a/gv.c b/gv.c index b3b628e24ca..3427944760e 100644 --- a/gv.c +++ b/gv.c @@ -16,7 +16,7 @@ * history of Middle-earth and Over-heaven and of the Sundering Seas,' * laughed Pippin. * - * [p.599 of _The Lord of the Rings_, III/xi: "The Palantr"] + * [p.599 of _The Lord of the Rings_, III/xi: "The Palantír"] */ /* diff --git a/locale.c b/locale.c index 4631b868f57..163f412ed1a 100644 --- a/locale.c +++ b/locale.c @@ -10,9 +10,9 @@ /* * A Elbereth Gilthoniel, - * silivren penna mriel + * silivren penna míriel * o menel aglar elenath! - * Na-chaered palan-driel + * Na-chaered palan-díriel * o galadhremmin ennorath, * Fanuilos, le linnathon * nef aear, si nef aearon! diff --git a/malloc.c b/malloc.c index 3c2923aa0c2..64613ee05d9 100644 --- a/malloc.c +++ b/malloc.c @@ -5,7 +5,7 @@ /* * 'The Chamber of Records,' said Gimli. 'I guess that is where we now stand.' * - * [p.321 of _The Lord of the Rings_, II/v: "The Bridge of Khazad-Dm"] + * [p.321 of _The Lord of the Rings_, II/v: "The Bridge of Khazad-Dûm"] */ /* This file contains Perl's own implementation of the malloc library. diff --git a/perl.c b/perl.c index 9ebb3d22687..8412d9cfe9d 100644 --- a/perl.c +++ b/perl.c @@ -13,7 +13,7 @@ /* * A ship then new they built for him * of mithril and of elven-glass - * --from Bilbo's song of Erendil + * --from Bilbo's song of Eärendil * * [p.236 of _The Lord of the Rings_, II/i: "Many Meetings"] */ diff --git a/run.c b/run.c index 368ef0301d3..7c1d0aa8cc5 100644 --- a/run.c +++ b/run.c @@ -30,7 +30,7 @@ * Now we are come to the lands where you were foaled, and every stone you * know. Run now! Hope is in speed!' --Gandalf * - * [p.600 of _The Lord of the Rings_, III/xi: "The Palantr"] + * [p.600 of _The Lord of the Rings_, III/xi: "The Palantír"] */ int diff --git a/taint.c b/taint.c index 62c171fc238..fa1366ffd27 100644 --- a/taint.c +++ b/taint.c @@ -11,7 +11,7 @@ /* * '...we will have peace, when you and all your works have perished--and * the works of your dark master to whom you would deliver us. You are a - * liar, Saruman, and a corrupter of men's hearts.' --Thoden + * liar, Saruman, and a corrupter of men's hearts.' --Théoden * * [p.580 of _The Lord of the Rings_, III/x: "The Voice of Saruman"] */ diff --git a/utf8.c b/utf8.c index 797c8112e94..4bab3a9b841 100644 --- a/utf8.c +++ b/utf8.c @@ -13,12 +13,12 @@ * heard of that we don't want to see any closer; and that's the one place * we're trying to get to! And that's just where we can't get, nohow.' * - * [p.603 of _The Lord of the Rings_, IV/I: "The Taming of Smagol"] + * [p.603 of _The Lord of the Rings_, IV/I: "The Taming of Sméagol"] * * 'Well do I understand your speech,' he answered in the same language; * 'yet few strangers do so. Why then do you not speak in the Common Tongue, * as is the custom in the West, if you wish to be answered?' - * --Gandalf, addressing Thoden's door wardens + * --Gandalf, addressing Théoden's door wardens * * [p.508 of _The Lord of the Rings_, III/vi: "The King of the Golden Hall"] * diff --git a/util.c b/util.c index 6a53cffe93a..70a1496f599 100644 --- a/util.c +++ b/util.c @@ -12,7 +12,7 @@ * 'Very useful, no doubt, that was to Saruman; yet it seems that he was * not content.' --Gandalf to Pippin * - * [p.598 of _The Lord of the Rings_, III/xi: "The Palantr"] + * [p.598 of _The Lord of the Rings_, III/xi: "The Palantír"] */ /* This file contains assorted utility routines. From 83e49ee07c6c8e192e11c461132321abbac615ed Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Wed, 7 Sep 2011 22:14:09 -0700 Subject: [PATCH 009/316] Increase $attributes::version to 0.16 --- ext/attributes/attributes.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/attributes/attributes.pm b/ext/attributes/attributes.pm index a7c6716f577..5b797f4d6d6 100644 --- a/ext/attributes/attributes.pm +++ b/ext/attributes/attributes.pm @@ -1,6 +1,6 @@ package attributes; -our $VERSION = 0.15; +our $VERSION = 0.16; @EXPORT_OK = qw(get reftype); @EXPORT = (); From 5618ebab65f88f3f73bc9ebb4f235c6bcc8b027c Mon Sep 17 00:00:00 2001 From: Tony Cook Date: Tue, 6 Sep 2011 23:45:02 +1000 Subject: [PATCH 010/316] avoid " in Carp.t test programs, due to Win32 shell issues Win32 doesn't have a real execv(), so the " end up in the command-line, interfering with the normal quoted command-line processing. --- dist/Carp/t/Carp.t | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/Carp/t/Carp.t b/dist/Carp/t/Carp.t index edb4020192b..96f0f916259 100644 --- a/dist/Carp/t/Carp.t +++ b/dist/Carp/t/Carp.t @@ -396,7 +396,7 @@ like( runperl( prog => q< use utf8; use strict; use Carp; - BEGIN { $SIG{__DIE__} = sub { Carp::croak "aaaaa$_[0]" } } + BEGIN { $SIG{__DIE__} = sub { Carp::croak qq(aaaaa$_[0]) } } $c >, stderr=>1, @@ -414,8 +414,8 @@ SKIP: prog => q< use Carp; $SIG{__WARN__} = sub{}; - carp ("A duck, but which duck?"); - print "ok" unless exists $::{"B::"}; + carp (qq(A duck, but which duck?)); + print q(ok) unless exists $::{q(B::)}; >, ), 'ok', From f8ccc5c641d025d213119510fd38619b06273044 Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Thu, 8 Sep 2011 00:02:39 -0700 Subject: [PATCH 011/316] Suppress warning from tie_fetch_count.t --- t/op/tie_fetch_count.t | 1 + 1 file changed, 1 insertion(+) diff --git a/t/op/tie_fetch_count.t b/t/op/tie_fetch_count.t index adb02f3718f..5337c052776 100644 --- a/t/op/tie_fetch_count.t +++ b/t/op/tie_fetch_count.t @@ -206,6 +206,7 @@ tie my $var8 => 'main', 'main'; sub bolgy {} $var8->bolgy ; check_count '->method'; { + no warnings 'once'; () = *swibble; # This must be the name of an existing glob to trigger the maximum # number of fetches in 5.14: From 14f0f125b45b58bbf2d9e275abf2fef1655f8a3e Mon Sep 17 00:00:00 2001 From: Robin Barker Date: Wed, 7 Sep 2011 22:22:42 +0100 Subject: [PATCH 012/316] remove unused variables and assignments and silences some compiler warnings. I do not understand the code in toke.c but the change aligns the code with other uses of FUN0OP, it has no warnings and does not break any test. --- op.c | 3 +-- pp.c | 3 +-- toke.c | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/op.c b/op.c index 2dff0593edc..7e1360cc7e9 100644 --- a/op.c +++ b/op.c @@ -9292,10 +9292,9 @@ Perl_ck_entersub_args_core(pTHX_ OP *entersubop, GV *namegv, SV *protosv) PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE; if (!opnum) { - OP *prev, *cvop; + OP *cvop; if (!aop->op_sibling) aop = cUNOPx(aop)->op_first; - prev = aop; aop = aop->op_sibling; for (cvop = aop; cvop->op_sibling; cvop = cvop->op_sibling) ; if (PL_madskills) while (aop != cvop && aop->op_type == OP_STUB) { diff --git a/pp.c b/pp.c index c732c5ba868..ba337b25f61 100644 --- a/pp.c +++ b/pp.c @@ -155,12 +155,11 @@ static SV * S_rv2gv(pTHX_ SV *sv, const bool vivify_sv, const bool strict, const bool noinit) { - dSP; dVAR; + dVAR; if (!isGV(sv) || SvFAKE(sv)) SvGETMAGIC(sv); if (SvROK(sv)) { if (SvAMAGIC(sv)) { sv = amagic_deref_call(sv, to_gv_amg); - SPAGAIN; } wasref: sv = SvRV(sv); diff --git a/toke.c b/toke.c index 1bf7e18c862..604934e463d 100644 --- a/toke.c +++ b/toke.c @@ -6927,8 +6927,7 @@ Perl_yylex(pTHX) case KEY___FILE__: FUN0OP( - pl_yylval.opval = (OP*)newSVOP(OP_CONST, 0, - newSVpv(CopFILE(PL_curcop),0)) + (OP*)newSVOP(OP_CONST, 0, newSVpv(CopFILE(PL_curcop),0)) ); case KEY___LINE__: From 39afdc5aa55747b1a9225da0c4c89a1bd0c8489b Mon Sep 17 00:00:00 2001 From: Chris 'BinGOs' Williams Date: Thu, 8 Sep 2011 15:41:20 +0100 Subject: [PATCH 013/316] Update Module-Load-Conditional to CPAN version 0.46 [DELTA] Changes for 0.46 Wed Sep 7 23:57:03 BST 2011 ================================================= * Use || instead of "or" (perl#78708) (chorny) --- Porting/Maintainers.pl | 2 +- cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm | 4 ++-- pod/perldelta.pod | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index f903bc3650a..d60f719f5b2 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -1274,7 +1274,7 @@ package Maintainers; 'Module::Load::Conditional' => { 'MAINTAINER' => 'kane', - 'DISTRIBUTION' => 'BINGOS/Module-Load-Conditional-0.44.tar.gz', + 'DISTRIBUTION' => 'BINGOS/Module-Load-Conditional-0.46.tar.gz', 'FILES' => q[cpan/Module-Load-Conditional], 'UPSTREAM' => 'cpan', }, diff --git a/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm b/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm index be8984e8ba8..39dccf1ce2b 100644 --- a/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm +++ b/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm @@ -18,7 +18,7 @@ BEGIN { $FIND_VERSION $ERROR $CHECK_INC_HASH]; use Exporter; @ISA = qw[Exporter]; - $VERSION = '0.44'; + $VERSION = '0.46'; $VERBOSE = 0; $DEPRECATED = 0; $FIND_VERSION = 1; @@ -332,7 +332,7 @@ sub check_install { sub _parse_version { my $self = shift; my $str = shift or return; - my $verbose = shift or 0; + my $verbose = shift || 0; ### skip lines which doesn't contain VERSION return unless $str =~ /VERSION/; diff --git a/pod/perldelta.pod b/pod/perldelta.pod index c9a8c0e1bc6..34fb2db46a4 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -187,6 +187,10 @@ L has been upgraded from version 1.000005_01 to version 1.0000 =item * +L has been upgraded from version 0.44 to version 0.46. + +=item * + L has been upgraded from version 1.11 to version 1.12. This is only a minor refactoring of the XS code to bring it closer to the From a9feb6cb11fbf4270519aa7318b89f5becccd87c Mon Sep 17 00:00:00 2001 From: Chris 'BinGOs' Williams Date: Thu, 8 Sep 2011 15:54:31 +0100 Subject: [PATCH 014/316] Update perlfaq to CPAN version 5.0150033 [DELTA] 5.0150033 Tue 30 Aug 2011 21:46:25 +0100 * Perl 6 changes (apeiron) * Replace tabs with spaces (ranguard) * Link to www.cpan.org/ports/ for binary (ranguard) * Switch C<> over to L<> for any module on CPAN (ranguard) * Change brace stype (apeiron) * Extra dzil tests (rafl) * Changes so more semantic, and better rendered HTML (ranguard) * Point to repo for how to update perlfaq (ranguard) --- Porting/Maintainers.pl | 6 +- cpan/perlfaq/lib/perlfaq.pm | 4 +- cpan/perlfaq/lib/perlfaq.pod | 36 +- cpan/perlfaq/lib/perlfaq1.pod | 40 +- cpan/perlfaq/lib/perlfaq2.pod | 83 +- cpan/perlfaq/lib/perlfaq3.pod | 227 ++-- cpan/perlfaq/lib/perlfaq4.pod | 1832 ++++++++++++++++----------------- cpan/perlfaq/lib/perlfaq5.pod | 1049 ++++++++++--------- cpan/perlfaq/lib/perlfaq6.pod | 699 +++++++------ cpan/perlfaq/lib/perlfaq7.pod | 558 +++++----- cpan/perlfaq/lib/perlfaq8.pod | 758 +++++++------- cpan/perlfaq/lib/perlfaq9.pod | 437 ++++---- pod/perldelta.pod | 4 + 13 files changed, 2856 insertions(+), 2877 deletions(-) diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index d60f719f5b2..82abed8c77d 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -764,7 +764,7 @@ package Maintainers; 'perlfaq' => { 'MAINTAINER' => 'perlfaq', - 'DISTRIBUTION' => 'LLAP/perlfaq-5.01500302.tar.gz', + 'DISTRIBUTION' => 'LLAP/perlfaq-5.0150033.tar.gz', 'FILES' => q[cpan/perlfaq], 'EXCLUDED' => [ qw(t/release-pod-syntax.t) ], 'UPSTREAM' => 'cpan', @@ -1155,7 +1155,7 @@ package Maintainers; 'Math::BigInt' => { 'MAINTAINER' => 'rafl', - 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.993.tar.gz', + 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.997.tar.gz', 'FILES' => q[dist/Math-BigInt], 'EXCLUDED' => [ qr{^inc/}, qr{^examples/}, @@ -1169,7 +1169,7 @@ package Maintainers; 'Math::BigInt::FastCalc' => { 'MAINTAINER' => 'rafl', - 'DISTRIBUTION' => 'FLORA/Math-BigInt-FastCalc-0.29.tar.gz', + 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.30.tar.gz', 'FILES' => q[dist/Math-BigInt-FastCalc], 'EXCLUDED' => [ qr{^inc/}, qw{ diff --git a/cpan/perlfaq/lib/perlfaq.pm b/cpan/perlfaq/lib/perlfaq.pm index bca26a56d84..153db2c9228 100644 --- a/cpan/perlfaq/lib/perlfaq.pm +++ b/cpan/perlfaq/lib/perlfaq.pm @@ -1,6 +1,6 @@ package perlfaq; -BEGIN { - $perlfaq::VERSION = '5.01500302'; +{ + $perlfaq::VERSION = '5.0150033'; } 0; # not is it supposed to be loaded diff --git a/cpan/perlfaq/lib/perlfaq.pod b/cpan/perlfaq/lib/perlfaq.pod index 929b03deaaf..efae64e3eee 100644 --- a/cpan/perlfaq/lib/perlfaq.pod +++ b/cpan/perlfaq/lib/perlfaq.pod @@ -14,11 +14,11 @@ The perlfaq comes with the standard Perl distribution, so if you have Perl you should have the perlfaq. You should also have the C tool that lets you read the L: - $ perldoc perlfaq + $ perldoc perlfaq or search the perlfaq question headings: - $ perldoc -q open + $ perldoc -q open See L for more information. @@ -39,30 +39,7 @@ https://github.com/tpf/perlfaq which is the latest live version that drives http://faq.perl.org/ and will be distributed with the next release of Perl 5. -You can mail corrections, additions, and suggestions to -C<< >>. The perlfaq volunteers use this -address to coordinate their efforts and track the perlfaq development. -They appreciate your contributions to the FAQ but do not have time to -provide individual help, so don't use this address to ask FAQs. - -The perlfaq server posts extracts of the perlfaq to that newsgroup -every 6 hours (or so), and the community of volunteers reviews and -updates the answers. If you'd like to help review and update the -answers, check out comp.lang.perl.misc. - -You can also fork the perl repository, make your changes, and send them -to Perl 5 Porters. See L. - -=head2 What will happen if you mail your Perl programming problems to the authors? - -The perlfaq-workers like to keep all traffic on the perlfaq-workers list -so that everyone can see the work being done (and the work that needs to -be done). The mailing list serves as an official record. If you email the -authors or maintainers directly, you'll probably get a reply asking you -to post to the mailing list. If you don't get a reply, it probably means -that the person never saw the message or didn't have time to deal with -it. Posting to the list allows the volunteers with time to deal with it -when others are busy. +=head2 What if my question isn't answered in the FAQ? If you have a question that isn't in the FAQ and you would like help with it, try the resources in L. @@ -70,10 +47,9 @@ it, try the resources in L. =head1 CREDITS Tom Christiansen wrote the original perlfaq then expanded it with the -help of Nat Torkington. The perlfaq-workers maintain current document -and the denizens of comp.lang.perl.misc regularly review and update the -FAQ. Several people have contributed answers, corrections, and comments, -and the perlfaq notes those contributions wherever appropriate. +help of Nat Torkington. brian d foy substantialy edited and expanded +the perlfaq. perlfaq-workers and others have also supplied feedback +and corrections over the years. =head1 AUTHOR AND COPYRIGHT diff --git a/cpan/perlfaq/lib/perlfaq1.pod b/cpan/perlfaq/lib/perlfaq1.pod index 643ff4671ea..c351397821d 100644 --- a/cpan/perlfaq/lib/perlfaq1.pod +++ b/cpan/perlfaq/lib/perlfaq1.pod @@ -107,11 +107,9 @@ as its whitewashed bones have fractured or eroded. =item * -There is no Perl 6 release scheduled, but it will be available when -it's ready. The joke is that it's scheduled for Christmas, but that we -just don't know which one. Stay tuned, but don't worry that you'll -have to change major versions of Perl; no one is going to take Perl 5 -away from you. +The current leading implementation of Perl 6, Rakudo, released a "useful, +usable, 'early adopter'" distribution of Perl 6 (called Rakudo Star) in July of +2010. Please see http://rakudo.org/ for more information. =item * @@ -129,8 +127,9 @@ minor release (i.e. perl5.9.x, where 9 is the minor release). (contributed by brian d foy) -In short, Perl 4 is the past, Perl 5 is the present, and Perl 6 is the -future. +In short, Perl 4 is the parent to both Perl 5 and Perl 6. Perl 5 is the older +sibling, and though they are different languages, someone who knows one will +spot many similarities in the other. The number after Perl (i.e. the 5 after Perl 5) is the major release of the perl interpreter as well as the version of the language. Each @@ -143,13 +142,16 @@ The current major release of Perl is Perl 5, and was first released in concept of references, complex data structures, and modules. The Perl 5 interpreter was a complete re-write of the previous perl sources. -Perl 6 is the next major version of Perl, although it's not intended to -replace Perl 5. It's still in development in both its syntax and -design. The work started in 2002 and is still ongoing. Some of the -most interesting features have shown up in the latest versions of Perl -5, and some Perl 5 modules allow you to use some Perl 6 syntax in your -programs. The current leading implementation of Perl 6 is Rakudo ( -http://rakudo.org ). +Perl 6 was originally described as the community's rewrite of Perl 5. +Development started in 2002; syntax and design work continue to this day. As the +language has evolved, it has become clear that it is a separate language, +incompatible with Perl 5 but in the same language family. Contrary to popular +belief, Perl 6 and Perl 5 peacefully coexist with one another. That said, Perl 6 +has proven to be a fascinating source of ideas for those using Perl 5 (the Moose +object system is a well-known example). There is overlap in the communities, and +this overlap fosters the tradition of sharing and borrowing that have been +instrumental to Perl's success. The current leading implementation of Perl 6 is +Rakudo, and you can learn more about it at http://rakudo.org. See L for a history of Perl revisions. @@ -165,13 +167,13 @@ If you want to learn more about Perl 6, or have a desire to help in the crusade to make Perl a better place then read the Perl 6 developers page at http://dev.perl.org/perl6/ and get involved. -Perl 6 is not scheduled for release yet, and Perl 5 will still be supported -for quite awhile after its release. Do not wait for Perl 6 to do whatever -you need to do. - "We're really serious about reinventing everything that needs reinventing." --Larry Wall +As Perl 6 is a reinvention of Perl, it is a language in the same lineage but +not compatible. The two are complementary, not mutually exclusive. Perl 6 is not +meant to replace Perl 5, and vice versa. + =head2 How stable is Perl? Production releases, which incorporate bug fixes and new functionality, @@ -323,7 +325,7 @@ to sign email and usenet messages starting in the late 1980s. He previously used the phrase with many subjects ("Just another x hacker,"), so to distinguish his JAPH, he started to write them as Perl programs: - print "Just another Perl hacker,"; + print "Just another Perl hacker,"; Other people picked up on this and started to write clever or obfuscated programs to produce the same output, spinning things quickly out of diff --git a/cpan/perlfaq/lib/perlfaq2.pod b/cpan/perlfaq/lib/perlfaq2.pod index 59cf6d6d080..cf778ee4a28 100644 --- a/cpan/perlfaq/lib/perlfaq2.pod +++ b/cpan/perlfaq/lib/perlfaq2.pod @@ -31,23 +31,7 @@ source release of perl). =head2 How can I get a binary version of perl? -(contributed by brian d foy) - -ActiveState: Windows, Linux, Mac OS X, Solaris, AIX and HP-UX - - http://www.activestate.com/ - -Sunfreeware.com: Solaris 2.5 to Solaris 10 (SPARC and x86) - - http://www.sunfreeware.com/ - -Strawberry Perl: Windows, Perl 5.8.8 and 5.10.0 - - http://www.strawberryperl.com - -IndigoPerl: Windows - - http://indigostar.com/ +See L =head2 I don't have a C compiler. How can I build my own Perl interpreter? @@ -61,8 +45,8 @@ information on where to get such a binary version. You might look around the net for a pre-built binary of Perl (or a C compiler!) that meets your needs, though: -For Windows, Vanilla Perl ( http://vanillaperl.com/ ) and Strawberry Perl -( http://strawberryperl.com/ ) come with a +For Windows, L and +L come with a bundled C compiler. ActivePerl is a pre-compiled version of Perl ready-to-use. @@ -173,19 +157,25 @@ expressions, L for threads, L for debugging, and L for linking C and Perl together. There may be more by the time you read this. These URLs might also be useful: - http://perldoc.perl.org/ - http://www.perl.org/ - http://learn.perl.org/ +=over 4 + +=item * L + +=item * L + +=item * L + +=back =head2 What are the Perl newsgroups on Usenet? Where do I post questions? Several groups devoted to the Perl language are on Usenet: - comp.lang.perl.announce Moderated announcement group - comp.lang.perl.misc High traffic general Perl discussion - comp.lang.perl.moderated Moderated discussion group - comp.lang.perl.modules Use and development of Perl modules - comp.lang.perl.tk Using Tk (and X) from Perl + comp.lang.perl.announce Moderated announcement group + comp.lang.perl.misc High traffic general Perl discussion + comp.lang.perl.moderated Moderated discussion group + comp.lang.perl.modules Use and development of Perl modules + comp.lang.perl.tk Using Tk (and X) from Perl Some years ago, comp.lang.perl was divided into those groups, and comp.lang.perl itself officially removed. While that group may still @@ -258,13 +248,12 @@ http://www.ddj.com/ or brian d foy's index of online TPJ content =head2 What mailing lists are there for Perl? -Most of the major modules (C, C, C) have their own +Most of the major modules (L, L, L) have their own mailing lists. Consult the documentation that came with the module for subscription information. -A comprehensive list of Perl-related mailing lists can be found at: - - http://lists.perl.org/ +A comprehensive list of Perl-related mailing lists can be found at +http://lists.perl.org/ =head2 Where are the archives for comp.lang.perl.misc? @@ -313,17 +302,17 @@ information about your installation to include with your message, then sends the message to the right place. To determine if a module came with your version of Perl, you can -use the C module. It has the information about +use the L module. It has the information about the modules (with their versions) included with each release of Perl. -If C is not installed on your system, check out +If L is not installed on your system, check out http://perlpunks.de/corelist . Every CPAN module has a bug tracker set up in RT, http://rt.cpan.org . You can submit bugs to RT either through its web interface or by email. To email a bug report, send it to bug-Edistribution-nameE@rt.cpan.org . For example, if you -wanted to report a bug in C, you could send a message to +wanted to report a bug in L, you could send a message to bug-Business-ISBN@rt.cpan.org . Some modules might have special reporting requirements, such as a @@ -332,32 +321,38 @@ module documentation too. =head2 What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org? -Perl.com ( http://www.perl.com/ ) used to be part of the O'Reilly +L used to be part of the O'Reilly Network, a subsidiary of O'Reilly Media. Although it retains most of the original content from its O'Reilly Network, it is now hosted by The Perl Foundation. The Perl Foundation is an advocacy organization for the Perl language -which maintains the web site ( http://www.perl.org/ ) as a general +which maintains the web site L as a general advocacy site for the Perl language. It uses the domain to provide general support services to the Perl community, including the hosting of mailing lists, web sites, and other services. There are also many other sub-domains for special topics like learning Perl, Perl news, jobs in Perl, such as: - http://www.perl.org/ - http://learn.perl.org/ - http://jobs.perl.org/ - http://lists.perl.org/ +=over 4 + +=item * L + +=item * L + +=item * L + +=item * L + +=back Perl Mongers uses the pm.org domain for services related to Perl user groups, including the hosting of mailing lists and web sites. See the -Perl Mongers website ( http://www.pm.org/ ) for more information about +L for more information about joining, starting, or requesting services for a Perl user group. -CPAN, or the Comprehensive Perl Archive Network ( -http://www.cpan.org/ ), is a replicated, worldwide repository of Perl -software. +CPAN, or the L, +is a replicated, worldwide repository of Perl software. See LsrcE... mean?">. =head1 AUTHOR AND COPYRIGHT diff --git a/cpan/perlfaq/lib/perlfaq3.pod b/cpan/perlfaq/lib/perlfaq3.pod index 7ba64158e6b..689523ca46a 100644 --- a/cpan/perlfaq/lib/perlfaq3.pod +++ b/cpan/perlfaq/lib/perlfaq3.pod @@ -13,25 +13,58 @@ Have you looked at CPAN (see L)? The chances are that someone has already written a module that can solve your problem. Have you read the appropriate manpages? Here's a brief index: - Basics perldata, perlvar, perlsyn, perlop, perlsub - Execution perlrun, perldebug - Functions perlfunc - Objects perlref, perlmod, perlobj, perltie - Data Structures perlref, perllol, perldsc - Modules perlmod, perlmodlib, perlsub - Regexes perlre, perlfunc, perlop, perllocale - Moving to perl5 perltrap, perl - Linking w/C perlxstut, perlxs, perlcall, perlguts, perlembed - Various http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz - (not a man-page but still useful, a collection - of various essays on Perl techniques) +=over 4 + +=item Basics + +perldata, perlvar, perlsyn, perlop, perlsub + +=item Execution + +perlrun, perldebug + +=item Functions + +perlfunc + +=item Objects + +perlref, perlmod, perlobj, perltie + +=item Data Structures + +perlref, perllol, perldsc + +=item Modules + +perlmod, perlmodlib, perlsub + +=item Regexes + +perlre, perlfunc, perlop, perllocale + +=item Moving to perl5 + +perltrap, perl + +=item Linking with C + +perlxstut, perlxs, perlcall, perlguts, perlembed + +=item Various + +http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz +(not a man-page but still useful, a collection of various essays on +Perl techniques) + +=back A crude table of contents for the Perl manpage set is found in L. =head2 How can I use Perl interactively? The typical approach uses the Perl debugger, described in the -C manpage, on an "empty" program, like this: +L manpage, on an "empty" program, like this: perl -de 42 @@ -42,18 +75,17 @@ operations typically found in symbolic debuggers. =head2 Is there a Perl shell? -The C (Perl sh) is currently at version 1.8. The Perl Shell is a shell +The L (Perl sh) is currently at version 1.8. The Perl Shell is a shell that combines the interactive nature of a Unix shell with the power of Perl. The goal is a full-featured shell that behaves as expected for normal shell activity and uses Perl syntax and functionality for -control-flow statements and other things. You can get C at -http://sourceforge.net/projects/psh/ . +control-flow statements and other things. You can get L at +https://metacpan.org/release/psh . -C is a similar project and provides a shell written in perl, +L is a similar project and provides a shell written in perl, configured in perl and operated in perl. It is intended as a login shell and development environment. It can be found at -http://pardus-larus.student.utwente.nl/~pardus/projects/zoidberg/ -or your local CPAN mirror. +https://metacpan.org/release/Zoidberg. The C module (distributed with Perl) makes Perl try commands which aren't part of the Perl language as shell commands. C from @@ -64,54 +96,54 @@ be what you want. From the command line, you can use the C command's C<-l> switch: - $ cpan -l + $ cpan -l You can also use C's C<-a> switch to create an autobundle file that C understands and can use to re-install every module: - $ cpan -a + $ cpan -a -Inside a Perl program, you can use the C module to +Inside a Perl program, you can use the L module to show all installed distributions, although it can take awhile to do its magic. The standard library which comes with Perl just shows up -as "Perl" (although you can get those with C). +as "Perl" (although you can get those with L). - use ExtUtils::Installed; + use ExtUtils::Installed; - my $inst = ExtUtils::Installed->new(); - my @modules = $inst->modules(); + my $inst = ExtUtils::Installed->new(); + my @modules = $inst->modules(); If you want a list of all of the Perl module filenames, you -can use C: +can use L: - use File::Find::Rule; + use File::Find::Rule; - my @files = File::Find::Rule-> - extras({follow => 1})-> - file()-> - name( '*.pm' )-> - in( @INC ) - ; + my @files = File::Find::Rule-> + extras({follow => 1})-> + file()-> + name( '*.pm' )-> + in( @INC ) + ; If you do not have that module, you can do the same thing -with C which is part of the standard library: +with L which is part of the standard library: - use File::Find; - my @files; + use File::Find; + my @files; - find( - { - wanted => sub { - push @files, $File::Find::fullname - if -f $File::Find::fullname && /\.pm$/ - }, - follow => 1, - follow_skip => 2, - }, - @INC - ); + find( + { + wanted => sub { + push @files, $File::Find::fullname + if -f $File::Find::fullname && /\.pm$/ + }, + follow => 1, + follow_skip => 2, + }, + @INC + ); - print join "\n", @files; + print join "\n", @files; If you simply need to check quickly to see if a module is available, you can check for its documentation. If you can @@ -119,12 +151,12 @@ read the documentation the module is most likely installed. If you cannot read the documentation, the module might not have any (in rare cases): - $ perldoc Module::Name + $ perldoc Module::Name You can also try to include the module in a one-liner to see if perl finds it: - $ perl -MModule::Name -e1 + $ perl -MModule::Name -e1 =head2 How do I debug my Perl programs? @@ -136,28 +168,28 @@ on warnings and strictures, you can head off many problems before they get too big. You can find out more about these in L and L. - #!/usr/bin/perl - use strict; - use warnings; + #!/usr/bin/perl + use strict; + use warnings; Beyond that, the simplest debugger is the C function. Use it to look at values as you run your program: - print STDERR "The value is [$value]\n"; + print STDERR "The value is [$value]\n"; -The C module can pretty-print Perl data structures: +The L module can pretty-print Perl data structures: - use Data::Dumper qw( Dumper ); - print STDERR "The hash is " . Dumper( \%hash ) . "\n"; + use Data::Dumper qw( Dumper ); + print STDERR "The hash is " . Dumper( \%hash ) . "\n"; Perl comes with an interactive debugger, which you can start with the C<-d> switch. It's fully explained in L. -If you'd like a graphical user interface and you have C, you can use +If you'd like a graphical user interface and you have L, you can use C. It's on CPAN and available for free. If you need something much more sophisticated and controllable, Leon -Brocard's C (which you can call with the C<-D> switch as C<-Debug>) +Brocard's L (which you can call with the C<-D> switch as C<-Debug>) gives you the programmatic hooks into everything you need to write your own (without too much pain and suffering). @@ -171,20 +203,20 @@ from Activestate (Windows and Mac OS X), or EPIC (most platforms). The C namespace has several modules which you can use to profile your Perl programs. -The C (New York Times Profiler) does both statement +The L (New York Times Profiler) does both statement and subroutine profiling. It's available from CPAN and you also invoke it with the C<-d> switch: - perl -d:NYTProf some_perl.pl + perl -d:NYTProf some_perl.pl It creates a database of the profile information that you can turn into reports. The C command turns the data into an HTML report -similar to the C report: +similar to the L report: - nytprofhtml + nytprofhtml CPAN has several other profilers that you can invoke in the same -fashion. You might also be interested in using the C to +fashion. You might also be interested in using the L to measure and compare code snippets. You can read more about profiling in I, chapter 20, @@ -209,18 +241,17 @@ http://www.stonehenge.com/merlyn/LinuxMag/col75.html . =head2 How do I cross-reference my Perl programs? -The C module can be used to generate cross-reference reports +The L module can be used to generate cross-reference reports for Perl programs. perl -MO=Xref[,OPTIONS] scriptname.plx =head2 Is there a pretty-printer (formatter) for Perl? -C is a Perl script which indents and reformats Perl scripts -to make them easier to read by trying to follow the rules of the -L. If you write Perl scripts, or spend much time reading -them, you will probably find it useful. It is available at -http://perltidy.sourceforge.net . +L comes with a perl script L which indents and +reformats Perl scripts to make them easier to read by trying to follow +the rules of the L. If you write Perl, or spend much time reading +Perl, you will probably find it useful. Of course, if you simply follow the guidelines in L, you shouldn't need to reformat. The habit of formatting your code @@ -651,22 +682,22 @@ toward this: Don't read an entire file into memory if you can process it line by line. Or more concretely, use a loop like this: - # - # Good Idea - # - while () { - # ... - } + # + # Good Idea + # + while () { + # ... + } instead of this: - # - # Bad Idea - # - @data = ; - foreach (@data) { - # ... - } + # + # Bad Idea + # + @data = ; + foreach (@data) { + # ... + } When the files you're processing are small, it doesn't much matter which way you do it, but it makes a huge difference when they start getting @@ -700,21 +731,21 @@ only makes one copy. Ditto for stringifying large arrays: - { - local $, = "\n"; - print @big_array; - } + { + local $, = "\n"; + print @big_array; + } is much more memory-efficient than either - print join "\n", @big_array; + print join "\n", @big_array; or - { - local $" = "\n"; - print "@big_array"; - } + { + local $" = "\n"; + print "@big_array"; + } =item * Pass by reference @@ -741,8 +772,8 @@ Yes. Perl's garbage collection system takes care of this so everything works out right. sub makeone { - my @a = ( 1 .. 10 ); - return \@a; + my @a = ( 1 .. 10 ); + return \@a; } for ( 1 .. 10 ) { @@ -931,7 +962,7 @@ Yes. Read L for more information. Some examples follow. # display reasonable manpath echo $PATH | perl -nl -072 -e ' - s![^/+]*$!man!&&-d&&!$s{$_}++&&push@m,$_;END{print"@m"}' + s![^/+]*$!man!&&-d&&!$s{$_}++&&push@m,$_;END{print"@m"}' OK, the last one was actually an Obfuscated Perl Contest entry. :-) @@ -989,7 +1020,7 @@ do I get 500 Errors" or "Why doesn't it run from the browser right when it runs fine on the command line", see the troubleshooting guides and references in L or in the CGI MetaFAQ: - http://www.perl.org/CGI_MetaFAQ.html + http://www.perl.org/CGI_MetaFAQ.html =head2 Where can I learn about object-oriented Perl programming? @@ -1043,7 +1074,7 @@ or (contributed by brian d foy) -The C module, better known simply as "MakeMaker", +The L module, better known simply as "MakeMaker", turns a Perl script, typically called C, into a Makefile. The Unix tool C uses this file to manage dependencies and actions to process and install a Perl distribution. diff --git a/cpan/perlfaq/lib/perlfaq4.pod b/cpan/perlfaq/lib/perlfaq4.pod index 40000f89057..6bca48e794e 100644 --- a/cpan/perlfaq/lib/perlfaq4.pod +++ b/cpan/perlfaq/lib/perlfaq4.pod @@ -28,9 +28,9 @@ To limit the number of decimal places in your numbers, you can use the C or C function. See L for more details. - printf "%.2f", 10/3; + printf "%.2f", 10/3; - my $number = sprintf "%.2f", 10/3; + my $number = sprintf "%.2f", 10/3; =head2 Why is int() broken? @@ -43,7 +43,7 @@ First, see the answer to "Why am I getting long decimals For example, this - print int(0.6/0.2-2), "\n"; + print int(0.6/0.2-2), "\n"; will in most computers print 0, not 1, because even such simple numbers as 0.6 and 0.2 cannot be presented exactly by floating-point @@ -59,38 +59,38 @@ converts as a decimal number. When Perl converts a string to a number, it ignores leading spaces and zeroes, then assumes the rest of the digits are in base 10: - my $string = '0644'; + my $string = '0644'; - print $string + 0; # prints 644 + print $string + 0; # prints 644 - print $string + 44; # prints 688, certainly not octal! + print $string + 44; # prints 688, certainly not octal! This problem usually involves one of the Perl built-ins that has the same name a Unix command that uses octal numbers as arguments on the command line. In this example, C on the command line knows that its first argument is octal because that's what it does: - %prompt> chmod 644 file + %prompt> chmod 644 file If you want to use the same literal digits (644) in Perl, you have to tell Perl to treat them as octal numbers either by prefixing the digits with a C<0> or using C: - chmod( 0644, $file); # right, has leading zero - chmod( oct(644), $file ); # also correct + chmod( 0644, $file); # right, has leading zero + chmod( oct(644), $file ); # also correct The problem comes in when you take your numbers from something that Perl thinks is a string, such as a command line argument in C<@ARGV>: - chmod( $ARGV[0], $file); # wrong, even if "0644" + chmod( $ARGV[0], $file); # wrong, even if "0644" - chmod( oct($ARGV[0]), $file ); # correct, treat string as octal + chmod( oct($ARGV[0]), $file ); # correct, treat string as octal You can always check the value you're using by printing it in octal notation to ensure it matches what you think it should be. Print it in octal and decimal format: - printf "0%o %d", $number, $number; + printf "0%o %d", $number, $number; =head2 Does Perl have a round() function? What about ceil() and floor()? Trig functions? @@ -98,20 +98,20 @@ Remember that C merely truncates toward 0. For rounding to a certain number of digits, C or C is usually the easiest route. - printf("%.3f", 3.1415926535); # prints 3.142 + printf("%.3f", 3.1415926535); # prints 3.142 -The C module (part of the standard Perl distribution) +The Perltidy module (part of the standard Perl distribution) implements C, C, and a number of other mathematical and trigonometric functions. - use POSIX; - $ceil = ceil(3.5); # 4 - $floor = floor(3.5); # 3 + use POSIX; + $ceil = ceil(3.5); # 4 + $floor = floor(3.5); # 3 -In 5.000 to 5.003 perls, trigonometry was done in the C -module. With 5.004, the C module (part of the standard Perl +In 5.000 to 5.003 perls, trigonometry was done in the L +module. With 5.004, the L module (part of the standard Perl distribution) implements the trigonometric functions. Internally it -uses the C module and some functions can break out from +uses the L module and some functions can break out from the real axis into the complex plane, for example the inverse sine of 2. @@ -124,10 +124,10 @@ need yourself. To see why, notice how you'll still have an issue on half-way-point alternation: - for ($i = 0; $i < 1.01; $i += 0.05) { printf "%.1f ",$i} + for ($i = 0; $i < 1.01; $i += 0.05) { printf "%.1f ",$i} - 0.0 0.1 0.1 0.2 0.2 0.2 0.3 0.3 0.4 0.4 0.5 0.5 0.6 0.7 0.7 - 0.8 0.8 0.9 0.9 1.0 1.0 + 0.0 0.1 0.1 0.2 0.2 0.2 0.3 0.3 0.4 0.4 0.5 0.5 0.6 0.7 0.7 + 0.8 0.8 0.9 0.9 1.0 1.0 Don't blame Perl. It's the same as in C. IEEE says we have to do this. Perl numbers whose absolute values are integers under 2**31 (on @@ -141,8 +141,8 @@ few examples of approaches to making common conversions between number representations. This is intended to be representational rather than exhaustive. -Some of the examples later in L use the C -module from CPAN. The reason you might choose C over the +Some of the examples later in L use the L +module from CPAN. The reason you might choose L over the perl built-in functions is that it works with numbers of ANY size, that it is optimized for speed on some operations, and for at least some programmers the notation might be familiar. @@ -153,119 +153,119 @@ some programmers the notation might be familiar. Using perl's built in conversion of C<0x> notation: - $dec = 0xDEADBEEF; + $dec = 0xDEADBEEF; Using the C function: - $dec = hex("DEADBEEF"); + $dec = hex("DEADBEEF"); Using C: - $dec = unpack("N", pack("H8", substr("0" x 8 . "DEADBEEF", -8))); + $dec = unpack("N", pack("H8", substr("0" x 8 . "DEADBEEF", -8))); Using the CPAN module C: - use Bit::Vector; - $vec = Bit::Vector->new_Hex(32, "DEADBEEF"); - $dec = $vec->to_Dec(); + use Bit::Vector; + $vec = Bit::Vector->new_Hex(32, "DEADBEEF"); + $dec = $vec->to_Dec(); =item How do I convert from decimal to hexadecimal Using C: - $hex = sprintf("%X", 3735928559); # upper case A-F - $hex = sprintf("%x", 3735928559); # lower case a-f + $hex = sprintf("%X", 3735928559); # upper case A-F + $hex = sprintf("%x", 3735928559); # lower case a-f Using C: - $hex = unpack("H*", pack("N", 3735928559)); + $hex = unpack("H*", pack("N", 3735928559)); -Using C: +Using L: - use Bit::Vector; - $vec = Bit::Vector->new_Dec(32, -559038737); - $hex = $vec->to_Hex(); + use Bit::Vector; + $vec = Bit::Vector->new_Dec(32, -559038737); + $hex = $vec->to_Hex(); -And C supports odd bit counts: +And L supports odd bit counts: - use Bit::Vector; - $vec = Bit::Vector->new_Dec(33, 3735928559); - $vec->Resize(32); # suppress leading 0 if unwanted - $hex = $vec->to_Hex(); + use Bit::Vector; + $vec = Bit::Vector->new_Dec(33, 3735928559); + $vec->Resize(32); # suppress leading 0 if unwanted + $hex = $vec->to_Hex(); =item How do I convert from octal to decimal Using Perl's built in conversion of numbers with leading zeros: - $dec = 033653337357; # note the leading 0! + $dec = 033653337357; # note the leading 0! Using the C function: - $dec = oct("33653337357"); + $dec = oct("33653337357"); -Using C: +Using L: - use Bit::Vector; - $vec = Bit::Vector->new(32); - $vec->Chunk_List_Store(3, split(//, reverse "33653337357")); - $dec = $vec->to_Dec(); + use Bit::Vector; + $vec = Bit::Vector->new(32); + $vec->Chunk_List_Store(3, split(//, reverse "33653337357")); + $dec = $vec->to_Dec(); =item How do I convert from decimal to octal Using C: - $oct = sprintf("%o", 3735928559); + $oct = sprintf("%o", 3735928559); -Using C: +Using L: - use Bit::Vector; - $vec = Bit::Vector->new_Dec(32, -559038737); - $oct = reverse join('', $vec->Chunk_List_Read(3)); + use Bit::Vector; + $vec = Bit::Vector->new_Dec(32, -559038737); + $oct = reverse join('', $vec->Chunk_List_Read(3)); =item How do I convert from binary to decimal Perl 5.6 lets you write binary numbers directly with the C<0b> notation: - $number = 0b10110110; + $number = 0b10110110; Using C: - my $input = "10110110"; - $decimal = oct( "0b$input" ); + my $input = "10110110"; + $decimal = oct( "0b$input" ); Using C and C: - $decimal = ord(pack('B8', '10110110')); + $decimal = ord(pack('B8', '10110110')); Using C and C for larger strings: - $int = unpack("N", pack("B32", - substr("0" x 32 . "11110101011011011111011101111", -32))); - $dec = sprintf("%d", $int); + $int = unpack("N", pack("B32", + substr("0" x 32 . "11110101011011011111011101111", -32))); + $dec = sprintf("%d", $int); - # substr() is used to left-pad a 32-character string with zeros. + # substr() is used to left-pad a 32-character string with zeros. -Using C: +Using L: - $vec = Bit::Vector->new_Bin(32, "11011110101011011011111011101111"); - $dec = $vec->to_Dec(); + $vec = Bit::Vector->new_Bin(32, "11011110101011011011111011101111"); + $dec = $vec->to_Dec(); =item How do I convert from decimal to binary Using C (perl 5.6+): - $bin = sprintf("%b", 3735928559); + $bin = sprintf("%b", 3735928559); Using C: - $bin = unpack("B*", pack("N", 3735928559)); + $bin = unpack("B*", pack("N", 3735928559)); -Using C: +Using L: - use Bit::Vector; - $vec = Bit::Vector->new_Dec(32, -559038737); - $bin = $vec->to_Bin(); + use Bit::Vector; + $vec = Bit::Vector->new_Dec(32, -559038737); + $bin = $vec->to_Bin(); The remaining transformations (e.g. hex -> oct, bin -> hex, etc.) are left as an exercise to the inclined reader. @@ -290,59 +290,59 @@ stringify the arguments explicitly (using C<""> or C) or convert them to numbers explicitly (using C<0+$arg>). The rest arise because the programmer says: - if ("\020\020" & "\101\101") { - # ... - } + if ("\020\020" & "\101\101") { + # ... + } but a string consisting of two null bytes (the result of C<"\020\020" & "\101\101">) is not a false value in Perl. You need: - if ( ("\020\020" & "\101\101") !~ /[^\000]/) { - # ... - } + if ( ("\020\020" & "\101\101") !~ /[^\000]/) { + # ... + } =head2 How do I multiply matrices? -Use the C or C modules (available from CPAN) -or the C extension (also available from CPAN). +Use the L or L modules (available from CPAN) +or the L extension (also available from CPAN). =head2 How do I perform an operation on a series of integers? To call a function on each element in an array, and collect the results, use: - @results = map { my_func($_) } @array; + @results = map { my_func($_) } @array; For example: - @triple = map { 3 * $_ } @single; + @triple = map { 3 * $_ } @single; To call a function on each element of an array, but ignore the results: - foreach $iterator (@array) { - some_func($iterator); - } + foreach $iterator (@array) { + some_func($iterator); + } To call a function on each integer in a (small) range, you B use: - @results = map { some_func($_) } (5 .. 25); + @results = map { some_func($_) } (5 .. 25); but you should be aware that the C<..> operator creates a list of all integers in the range. This can take a lot of memory for large ranges. Instead use: - @results = (); - for ($i=5; $i <= 500_005; $i++) { - push(@results, some_func($i)); - } + @results = (); + for ($i=5; $i <= 500_005; $i++) { + push(@results, some_func($i)); + } This situation has been fixed in Perl5.005. Use of C<..> in a C loop will iterate over the range, without creating the entire range. - for my $i (5 .. 500_005) { - push(@results, some_func($i)); - } + for my $i (5 .. 500_005) { + push(@results, some_func($i)); + } will not create a list of 500,000 integers. @@ -355,7 +355,7 @@ Get the L module. If you're using a version of Perl before 5.004, you must call C once at the start of your program to seed the random number generator. - BEGIN { srand() if $] < 5.004 } + BEGIN { srand() if $] < 5.004 } 5.004 and later automatically call C at the beginning. Don't call C more than once--you make your numbers less random, @@ -370,7 +370,7 @@ who attempts to generate random numbers by deterministic means is, of course, living in a state of sin." If you want numbers that are more random than C with C -provides, you should also check out the C module from +provides, you should also check out the L module from CPAN. It uses the imperfections in your system's timer to generate random numbers, but this takes quite a while. If you want a better pseudorandom generator than comes with your operating system, look at @@ -389,19 +389,19 @@ from 0 to the difference between your I and I. That is, to get a number between 10 and 15, inclusive, you want a random number between 0 and 5 that you can then add to 10. - my $number = 10 + int rand( 15-10+1 ); # ( 10,11,12,13,14, or 15 ) + my $number = 10 + int rand( 15-10+1 ); # ( 10,11,12,13,14, or 15 ) Hence you derive the following simple function to abstract that. It selects a random integer between the two given integers (inclusive), For example: C. - sub random_int_between { - my($min, $max) = @_; - # Assumes that the two arguments are integers themselves! - return $min if $min == $max; - ($min, $max) = ($max, $min) if $min > $max; - return $min + int rand(1 + $max - $min); - } + sub random_int_between { + my($min, $max) = @_; + # Assumes that the two arguments are integers themselves! + return $min if $min == $max; + ($min, $max) = ($max, $min) if $min > $max; + return $min + int rand(1 + $max - $min); + } =head1 Data: Dates @@ -411,48 +411,48 @@ The day of the year is in the list returned by the C function. Without an argument C uses the current time. - my $day_of_year = (localtime)[7]; + my $day_of_year = (localtime)[7]; -The C module can also format a date as the day of the year or +The L module can also format a date as the day of the year or week of the year. - use POSIX qw/strftime/; - my $day_of_year = strftime "%j", localtime; - my $week_of_year = strftime "%W", localtime; + use POSIX qw/strftime/; + my $day_of_year = strftime "%j", localtime; + my $week_of_year = strftime "%W", localtime; -To get the day of year for any date, use C's C to get +To get the day of year for any date, use L's C to get a time in epoch seconds for the argument to C. - use POSIX qw/mktime strftime/; - my $week_of_year = strftime "%W", - localtime( mktime( 0, 0, 0, 18, 11, 87 ) ); + use POSIX qw/mktime strftime/; + my $week_of_year = strftime "%W", + localtime( mktime( 0, 0, 0, 18, 11, 87 ) ); -You can also use C, which comes with Perl and provides a +You can also use L, which comes with Perl and provides a C that returns an object: - use Time::Piece; - my $day_of_year = localtime->yday; - my $week_of_year = localtime->week; + use Time::Piece; + my $day_of_year = localtime->yday; + my $week_of_year = localtime->week; -The C module provides two functions to calculate these, too: +The L module provides two functions to calculate these, too: - use Date::Calc; - my $day_of_year = Day_of_Year( 1987, 12, 18 ); - my $week_of_year = Week_of_Year( 1987, 12, 18 ); + use Date::Calc; + my $day_of_year = Day_of_Year( 1987, 12, 18 ); + my $week_of_year = Week_of_Year( 1987, 12, 18 ); =head2 How do I find the current century or millennium? Use the following simple functions: - sub get_century { - return int((((localtime(shift || time))[5] + 1999))/100); - } + sub get_century { + return int((((localtime(shift || time))[5] + 1999))/100); + } - sub get_millennium { - return 1+int((((localtime(shift || time))[5] + 1899))/1000); - } + sub get_millennium { + return 1+int((((localtime(shift || time))[5] + 1899))/1000); + } -On some systems, the C module's C function has been +On some systems, the L module's C function has been extended in a non-standard way to use a C<%C> format, which they sometimes claim is the "century". It isn't, because on most such systems, this is only the first two digits of the four-digit year, and @@ -466,71 +466,71 @@ millennium. You could just store all your dates as a number and then subtract. Life isn't always that simple though. -The C module, which comes with Perl, replaces C +The L module, which comes with Perl, replaces L with a version that returns an object. It also overloads the comparison operators so you can compare them directly: - use Time::Piece; - my $date1 = localtime( $some_time ); - my $date2 = localtime( $some_other_time ); + use Time::Piece; + my $date1 = localtime( $some_time ); + my $date2 = localtime( $some_other_time ); - if( $date1 < $date2 ) { - print "The date was in the past\n"; - } + if( $date1 < $date2 ) { + print "The date was in the past\n"; + } You can also get differences with a subtraction, which returns a -C object: +L object: - my $diff = $date1 - $date2; - print "The difference is ", $date_diff->days, " days\n"; + my $diff = $date1 - $date2; + print "The difference is ", $date_diff->days, " days\n"; -If you want to work with formatted dates, the C, -C, or C modules can help you. +If you want to work with formatted dates, the L, +L, or L modules can help you. =head2 How can I take a string and turn it into epoch seconds? If it's a regular enough string that it always has the same format, you can split it up and pass the parts to C in the standard -C module. Otherwise, you should look into the C, -C, and C modules from CPAN. +L module. Otherwise, you should look into the L, +L, and L modules from CPAN. =head2 How can I find the Julian Day? (contributed by brian d foy and Dave Cross) -You can use the C module, part of the Standard Library, +You can use the L module, part of the Standard Library, which can convert a date/time to a Julian Day: - $ perl -MTime::Piece -le 'print localtime->julian_day' - 2455607.7959375 + $ perl -MTime::Piece -le 'print localtime->julian_day' + 2455607.7959375 Or the modified Julian Day: - $ perl -MTime::Piece -le 'print localtime->mjd' - 55607.2961226851 + $ perl -MTime::Piece -le 'print localtime->mjd' + 55607.2961226851 Or even the day of the year (which is what some people think of as a Julian day): - $ perl -MTime::Piece -le 'print localtime->yday' - 45 + $ perl -MTime::Piece -le 'print localtime->yday' + 45 -You can also do the same things with the C module: +You can also do the same things with the L module: - $ perl -MDateTime -le'print DateTime->today->jd' - 2453401.5 - $ perl -MDateTime -le'print DateTime->today->mjd' - 53401 - $ perl -MDateTime -le'print DateTime->today->doy' - 31 + $ perl -MDateTime -le'print DateTime->today->jd' + 2453401.5 + $ perl -MDateTime -le'print DateTime->today->mjd' + 53401 + $ perl -MDateTime -le'print DateTime->today->doy' + 31 -You can use the C module available on CPAN. Ensure +You can use the L module available on CPAN. Ensure that you really want to find a Julian day, though, as many people have different ideas about Julian days (see http://www.hermetic.ch/cal_stud/jdn.htm for instance): - $ perl -MTime::JulianDay -le 'print local_julian_day( time )' - 55608 + $ perl -MTime::JulianDay -le 'print local_julian_day( time )' + 55608 =head2 How do I find yesterday's date? X X X X X @@ -540,24 +540,24 @@ X (contributed by brian d foy) To do it correctly, you can use one of the C modules since they -work with calendars instead of times. The C module makes it +work with calendars instead of times. The L module makes it simple, and give you the same time of day, only the day before, despite daylight saving time changes: - use DateTime; + use DateTime; - my $yesterday = DateTime->now->subtract( days => 1 ); + my $yesterday = DateTime->now->subtract( days => 1 ); - print "Yesterday was $yesterday\n"; + print "Yesterday was $yesterday\n"; -You can also use the C module using its C +You can also use the L module using its C function. - use Date::Calc qw( Today_and_Now Add_Delta_DHMS ); + use Date::Calc qw( Today_and_Now Add_Delta_DHMS ); - my @date_time = Add_Delta_DHMS( Today_and_Now(), -1, 0, 0, 0 ); + my @date_time = Add_Delta_DHMS( Today_and_Now(), -1, 0, 0, 0 ); - print "@date_time\n"; + print "@date_time\n"; Most people try to use the time rather than the calendar to figure out dates, but that assumes that days are twenty-four hours each. For @@ -565,31 +565,31 @@ most people, there are two days a year when they aren't: the switch to and from summer time throws this off. For example, the rest of the suggestions will be wrong sometimes: -Starting with Perl 5.10, C and C are part +Starting with Perl 5.10, L and L are part of the standard distribution, so you might think that you could do something like this: - use Time::Piece; - use Time::Seconds; + use Time::Piece; + use Time::Seconds; - my $yesterday = localtime() - ONE_DAY; # WRONG - print "Yesterday was $yesterday\n"; + my $yesterday = localtime() - ONE_DAY; # WRONG + print "Yesterday was $yesterday\n"; -The C module exports a new C that returns an -object, and C exports the C constant that is a +The L module exports a new C that returns an +object, and L exports the C constant that is a set number of seconds. This means that it always gives the time 24 hours ago, which is not always yesterday. This can cause problems around the end of daylight saving time when there's one day that is 25 hours long. -You have the same problem with C, which will give the wrong +You have the same problem with L, which will give the wrong answer for those same special cases: - # contributed by Gunnar Hjalmarsson - use Time::Local; - my $today = timelocal 0, 0, 12, ( localtime )[3..5]; - my ($d, $m, $y) = ( localtime $today-86400 )[3..5]; # WRONG - printf "Yesterday: %d-%02d-%02d\n", $y+1900, $m+1, $d; + # contributed by Gunnar Hjalmarsson + use Time::Local; + my $today = timelocal 0, 0, 12, ( localtime )[3..5]; + my ($d, $m, $y) = ( localtime $today-86400 )[3..5]; # WRONG + printf "Yesterday: %d-%02d-%02d\n", $y+1900, $m+1, $d; =head2 Does Perl have a Year 2000 or 2038 problem? Is Perl Y2K compliant? @@ -603,15 +603,15 @@ Starting with Perl 5.12, C and C can handle dates past 03:14:08 January 19, 2038, when a 32-bit based time would overflow. You still might get a warning on a 32-bit C: - % perl5.12 -E 'say scalar localtime( 0x9FFF_FFFFFFFF )' - Integer overflow in hexadecimal number at -e line 1. - Wed Nov 1 19:42:39 5576711 + % perl5.12 -E 'say scalar localtime( 0x9FFF_FFFFFFFF )' + Integer overflow in hexadecimal number at -e line 1. + Wed Nov 1 19:42:39 5576711 On a 64-bit C, you can get even larger dates for those really long running projects: - % perl5.12 -E 'say scalar gmtime( 0x9FFF_FFFFFFFF )' - Thu Nov 2 00:42:39 5576711 + % perl5.12 -E 'say scalar gmtime( 0x9FFF_FFFFFFFF )' + Thu Nov 2 00:42:39 5576711 You're still out of luck if you need to keep track of decaying protons though. @@ -625,11 +625,11 @@ though. There are many ways to ensure that values are what you expect or want to accept. Besides the specific examples that we cover in the perlfaq, you can also look at the modules with "Assert" and "Validate" -in their names, along with other modules such as C. +in their names, along with other modules such as L. Some modules have validation for particular types of input, such -as C, C, C, -and C. +as L, L, L, +and L. =head2 How do I unescape a string? @@ -637,7 +637,7 @@ It depends just what you mean by "escape". URL escapes are dealt with in L. Shell escapes with the backslash (C<\>) character are removed with - s/\\(.)/$1/g; + s/\\(.)/$1/g; This won't expand C<"\n"> or C<"\t"> or any other special escapes. @@ -652,7 +652,7 @@ store the matched character in the back-reference C<\g1> and we use that to require that the same thing immediately follow it. We replace that part of the string with the character in C<$1>. - s/(.)\g1/$1/g; + s/(.)\g1/$1/g; We can also use the transliteration operator, C. In this example, the search list side of our C contains nothing, but @@ -663,8 +663,8 @@ replace the character with itself). However, the C option squashes duplicated and consecutive characters in the string so a character does not show up next to itself - my $str = 'Haarlem'; # in the Netherlands - $str =~ tr///cs; # Now Harlem, like in New York + my $str = 'Haarlem'; # in the Netherlands + $str =~ tr///cs; # Now Harlem, like in New York =head2 How do I expand function calls in a string? @@ -676,7 +676,7 @@ function inside the braces used to dereference a reference. If we have more than one return value, we can construct and dereference an anonymous array. In this case, we call the function in list context. - print "The time values are @{ [localtime] }.\n"; + print "The time values are @{ [localtime] }.\n"; If we want to call the function in scalar context, we have to do a bit more work. We can really have any code we like inside the braces, so @@ -685,29 +685,29 @@ that is up to you, and you can use code inside the braces. Note that the use of parens creates a list context, so we need C to force the scalar context on the function: - print "The time is ${\(scalar localtime)}.\n" + print "The time is ${\(scalar localtime)}.\n" - print "The time is ${ my $x = localtime; \$x }.\n"; + print "The time is ${ my $x = localtime; \$x }.\n"; If your function already returns a reference, you don't need to create the reference yourself. - sub timestamp { my $t = localtime; \$t } + sub timestamp { my $t = localtime; \$t } - print "The time is ${ timestamp() }.\n"; + print "The time is ${ timestamp() }.\n"; The C module can also do a lot of magic for you. You can specify a variable name, in this case C, to set up a tied hash that does the interpolation for you. It has several other methods to do this as well. - use Interpolation E => 'eval'; - print "The time values are $E{localtime()}.\n"; + use Interpolation E => 'eval'; + print "The time values are $E{localtime()}.\n"; In most cases, it is probably easier to simply use string concatenation, which also forces scalar context. - print "The time is " . localtime() . ".\n"; + print "The time is " . localtime() . ".\n"; =head2 How do I find matching/nesting anything? @@ -723,68 +723,68 @@ parser. If you are serious about writing a parser, there are a number of modules or oddities that will make your life a lot easier. There are -the CPAN modules C, C, and -C; and the C program. Starting from perl 5.8 -the C is part of the standard distribution. +the CPAN modules L, L, and +L; and the C program. Starting from perl 5.8 +the L is part of the standard distribution. One simple destructive, inside-out approach that you might try is to pull out the smallest nesting parts one at a time: - while (s/BEGIN((?:(?!BEGIN)(?!END).)*)END//gs) { - # do something with $1 - } + while (s/BEGIN((?:(?!BEGIN)(?!END).)*)END//gs) { + # do something with $1 + } A more complicated and sneaky approach is to make Perl's regular expression engine do it for you. This is courtesy Dean Inada, and rather has the nature of an Obfuscated Perl Contest entry, but it really does work: - # $_ contains the string to parse - # BEGIN and END are the opening and closing markers for the - # nested text. + # $_ contains the string to parse + # BEGIN and END are the opening and closing markers for the + # nested text. - @( = ('(',''); - @) = (')',''); - ($re=$_)=~s/((BEGIN)|(END)|.)/$)[!$3]\Q$1\E$([!$2]/gs; - @$ = (eval{/$re/},$@!~/unmatched/i); - print join("\n",@$[0..$#$]) if( $$[-1] ); + @( = ('(',''); + @) = (')',''); + ($re=$_)=~s/((BEGIN)|(END)|.)/$)[!$3]\Q$1\E$([!$2]/gs; + @$ = (eval{/$re/},$@!~/unmatched/i); + print join("\n",@$[0..$#$]) if( $$[-1] ); =head2 How do I reverse a string? Use C in scalar context, as documented in L. - $reversed = reverse $string; + $reversed = reverse $string; =head2 How do I expand tabs in a string? You can do it yourself: - 1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e; + 1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e; -Or you can just use the C module (part of the standard Perl +Or you can just use the L module (part of the standard Perl distribution). - use Text::Tabs; - @expanded_lines = expand(@lines_with_tabs); + use Text::Tabs; + @expanded_lines = expand(@lines_with_tabs); =head2 How do I reformat a paragraph? -Use C (part of the standard Perl distribution): +Use L (part of the standard Perl distribution): - use Text::Wrap; - print wrap("\t", ' ', @paragraphs); + use Text::Wrap; + print wrap("\t", ' ', @paragraphs); -The paragraphs you give to C should not contain embedded -newlines. C doesn't justify the lines (flush-right). +The paragraphs you give to L should not contain embedded +newlines. L doesn't justify the lines (flush-right). -Or use the CPAN module C. Formatting files can be +Or use the CPAN module L. Formatting files can be easily done by making a shell alias, like so: - alias fmt="perl -i -MText::Autoformat -n0777 \ - -e 'print autoformat $_, {all=>1}' $*" + alias fmt="perl -i -MText::Autoformat -n0777 \ + -e 'print autoformat $_, {all=>1}' $*" -See the documentation for C to appreciate its many +See the documentation for L to appreciate its many capabilities. =head2 How can I access or change N characters of a string? @@ -794,17 +794,17 @@ To get the first character, for example, start at position 0 and grab the string of length 1. - $string = "Just another Perl Hacker"; - $first_char = substr( $string, 0, 1 ); # 'J' + $string = "Just another Perl Hacker"; + $first_char = substr( $string, 0, 1 ); # 'J' To change part of a string, you can use the optional fourth argument which is the replacement string. - substr( $string, 13, 4, "Perl 5.8.0" ); + substr( $string, 13, 4, "Perl 5.8.0" ); You can also use substr() as an lvalue. - substr( $string, 13, 4 ) = "Perl 5.8.0"; + substr( $string, 13, 4 ) = "Perl 5.8.0"; =head2 How do I change the Nth occurrence of something? @@ -813,29 +813,29 @@ to change the fifth occurrence of C<"whoever"> or C<"whomever"> into C<"whosoever"> or C<"whomsoever">, case insensitively. These all assume that $_ contains the string to be altered. - $count = 0; - s{((whom?)ever)}{ - ++$count == 5 # is it the 5th? - ? "${2}soever" # yes, swap - : $1 # renege and leave it there - }ige; + $count = 0; + s{((whom?)ever)}{ + ++$count == 5 # is it the 5th? + ? "${2}soever" # yes, swap + : $1 # renege and leave it there + }ige; In the more general case, you can use the C modifier in a C loop, keeping count of matches. - $WANT = 3; - $count = 0; - $_ = "One fish two fish red fish blue fish"; - while (/(\w+)\s+fish\b/gi) { - if (++$count == $WANT) { - print "The third fish is a $1 one.\n"; - } - } + $WANT = 3; + $count = 0; + $_ = "One fish two fish red fish blue fish"; + while (/(\w+)\s+fish\b/gi) { + if (++$count == $WANT) { + print "The third fish is a $1 one.\n"; + } + } That prints out: C<"The third fish is a red one."> You can also use a repetition count and repeated pattern like this: - /(?:\w+\s+fish\s+){2}(\w+)\s+fish/i; + /(?:\w+\s+fish\s+){2}(\w+)\s+fish/i; =head2 How can I count the number of occurrences of a substring within a string? @@ -843,9 +843,9 @@ There are a number of ways, with varying efficiency. If you want a count of a certain single character (X) within a string, you can use the C function like so: - $string = "ThisXlineXhasXsomeXx'sXinXit"; - $count = ($string =~ tr/X//); - print "There are $count X characters in the string"; + $string = "ThisXlineXhasXsomeXx'sXinXit"; + $count = ($string =~ tr/X//); + print "There are $count X characters in the string"; This is fine if you are just looking for a single character. However, if you are trying to count multiple character substrings within a @@ -853,14 +853,14 @@ larger string, C won't work. What you can do is wrap a while() loop around a global pattern match. For example, let's count negative integers: - $string = "-9 55 48 -2 23 -76 4 14 -44"; - while ($string =~ /-\d+/g) { $count++ } - print "There are $count negative numbers in the string"; + $string = "-9 55 48 -2 23 -76 4 14 -44"; + while ($string =~ /-\d+/g) { $count++ } + print "There are $count negative numbers in the string"; Another version uses a global match in list context, then assigns the result to a scalar, producing a count of the number of matches. - $count = () = $string =~ /-\d+/g; + $count = () = $string =~ /-\d+/g; =head2 How do I capitalize all the words on one line? X X X X @@ -870,20 +870,20 @@ X X X X Damian Conway's L handles all of the thinking for you. - use Text::Autoformat; - my $x = "Dr. Strangelove or: How I Learned to Stop ". - "Worrying and Love the Bomb"; + use Text::Autoformat; + my $x = "Dr. Strangelove or: How I Learned to Stop ". + "Worrying and Love the Bomb"; - print $x, "\n"; - for my $style (qw( sentence title highlight )) { - print autoformat($x, { case => $style }), "\n"; - } + print $x, "\n"; + for my $style (qw( sentence title highlight )) { + print autoformat($x, { case => $style }), "\n"; + } How do you want to capitalize those words? - FRED AND BARNEY'S LODGE # all uppercase - Fred And Barney's Lodge # title case - Fred and Barney's Lodge # highlight case + FRED AND BARNEY'S LODGE # all uppercase + Fred And Barney's Lodge # title case + Fred and Barney's Lodge # highlight case It's not as easy a problem as it looks. How many words do you think are in there? Wait for it... wait for it.... If you answered 5 @@ -891,52 +891,52 @@ you're right. Perl words are groups of C<\w+>, but that's not what you want to capitalize. How is Perl supposed to know not to capitalize that C after the apostrophe? You could try a regular expression: - $string =~ s/ ( - (^\w) #at the beginning of the line - | # or - (\s\w) #preceded by whitespace - ) - /\U$1/xg; + $string =~ s/ ( + (^\w) #at the beginning of the line + | # or + (\s\w) #preceded by whitespace + ) + /\U$1/xg; - $string =~ s/([\w']+)/\u\L$1/g; + $string =~ s/([\w']+)/\u\L$1/g; Now, what if you don't want to capitalize that "and"? Just use L and get on with the next problem. :) =head2 How can I split a [character]-delimited string except when inside [character]? -Several modules can handle this sort of parsing--C, -C, C, and C, among others. +Several modules can handle this sort of parsing--L, +L, L, and L, among others. Take the example case of trying to split a string that is comma-separated into its different fields. You can't use C because you shouldn't split if the comma is inside quotes. For example, take a data line like this: - SAR001,"","Cimetrix, Inc","Bob Smith","CAM",N,8,1,0,7,"Error, Core Dumped" + SAR001,"","Cimetrix, Inc","Bob Smith","CAM",N,8,1,0,7,"Error, Core Dumped" Due to the restriction of the quotes, this is a fairly complex problem. Thankfully, we have Jeffrey Friedl, author of I, to handle these for us. He suggests (assuming your string is contained in C<$text>): - @new = (); - push(@new, $+) while $text =~ m{ - "([^\"\\]*(?:\\.[^\"\\]*)*)",? # groups the phrase inside the quotes - | ([^,]+),? - | , - }gx; - push(@new, undef) if substr($text,-1,1) eq ','; + @new = (); + push(@new, $+) while $text =~ m{ + "([^\"\\]*(?:\\.[^\"\\]*)*)",? # groups the phrase inside the quotes + | ([^,]+),? + | , + }gx; + push(@new, undef) if substr($text,-1,1) eq ','; If you want to represent quotation marks inside a quotation-mark-delimited field, escape them with backslashes (eg, C<"like \"this\"">. -Alternatively, the C module (part of the standard +Alternatively, the L module (part of the standard Perl distribution) lets you say: - use Text::ParseWords; - @new = quotewords(",", 0, $text); + use Text::ParseWords; + @new = quotewords(",", 0, $text); =head2 How do I strip blank space from the beginning/end of a string? @@ -946,14 +946,14 @@ A substitution can do this for you. For a single line, you want to replace all the leading or trailing whitespace with nothing. You can do that with a pair of substitutions: - s/^\s+//; - s/\s+$//; + s/^\s+//; + s/\s+$//; You can also write that as a single substitution, although it turns out the combined statement is slower than the separate ones. That might not matter to you, though: - s/^\s+|\s+$//g; + s/^\s+|\s+$//g; In this regular expression, the alternation matches either at the beginning or the end of the string since the anchors have a lower @@ -965,10 +965,10 @@ the newline to the output, which has the added benefit of preserving "blank" (consisting entirely of whitespace) lines which the C<^\s+> would remove all by itself: - while( <> ) { - s/^\s+|\s+$//g; - print "$_\n"; - } + while( <> ) { + s/^\s+|\s+$//g; + print "$_\n"; + } For a multi-line string, you can apply the regular expression to each logical line in the string by adding the C flag (for @@ -976,7 +976,7 @@ logical line in the string by adding the C flag (for embedded newline, so it doesn't remove it. This pattern still removes the newline at the end of the string: - $string =~ s/^\s+|\s+$//gm; + $string =~ s/^\s+|\s+$//gm; Remember that lines consisting entirely of whitespace will disappear, since the first part of the alternation can match the entire string @@ -984,7 +984,7 @@ and replace it with nothing. If you need to keep embedded blank lines, you have to do a little more work. Instead of matching any whitespace (since that includes a newline), just match the other whitespace: - $string =~ s/^[\t\f ]+|[\t\f ]+$//mg; + $string =~ s/^[\t\f ]+|[\t\f ]+$//mg; =head2 How do I pad a string with blanks or pad a number with zeroes? @@ -1001,20 +1001,20 @@ truncate the result. The C function can only pad strings on the right with blanks and it will truncate the result to a maximum length of C<$pad_len>. - # Left padding a string with blanks (no truncation): - $padded = sprintf("%${pad_len}s", $text); - $padded = sprintf("%*s", $pad_len, $text); # same thing + # Left padding a string with blanks (no truncation): + $padded = sprintf("%${pad_len}s", $text); + $padded = sprintf("%*s", $pad_len, $text); # same thing - # Right padding a string with blanks (no truncation): - $padded = sprintf("%-${pad_len}s", $text); - $padded = sprintf("%-*s", $pad_len, $text); # same thing + # Right padding a string with blanks (no truncation): + $padded = sprintf("%-${pad_len}s", $text); + $padded = sprintf("%-*s", $pad_len, $text); # same thing - # Left padding a number with 0 (no truncation): - $padded = sprintf("%0${pad_len}d", $num); - $padded = sprintf("%0*d", $pad_len, $num); # same thing + # Left padding a number with 0 (no truncation): + $padded = sprintf("%0${pad_len}d", $num); + $padded = sprintf("%0*d", $pad_len, $num); # same thing - # Right padding a string with blanks using pack (will truncate): - $padded = pack("A$pad_len",$text); + # Right padding a string with blanks using pack (will truncate): + $padded = pack("A$pad_len",$text); If you need to pad with a character other than blank or zero you can use one of the following methods. They all generate a pad string with the @@ -1023,13 +1023,13 @@ not truncate C<$text>. Left and right padding with any character, creating a new string: - $padded = $pad_char x ( $pad_len - length( $text ) ) . $text; - $padded = $text . $pad_char x ( $pad_len - length( $text ) ); + $padded = $pad_char x ( $pad_len - length( $text ) ) . $text; + $padded = $text . $pad_char x ( $pad_len - length( $text ) ); Left and right padding with any character, modifying C<$text> directly: - substr( $text, 0, 0 ) = $pad_char x ( $pad_len - length( $text ) ); - $text .= $pad_char x ( $pad_len - length( $text ) ); + substr( $text, 0, 0 ) = $pad_char x ( $pad_len - length( $text ) ); + $text .= $pad_char x ( $pad_len - length( $text ) ); =head2 How do I extract selected columns from a string? @@ -1038,31 +1038,31 @@ Left and right padding with any character, modifying C<$text> directly: If you know the columns that contain the data, you can use C to extract a single column. - my $column = substr( $line, $start_column, $length ); + my $column = substr( $line, $start_column, $length ); You can use C if the columns are separated by whitespace or some other delimiter, as long as whitespace or the delimiter cannot appear as part of the data. - my $line = ' fred barney betty '; - my @columns = split /\s+/, $line; - # ( '', 'fred', 'barney', 'betty' ); + my $line = ' fred barney betty '; + my @columns = split /\s+/, $line; + # ( '', 'fred', 'barney', 'betty' ); - my $line = 'fred||barney||betty'; - my @columns = split /\|/, $line; - # ( 'fred', '', 'barney', '', 'betty' ); + my $line = 'fred||barney||betty'; + my @columns = split /\|/, $line; + # ( 'fred', '', 'barney', '', 'betty' ); If you want to work with comma-separated values, don't do this since that format is a bit more complicated. Use one of the modules that -handle that format, such as C, C, or -C. +handle that format, such as L, L, or +L. If you want to break apart an entire line of fixed columns, you can use C with the A (ASCII) format. By using a number after the format specifier, you can denote the column width. See the C and C entries in L for more details. - my @fields = unpack( $line, "A8 A8 A8 A16 A4" ); + my @fields = unpack( $line, "A8 A8 A8 A16 A4" ); Note that spaces in the format argument to C do not denote literal spaces. If you have space separated data, you may want C instead. @@ -1071,28 +1071,28 @@ spaces. If you have space separated data, you may want C instead. (contributed by brian d foy) -You can use the Text::Soundex module. If you want to do fuzzy or close -matching, you might also try the C, and -C, and C modules. +You can use the C module. If you want to do fuzzy or close +matching, you might also try the L, and +L, and L modules. =head2 How can I expand variables in text strings? (contributed by brian d foy) If you can avoid it, don't, or if you can use a templating system, -such as C or C