X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldelta.pod;h=106adfba1037feb0b2172916de3414e95b5162ed;hb=4242cba346493cdf053c89b2cffef9da1e569dec;hp=416baae635a6b4ba4fc03a2d83fa17768866e1c6;hpb=4ebc451bd0ba36823aced89b266c63cb608ab0c7;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 416baae..106adfb 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -228,8 +228,8 @@ 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, 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 * @@ -280,8 +280,8 @@ release. =item * -The C and C will become fatal errors -under tainting in some future release. +The C and C operations will produce fatal +errors on tainted data in some future release. =item * @@ -332,7 +332,28 @@ 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, L, 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 +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), +your STDIN, STDOUT, STDERR handles and the default open discipline +(see L) are marked as UTF-8. (This feature, like other new +features that combine Unicode and I/O, work only if you are using +PerlIO, but that's is the default.) + +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 and L), or you +can just use C (nice for pre-5.8.0 backward compatibility). =item * @@ -505,7 +526,7 @@ in multiple arguments.) =item * C followed by a bareword now ensures that this bareword isn't -a keyword (to avoid a bug where C tried to call +a keyword (to avoid a bug where C tried to call a subroutine called C). This means that for example instead of C you must write C. @@ -566,6 +587,12 @@ is a NaN. Previously the behaviour was unspecified. =item * +C can now have an experimental optional attribute C that +affects how global variables are shared among multiple interpreters, +see L. + +=item * + The following builtin functions are now overridable: each(), keys(), pop(), push(), shift(), splice(), unshift(). [561] @@ -626,10 +653,10 @@ This is not a substitute for -T.> In other taint news, the C and C have now been considered too risky (think C: 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 * @@ -1108,6 +1135,12 @@ Unicode normalization forms. See L. =item * +C, by Tim Jenness, is a test extension that exercises XS +APIs. Currently only C is tested: how to output various +basic data types from XS. + +=item * + C, by Tim Jenness, is a test extension that exercises XS typemaps. Nothing gets installed, but the code is worth studying for extension writers. @@ -2547,7 +2580,8 @@ functionality and better error handling. [561] File access tests now use current process privileges rather than the user's default privileges, which could sometimes result in a mismatch -between reported access and actual access. +between reported access and actual access. This improvement is only +available on VMS v6.0 and later. There is a new C implementation based on C that allows older VMS systems (pre-7.0) to use C to send signals rather than @@ -2565,13 +2599,32 @@ Windows =item * -accept() no longer leaks memory. [561] +Signal handling now works better than it used to. It is now implemented +using a Windows message loop, and is therefore less prone to random +crashes. =item * -Borland C++ v5.5 is now a supported compiler that can build Perl. -However, the generated binaries continue to be incompatible with those -generated by the other supported compilers (GCC and Visual C++). [561] +fork() emulation is now more robust, but still continues to have a few +esoteric bugs and caveats. See L for details. [561+] + +=item * + +A failed (pseudo)fork now returns undef and sets errno to EAGAIN. [561] + +=item * + +The following modules now work on Windows: + + ExtUtils::Embed [561] + IO::Pipe + IO::Poll + Net::Ping + +=item * + +IO::File::new_tmpfile() is no longer limited to 32767 invocations +per-process. =item * @@ -2579,71 +2632,91 @@ Better chdir() return value for a non-existent directory. =item * -Duping socket handles with open(F, ">&MYSOCK") now works under Windows -9x. [561] +Compiling perl using the 64-bit Platform SDK tools is now supported. =item * -New %ENV entries now propagate to subprocesses. [561] +The Win32::SetChildShowWindow() builtin can be used to control the +visibility of windows created by child processes. See L for +details. =item * -Current directory entries in %ENV are now correctly propagated to child -processes. [561] +Non-blocking waits for child processes (or pseudo-processes) are +supported via C. =item * -$ENV{LIB} now used to search for libs under Visual C. +The behavior of system() with multiple arguments has been rationalized. +Each unquoted argument will be automatically quoted to protect whitespace, +and any existing whitespace in the arguments will be preserved. This +improves the portability of system(@args) by avoiding the need for +Windows C shell specific quoting in perl programs. + +Note that this means that some scripts that may have relied on earlier +buggy behavior may no longer work correctly. For example, +C will now attempt to run the file +C and will fail when such a file isn't found. +On the other hand, perl will now execute code such as +C correctly. =item * -fork() emulation has been improved in various ways, but still continues -to be experimental. See L for known bugs and caveats. [561+] +The perl header files no longer suppress common warnings from the +Microsoft Visual C++ compiler. This means that additional warnings may +now show up when compiling XS code. =item * -A failed (pseudo)fork now returns undef and sets errno to EAGAIN. +Borland C++ v5.5 is now a supported compiler that can build Perl. +However, the generated binaries continue to be incompatible with those +generated by the other supported compilers (GCC and Visual C++). [561] =item * -Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root. -Other bugs in chdir() and Cwd::cwd() have also been fixed. [561] +Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x. +[561] =item * -HTML files will be installed in c:\perl\html instead of c:\perl\lib\pod\html +Current directory entries in %ENV are now correctly propagated to child +processes. [561] =item * -The makefiles now provide a single switch to bulk-enable all the -features enabled in ActiveState ActivePerl (a popular Win32 binary -distribution). [561] +New %ENV entries now propagate to subprocesses. [561] =item * -Allow REG_EXPAND_SZ keys in the registry. +Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root. +Other bugs in chdir() and Cwd::cwd() have also been fixed. [561] =item * -Can now send() from all threads, not just the first one. [561] +The makefiles now default to the features enabled in ActiveState ActivePerl +(a popular Win32 binary distribution). [561] =item * -ExtUtils::MakeMaker now uses $ENV{LIB} to search for libraries. +HTML files will now be installed in c:\perl\html instead of +c:\perl\lib\pod\html =item * -Fake signal handling reenabled, bugs and all. +REG_EXPAND_SZ keys are now allowed in registry settings used by perl. [561] + +=item * + +Can now send() from all threads, not just the first one. [561] =item * -%SIG has been enabled under USE_ITHREADS, but its use is completely -unsupported under all configurations. [561] +ExtUtils::MakeMaker now uses $ENV{LIB} to search for libraries. [561] =item * Less stack reserved per thread so that more threads can run -concurrently. (Still 16M per thread.) +concurrently. (Still 16M per thread.) [561] =item * @@ -2661,16 +2734,7 @@ under Windows 9x. [561] =item * -Non-blocking waits for child processes (or pseudo-processes) are -supported via C. - -=item * - -Win64 compilation is now supported. - -=item * - -winsock handle leak fixed. [561] +A socket handle leak in accept() has been fixed. [561] =back @@ -3102,6 +3166,10 @@ is serious but as of yet unsolved. It points at some problems with the signedness handling of the C compiler, as do the 64bitint, arith, and pow failures. Most of the rest point at problems with SysV IPC. +=head2 PDL failing some tests + +Use PDL 2.3.4 or later. + =head2 Term::ReadKey not working on Win32 Use Term::ReadKey 2.20 or later. @@ -3146,16 +3214,6 @@ In case of failure please try running them manually, for example ./perl -Ilib ext/Time/HiRes/HiRes.t -=head2 UNICOS - - ../lib/Math/Trig.t 26 1 3.85% 25 - ../lib/warnings.t 470 1 0.21% 429 - -The Trig.t failure is caused by the slighly differing (from IEEE) -floating point implementation of UNICOS. The warnings.t failure is -also related: the test assumes a certain floating point output format; -this assumption fails in UNICOS. - =head2 UNICOS/mk =over 4 @@ -3274,6 +3332,15 @@ behaviour may be fixed at a later date. Self-tying of scalars and IO thingies works. +=head2 Tied/Magical Array/Hash Elements Do Not Autovivify + +For normal arrays C<$foo = \$bar[1]> will assign C to +C<$bar[1]> (assuming that it didn't exist before), but for +tied/magical arrays and hashes such autovivification does not happen +because there is currently no way to catch the reference creation. +The same problem affects slicing over non-existent indices/keys of +a tied/magical array/hash. + =head2 Building Extensions Can Fail Because Of Largefiles Some extensions like mod_perl are known to have issues with