This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Maintainers.pl to point to Dave Golden's guide to updating Module-Build in...
[perl5.git] / pod / perl593delta.pod
index 2af1af6..11f53ab 100644 (file)
@@ -1,6 +1,8 @@
+=encoding utf8
+
 =head1 NAME
 
-perldelta - what is new for perl v5.9.3
+perl593delta - what is new for perl v5.9.3
 
 =head1 DESCRIPTION
 
@@ -64,7 +66,7 @@ Robin Houston.
 
 Perl 5 now has a switch statement. It's available when C<use feature
 'switch'> is in effect. This feature introduces three new keywords,
-C<given>, C<when>, and C<default> :
+C<given>, C<when>, and C<default>:
 
     given ($foo) {
        when (/^abc/) { $abc = 1; }
@@ -83,7 +85,7 @@ detail">.
 
 =head2 C<say()>
 
-say() is a new built-in, only avaiable when C<use feature 'say'> is in
+say() is a new built-in, only available when C<use feature 'say'> is in
 effect, that is similar to print(), but that implicitly appends a newline
 to the printed string. See L<perlfunc/say>.
 
@@ -107,7 +109,7 @@ details. (Contributed by Gisle Aas.)
 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<assertions::activate>. See
-L<assertions> and L<perlrun>. (Contributed by Salvador Fandiño García.)
+L<assertions> and L<perlrun>. (Contributed by Salvador Fandiño García.)
 
 =head2 Unicode Character Database 4.1.0
 
@@ -117,7 +119,7 @@ been updated to 4.1.0.
 =head2 C<no VERSION>
 
 You can now use C<no> followed by a version number to specify that you
-want to use a version of perl inferior to the specified one.
+want to use a version of perl older than the specified one.
 
 =head2 Recursive sort subs
 
@@ -161,7 +163,7 @@ Enhancements">.
 
 =item *
 
-C<assertions::compat>, also available on CPAN, allows to use assertions on
+C<assertions::compat>, 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).
 
@@ -189,6 +191,10 @@ C<Archive::Tar> is a module to manipulate C<tar> archives.
 C<Digest::SHA> is a module used to calculate many types of SHA digests,
 has been included for SHA support in the CPAN module.
 
+=item *
+
+C<ExtUtils::CBuilder> and C<ExtUtils::ParseXS> have been added.
+
 =back
 
 =head1 Utility Changes
@@ -198,6 +204,12 @@ has been included for SHA support in the CPAN module.
 C<ptar> is a pure perl implementation of C<tar>, that comes with
 C<Archive::Tar>.
 
+=head2 C<ptardiff>
+
+C<ptardiff> is a small script used to generate a diff between the contents
+of a tar archive and a directory tree. Like C<ptar>, it comes with
+C<Archive::Tar>.
+
 =head2 C<shasum>
 
 This command-line utility, used to print or to check SHA digests, comes
@@ -205,7 +217,7 @@ with the new C<Digest::SHA> module.
 
 =head2 C<h2xs> enhancements
 
-C<h2xs> implements new option C<--use-xsloader> to force use of
+C<h2xs> implements new option C<--use-xsloader> to force use of
 C<XSLoader> even in backwards compatible modules.
 
 The handling of authors' names that had apostrophes has been fixed.
@@ -214,8 +226,8 @@ Any enums with negative values are now skipped.
 
 =head2 C<perlivp> enhancements
 
-C<perlivp> implements new option C<-a> and will not check for F<*.ph>
-files by default any more.  Use the C<-a> option to run I<all> tests.
+C<perlivp> no longer checks for F<*.ph> files by default.  Use the new C<-a>
+option to run I<all> tests.
 
 =head1 Documentation
 
@@ -223,7 +235,9 @@ files by default any more.  Use the C<-a> option to run I<all> tests.
 
 The L<perlglossary> manpage is a glossary of terms used in the Perl
 documentation, technical and otherwise, kindly provided by O'Reilly Media,
-inc.
+Inc.
+
+L<perltodo> now lists a rough roadmap to Perl 5.10.
 
 =head1 Performance Enhancements
 
@@ -234,13 +248,24 @@ transliteration mappings has been reimplemented in XS.
 
 =head2 Constant subroutines
 
-XXX
+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<use POSIX;> now takes about
+200K less memory.
 
 =head2 C<PERL_DONT_CREATE_GVSV>
 
 The new compilation flag C<PERL_DONT_CREATE_GVSV>, 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<perl588delta>
+from creating an empty scalar with every new typeglob. See L<perl589delta>
 for details.
 
 =head2 Weak references are cheaper
@@ -251,7 +276,7 @@ happens at program exit, it may be skipped completely.
 
 =head2 sort() enhancements
 
-Salvador Fandiño provided improvements to reduce the memory usage of C<sort>
+Salvador Fandiño provided improvements to reduce the memory usage of C<sort>
 and to speed up some cases.
 
 =head1 Installation and Configuration Improvements
@@ -311,7 +336,7 @@ anyway.)
 =head2 Calling CORE::require()
 
 CORE::require() and CORE::do() were always parsed as require() and do()
-when they were overriden. This is now fixed.
+when they were overridden. This is now fixed.
 
 =head2 Subscripts of slices
 
@@ -333,7 +358,7 @@ was backed out.
 
 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 bound checking.
+other bugs, notably in bounds checking.
 
 In related fixes, it was possible for badly written code that did not follow
 the documentation of C<Sys::Syslog> to have formatting vulnerabilities.
@@ -367,7 +392,7 @@ Trailing spaces are now trimmed from C<$!> and C<$^E>.
 
 =item *
 
-Operations that require perl to read a process' list of groups, such as reads
+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.
@@ -378,8 +403,8 @@ C<PerlIO::scalar> now works better with non-default C<$/> settings.
 
 =item *
 
-You can now use the C<x> operator to repeat a C<qw//> list. This used
-to raise a syntax error. For example: C<qw(foo bar) x 3>.
+The C<x> repetition operator is now able to operate on C<qw//> lists. This
+used to raise a syntax error.
 
 =item *
 
@@ -461,7 +486,7 @@ of the declarations involved is a C<my> variable:
     my $x;  our $x;    # warns
     our $x;  my $x;    # warns
 
-On the other hand, the following :
+On the other hand, the following:
 
     our $x; our $x;
 
@@ -500,10 +525,6 @@ C<AV*> parameters.
 The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now
 inherits from C<B::SV> (it used to inherit from C<B::IV>).
 
-=head1 Known Problems
-
-=head2 Platform Specific Problems
-
 =head1 Reporting Bugs
 
 If you find what you think is a bug, you might check the articles