Rename warning to warnings, from Paul Marquess.
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
index dc697e6..0cb375a 100644 (file)
@@ -1,16 +1,21 @@
 =head1 NAME
 
-perldelta - what's new for perl v5.6 (as of v5.5.58)
+perldelta - what's new for perl v5.6 (as of v5.005_61)
 
 =head1 DESCRIPTION
 
+This is an unsupported alpha release, meant for intrepid Perl developers
+only.  The included sources may not even build correctly on some platforms.
+Subscribing to perl5-porters is the best way to monitor and contribute
+to the progress of development releases (see www.perl.org for info).
+
 This document describes differences between the 5.005 release and this one.
 
 =head1 Incompatible Changes
 
 =head2 Perl Source Incompatibilities
 
-None known at this time.
+TODO
 
 =head2 C Source Incompatibilities
 
@@ -27,6 +32,30 @@ specified via MakeMaker:
 
     perl Makefile.PL POLLUTE=1
 
+=item C<PERL_IMPLICIT_CONTEXT>
+
+This new build option provides a set of macros for all API functions
+such that an implicit interpreter/thread context argument is passed to
+every API function.  As a result of this, something like C<sv_setsv(foo,bar)>
+amounts to a macro invocation that actually translates to something like
+C<Perl_sv_setsv(my_perl,foo,bar)>.  While this is generally expected
+to not have any significant source compatibility issues, the difference
+between a macro and a real function call will need to be considered.
+
+This means that there B<is> a source compatibility issue as a result of
+this if your extensions attempt to use pointers to any of the Perl API
+functions.
+
+Note that the above issue is not relevant to the default build of
+Perl, whose interfaces continue to match those of prior versions
+(but subject to the other options described here).
+
+PERL_IMPLICIT_CONTEXT is automatically enabled whenever Perl is built
+with one of -Dusethreads, -Dusemultiplicity, or both.
+
+See L<perlguts/"The Perl API"> for detailed information on the
+ramifications of building Perl using this option.
+
 =item C<PERL_POLLUTE_MALLOC>
 
 Enabling Perl's malloc in release 5.005 and earlier caused
@@ -81,8 +110,11 @@ from the change.
 
 =head2 Binary Incompatibilities
 
-This release is not binary compatible with the 5.005 release or its
-maintenance versions.
+The default build of this release is binary compatible with the 5.005
+release or its maintenance versions.
+
+The usethreads or usemultiplicity builds are B<not> binary compatible
+with the corresponding builds in 5.005.
 
 =head1 Core Changes
 
@@ -95,7 +127,7 @@ scope.  See L<utf8> for more information.
 =head2 Lexically scoped warning categories
 
 You can now control the granularity of warnings emitted by perl at a finer
-level using the C<use warning> pragma.  See L<warning> and L<perllexwarn>
+level using the C<use warnings> pragma.  See L<warnings> and L<perllexwarn>
 for details.
 
 =head2 Binary numbers supported
@@ -112,14 +144,56 @@ The length argument of C<syswrite()> is now optional.
 
 =head2 64-bit support
 
-Better 64-bit support -- but full support still a distant goal.  One
-must Configure with -Duse64bits to get Configure to probe for the
-extent of 64-bit support.  Depending on the platform (hints file) more
-or less 64-awareness becomes available.  As of 5.005_54 at least
-somewhat 64-bit aware platforms are HP-UX 11 or better, Solaris 2.6 or
-better, IRIX 6.2 or better.  Naturally 64-bit platforms like Digital
-Unix and UNICOS also have 64-bit support.
+All platforms that have 64-bit integers either (a) natively as longs
+or ints (b) via special compiler flags (c) using long long are able to
+use "quads" (64-integers) as follows:
+
+=over 4
+
+=item constants in the code 
+
+=item arguments to oct() and hex()
+
+=item arguments to print(), printf() and sprintf()
+
+=item pack() and unpack() "q" format
+
+=item in basic arithmetics
+
+=item vec() (but see the below note about bit arithmetics)
+    
+=back
 
+Note that unless you have the case (a) you will have to configure
+and compile Perl using the -Duse64bits Configure flag.
+
+Unfortunately bit arithmetics (&, |, ^, ~, <<, >>) are not 64-bit clean.
+
+Last but not least: note that due to Perl's habit of always using
+floating point numbers the quads are still not true integers.
+When quads overflow their limits (0...18_446_744_073_709_551_615 unsigned,
+-9_223_372_036_854_775_808...9_223_372_036_854_775_807 signed), they
+are silently promoted to floating point numbers, after which they will
+start losing precision (their lower digits).
+
+=head2 Large file support
+
+If you have filesystems that support "large files" (files larger than
+2 gigabytes), you may now also be able to create and access them from Perl.
+
+Note that in addition to requiring a proper file system to do this you
+may also need to adjust your per-process (or even your per-system)
+maximum filesize limits before running Perl scripts that try to handle
+large files, especially if you intend to write such files.
+
+Adjusting your file system/system limits is outside the scope of Perl.
+For process limits, you may try to increase the limits using your
+shell's limit/ulimit command before running Perl.  The BSD::Resource
+extension (not included with the standard Perl distribution) may also
+be of use.
+(Large file support is also related to 64-bit support, for obvious reasons)
 =head2 Better syntax checks on parenthesized unary operators
 
 Expressions such as:
@@ -171,6 +245,11 @@ strings.  See L<perlfunc/"pack">.
 The new format type modifier '!' is useful for packing and unpacking
 native shorts, ints, and longs.  See L<perlfunc/"pack">.
 
+=head2 pack() and unpack() support counted strings
+
+The template character '#' can be used to specify a counted string
+type to be packed or unpacked.  See L<perlfunc/"pack">.
+
 =head2 $^X variables may now have names longer than one character
 
 Formerly, $^X was synonymous with ${"\cX"}, but $^XY was a syntax
@@ -242,6 +321,14 @@ 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 Buffered data discarded from input filehandle when dup'ed.
+
+C<open(NEW, "E<lt>&OLD")> now discards any data that was previously
+read and buffered in C<OLD>.  The next read operation on C<NEW> will
+return the same data as the corresponding operation on C<OLD>.
+Formerly, it would have returned the data from the start of the
+following disk block instead.
+
 =head1 Supported Platforms
 
 =over 4
@@ -313,6 +400,20 @@ Verify operations that access pad objects (lexicals and temporaries).
 
 =over 4
 
+=item ByteLoader
+
+The ByteLoader is a dedication extension to generate and run
+Perl bytecode.  See L<ByteLoader>.
+
+=item B
+
+The Perl Compiler suite has been extensively reworked for this
+release.
+
+=item Devel::DProf
+
+Devel::DProf, a Perl source code profiler has been added.
+
 =item Dumpvalue
 
 Added Dumpvalue module provides screen dumps of Perl data.
@@ -445,7 +546,7 @@ C<use caller 'encoding'> allows modules to inherit pragmatic attributes
 from the caller's context.  C<encoding> is currently the only supported
 attribute.
 
-Lexical warnings pragma, C<use warning;>, to control optional warnings.
+Lexical warnings pragma, C<use warnings;>, to control optional warnings.
 
 C<use filetest> to control the behaviour of filetests (C<-r> C<-w> ...).
 Currently only one subpragma implemented, "use filetest 'access';",