[DOC PATCH] perldebtut
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index 992c34a..4d704f5 100644 (file)
@@ -12,14 +12,11 @@ maintenance release since the two releases were kept closely
 coordinated (while 5.8.0 was still called 5.7.something).
 
 Changes that were integrated into the 5.6.1 release are marked C<[561]>.
-In some cases the said bug/feature may have been further fixed/enhanced
-after 5.6.1.
+Many of these changes have been further developed since 5.6.1 was released,
+those are marked C<[561+]>.
 
-You can see the list of changes in the 5.6.1 (from 5.6.0) by reading
-L<perl561delta>.
-
-If you are upgrading from Perl 5.005_03, you might also want
-to read L<perl56delta>.
+You can see the list of changes in the 5.6.1 release (both from the
+5.005_03 release and the 5.6.0 release) by reading L<perl561delta>.
 
 =head1 Highlights In 5.8.0
 
@@ -230,6 +227,12 @@ since it, in a way, falsely promised that the features could be used.
 
 =item *
 
+In future releases, non-PerlIO aware XS modules may become completely
+unsupported.  Since PerlIO is a drop-in replacement for stdio at the
+source code level, this shouldn't be that drastic a change.
+
+=item *
+
 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
@@ -277,6 +280,11 @@ release.
 
 =item *
 
+The C<exec LIST> and C<system LIST> operations will produce fatal
+errors on tainted data in some future release.
+
+=item *
+
 The existing behaviour when localising tied arrays and hashes is wrong,
 and will be changed in a future release, so do not rely on the existing
 behaviour. See L<"Localising Tied Arrays and Hashes Is Broken">.
@@ -324,7 +332,26 @@ 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<perlunicode>, L<utf8>, and
 http://www.unicode.org/unicode/reports/tr16/ for more information.
-In future releases this naming may change.
+In future releases this naming may change.  See L<perluniintro>
+for more information about UTF-8.
+
+=item *
+
+If your environment variables (LC_ALL, LC_CTYPE, LANG, LANGUAGE) look
+like you want to use UTF-8 (any of the the variables match C</utf-?8/i>),
+your STDIN, STDOUT, STDERR handles and the default open discipline
+(see L<open>) are marked as UTF-8.
+
+Note that after this Perl really does assume that everything is UTF-8:
+for example if some input handle is not, Perl will probably very soon
+complain about the input data like this "Malformed UTF-8 ..." since
+any old eight-bit data is not legal UTF-8.
+
+Note for code authors: if you want to enable your users to use UTF-8
+as their default encoding  but in your code still have eight-bit I/O streams
+(such as images or zip files), you need to explicitly open() or binmode()
+with C<:bytes> (see L<perlfunc/open> and L<perlfunc/binmode>), or you
+can just use C<binmode(FH)> (nice for pre-5.8.0 backward compatibility).
 
 =item *
 
@@ -400,7 +427,7 @@ and L<perlunicode> for details.
 
 The Unicode Character Database coming with Perl has been upgraded
 to Unicode 3.2.0.  For more information, see http://www.unicode.org/ .
-
+[561+] (5.6.1 has UCD 3.0.1.)
 
 =item *
 
@@ -496,6 +523,13 @@ in multiple arguments.)
 
 =item *
 
+C<do> followed by a bareword now ensures that this bareword isn't
+a keyword (to avoid a bug where C<do q(foo.pl)> tried to call a
+subroutine called C<q>).  This means that for example instead of
+C<do format()> you must write C<do &format()>.
+
+=item *
+
 The builtin dump() now gives an optional warning
 C<dump() better written as CORE::dump()>,
 meaning that by default C<dump(...)> is resolved as the builtin
@@ -526,7 +560,7 @@ Formats now support zero-padded decimal fields.
 =item *
 
 Lvalue subroutines can now return C<undef> in list context.  However,
-the lvalue subroutine feature still remains experimental.
+the lvalue subroutine feature still remains experimental.  [561+]
 
 =item *
 
@@ -551,6 +585,12 @@ is a NaN.  Previously the behaviour was unspecified.
 
 =item *
 
+C<our> can now have an experimental optional attribute C<unique> that
+affects how global variables are shared among multiple interpreters,
+see L<perlfunc/our>.
+
+=item *
+
 The following builtin functions are now overridable: each(), keys(),
 pop(), push(), shift(), splice(), unshift(). [561]
 
@@ -611,10 +651,10 @@ This is not a substitute for -T.>
 
 In other taint news, the C<exec LIST> and C<system LIST> have now been
 considered too risky (think C<exec @ARGV>: it can start any program
-with any arguments), and now the said forms cause a warning.
-You should carefully launder the arguments to guarantee their
-validity.  In future releases of Perl the forms will become fatal
-errors so consider starting laundering now.
+with any arguments), and now the said forms cause a warning under
+lexical warnings.  You should carefully launder the arguments to
+guarantee their validity.  In future releases of Perl the forms will
+become fatal errors so consider starting laundering now.
 
 =item *
 
@@ -673,6 +713,18 @@ C<Use of /c modifier is meaningless in s///>.
 Use of C</g> with C<split> elicits C<Use of /g modifier is meaningless
 in split>.
 
+=item *
+
+Support for the C<CLONE> special subroutine had been added.
+With ithreads, when a new thread is created, all Perl data is cloned,
+however non-Perl data cannot be cloned automatically.  In C<CLONE> you
+can do whatever you need to do, like for example handle the cloning of
+non-Perl data, if necessary.  C<CLONE> will be executed once for every
+package that has it defined or inherited.  It will be called in the
+context of the new thread, so all modifications are made in the new area.
+
+See L<perlmod>
+
 =back
 
 =head1 Modules and Pragmata
@@ -702,7 +754,7 @@ See L<Attribute::Handlers>.
 
 C<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<B::Concise>.
+The output is highly customisable.  See L<B::Concise>. [561+]
 
 =item *
 
@@ -815,8 +867,8 @@ Filter::Util::Call.  See L<Filter::Simple>.
 =item *
 
 C<File::Temp>, by Tim Jenness, allows one to create temporary files
-and directories in an easy, portable, and secure way.  See
-L<File::Temp>.
+and directories in an easy, portable, and secure way.  See L<File::Temp>.
+[561+]
 
 =item *
 
@@ -952,7 +1004,7 @@ perlpodspec.
 
 C<Pod::Text::Overstrike>, by Joe Smith, has been added.
 It converts POD data to formatted overstrike text.
-See L<Pod::Text::Overstrike>.
+See L<Pod::Text::Overstrike>. [561+]
 
 =item *
 
@@ -1096,7 +1148,7 @@ for extension writers.
 The following independently supported modules have been updated to the
 newest versions from CPAN: CGI, CPAN, DB_File, File::Spec, File::Temp,
 Getopt::Long, Math::BigFloat, Math::BigInt, the podlators bundle
-(Pod::Man, Pod::Text), Pod::LaTeX, Pod::Parser, Storable,
+(Pod::Man, Pod::Text), Pod::LaTeX [561+], Pod::Parser, Storable,
 Term::ANSIColor, Test, Text-Tabs+Wrap.
 
 =item *
@@ -1433,16 +1485,16 @@ perl56delta details the changes between the 5.005 release and the
 
 perlclib documents the internal replacements for standard C library
 functions.  (Interesting only for extension writers and Perl core
-hackers.)
+hackers.) [561+]
 
 =item *
 
-perldebtut is a Perl debugging tutorial.
+perldebtut is a Perl debugging tutorial. [561+]
 
 =item *
 
 perlebcdic contains considerations for running Perl on EBCDIC
-platforms.
+platforms. [561+]
 
 =item *
 
@@ -1458,7 +1510,7 @@ perlmodstyle is a style guide for writing modules.
 
 =item *
 
-perlnewmod tells about writing and submitting a new module.
+perlnewmod tells about writing and submitting a new module. [561+]
 
 =item *
 
@@ -1477,7 +1529,7 @@ people writing in pod.
 
 =item *
 
-perlretut is a regular expression tutorial.
+perlretut is a regular expression tutorial. [561+]
 
 =item *
 
@@ -1502,7 +1554,7 @@ information)
 =item *
 
 perlutil explains the command line utilities packaged with the Perl
-distribution.
+distribution. [561+]
 
 =back
 
@@ -1511,11 +1563,15 @@ the installation as README.I<platform>, and after the installation
 as perlI<platform>:
 
     perlaix perlamiga perlapollo perlbeos perlbs2000
-    perlce perlcygwin perldgux perldos perlepoc perlhpux
-    perlhurd perlmachten perlmacos perlmint perlmpeix
+    perlce perlcygwin perldgux perldos perlepoc perlfreebsd perlhpux
+    perlhurd perlirix perlmachten perlmacos perlmint perlmpeix
     perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris
     perltru64 perluts perlvmesa perlvms perlvos perlwin32
 
+These documents usually detail one or more of the following subjects:
+configuring, building, testing, installing, and sometimes also using
+Perl on the said platform.
+
 Eastern Asian Perl users are now welcomed in their own languages:
 README.jp (Japanese), README.ko (Korean), README.cn (simplified
 Chinese) and README.tw (traditional Chinese), which are written in
@@ -1944,7 +2000,7 @@ possible non-preemptability of the underlying thread implementation.
 Stratus VOS is now supported using Perl's native build method
 (Configure).  This is the recommended method to build Perl on
 VOS.  The older methods, which build miniperl, are still
-available.  See L<perlvos>.
+available.  See L<perlvos>. [561+]
 
 =item *
 
@@ -1976,10 +2032,10 @@ The autouse pragma didn't work for Multi::Part::Function::Names.
 
 =item *
 
-caller() could cause core dumps in certain situations.  Carp was sometimes
-affected by this problem.  In particular, caller() now returns a
-subroutine name of C<(unknown)> for subroutines that have been removed
-from the symbol table.
+caller() could cause core dumps in certain situations.  Carp was
+sometimes affected by this problem.  In particular, caller() now
+returns a subroutine name of C<(unknown)> for subroutines that have
+been removed from the symbol table.
 
 =item *
 
@@ -2184,7 +2240,7 @@ without the q L ll prefixes (assuming you are on a quad-capable platform).
 
 =item *
 
-Regular expressions on references and overloaded scalars now work.
+Regular expressions on references and overloaded scalars now work. [561+]
 
 =item *
 
@@ -2268,10 +2324,6 @@ Sys::Syslog ignored the C<LOG_AUTH> constant.
 
 =item *
 
-All but the first argument of the IO syswrite() method are now optional.
-
-=item *
-
 $AUTOLOAD, sort(), lock(), and spawning subprocesses
 in multiple threads simultaneously are now thread-safe.
 
@@ -2499,6 +2551,9 @@ only 46 bit integers for speed.
 
 VMS
 
+See L</"Socket Extension Dynamic in VMS"> and L</"IEEE-format Floating Point
+Default on OpenVMS Alpha"> for important changes not otherwise listed here.
+
 chdir() now works better despite a CRT bug; now works with MULTIPLICITY
 (see INSTALL); now works with Perl's malloc.
 
@@ -2512,9 +2567,6 @@ the system.
 POSIX-style signals are now emulated much better on VMS versions prior
 to 7.0.
 
-The Socket extension is now dynamically loaded instead of being
-statically built in.
-
 The C<system> function and backticks operator have improved
 functionality and better error handling. [561]
 
@@ -2571,7 +2623,7 @@ $ENV{LIB} now used to search for libs under Visual C.
 =item *
 
 fork() emulation has been improved in various ways, but still continues
-to be experimental.  See L<perlfork> for known bugs and caveats.
+to be experimental.  See L<perlfork> for known bugs and caveats. [561+]
 
 =item *
 
@@ -2952,6 +3004,11 @@ If this test fails, it indicates that your libc (C library) is not
 threadsafe.  This particular test stress tests the localtime() call to
 find out whether it is threadsafe.  See L<perlthrtut> for more information.
 
+=head2 FreeBSD built with ithreads coredumps reading large directories
+
+This is a known bug in FreeBSD's readdir_r() (see L<perlfreebsd>
+(README.freebsd)), which hopefully will be fixed in FreeBSD 4.6.
+
 =head2 FreeBSD Failing locale Test 117 For ISO8859-15 Locales
 
 The ISO8859-15 locales may fail the locale test 117 in FreeBSD.