=head1 NAME
-perldelta - what's new for perl v5.6 (as of v5.005_64)
+perldelta - what's new for perl v5.6.0
=head1 DESCRIPTION
=head2 Perl's version numbering has changed
-Beginning with Perl version 5.6, the version number convention has been
+Beginning with Perl version 5.6.0, the version number convention has been
changed to a "dotted integer" scheme that is more commonly found in open
source projects.
Maintenance versions of v5.6.0 will be released as v5.6.1, v5.6.2 etc.
-The next development series following v5.6 will be numbered v5.7.x,
+The next development series following v5.6.0 will be numbered v5.7.x,
beginning with v5.7.0, and the next major production release following
-v5.6 will be v5.8.
+v5.6.0 will be v5.8.0.
The English module now sets $PERL_VERSION to $^V (a string value) rather
than C<$]> (a numeric value). (This is a potential incompatibility.
To cope with the new versioning system's use of at least three significant
digits for each version component, the method used for incrementing the
subversion number has also changed slightly. We assume that versions older
-than v5.6 have been incrementing the subversion component in multiples of
+than v5.6.0 have been incrementing the subversion component in multiples of
10. Versions after v5.6.0 will increment them by 1. Thus, using the new
-notation, 5.005_03 is the same as v5.5.30, and the first maintenance
-version following v5.6.0 will be v5.6.1, which amounts to a floating point
-value of 5.006_001).
+notation, 5.005_03 is the "same" as v5.5.30, and the first maintenance
+version following v5.6.0 will be v5.6.1 (which should be read as being
+equivalent to a floating point value of 5.006_001 in the older format,
+stored in C<$]>).
=item Literals of the form C<1.2.3> parse differently
included (as required before), so there is no source incompatibility
from the change.
-=item Support for C++ exceptions
-
-change#3386, also needs perlguts documentation
-[TODO - Chip Salzenberg <chip@perlsupport.com>]
-
=back
=head2 Binary Incompatibilities
additional functionality of the perl_clone() API call and other
support for running B<cloned> interpreters concurrently.
-[XXX TODO - the Compiler backends may be broken when USE_ITHREADS is
-enabled.]
-
=head2 Lexically scoped warning categories
You can now control the granularity of warnings emitted by perl at a finer
printf "%*vX", ":", $addr; # formats IPv6 address
printf "%*vb", " ", $bits; # displays bitstring
-See L<perlop/"Strings of Character"> for additional information.
+See L<perldata/"Scalar value constructors"> for additional information.
=head2 Weak references
Perl now allows the arrow to be omitted in many constructs
involving subroutine calls through references. For example,
-C<$foo[10]-E<gt>('foo')> may now be written C<$foo[10]('foo')>.
+C<< $foo[10]->('foo') >> may now be written C<$foo[10]('foo')>.
This is rather similar to how the arrow may be omitted from
-C<$foo[10]-E<gt>{'foo'}>. Note however, that the arrow is still
-required for C<foo(10)-E<gt>('bar')>.
+C<< $foo[10]->{'foo'} >>. Note however, that the arrow is still
+required for C<< foo(10)->('bar') >>.
=head2 exists() is supported on subroutine names
=head2 File and directory handles can be autovivified
-Similar to how constructs such as C<$x-E<gt>[0]> autovivify a reference,
+Similar to how constructs such as C<< $x->[0] >> autovivify a reference,
handle constructors (open(), opendir(), pipe(), socketpair(), sysopen(),
socket(), and accept()) now autovivify a file or directory handle
if the handle passed to them is an uninitialized scalar variable. This
# $f implicitly closed here
}
-[TODO - this idiom needs more pod penetration]
=head2 64-bit support
change#4052
[TODO - Ilya Zakharevich <ilya@math.ohio-state.edu>]
-=head2 Experimental support for user-hooks in @INC
-
-[TODO - Ken Fox <kfox@ford.com>]
-
=head2 C<require> and C<do> may be overridden
C<require> and C<do 'file'> operations may be overridden locally
enables perl code to determine whether actions that make sense
only during normal running are warranted. See L<perlvar>.
-=head2 New variable $^V contains Perl version in v5.6.0 format
+=head2 New variable $^V contains Perl version as a string
C<$^V> contains the Perl version number as a string composed of
-characters whose ordinals match the version numbers, so that it may
-be used in string comparisons.
+characters whose ordinals match the version numbers, e.g., v5.6.0.
+This may be used in string comparisons.
See C<Support for strings represented as a vector of ordinals> for an
example.
=head1 Significant bug fixes
-=head2 E<lt>HANDLEE<gt> on empty files
+=head2 <HANDLE> on empty files
With C<$/> set to C<undef>, "slurping" an empty file returns a string of
zero length (instead of C<undef>, as it used to) the first time the
=head2 Better diagnostics on meaningless filehandle operations
-Constructs such as C<open(E<lt>FHE<gt>)> and C<close(E<lt>FHE<gt>)>
+Constructs such as C<< open(<FH>) >> and C<< close(<FH>) >>
are compile time errors. Attempting to read from filehandles that
were opened only for writing will now produce warnings (just as
writing to read-only filehandles does).
=head2 Where possible, buffered data discarded from duped input filehandle
-C<open(NEW, "E<lt>&OLD")> now attempts to discard any data that
+C<< open(NEW, "<&OLD") >> now attempts to discard any data that
was previously read and buffered in C<OLD> before duping the handle.
On platforms where doing this is allowed, the next read operation
on C<NEW> will return the same data as the corresponding operation
=head2 eof() has the same old magic as <>
-C<eof()> would return true if no attempt to read from C<E<lt>E<gt>> had
+C<eof()> would return true if no attempt to read from C<< <> >> had
yet been made. C<eof()> has been changed to have a little magic of its
-own, it now opens the C<E<lt>E<gt>> files.
+own, it now opens the C<< <> >> files.
=head2 system(), backticks and pipe open now reflect exec() failure
=head2 Pseudo-hashes work better
Dereferencing some types of reference values in a pseudo-hash,
-such as C<$ph-E<gt>{foo}[1]>, was accidentally disallowed. This has
+such as C<< $ph->{foo}[1] >>, was accidentally disallowed. This has
been corrected.
When applied to a pseudo-hash element, exists() now reports whether
optimized to directly set the lexical variable on the LHS,
eliminating redundant copying overheads.
-=head2 Method lookups optimized
-
-[TODO - Chip Salzenberg <chip@perlsupport.com>]
-
=head2 Faster mechanism to invoke XSUBs
change#4044,4125
=head1 Platform specific changes
-=head2 Additional supported platforms
+=head2 Supported platforms
=over 4
=item *
-Rhapsody is now supported.
+Rhapsody/Darwin is now supported.
=item *
[TODO - Ilya Zakharevich <ilya@math.ohio-state.edu>]
+=head2 OS390 (OpenEdition MVS)
+
+Support for this EBCDIC platform has not been renewed in this release.
+There are difficulties in reconciling Perl's standardization on UTF-8
+as its internal representation for characters with the EBCDIC character
+set, because the two are incompatible.
+
+It is unclear whether future versions will renew support for this
+platform, but the possibility exists.
+
=head2 VMS
-[TODO - Charles Bailey <bailey@newman.upenn.edu>]
+Numerous revisions and extensions to configuration, build, testing, and
+installation process to accomodate core changes and VMS-specific options
+
+Expand %ENV-handling code to allow runtime mapping to logical names,
+CLI symbols, and CRTL environ array
+
+Extension of subprocess invocation code to accept filespecs as command "verbs"
+
+Add to Perl command line processing the ability to use default file types and
+to recognize Unix-style C<2E<gt>&1>.
+
+Expansion of File::Spec::VMS routines, and integration into ExtUtils::MM_VMS
+
+Extension of ExtUtils::MM_VMS to handle complex extensions more flexibly
+
+Barewords at start of Unix-syntax paths may be treated as text rather than
+only as logical names
+
+Optional secure translation of several logical names used internally by Perl
+
+Miscellaneous bugfixing and porting of new core code to VMS
+
+Thanks are gladly extended to the many people who have contributed VMS
+patches, testing, and ideas.
=head2 Win32
handles. kill() accepts any real process id, rather than strictly
return values from system(1,...).
+For better compatibility with Unix, C<kill(0, $pid)> can now be used to
+test whether a process exists.
+
The C<Shell> module is supported.
Rudimentary support for building under command.com in Windows 95
Compatibility tests for C<sub : attrs> vs the older C<use attrs>.
+=item lib/env
+
+Tests for new environment scalar capability (e.g., C<use Env qw($BAR);>).
+
+=item lib/env-array
+
+Tests for new environment array capability (e.g., C<use Env qw(@PATH);>).
+
=item lib/io_const
IO constants (SEEK_*, _IO*).
=item B
-The Perl Compiler suite has been extensively reworked for this
-release.
+WARNING: The Compiler suite is still highly experimental. The
+generated code may not be correct, even it manages to execute
+without errors.
-[TODO - Vishal Bhatia <vishal@gol.com>,
-Nick Ing-Simmons <nick@ni-s.u-net.com>]
+The Perl Compiler suite has been extensively reworked for this
+release. More of the standard Perl testsuite passes when run
+under the Compiler, but there is still a significant way to
+go to achieve production quality compiled executables.
=item ByteLoader
$PERL_VERSION now stands for C<$^V> (a string value) rather than for C<$]>
(a numeric value).
+=item Env
+
+Env now supports accessing environment variables like PATH as array
+variables.
+
=item ExtUtils::MakeMaker
change#4135, also needs docs in module pod
See L<Pod::Usage> for details.
-A bug that prevented the non-option call-back E<lt>E<gt> from being
+A bug that prevented the non-option call-back <> from being
specified as the first argument has been fixed.
-To specify the characters E<lt> and E<gt> as option starters, use
-E<gt>E<lt>. Note, however, that changing option starters is strongly
-deprecated.
+To specify the characters < and > as option starters, use ><. Note,
+however, that changing option starters is strongly deprecated.
=item IO
A bug that prevented the IO::Socket::protocol() accessor
from ever returning the correct value has been corrected.
+IO::Socket::connect now uses non-blocking IO instead of alarm()
+to do connect timeouts.
+
+IO::Socket::accept now uses select() instead of alarm() for doing
+timeouts.
+
+IO::Socket::INET->new now sets $! correctly on failure. $@ is
+still set for backwards compatability.
+
=item JPL
Java Perl Lingo is now distributed with Perl. See jpl/README
=item Math::BigInt
-The bitwise operations C<E<lt>E<lt>>, C<E<gt>E<gt>>, C<&>, C<|>,
+The bitwise operations C<<< << >>>, C<<< >> >>>, C<&>, C<|>,
and C<~> are now supported on bigints.
=item Math::Complex
The accessor methods Re, Im, arg, abs, rho, and theta can now also
act as mutators (accessor $z->Re(), mutator $z->Re(3)).
+The class method C<display_format> and the corresponding object method
+C<display_format>, in addition to accepting just one argument, now can
+also accept a parameter hash. Recognized keys of a parameter hash are
+C<"style">, which corresponds to the old one parameter case, and two
+new parameters: C<"format">, which is a printf()-style format string
+(defaults usually to C<"%.15g">, you can revert to the default by
+setting the format string to C<undef>) used for both parts of a
+complex number, and C<"polar_pretty_print"> (defaults to true),
+which controls whether an attempt is made to try to recognize small
+multiples and rationals of pi (2pi, pi/2) at the argument (angle) of a
+polar complex number.
+
+The potentially disruptive change is that in list context both methods
+now I<return the parameter hash>, instead of only the value of the
+C<"style"> parameter.
+
=item Math::Trig
A little bit of radial trigonometry (cylindrical and spherical),
returns found pod files, along with their canonical names (like
C<File::Spec::Unix>). L<Pod::ParseUtils|Pod::ParseUtils> contains
B<Pod::List> (useful for storing pod list information), B<Pod::Hyperlink>
-(for parsing the contents of C<LE<gt>E<lt>> sequences) and B<Pod::Cache>
+(for parsing the contents of C<LE<lt>E<gt>> sequences) and B<Pod::Cache>
(for caching information about pod files, e.g. link nodes).
=item Pod::Select, podselect
=item Pod::Text and Pod::Man
-[TODO - Russ Allbery <rra@stanford.edu>]
+Pod::Text has been rewritten to use Pod::Parser. While pod2text() is
+still available for backwards compatibility, the module now has a new
+preferred interface. See L<Pod::Text> for the details. The new Pod::Text
+module is easily subclassed for tweaks to the output, and two such
+subclasses (Pod::Text::Termcap for man-page-style bold and underlining
+using termcap information, and Pod::Text::Color for markup with ANSI color
+sequences) are now standard.
+
+pod2man has been turned into a module, Pod::Man, which also uses
+Pod::Parser. In the process, several outstanding bugs related to quotes
+in section headers, quoting of code escapes, and nested lists have been
+fixed. pod2man is now a wrapper script around this module.
=item SDBM_File
Sys::Hostname now uses XSUBs to call the C library's gethostname() or
uname() if they exist.
+=item Term::ANSIColor
+
+Term::ANSIColor is a very simple module to provide easy and readable
+access to the ANSI color and highlighting escape sequences, supported by
+most ANSI terminal emulators. It is now included standard.
+
=item Time::Local
The timelocal() and timegm() functions used to silently return bogus
=item <> should be quotes
-(F) You wrote C<require E<lt>fileE<gt>> when you should have written
+(F) You wrote C<< require <file> >> when you should have written
C<require 'file'>.
=item Attempt to join self
(W) You tried to read from a filehandle opened only for writing. If you
intended it to be a read/write filehandle, you needed to open it with
-"+E<lt>" or "+E<gt>" or "+E<gt>E<gt>" instead of with "E<lt>" or nothing. If
-you intended only to read from the file, use "E<lt>". See
+"+<" or "+>" or "+>>" instead of with "<" or nothing. If
+you intended only to read from the file, use "<". See
L<perlfunc/open>.
=item flock() on closed filehandle %s
=item Unknown open() mode '%s'
(F) The second argument of 3-argument open() is not among the list
-of valid modes: C<E<lt>>, C<E<gt>>, C<E<gt>E<gt>>, C<+E<lt>>,
-C<+E<gt>>, C<+E<gt>E<gt>>, C<-|>, C<|E<45>>.
+of valid modes: C<< < >>, C<< > >>, C<<< >> >>>, C<< +< >>,
+C<< +> >>, C<<< +>> >>>, C<-|>, C<|->.
=item Unknown process %x sent message to prime_env_iter: %s