=head1 NAME
-perldelta - what is new for perl v5.9.3
+perl593delta - what is new for perl v5.9.3
=head1 DESCRIPTION
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; }
=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
=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).
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
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
=head2 C<h2xs> enhancements
-C<h2xs> implements new option C<--use-xsloader> to force use of
+C<h2xs> implements a 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.
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
=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>
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.
=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 *
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;
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