[DOC PATCH] perldebtut
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index fc903ca..4d704f5 100644 (file)
@@ -227,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
@@ -274,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">.
@@ -321,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 *
 
@@ -493,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
@@ -548,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]
 
@@ -608,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 *
 
@@ -670,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
@@ -1508,8 +1563,8 @@ 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
 
@@ -2269,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.
 
@@ -2953,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.