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