=head1 DESCRIPTION
This document describes differences between the 5.9.3 and the 5.9.4
-developement releases. See L<perl590delta>, L<perl591delta>, L<perl592delta>
+development releases. See L<perl590delta>, L<perl591delta>, L<perl592delta>
and L<perl593delta> for the differences between 5.8.0 and 5.9.3.
=head1 Incompatible Changes
A new class of variables has been introduced. State variables are similar
to C<my> variables, but are declared with the C<state> keyword in place of
-C<my>. They're visible only in their lexical scope, but their value in
+C<my>. They're visible only in their lexical scope, but their value is
persistent: unlike C<my> variables, they're not undefined at scope entry,
-and retain their previous value. (Rafael Garcia-Suarez)
+but retain their previous value. (Rafael Garcia-Suarez)
To use state variables, one needs to enable them by using
The C<UNIVERSAL> class has a new method, C<DOES()>. It has been added to
solve semantic problems with the C<isa()> method. C<isa()> checks for
-inheritance, while C<DOES()> has been designed to be overriden when
+inheritance, while C<DOES()> has been designed to be overridden when
module authors use other types of relations between classes (in addition
to inheritance). (chromatic)
=head2 MAD
MAD, which stands for I<Misc Attribute Decoration>, is a
-still-in-development work leading to a Perl 5 to Perl 6 convertor. To
+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 Pragmata
+=head1 Modules and Pragmas
=over 4
C<Hash::Util::FieldHash>, by Anno Siegel, has been added. This module
provides support for I<field hashes>: 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<config_data> is a new utility that comes with C<Module::Build>. 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
+C<*::ConfigData> modules that contain local configuration information for
their parent modules.)
=head1 Documentation
=head2 New manpage, perlpragma
The L<perlpragma> manpage documents how to write one's own lexical
-pragmas in pure Perl (something that is possible only starting with
-5.9.4).
+pragmas in pure Perl (something that is possible starting with 5.9.4).
=head2 New manpage, perlreguts
-The L<perlreguts> manpage, due to Yves Orton, describes internals of the
+The L<perlreguts> manpage, courtesy of Yves Orton, describes internals of the
Perl regular expression engine.
=head2 New manpage, perlunitut
The L<perlunitut> manpage is an tutorial for programming with Unicode and
-string encodings in Perl, due to Juerd Waalboer.
+string encodings in Perl, courtesy of Juerd Waalboer.
=head1 Performance Enhancements
=over 4
-=item Engine de-recursiveized
+=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
=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
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 uses them. (Steve Peters)
+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, PERL5SHELL is now checked for taintedness. (Rafael
-Garcia-Suarez)
+On Windows, the PERL5SHELL environment variable is now checked for
+taintedness. (Rafael Garcia-Suarez)
=head2 Using *FILE{IO}
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<eval 'syntax error'> 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</dev/urandom> 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
=head1 Changed Internals
A new file, F<mathoms.c>, contains functions that aren't used anymore in
-the perl core, but that remain around because modules out there might
+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.
One warning test (number 263 in F<lib/warnings.t>) fails under UTF-8
locales.
-Bytecode tests fails under several platforms. We are considering removing
+Bytecode tests fail under several platforms. We are considering removing
support for byteloader and compiler before the 5.10.0 release.
-=head2 Platform-specific Problems
-
-The test F<ext/Socket/t/socketpair.t> crashes after completing all tests
-successfully when built with USE_ITHREADS and PERL_IMPLICIT_SYS on Win32.
-
=head1 Reporting Bugs
If you find what you think is a bug, you might check the articles