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