=item *
In future releases, non-PerlIO aware XS modules may become completely
-unsupported. Since PerlIO is a drop-in replacement for stdio, this
-shouldn't be that drastic a change.
+unsupported. Since PerlIO is a drop-in replacement for stdio at the
+source code level, this shouldn't be that drastic a change.
=item *
=item *
-The C<exec LIST> and C<system LIST> will become fatal errors
-under tainting in some future release.
+The C<exec LIST> and C<system LIST> operations will produce fatal
+errors on tainted data in some future release.
=item *
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 *
=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 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 *
+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]
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 *
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
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
=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.
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.