Integrate with Nick.
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
CommitLineData
ba8251e8 1=head1 NAME
2
f29c64d6 3perldelta - what's new for perl v5.6 (as of v5.005_58)
ba8251e8 4
5=head1 DESCRIPTION
6
f29c64d6 7This is an unsupported alpha release, meant for intrepid Perl developers
8only. The included sources may not even build correctly on some platforms.
9Subscribing to perl5-porters is the best way to monitor and contribute
10to the progress of development releases (see www.perl.org for info).
11
ba8251e8 12This document describes differences between the 5.005 release and this one.
13
14=head1 Incompatible Changes
15
e02fdbd2 16=head2 Perl Source Incompatibilities
17
f29c64d6 18TODO
e02fdbd2 19
20=head2 C Source Incompatibilities
21
22=over 4
23
24=item C<PERL_POLLUTE>
25
26Release 5.005 grandfathered old global symbol names by providing preprocessor
87275199 27macros for extension source compatibility. As of release 5.6, these
e02fdbd2 28preprocessor definitions are not available by default. You need to explicitly
14218588 29compile perl with C<-DPERL_POLLUTE> to get these definitions. For
30extensions still using the old symbols, this option can be
2aea4d40 31specified via MakeMaker:
32
14218588 33 perl Makefile.PL POLLUTE=1
e02fdbd2 34
f29c64d6 35=item C<PERL_IMPLICIT_CONTEXT>
36
37This new build option provides a set of macros for all API functions
38such that an implicit interpreter/thread context argument is passed to
39every API function. As a result of this, something like C<sv_setsv(foo,bar)>
2c2d71f5 40amounts to a macro invocation that actually translates to something like
f29c64d6 41C<Perl_sv_setsv(my_perl,foo,bar)>. While this is generally expected
42to not have any significant source compatibility issues, the difference
43between a macro and a real function call will need to be considered.
44
2c2d71f5 45This means that there B<is> a source compatibility issue as a result of
46this if your extensions attempt to use pointers to any of the Perl API
47functions.
48
f29c64d6 49Note that the above issue is not relevant to the default build of
50Perl, whose interfaces continue to match those of prior versions
51(but subject to the other options described here).
52
53For testing purposes, the 5.005_58 release automatically enables
54PERL_IMPLICIT_CONTEXT whenever Perl is built with -Dusethreads or
55-Dusemultiplicity.
56
2c2d71f5 57See L<perlguts/"The Perl API"> for detailed information on the
58ramifications of building Perl using this option.
59
86058a2d 60=item C<PERL_POLLUTE_MALLOC>
61
14218588 62Enabling Perl's malloc in release 5.005 and earlier caused
86058a2d 63the namespace of system versions of the malloc family of functions to
14218588 64be usurped by the Perl versions, since by default they used the
65same names.
86058a2d 66
67Besides causing problems on platforms that do not allow these functions to
68be cleanly replaced, this also meant that the system versions could not
69be called in programs that used Perl's malloc. Previous versions of Perl
14218588 70have allowed this behaviour to be suppressed with the HIDEMYMALLOC and
86058a2d 71EMBEDMYMALLOC preprocessor definitions.
72
87275199 73As of release 5.6, Perl's malloc family of functions have default names
86058a2d 74distinct from the system versions. You need to explicitly compile perl with
14218588 75C<-DPERL_POLLUTE_MALLOC> to get the older behaviour. HIDEMYMALLOC
76and EMBEDMYMALLOC have no effect, since the behaviour they enabled is now
86058a2d 77the default.
78
79Note that these functions do B<not> constitute Perl's memory allocation API.
80See L<perlguts/"Memory Allocation"> for further information about that.
81
e02fdbd2 82=item C<PL_na> and C<dTHR> Issues
83
84The C<PL_na> global is now thread local, so a C<dTHR> declaration is needed
14218588 85in the scope in which the global appears. XSUBs should handle this automatically,
e02fdbd2 86but if you have used C<PL_na> in support functions, you either need to
87change the C<PL_na> to a local variable (which is recommended), or put in
88a C<dTHR>.
89
90=back
91
cceca5ed 92=head2 Compatible C Source API Changes
93
94=over
95
96=item C<PATCHLEVEL> is now C<PERL_VERSION>
97
14218588 98The cpp macros C<PERL_REVISION>, C<PERL_VERSION>, and C<PERL_SUBVERSION>
cceca5ed 99are now available by default from perl.h, and reflect the base revision,
14218588 100patchlevel, and subversion respectively. C<PERL_REVISION> had no
cceca5ed 101prior equivalent, while C<PERL_VERSION> and C<PERL_SUBVERSION> were
102previously available as C<PATCHLEVEL> and C<SUBVERSION>.
103
14218588 104The new names cause less pollution of the B<cpp> namespace and reflect what
cceca5ed 105the numbers have come to stand for in common practice. For compatibility,
14218588 106the old names are still supported when F<patchlevel.h> is explicitly
cceca5ed 107included (as required before), so there is no source incompatibility
14218588 108from the change.
cceca5ed 109
110=back
111
e02fdbd2 112=head2 Binary Incompatibilities
113
9c107f78 114The default build of this release is binary compatible with the 5.005
115release or its maintenance versions.
f29c64d6 116
117The usethreads or usemultiplicity builds are B<not> binary compatible
118with the corresponding builds in 5.005.
e02fdbd2 119
ba8251e8 120=head1 Core Changes
121
9d73390d 122=head2 Unicode and UTF-8 support
123
124Perl can optionally use UTF-8 as its internal representation for character
125strings. The C<use utf8> pragma enables this support in the current lexical
126scope. See L<utf8> for more information.
127
128=head2 Lexically scoped warning categories
129
130You can now control the granularity of warnings emitted by perl at a finer
0453d815 131level using the C<use warning> pragma. See L<warning> and L<perllexwarn>
132for details.
9d73390d 133
5fdc711f 134=head2 Binary numbers supported
135
4f19785b 136Binary numbers are now supported as literals, in s?printf formats, and
137C<oct()>:
138
14218588 139 $answer = 0b101010;
140 printf "The answer is: %b\n", oct("0b101010");
4f19785b 141
5fdc711f 142=head2 syswrite() ease-of-use
143
6c67e1bb 144The length argument of C<syswrite()> is now optional.
145
5fdc711f 146=head2 64-bit support
147
9c107f78 148All platforms that have 64-bit integers either (a) natively as longs
149or ints (b) via special compiler flags (c) using long long are able to
150use "quads" (64-integers) as follows:
151
152=over 4
153
154=item constants in the code
155
156=item arguments to oct() and hex()
157
158=item arguments to print(), printf() and sprintf()
159
160=item pack() and unpack() "q" format
161
162=item in basic arithmetics
163
164=back
165
166Note that unless you have the case (a) you will have to configure
167and compile Perl using the -Duse64bits Configure flag.
168
169Unfortunately, bit operations (&, <<, ...) and vec() do not work,
170they are limited to 32 bits.
171
172Last but not least: note that due to Perl's tendency to always use
173floating point numbers the quads are not true integers. They may lose
174their precision due to rounding errors, and when they get large their
175less significant digits will fall off.
e02fdbd2 176
62c18ce2 177=head2 Better syntax checks on parenthesized unary operators
178
179Expressions such as:
180
14218588 181 print defined(&foo,&bar,&baz);
182 print uc("foo","bar","baz");
183 undef($foo,&bar);
62c18ce2 184
7711098a 185used to be accidentally allowed in earlier versions, and produced
14218588 186unpredictable behaviour. Some produced ancillary warnings
187when used in this way; others silently did the wrong thing.
62c18ce2 188
189The parenthesized forms of most unary operators that expect a single
14218588 190argument now ensure that they are not called with more than one
191argument, making the cases shown above syntax errors. The usual
192behaviour of:
62c18ce2 193
14218588 194 print defined &foo, &bar, &baz;
195 print uc "foo", "bar", "baz";
196 undef $foo, &bar;
62c18ce2 197
198remains unchanged. See L<perlop>.
199
3e3318e7 200=head2 POSIX character class syntax [: :] supported
201
202For example to match alphabetic characters use /[[:alpha:]]/.
203See L<perlre> for details.
204
5a929a98 205=head2 Improved C<qw//> operator
8127e0e3 206
26ef7447 207The C<qw//> operator is now evaluated at compile time into a true list
208instead of being replaced with a run time call to C<split()>. This
14218588 209removes the confusing misbehaviour of C<qw//> in scalar context, which
210had inherited that behaviour from split().
26ef7447 211
212Thus:
213
214 $foo = ($bar) = qw(a b c); print "$foo|$bar\n";
215
216now correctly prints "3|a", instead of "2|a".
8127e0e3 217
5a929a98 218=head2 pack() format 'Z' supported
219
220The new format type 'Z' is useful for packing and unpacking null-terminated
221strings. See L<perlfunc/"pack">.
222
4d0c1c44 223=head2 pack() format modifier '!' supported
ee3907e2 224
14218588 225The new format type modifier '!' is useful for packing and unpacking
ee3907e2 226native shorts, ints, and longs. See L<perlfunc/"pack">.
227
f29c64d6 228=head2 pack() and unpack() support counted strings
229
230The template character '#' can be used to specify a counted string
231type to be packed or unpacked. See L<perlfunc/"pack">.
232
2b92dfce 233=head2 $^X variables may now have names longer than one character
234
235Formerly, $^X was synonymous with ${"\cX"}, but $^XY was a syntax
236error. Now variable names that begin with a control character may be
237arbitrarily long. However, for compatibility reasons, these variables
238I<must> be written with explicit braces, as C<${^XY}> for example.
14218588 239C<${^XYZ}> is synonymous with ${"\cXYZ"}. Variable names with more
2b92dfce 240than one control character, such as C<${^XY^Z}>, are illegal.
241
14218588 242The old syntax has not changed. As before, `^X' may be either a
243literal control-X character or the two-character sequence `caret' plus
244`X'. When braces are omitted, the variable name stops after the
2b92dfce 245control character. Thus C<"$^XYZ"> continues to be synonymous with
7711098a 246C<$^X . "YZ"> as before.
2b92dfce 247
248As before, lexical variables may not have names beginning with control
249characters. As before, variables whose names begin with a control
14218588 250character are always forced to be in package `main'. All such variables
251are reserved for future extensions, except those that begin with
252C<^_>, which may be used by user programs and is guaranteed not to
253acquire special meaning in any future version of Perl.
2b92dfce 254
fbad3eb5 255=head1 Significant bug fixes
256
257=head2 E<lt>HANDLEE<gt> on empty files
258
259With C<$/> set to C<undef>, slurping an empty file returns a string of
14218588 260zero length (instead of C<undef>, as it used to) the first time the
261HANDLE is read. Further reads yield C<undef>.
fbad3eb5 262
263This means that the following will append "foo" to an empty file (it used
14218588 264to do nothing):
fbad3eb5 265
266 perl -0777 -pi -e 's/^/foo/' empty_file
267
14218588 268The behaviour of:
fbad3eb5 269
270 perl -pi -e 's/^/foo/' empty_file
271
272is unchanged (it continues to leave the file empty).
273
0244c3a4 274=head2 C<eval '...'> improvements
275
276Line numbers (as reflected by caller() and most diagnostics) within
277C<eval '...'> were often incorrect when here documents were involved.
278This has been corrected.
279
280Lexical lookups for variables appearing in C<eval '...'> within
281functions that were themselves called within an C<eval '...'> were
14218588 282searching the wrong place for lexicals. The lexical search now
283correctly ends at the subroutine's block boundary.
0244c3a4 284
285Parsing of here documents used to be flawed when they appeared as
286the replacement expression in C<eval 's/.../.../e'>. This has
287been fixed.
288
45bc9206 289=head2 Automatic flushing of output buffers
290
14218588 291fork(), exec(), system(), qx//, and pipe open()s now flush buffers
292of all files opened for output when the operation
293was attempted. This mostly eliminates confusing
45bc9206 294buffering mishaps suffered by users unaware of how Perl internally
14218588 295handles I/O.
45bc9206 296
af8c498a 297=head2 Better diagnostics on meaningless filehandle operations
298
299Constructs such as C<open(E<lt>FHE<gt>)> and C<close(E<lt>FHE<gt>)>
300are compile time errors. Attempting to read from filehandles that
301were opened only for writing will now produce warnings (just as
302writing to read-only filehandles does).
303
ba8251e8 304=head1 Supported Platforms
305
5fdc711f 306=over 4
307
308=item *
309
6c67e1bb 310VM/ESA is now supported.
311
5fdc711f 312=item *
313
ee3907e2 314Siemens BS2000 is now supported under the POSIX Shell.
315
316=item *
317
2bb14304 318The Mach CThreads (NEXTSTEP, OPENSTEP) are now supported by the Thread
319extension.
6c67e1bb 320
5fdc711f 321=item *
322
ee3907e2 323GNU/Hurd is now supported.
6c67e1bb 324
00ad96e1 325=item *
326
327Rhapsody is now supported.
328
27806c82 329=item *
330
331EPOC is is now supported (on Psion 5).
332
5fdc711f 333=back
334
6c67e1bb 335=head1 New tests
336
337=over 4
338
339=item op/io_const
340
341IO constants (SEEK_*, _IO*).
14218588 342
6c67e1bb 343=item op/io_dir
344
345Directory-related IO methods (new, read, close, rewind, tied delete).
346
347=item op/io_multihomed
348
349INET sockets with multi-homed hosts.
350
351=item op/io_poll
352
353IO poll().
354
355=item op/io_unix
356
357UNIX sockets.
358
359=item op/filetest
360
361File test operators.
362
363=item op/lex_assign
364
5fdc711f 365Verify operations that access pad objects (lexicals and temporaries).
6c67e1bb 366
367=back
e02fdbd2 368
ba8251e8 369=head1 Modules and Pragmata
370
3e8c4fa0 371=head2 Modules
372
b7d8191e 373=over 4
374
f29c64d6 375=item ByteLoader
376
377The ByteLoader is a dedication extension to generate and run
378Perl bytecode. See L<ByteLoader>.
379
380=item B
381
382The Perl Compiler suite has been extensively reworked for this
383release.
384
385=item Devel::DProf
386
387Devel::DProf, a Perl source code profiler has been added.
388
b7d8191e 389=item Dumpvalue
390
391Added Dumpvalue module provides screen dumps of Perl data.
392
393=item Benchmark
394
868cb350 395You can now run tests for I<n> seconds instead of guessing the right
14218588 396number of tests to run: e.g. timethese(-5, ...) will run each
397code for at least 5 CPU seconds. Zero as the "number of repetitions"
155776c0 398means "for at least 3 CPU seconds". The output format has also
14218588 399changed. For example:
155776c0 400
401use Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
402
403will now output something like this:
404
405Benchmark: running a, b, each for at least 5 CPU seconds...
406 a: 5 wallclock secs ( 5.77 usr + 0.00 sys = 5.77 CPU) @ 200551.91/s (n=1156516)
407 b: 4 wallclock secs ( 5.00 usr + 0.02 sys = 5.02 CPU) @ 159605.18/s (n=800686)
408
409New features: "each for at least N CPU seconds...", "wallclock secs",
410and the "@ operations/CPU second (n=operations)".
b7d8191e 411
f505c983 412=item Devel::Peek
413
414The Devel::Peek module provides access to the internal representation
14218588 415of Perl variables and data. It is a data debugging tool for the XS programmer.
f505c983 416
b7d8191e 417=item Fcntl
418
419More Fcntl constants added: F_SETLK64, F_SETLKW64, O_LARGEFILE for
14218588 420large (more than 4G) file access (64-bit support is not yet
b7d8191e 421working, though, so no need to get overly excited), Free/Net/OpenBSD
422locking behaviour flags F_FLOCK, F_POSIX, Linux F_SHLCK, and
423O_ACCMODE: the mask of O_RDONLY, O_WRONLY, and O_RDWR.
424
f505c983 425=item File::Spec
426
427New methods have been added to the File::Spec module: devnull() returns
19799a22 428the name of the null device (/dev/null on Unix) and tmpdir() the name of
14218588 429the temp directory (normally /tmp on Unix). There are now also methods
f505c983 430to convert between absolute and relative filenames: abs2rel() and
14218588 431rel2abs(). For compatibility with operating systems that specify volume
432names in file paths, the splitpath(), splitdir(), and catdir() methods
f505c983 433have been added.
434
435=item File::Spec::Functions
436
437The new File::Spec::Functions modules provides a function interface
14218588 438to the File::Spec module. Allows shorthand
f505c983 439
14218588 440 $fullname = catfile($dir1, $dir2, $file);
f505c983 441
442instead of
443
14218588 444 $fullname = File::Spec->catfile($dir1, $dir2, $file);
f505c983 445
e16b8f49 446=item Math::BigInt
447
14218588 448The logical operations C<E<lt>E<lt>>, C<E<gt>E<gt>>, C<&>, C<|>,
e16b8f49 449and C<~> are now supported on bigints.
450
b7d8191e 451=item Math::Complex
7711098a 452
14218588 453The accessor methods Re, Im, arg, abs, rho, and theta can now also
868cb350 454act as mutators (accessor $z->Re(), mutator $z->Re(3)).
b7d8191e 455
456=item Math::Trig
457
14218588 458A little bit of radial trigonometry (cylindrical and spherical),
459radial coordinate conversions, and the great circle distance were added.
b7d8191e 460
f4b9d880 461=item SDBM_File
462
463An EXISTS method has been added to this module (and sdbm_exists() has
464been added to the underlying sdbm library), so one can now call exists
14218588 465on an SDBM_File tied hash and get the correct result, rather than a
f4b9d880 466runtime error.
467
06ef4121 468=item Time::Local
469
470The timelocal() and timegm() functions used to silently return bogus
471results when the date exceeded the machine's integer range. They
14218588 472now consistently croak() if the date falls in an unsupported range.
06ef4121 473
8fe0a5c4 474=item Win32
475
476The error return value in list context has been changed for all functions
14218588 477that return a list of values. Previously these functions returned a list
478with a single element C<undef> if an error occurred. Now these functions
479return the empty list in these situations. This applies to the following
8fe0a5c4 480functions:
481
14218588 482 Win32::FsType
483 Win32::GetOSVersion
8fe0a5c4 484
485The remaining functions are unchanged and continue to return C<undef> on
486error even in list context.
487
488The Win32::SetLastError(ERROR) function has been added as a complement
489to the Win32::GetLastError() function.
490
491The new Win32::GetFullPathName(FILENAME) returns the full absolute
14218588 492pathname for FILENAME in scalar context. In list context it returns
493a two-element list containing the fully qualified directory name and
8fe0a5c4 494the filename.
495
9fe6733a 496=item DBM Filters
497
498A new feature called "DBM Filters" has been added to all the
14218588 499DBM modules--DB_File, GDBM_File, NDBM_File, ODBM_File, and SDBM_File.
500DBM Filters add four new methods to each DBM module:
9fe6733a 501
502 filter_store_key
503 filter_store_value
504 filter_fetch_key
505 filter_fetch_value
506
14218588 507These can be used to filter key-value pairs before the pairs are
9fe6733a 508written to the database or just after they are read from the database.
509See L<perldbmfilter> for further information.
510
b7d8191e 511=back
3e8c4fa0 512
513=head2 Pragmata
514
14218588 515C<use utf8> to enable UTF-8 and Unicode support.
43165c05 516
517C<use caller 'encoding'> allows modules to inherit pragmatic attributes
518from the caller's context. C<encoding> is currently the only supported
519attribute.
9d73390d 520
521Lexical warnings pragma, C<use warning;>, to control optional warnings.
6c67e1bb 522
14218588 523C<use filetest> to control the behaviour of filetests (C<-r> C<-w> ...).
6c67e1bb 524Currently only one subpragma implemented, "use filetest 'access';",
14218588 525that enables the use of access(2) or equivalent to check
6c67e1bb 526permissions instead of using stat(2) as usual. This matters
14218588 527in filesystems where there are ACLs (access control lists): the
528stat(2) might lie, but access(2) knows better.
6c67e1bb 529
ba8251e8 530=head1 Utility Changes
531
e02fdbd2 532Todo.
533
ba8251e8 534=head1 Documentation Changes
535
5fdc711f 536=over 4
537
538=item perlopentut.pod
f8284313 539
5fdc711f 540A tutorial on using open() effectively.
541
542=item perlreftut.pod
543
544A tutorial that introduces the essentials of references.
545
14218588 546=item perltootc.pod
547
548A tutorial on managing class data for object modules.
549
5fdc711f 550=back
e02fdbd2 551
ba8251e8 552=head1 New Diagnostics
553
6b121555 554=item /%s/: Unrecognized escape \\%c passed through
555
556(W) You used a backslash-character combination which is not recognized
7711098a 557by Perl. This combination appears in an interpolated variable or a
6b121555 558C<'>-delimited regular expression.
559
af8c498a 560=item Filehandle %s opened only for output
6b121555 561
af8c498a 562(W) You tried to read from a filehandle opened only for writing. If you
563intended it to be a read-write filehandle, you needed to open it with
564"+E<lt>" or "+E<gt>" or "+E<gt>E<gt>" instead of with "E<lt>" or nothing. If
565you intended only to read from the file, use "E<lt>". See
566L<perlfunc/open>.
e02fdbd2 567
06eaf0bc 568=item Missing command in piped open
569
570(W) You used the C<open(FH, "| command")> or C<open(FH, "command |")>
571construction, but the command was missing or blank.
572
af8c498a 573=item Unrecognized escape \\%c passed through
574
575(W) You used a backslash-character combination which is not recognized
576by Perl.
577
f10b0346 578=item defined(@array) is deprecated
69794302 579
580(D) defined() is not usually useful on arrays because it checks for an
581undefined I<scalar> value. If you want to see if the array is empty,
582just use C<if (@array) { # not empty }> for example.
583
f10b0346 584=item defined(%hash) is deprecated
69794302 585
586(D) defined() is not usually useful on hashes because it checks for an
587undefined I<scalar> value. If you want to see if the hash is empty,
588just use C<if (%hash) { # not empty }> for example.
589
ba8251e8 590=head1 Obsolete Diagnostics
591
e02fdbd2 592Todo.
593
04d420f9 594=head1 Configuration Changes
595
27806c82 596=head2 installusrbinperl
597
04d420f9 598You can use "Configure -Uinstallusrbinperl" which causes installperl
599to skip installing perl also as /usr/bin/perl. This is useful if you
600prefer not to modify /usr/bin for some reason or another but harmful
601because many scripts assume to find Perl in /usr/bin/perl.
602
27806c82 603=head2 SOCKS support
555834d1 604
27806c82 605You can use "Configure -Dusesocks" which causes Perl to probe
606for the SOCKS proxy protocol library, http://www.socks.nec.com/
04d420f9 607
ba8251e8 608=head1 BUGS
609
610If you find what you think is a bug, you might check the headers of
14218588 611articles recently posted to the comp.lang.perl.misc newsgroup.
ba8251e8 612There may also be information at http://www.perl.com/perl/, the Perl
613Home Page.
614
615If you believe you have an unreported bug, please run the B<perlbug>
14218588 616program included with your release. Make sure to trim your bug down
ba8251e8 617to a tiny but sufficient test case. Your bug report, along with the
14218588 618output of C<perl -V>, will be sent off to perlbug@perl.com to be
ba8251e8 619analysed by the Perl porting team.
620
621=head1 SEE ALSO
622
623The F<Changes> file for exhaustive details on what changed.
624
625The F<INSTALL> file for how to build Perl.
626
627The F<README> file for general stuff.
628
629The F<Artistic> and F<Copying> files for copyright information.
630
631=head1 HISTORY
632
633Written by Gurusamy Sarathy <F<gsar@umich.edu>>, with many contributions
634from The Perl Porters.
635
636Send omissions or corrections to <F<perlbug@perl.com>>.
637
638=cut