=head2 Platform-Specific Notes
-XXX List any changes for specific platforms. This could include configuration
-and compilation changes or changes in portability/compatibility. However,
-changes within modules for platforms should generally be listed in the
-L</Modules and Pragmata> section.
+=head3 AIX
-=over 4
+Configure now always adds C<-qlanglvl=extc99> to the CC flags on AIX when
+using xlC. This will make it easier to compile a number of XS-based modules
+that assume C99 [perl #113778].
-=item clang++
+=head3 clang++
There is now a workaround for a compiler bug that prevented compiling
with clang++ since Perl 5.15.7 [perl #112786].
-=item C++
+=head3 C++
When compiling the Perl core as C++ (which is only semi-supported), the
mathom functions are now compiled as C<extern "C">, to ensure proper
binary compatibility. (However, binary compatibility isn't generally
guaranteed anyway in the situations where this would matter.)
-=item VMS
+=head3 Darwin
+
+Stop hardcoding an alignment on 8 byte boundaries to fix builds using
+-Dusemorebits.
+
+=head3 Haiku
+
+Perl should now work out of the box on Haiku R1 Alpha 4.
+
+=head3 MidnightBSD
+
+C<libc_r> was removed from recent versions of MidnightBSD and older versions
+work better with C<pthread>. Threading is now enabled using C<pthread> which
+corrects build errors with threading enabled on 0.4-CURRENT.
+
+=head3 Solaris
+
+In Configure, avoid running sed commands with flags not supported on Solaris.
+
+=head3 VMS
+
+=over
+
+=item *
Where possible, the case of filenames and command-line arguments is now
preserved by enabling the CRTL features C<DECC$EFS_CASE_PRESERVE> and
C<DECC$ARGV_PARSE_STYLE> at start-up time. The latter only takes effect
when extended parse is enabled in the process from which Perl is run.
-=item VMS
+=item *
The character set for Extended Filename Syntax (EFS) is now enabled by default
on VMS. Among other things, this provides better handling of dots in directory
names, multiple dots in filenames,and spaces in filenames. To obtain the old
behavior, set the logical name C<DECC$EFS_CHARSET> to C<DISABLE>.
-=item MidnightBSD
+=item *
-C<libc_r> was removed from recent versions of MidnightBSD and older versions
-work better with C<pthread>. Threading is now enabled using C<pthread> which
-corrects build errors with threading enabled on 0.4-CURRENT.
+Fix linking on builds configured with -Dusemymalloc=y.
-=item WinCE
+=item *
-Building on WinCE is now possible once again, although more work is required
-to fully restore a clean build.
+It should now be possible to compile Perl as C++ on VMS.
-=item Windows
+=item *
-Perl can now be built using Microsoft's Visual C++ 2012 compiler by specifying
-CCTYPE=MSVC110 (or MSVC110FREE if you are using the free Express edition for
-Windows Desktop) in F<win32/Makefile>.
+All C header files from the top-level directory of the distribution are now
+installed on VMS, providing consistency with a long-standing practice on other
+platforms. Previously only a subset were installed, which broke non-core
+extension builds for extensions that depended on the missing include files.
-=item Haiku
+=item *
-Perl should now work out of the box on Haiku R1 Alpha 4.
+Quotes are now removed from the command verb (but not the parameters) for
+commands spawned via C<system>, backticks, or a piped C<open>. Previously,
+quotes on the verb were passed through to DCL, which would fail to recognize
+the command. Also, if the verb is actually a path to an image or command
+procedure on an ODS-5 volume, quoting it now allows the path to contain spaces.
-=item Win32
+=item *
-Fixed a problem where perl could crash while cleaning up threads (including the
-main thread) in threaded debugging builds on Win32 and possibly other platforms
-[perl #114496].
+The B<a2p> build has been fixed for the HP C++ compiler on OpenVMS.
-A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more
-time than requested, and possibly even hanging, has been fixed [perl #33096].
+=back
-=item Win32
+=head3 Win32
-The option to build without USE_SOCKETS_AS_HANDLES has been removed.
+=over
-=item Solaris
+=item *
-In Configure, avoid running sed commands with flags not supported on Solaris.
+Perl can now be built using Microsoft's Visual C++ 2012 compiler by specifying
+CCTYPE=MSVC110 (or MSVC110FREE if you are using the free Express edition for
+Windows Desktop) in F<win32/Makefile>.
-=item Darwin
+=item *
-Stop hardcoding an alignment on 8 byte boundaries to fix builds using
--Dusemorebits.
+The option to build without USE_SOCKETS_AS_HANDLES has been removed.
-=item VMS
+=item *
-Fix linking on builds configured with -Dusemymalloc=y.
+Fixed a problem where perl could crash while cleaning up threads (including the
+main thread) in threaded debugging builds on Win32 and possibly other platforms
+[perl #114496].
-=item VMS
+=item *
-It should now be possible to compile Perl as C++ on VMS.
+A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more
+time than requested, and possibly even hanging, has been fixed [perl #33096].
-=item Win32
+=item *
C<link> on Win32 now attempts to set C<$!> to more appropriate values
based on the Win32 API error code. [perl #112272]
C<%ENV> in L<http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod>).
[perl #113536]
-=item Win32
+=item *
Building perl with some Windows compilers used to fail due to a problem
with miniperl's C<glob> operator (which uses the C<perlglob> program)
deleting the PATH environment variable [perl #113798].
-=item Win32
-
-A new makefile option, USE_64_BIT_INT, has been added to the Windows makefiles.
-Set this to "define" when building a 32-bit perl if you want it to use 64-bit
-integers.
-
-Machine code size reductions, already made to the DLLs of XS modules in Perl
-5.17.2, have now been extended to the perl DLL itself.
-
-Building with VC++ 6.0 was inadvertently broken in Perl 5.17.2 but has now been
-fixed again.
-
-=item VMS
-
-All C header files from the top-level directory of the distribution are now
-installed on VMS, providing consistency with a long-standing practice on other
-platforms. Previously only a subset were installed, which broke non-core
-extension builds for extensions that depended on the missing include files.
-
-=item VMS
+=item *
-Quotes are now removed from the command verb (but not the parameters) for
-commands spawned via C<system>, backticks, or a piped C<open>. Previously,
-quotes on the verb were passed through to DCL, which would fail to recognize
-the command. Also, if the verb is actually a path to an image or command
-procedure on an ODS-5 volume, quoting it now allows the path to contain spaces.
+A new makefile option, USE_64_BIT_INT, has been added to the Windows
+makefiles. Set this to "define" when building a 32-bit perl if you want
+it to use 64-bit integers.
-=item VMS
+Machine code size reductions, already made to the DLLs of XS modules in
+Perl 5.17.2, have now been extended to the perl DLL itself.
-The B<a2p> build has been fixed for the HP C++ compiler on OpenVMS.
+Building with VC++ 6.0 was inadvertently broken in Perl 5.17.2 but has
+now been fixed again.
-=item AIX
+=back
-Configure now always adds C<-qlanglvl=extc99> to the CC flags on AIX when
-using xlC. This will make it easier to compile a number of XS-based modules
-that assume C99 [perl #113778].
+=head3 WinCE
-=back
+Building on WinCE is now possible once again, although more work is required
+to fully restore a clean build.
=head1 Internal Changes
=item *
-C<PL_sawampersand> is now a constant. The switch this variable provided
-(to enable/disable the pre-match copy depending on whether C<$&> had been
-seen) has been removed and replaced with copy-on-write, eliminating a few
-bugs.
-
-The previous behaviour can still be enabled by running F<Configure> with
-B<-Accflags=-DPERL_SAWAMPERSAND>.
-
-=item *
-
PL_glob_index is gone.
=item *
The APIs for accessing lexical pads have changed considerably.
-C<PADLIST>s are now longer C<AV>s, but their own type instead. C<PADLIST>s now
-contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s, rather than C<AV>s for the
-pad and the list of pad names. C<PAD>s, C<PADNAMELIST>s, and C<PADNAME>s are to
-be accessed as such through the newly added pad API instead of the plain C<AV>
-and C<SV> APIs. See L<perlapi> for details.
+C<PADLIST>s are now longer C<AV>s, but their own type instead.
+C<PADLIST>s now contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s,
+rather than C<AV>s for the pad and the list of pad names. C<PAD>s,
+C<PADNAMELIST>s, and C<PADNAME>s are to be accessed as such through the
+newly added pad API instead of the plain C<AV> and C<SV> APIs. See
+L<perlapi> for details.
=item *
=item *
-A trailing '/' on a path in @INC will no longer have an additional '/' appended.
+A trailing '/' on a path in @INC will no longer have an additional '/'
+appended.
=item *
=item *
-C<sort {undef} ...> under fatal warnings no longer crashes. It started
-crashing in Perl 5.16.
+C<sort {undef} ...> under fatal warnings no longer crashes. It had
+begun crashing in Perl 5.16.
=item *
=item *
-Lexical constants (C<my sub answer () { 42 }>) no longer cause double
-frees.
-
-=item *
-
-Constant subroutine redefinition warns by default, but lexical constants
-were accidentally exempt from default warnings. This has been corrected.
-
-=item *
-
Some failed regular expression matches such as C<'f' =~ /../g> were not
resetting C<pos>. Also, "match-once" patterns (C<m?...?g>) failed to reset
it, too, when invoked a second time [perl #23180].
=item *
-An earlier release in the 5.17.x series could crash if user code prevented
-_charnames from loading via C<$INC{'_charnames.pm'}++>.
-
-=item *
-
A number of bugs related to assigning a list to hash have been fixed. Many of
these involve lists with repeated keys like C<(1, 1, 1, 1)>.
=item *
-A bug, case-insensitive regex with UTF8-flagged strings, introduced
-earlier in the 5.17 series has been fixed. [perl #114982]
-
-=item *
-
Attributes applied to lexical variables no longer leak memory.
[perl #114764]
=item *
-A regression introduced in 5.17.2 has been fixed, which made C</[\@\\]||/>
-result in a "panic" error. [perl #115050]
-
-=item *
-
C<length>, C<pos>, C<substr> and C<sprintf> could be confused by ties,
overloading, references and typeglobs if the stringification of such
changed the internal representation to or from UTF8. [perl #114410]
=item *
-$REGERROR or $REGMARK in the replacement. [perl #49190]
+C<$REGERROR> or C<$REGMARK> in the replacement. [perl #49190]
=item *
=item *
-In a regular expression, if something is quantified with C<{n,m}>
-where C<S<n E<gt> m>>, it can't possibly match. Previously this was a fatal error,
-but now is merely a warning (and that something won't match). [perl #82954].
+In a regular expression, if something is quantified with C<{n,m}> where
+C<S<n E<gt> m>>, it can't possibly match. Previously this was a fatal
+error, but now is merely a warning (and that something won't match).
+[perl #82954].
=item *
=item *
-A bug fix in an earlier 5.17.x release caused C<no a a 3> (a syntax error)
-to result in a bad read or assertion failure, because an op was being freed
-twice.
-
-=item *
-
C<< $obj->SUPER::method >> calls in the main package could fail if the
SUPER package had already been accessed by other means.
=item *
-Some format syntax errors started causing crashes in Perl 5.17.2, but have now
-been fixed.
-
-=item *
-
Under debugging builds, the B<-DA> command line option started crashing in Perl
5.16.0. It has been fixed [perl #114368].
=item *
-Scope::Escape compatibility, which was broken in Perl 5.17.2, has been restored
-[perl #113872].
-
-=item *
-
A potential deadlock scenario involving the premature termination of a pseudo-
forked child in a Windows build with ithreads enabled has been fixed. This
resolves the common problem of the F<t/op/fork.t> test hanging on Windows [perl
=item *
-The C<re_compile()> API function, the entry point for perl's regex compiler,
-was accidentally changed in Perl 5.17.1 to operate on the current engine. This
-has now been restored to its former core-engine-specific state [perl #114302].
-
-=item *
-
-Perl 5.17.1 introduced a memory leak into the re-use of run-time regexes where
-the pattern hasn't changed (i.e. C</$unchanging/>). This has now been fixed.
-
-=item *
-
A bug in the compilation of a C</(?{})/> expression which affected the TryCatch
test suite has been fixed [perl #114242].
=item *
-Formats no longer leak. They started leaking in Perl 5.17.2.
-
-=item *
-
Pod can now be nested in code inside a quoted construct outside of a string
eval. This used to work only within string evals [perl #114040].
=item *
-Unicode 6.1 published an incorrect alias for one of the
-Canonical_Combining_Class property's values (which range between 0 and
-254). The alias C<CCC133> should have been C<CCC132>. Perl now
-overrides the data file furnished by Unicode to give the correct value.
-
-=item *
-
C<unpack> no longer produces the "'/' must follow a numeric type in unpack"
error when it is the data that are at fault [perl #60204].
=item *
-Fixed the debugger C<l> and C<M> commands, and other debugger
-functionality which was broken in 5.17.0 [perl #113918].
-
-=item *
-
String negation now behaves the same under C<use integer;> as it does
without [perl #113012].
=item *
-C<$x = "(?{})"; /a++(?{})+$x/x> no longer erroneous produces an error (just
-a warning, as expected). This was broken in 5.17.1.
-
-=item *
-
C<$byte_overload .= $utf8> no longer results in doubly-encoded UTF8 if the
left-hand scalar happened to have produced a UTF8 string the last time
overloading was invoked.
=head1 Known Problems
-XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
-tests that had to be C<TODO>ed for the release would be noted here. Unfixed
-platform specific bugs also go here.
-
-[ List each fix as a =item entry ]
-
=over 4
=item *
-XXX
+XXX: the imperfect behavior of the ** deprecation
=back