set utf8 bit on inferred method names when C<use utf8>
[p5sagit/p5-mst-13.2.git] / pod / perl595delta.pod
index cc7ea80..246b2cc 100644 (file)
@@ -1,6 +1,6 @@
 =head1 NAME
 
-perldelta - what is new for perl v5.9.5
+perl595delta - what is new for perl v5.9.5
 
 =head1 DESCRIPTION
 
@@ -30,6 +30,16 @@ C<defined @$foo> and C<defined %$bar> are now subject to C<strict 'refs'>
 (However, C<defined(@foo)> and C<defined(%bar)> 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<fields>
+pragma remains here, but uses an alternate implementation.)
+
 =head2 Removal of the bytecode compiler and of perlcc
 
 C<perlcc>, the byteloader and the supporting modules (B::C, B::CC,
@@ -47,6 +57,15 @@ B::Concise).
 
 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-E<gt>isa($bar)> lookup.
+
 =head1 Core Enhancements
 
 =head2 Regular expressions
@@ -158,6 +177,15 @@ that can now be converted to
 
 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
@@ -186,7 +214,12 @@ 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<qx//> (a.k.a. C<``>). (Rafael)
+also to override its operator counterpart, C<qx//> (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
 
@@ -198,8 +231,81 @@ been updated to version 5.0.0.
 The smart match operator (C<~~>) is now available by default (you don't
 need to enable it with C<use feature> any longer). (Michael G Schwern)
 
+=head2 Implicit loading of C<feature>
+
+The C<feature> pragma is now implicitly loaded when you require a minimal
+perl version (with the C<use VERSION> construct) greater than, or equal
+to, 5.9.5.
+
 =head1 Modules and Pragmas
 
+=head2 New Pragma, C<mro>
+
+A new pragma, C<mro> (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<mro> 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<bignum>, C<bigint> and C<bigrat> 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<common> 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
@@ -250,20 +356,42 @@ C<File::Fetch> provide a simple generic file fetching mechanism.
 
 =item *
 
+C<Log::Message> and C<Log::Message::Simple> are used by the log facility
+of C<CPANPLUS>.
+
+=item *
+
 C<Archive::Extract> is a generic archive extraction mechanism
 for F<.tar> (plain, gziped or bzipped) or F<.zip> files.
 
+=item *
+
+C<CPANPLUS> provides an API and a command-line tool to access the CPAN
+mirrors.
+
 =back
 
 =head2 Module changes
 
 =over 4
 
+=item C<assertions>
+
+The C<assertions> pragma, its submodules C<assertions::activate> and
+C<assertions::compat> 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<base>
 
 The C<base> pragma now warns if a class tries to inherit from itself.
 (Curtis "Ovid" Poe)
 
+=item C<strict> and C<warnings>
+
+C<strict> and C<warnings> will now complain loudly if they are loaded via
+incorrect casing (as in C<use Strict;>). (Johan Vromans)
+
 =item C<warnings>
 
 The C<warnings> pragma doesn't load C<Carp> anymore. That means that code
@@ -302,13 +430,39 @@ ben Jore)
 
 =for p5p XXX document this in B.pm too
 
+=item C<Thread>
+
+As the old 5005thread threading model has been removed, in favor of the
+ithreads scheme, the C<Thread> 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<cpanp>
+
+C<cpanp>, the CPANPLUS shell, has been added. (C<cpanp-run-perl>, an
+helper for CPANPLUS operation, has been added too, but isn't intended for
+direct use).
+
+=head2 C<cpan2dist>
+
+C<cpan2dist> is a new utility, that comes with CPANPLUS. It's a tool to
+create distributions (or packages) from CPAN modules.
+
+=head2 C<pod2html>
+
+The output of C<pod2html> has been enhanced to be more customizable via
+CSS. Some formatting problems were also corrected. (Jari Aalto)
+
 =head1 Documentation
 
-=head1 Performance Enhancements
+=head2 New manpage, perlunifaq
+
+A new manual page, L<perlunifaq> (the Perl Unicode FAQ), has been added
+(Juerd Waalboer).
 
 =head1 Installation and Configuration Improvements
 
@@ -318,16 +472,48 @@ 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<perl-static.exe> that doesn't depend
 on C<perl59.dll> 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<d_pseudofork> and C<d_printf_format_null>
+
+A new configuration variable, available as C<$Config{d_pseudofork}> in
+the L<Config> module, has been added, to distinguish real fork() support
+from fake pseudofork used on Windows platforms.
+
+A new configuration variable, C<d_printf_format_null>, has been added, 
+to see if printf-like formats are allowed to be NULL.
+
+=head2 Help
+
+C<Configure -h> 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,
@@ -349,8 +535,22 @@ 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<local $h{$x}; ++$x>). (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
@@ -361,10 +561,6 @@ an hash/array when the op is flagged with OPf_SPECIAL (Nicholas Clark).
 
 =for p5p XXX new BIND SV type, #29544, #29642
 
-=head1 Known Problems
-
-=head2 Platform Specific Problems
-
 =head1 Reporting Bugs
 
 If you find what you think is a bug, you might check the articles