Eulogy fix: Mention Domain/OS instead of DomainOS in "Discontinued Platforms"
[p5sagit/p5-mst-13.2.git] / pod / perl5120delta.pod
index fb1ebea..236df72 100644 (file)
@@ -2,10 +2,6 @@
 
 perl5120delta - what is new for perl v5.12.0
 
-FIX ME BEFORE RELEASE
-
-UPDATED MODULE LIST NEEDS TO BE GENERATED
-
 =head1 DESCRIPTION
 
 This document describes differences between the 5.10.0 release and
@@ -43,7 +39,7 @@ C<$VERSION> is set at compile time
 =item *
 
 C<$VERSION> is a version object that provides proper overloading of
-comparision operators so comparing C<$VERSION> to decimal (1.23) or
+comparison operators so comparing C<$VERSION> to decimal (1.23) or
 dotted-decimal (v1.2.3) version numbers works correctly.
 
 =item *
@@ -56,7 +52,7 @@ As it requires VERSION to be a numeric literal or v-string
 literal, it can be statically parsed by toolchain modules
 without C<eval> the way MM-E<gt>parse_version does for C<$VERSION = ...>
 
-=item *
+=back
 
 It does not break old code with only C<package NAME>, but code that uses
 C<package NAME VERSION> will need to be restricted to perl 5.12.0 or newer
@@ -64,7 +60,6 @@ This is analogous to the change to C<open> from two-args to three-args.
 Users requiring the latest Perl will benefit, and perhaps after several
 years, it will become a standard practice.
 
-=back
 
 However, C<package NAME VERSION> requires a new, 'strict' version
 number format. See L<"Version number formats"> for details.
@@ -74,7 +69,7 @@ number format. See L<"Version number formats"> for details.
 
 A new operator, C<...>, nicknamed the Yada Yada operator, has been added.
 It is intended to mark placeholder code that is not yet implemented.
-See L<perlop/"Yada Yada Operator">. (chromatic)
+See L<perlop/"Yada Yada Operator">.
 
 =head2 Implicit strictures
 
@@ -203,11 +198,15 @@ on how to specify C<configure_requires> when creating a distribution for CPAN.
 
 The C<each> function can now operate on arrays.
 
+=head2 C<when> as a statement modifier
+
+C<when> is now allowed to be used as a statement modifier.
+
 =head2 C<$,> flexibility
 
 The variable C<$,> may now be tied.
 
-=head2 // in where clauses
+=head2 // in when clauses
 
 // now behaves like || in when clauses
 
@@ -784,7 +783,7 @@ Version 2.024 has been added to the Perl core.
 =item C<overloading>
 
 C<overloading> allows you to lexically disable or enable overloading
-for some or all operations. (Yuval Kogman)
+for some or all operations.
 
 Version 0.001 has been added to the Perl core.
 
@@ -866,7 +865,7 @@ This pragma turns on Unicode semantics for the case-changing operations
 internal UTF-8 flag set, but that contain single-byte characters between
 128 and 255.
 
-Upgraded from version 1.11 to 1.15.
+Upgraded from version 1.11 to 1.16.
 
 =item C<less>
 
@@ -1126,7 +1125,7 @@ Upgraded from version 0.2808_01 to 0.3603.
 
 =item C<Module::CoreList>
 
-Upgraded from version 2.12 to 2.26.
+Upgraded from version 2.12 to 2.27.
 
 =item C<Module::Load>
 
@@ -1515,6 +1514,11 @@ C<if (%foo)> has been optimized to be faster than C<if (keys %foo)>.
 
 =item *
 
+The string repetition operator (C<$str x $num>) is now several times faster
+when C<$str> has length one or C<$num> is large.
+
+=item *
+
 Reversing an array to itself (as in C<@a = reverse @a>) in void context
 now happens in-place and is several orders of magnitude faster than it
 used to be. It will also preserve non-existent elements whenever
@@ -1785,7 +1789,7 @@ It's now possible to override C<PERL5OPT> and friends in F<t/TEST>
 Several tests that have the potential to hang forever if they fail now
 incorporate a "watchdog" functionality that will kill them after a timeout,
 which helps ensure that C<make test> and C<make test_harness> run to
-completion automatically. (Jerry Hedden).
+completion automatically.
 
 
 =back
@@ -2065,14 +2069,14 @@ C<charnames> handler returns malformed UTF-8.
 =item *
 
 If an unresolved named character or sequence was encountered when compiling a
-regex pattern then the fatal error C<\\N{NAME} must be resolved by the lexer>
+regex pattern then the fatal error C<\N{NAME} must be resolved by the lexer>
 is now produced. This can happen, for example, when using a single-quotish
-context like C<$re = '\N{SPACE}'; $re;>. See L<perldiag> for more examples of
+context like C<$re = '\N{SPACE}'; /$re/;>. See L<perldiag> for more examples of
 how the lexer can get bypassed.
 
 =item *
 
-C<Invalid hexadecimal number in \\N{U+...}> is a new fatal error triggered when
+C<Invalid hexadecimal number in \N{U+...}> is a new fatal error triggered when
 the character constant represented by C<...> is not a valid hexadecimal
 number.
 
@@ -2080,14 +2084,14 @@ number.
 
 The new meaning of C<\N> as C<[^\n]> is not valid in a bracketed character
 class, just like C<.> in a character class loses its special meaning, and will
-cause the fatal error C<\\N in a character class must be a named character: \\N{...}>.
+cause the fatal error C<\N in a character class must be a named character: \N{...}>.
 
 =item *
 
 The rules on what is legal for the C<...> in C<\N{...}> have been tightened
 up so that unless the C<...> begins with an alphabetic character and continues
 with a combination of alphanumerics, dashes, spaces, parentheses or colons
-then the warning C<Deprecated character(s) in \\N{...} starting at '%s'> is
+then the warning C<Deprecated character(s) in \N{...} starting at '%s'> is
 now issued.
 
 =item *
@@ -2131,7 +2135,7 @@ can now do
 
 to suppress only those, but not other syntax-related warnings. Warnings where
 prototypes are changed, ignored, or not met are still in the C<prototype>
-category as before. (Matt S. Trout)
+category as before.
 
 =item *
 
@@ -2196,11 +2200,6 @@ POSIX::strftime() can now handle Unicode characters in the format string.
 
 =item *
 
-The Windows select() implementation now supports all empty C<fd_set>s
-more correctly.
-
-=item *
-
 The C<syntax> category was removed from 5 warnings that should only be in
 C<deprecated>.
 
@@ -2225,7 +2224,7 @@ first character returned by \N{} in character class> will be issued.
 
 =item *
 
-The warning C<Missing right brace on \\N{} or unescaped left brace after \\N.
+The warning C<Missing right brace on \N{} or unescaped left brace after \N.
 Assuming the latter> will be issued if Perl encounters a C<\N{> but doesn't
 find a matching C<}>. In this case Perl doesn't know if it was mistakenly
 omitted, or if "match non-newline" followed by "match a C<{>" was desired.
@@ -2275,19 +2274,20 @@ search path.
 
 =item *
 
-F<h2xs> no longer incorrectly treats enum values like macros (Daniel Burr).
-It also now handles C++ style constants (C<//>) properly in enums. (A patch from
-Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
+F<h2xs> no longer incorrectly treats enum values like macros.
+It also now handles C++ style comments (C<//>) properly in enums. 
 
 =item *
 
-F<perl5db.pl> now supports C<LVALUE> subroutines.  Additionally, the debugger now correctly handles proxy constant subroutines, and subroutine stubs.
+F<perl5db.pl> now supports C<LVALUE> subroutines.  Additionally, the
+debugger now correctly handles proxy constant subroutines, and
+subroutine stubs.
 
 =item *
 
 F<perlbug> now uses C<%Module::CoreList::bug_tracker> to print out
 upstream bug tracker URLs.  If a user identifies a particular module
-as the topic of their bug report and we're able to divine ithe URL for
+as the topic of their bug report and we're able to divine the URL for
 its upstream bug tracker, perlbug now provide a message to the user
 explaining that the core copies the CPAN version directly, and provide
 the URL for reporting the bug directly to the upstream author.
@@ -2304,7 +2304,8 @@ out F<perlthanks>. It will make the developers smile.
 =item *
 
 Perl's developers have fixed bugs in F<a2p> having to do with the
-C<match()> operator in list context.
+C<match()> operator in list context.  Additionally, F<a2p> no longer
+generates code that uses the C<$[> variable.
 
 =back
 
@@ -2545,11 +2546,6 @@ spurious warning like the following:
 
 =item *
 
-On Windows, C<'.\foo'> and C<'..\foo'>  were treated differently than
-C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
-
-=item *
-
 Assigning a format to a glob could corrupt the format; e.g.:
 
      *bar=*foo{FORMAT}; # foo format now bad
@@ -2684,7 +2680,7 @@ or cause the following assertion failure [RT #60508]:
 
 =item *
 
-Perl now includes previously missing files from the Unicode 5.1 Character Database.
+Perl now includes previously missing files from the Unicode Character Database.
 
 =item *
 
@@ -2717,21 +2713,56 @@ Perl should now build on MirOS BSD.
 
 =head2 Discontinued Platforms
 
-
 =over
 
-=item DomainOS
-
-=item Tenon MachTen
+=item Domain/OS
 
 =item MiNT
 
+=item Tenon MachTen
+
 =back
 
 =head2 Updated Platforms
 
 =over 4
 
+=item AIX
+
+=over 4
+
+=item *
+
+Removed F<libbsd> for AIX 5L and 6.1. Only C<flock()> was used from F<libbsd>.
+
+=item *
+
+Removed F<libgdbm> for AIX 5L and 6.1 if F<libgdbm> < 1.8.3-5 is installed.
+The F<libgdbm> is delivered as an optional package with the AIX Toolbox.
+Unfortunately the versions below 1.8.3-5 are broken.
+
+=item *
+
+Hints changes mean that AIX 4.2 should work again.
+
+=back
+
+=item Cygwin
+
+=over 4
+
+=item *
+
+Perl now supports IPv6 on Cygwin 1.7 and newer.
+
+=item *
+
+On Cygwin we now strip the last number from the DLL. This has been the
+behaviour in the cygwin.com build for years. The hints files have been
+updated.
+
+=back
+
 =item Darwin (Mac OS X)
 
 =over 4
@@ -2758,53 +2789,35 @@ Fix thread library selection [perl #69686]
 
 =back
 
-=item Win32
+=item FreeBSD
 
 =over 4
 
 =item *
 
-Initial support for mingw64 is now available.
-
-=item *
-
-Various bits of Perl's build infrastructure are no longer converted to
-win32 line endings at release time. If this hurts you, please report the
-problem with the L<perlbug> program included with perl.
-
-=item *
+The hints files now identify the correct threading libraries on FreeBSD 7
+and later.
 
-Always add a manifest resource to C<perl.exe> to specify the C<trustInfo>
-settings for Windows Vista and later. Without this setting Windows
-will treat C<perl.exe> as a legacy application and apply various
-heuristics like redirecting access to protected file system areas
-(like the "Program Files" folder) to the users "VirtualStore"
-instead of generating a proper "permission denied" error.
+=back
 
-For VC8 and VC9 this manifest setting is automatically generated by
-the compiler/linker (together with the binding information for their
-respective runtime libraries); for all other compilers we need to
-embed the manifest resource explicitly in the external resource file.
+=item Irix
 
-This change also requests the Microsoft Common-Controls version 6.0
-(themed controls introduced in Windows XP) via the dependency list
-in the assembly manifest. For VC8 and VC9 this is specified using the
-C</manifestdependency> linker commandline option instead.
+=over 4
 
 =item *
 
-Improved message window handling means that C<alarm> and C<kill> messages
-will no longer be dropped under race conditions.
+We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
+C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
 
 =back
 
-=item cygwin
+=item NetBSD
 
 =over 4
 
 =item *
 
-Perl now suppoorts IPv6 on cygwin 1.7 and newer.
+Hints now supports versions 5.*.
 
 =back
 
@@ -2854,44 +2867,108 @@ C<File::Copy> now detects Unix compatibility mode on VMS.
 
 =back
 
-=item AIX
+=item Stratus VOS
 
-Removed F<libbsd> for AIX 5L and 6.1. Only C<flock()> was used from F<libbsd>.
+=over 4
 
-Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
-optional package with the AIX Toolbox. Unfortunately the 64 bit version
-is broken.
+=item *
 
-Hints changes mean that AIX 4.2 should work again.
+Various changes from Stratus have been merged in.
 
-=item Cygwin
+=back
 
-On Cygwin we now strip the last number from the DLL. This has been the
-behaviour in the cygwin.com build for years. The hints files have been
-updated.
+=item Symbian
 
+=over 4
 
-=item FreeBSD
+=item *
 
-The hints files now identify the correct threading libraries on FreeBSD 7
-and later.
+There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
 
-=item Irix
+=back
 
-We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
-C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
+=item Windows
 
-=item NetBSD
+=over 4
 
-Hints now supports versions 5.*.
+=item *
 
-=item Stratus VOS
+Perl 5.12 supports Windows 2000 and later. The supporting code for
+legacy versions of Windows is still included, but will be removed
+during the next development cycle.
 
-Various changes from Stratus have been merged in.
+=item *
 
-=item Symbian
+Initial support for building Perl with MinGW-w64 is now available.
 
-There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
+=item *
+
+F<perl.exe> now includes a manifest resource to specify the C<trustInfo>
+settings for Windows Vista and later. Without this setting Windows
+would treat F<perl.exe> as a legacy application and apply various
+heuristics like redirecting access to protected file system areas
+(like the "Program Files" folder) to the users "VirtualStore"
+instead of generating a proper "permission denied" error.
+
+The manifest resource also requests the Microsoft Common-Controls
+version 6.0 (themed controls introduced in Windows XP).  Check out the
+Win32::VisualStyles module on CPAN to switch back to old style
+unthemed controls for legacy applications.
+
+=item *
+
+The C<-t> filetest operator now only returns true if the filehandle
+is connected to a console window.  In previous versions of Perl it
+would return true for all character mode devices, including F<NUL>
+and F<LPT1>.
+
+=item *
+
+The C<-p> filetest operator now works correctly, and the
+Fcntl::S_IFIFO constant is defined when Perl is compiled with
+Microsoft Visual C.  In previous Perl versions C<-p> always
+returned a false value, and the Fcntl::S_IFIFO constant
+was not defined.
+
+This bug is specific to Microsoft Visual C and never affected
+Perl binaries built with MinGW.
+
+=item *
+
+The socket error codes are now more widely supported:  The POSIX
+module will define the symbolic names, like POSIX::EWOULDBLOCK,
+and stringification of socket error codes in $! works as well
+now;
+
+  C:\>perl -MPOSIX -E "$!=POSIX::EWOULDBLOCK; say $!"
+  A non-blocking socket operation could not be completed immediately.
+
+=item *
+
+flock() will now set sensible error codes in $!.  Previous Perl versions
+copied the value of $^E into $!, which caused much confusion.
+
+=item *
+
+select() now supports all empty C<fd_set>s more correctly.
+
+=item *
+
+C<'.\foo'> and C<'..\foo'>  were treated differently than
+C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
+
+=item *
+
+Improved message window handling means that C<alarm> and C<kill> messages
+will no longer be dropped under race conditions.
+
+=item *
+
+Various bits of Perl's build infrastructure are no longer converted to
+win32 line endings at release time. If this hurts you, please report the
+problem with the L<perlbug> program included with perl.
+
+=back
 
 =back
 
@@ -2927,7 +3004,9 @@ will appear to hang as they get into a very long running loop [RT #72998].
 
 =item *
 
-Several porters have reported mysterious crashes when Perl's entire test suite is run after a build on certain Windows 2000 systems. When run by hand, the individual tests reportedly work fine.
+Several porters have reported mysterious crashes when Perl's entire
+test suite is run after a build on certain Windows 2000 systems. When
+run by hand, the individual tests reportedly work fine.
 
 =back
 
@@ -2952,9 +3031,11 @@ in a change of behaviour between 5.8.x and 5.10.0:
 
 Perl 5.12.0 represents approximately two years of development since
 Perl 5.10.0 and contains over 750,000 lines of changes across over
-3000 files from over 200 authors and committers.
+3,000 files from over 200 authors and committers.
 
-Perl continues to flourish into its third decade thanks to a vibrant community of users and developers.  The following people are known to have contributed the improvements that became Perl 5.12.0:
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers.  The following people are known to
+have contributed the improvements that became Perl 5.12.0:
 
 Aaron Crane, Abe Timmerman, Abhijit Menon-Sen, Abigail, Adam Russell,
 Adriano Ferreira, Ævar Arnfjörð Bjarmason, Alan Grover, Alexandr