Flush buffer before duplicating file descriptor.
[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
54195c32 304=head2 Buffered data discarded from input filehandle when dup'ed.
305
306C<open(NEW, "E<lt>&OLD")> now discards any data that was previously
307read and buffered in C<OLD>. The next read operation on C<NEW> will
308return the same data as the corresponding operation on C<OLD>.
309Formerly, it would have returned the data from the start of the
310following disk block instead.
311
ba8251e8 312=head1 Supported Platforms
313
5fdc711f 314=over 4
315
316=item *
317
6c67e1bb 318VM/ESA is now supported.
319
5fdc711f 320=item *
321
ee3907e2 322Siemens BS2000 is now supported under the POSIX Shell.
323
324=item *
325
2bb14304 326The Mach CThreads (NEXTSTEP, OPENSTEP) are now supported by the Thread
327extension.
6c67e1bb 328
5fdc711f 329=item *
330
ee3907e2 331GNU/Hurd is now supported.
6c67e1bb 332
00ad96e1 333=item *
334
335Rhapsody is now supported.
336
27806c82 337=item *
338
339EPOC is is now supported (on Psion 5).
340
5fdc711f 341=back
342
6c67e1bb 343=head1 New tests
344
345=over 4
346
347=item op/io_const
348
349IO constants (SEEK_*, _IO*).
14218588 350
6c67e1bb 351=item op/io_dir
352
353Directory-related IO methods (new, read, close, rewind, tied delete).
354
355=item op/io_multihomed
356
357INET sockets with multi-homed hosts.
358
359=item op/io_poll
360
361IO poll().
362
363=item op/io_unix
364
365UNIX sockets.
366
367=item op/filetest
368
369File test operators.
370
371=item op/lex_assign
372
5fdc711f 373Verify operations that access pad objects (lexicals and temporaries).
6c67e1bb 374
375=back
e02fdbd2 376
ba8251e8 377=head1 Modules and Pragmata
378
3e8c4fa0 379=head2 Modules
380
b7d8191e 381=over 4
382
f29c64d6 383=item ByteLoader
384
385The ByteLoader is a dedication extension to generate and run
386Perl bytecode. See L<ByteLoader>.
387
388=item B
389
390The Perl Compiler suite has been extensively reworked for this
391release.
392
393=item Devel::DProf
394
395Devel::DProf, a Perl source code profiler has been added.
396
b7d8191e 397=item Dumpvalue
398
399Added Dumpvalue module provides screen dumps of Perl data.
400
401=item Benchmark
402
868cb350 403You can now run tests for I<n> seconds instead of guessing the right
14218588 404number of tests to run: e.g. timethese(-5, ...) will run each
405code for at least 5 CPU seconds. Zero as the "number of repetitions"
155776c0 406means "for at least 3 CPU seconds". The output format has also
14218588 407changed. For example:
155776c0 408
409use Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
410
411will now output something like this:
412
413Benchmark: running a, b, each for at least 5 CPU seconds...
414 a: 5 wallclock secs ( 5.77 usr + 0.00 sys = 5.77 CPU) @ 200551.91/s (n=1156516)
415 b: 4 wallclock secs ( 5.00 usr + 0.02 sys = 5.02 CPU) @ 159605.18/s (n=800686)
416
417New features: "each for at least N CPU seconds...", "wallclock secs",
418and the "@ operations/CPU second (n=operations)".
b7d8191e 419
f505c983 420=item Devel::Peek
421
422The Devel::Peek module provides access to the internal representation
14218588 423of Perl variables and data. It is a data debugging tool for the XS programmer.
f505c983 424
b7d8191e 425=item Fcntl
426
427More Fcntl constants added: F_SETLK64, F_SETLKW64, O_LARGEFILE for
14218588 428large (more than 4G) file access (64-bit support is not yet
b7d8191e 429working, though, so no need to get overly excited), Free/Net/OpenBSD
430locking behaviour flags F_FLOCK, F_POSIX, Linux F_SHLCK, and
431O_ACCMODE: the mask of O_RDONLY, O_WRONLY, and O_RDWR.
432
f505c983 433=item File::Spec
434
435New methods have been added to the File::Spec module: devnull() returns
19799a22 436the name of the null device (/dev/null on Unix) and tmpdir() the name of
14218588 437the temp directory (normally /tmp on Unix). There are now also methods
f505c983 438to convert between absolute and relative filenames: abs2rel() and
14218588 439rel2abs(). For compatibility with operating systems that specify volume
440names in file paths, the splitpath(), splitdir(), and catdir() methods
f505c983 441have been added.
442
443=item File::Spec::Functions
444
445The new File::Spec::Functions modules provides a function interface
14218588 446to the File::Spec module. Allows shorthand
f505c983 447
14218588 448 $fullname = catfile($dir1, $dir2, $file);
f505c983 449
450instead of
451
14218588 452 $fullname = File::Spec->catfile($dir1, $dir2, $file);
f505c983 453
e16b8f49 454=item Math::BigInt
455
14218588 456The logical operations C<E<lt>E<lt>>, C<E<gt>E<gt>>, C<&>, C<|>,
e16b8f49 457and C<~> are now supported on bigints.
458
b7d8191e 459=item Math::Complex
7711098a 460
14218588 461The accessor methods Re, Im, arg, abs, rho, and theta can now also
868cb350 462act as mutators (accessor $z->Re(), mutator $z->Re(3)).
b7d8191e 463
464=item Math::Trig
465
14218588 466A little bit of radial trigonometry (cylindrical and spherical),
467radial coordinate conversions, and the great circle distance were added.
b7d8191e 468
f4b9d880 469=item SDBM_File
470
471An EXISTS method has been added to this module (and sdbm_exists() has
472been added to the underlying sdbm library), so one can now call exists
14218588 473on an SDBM_File tied hash and get the correct result, rather than a
f4b9d880 474runtime error.
475
06ef4121 476=item Time::Local
477
478The timelocal() and timegm() functions used to silently return bogus
479results when the date exceeded the machine's integer range. They
14218588 480now consistently croak() if the date falls in an unsupported range.
06ef4121 481
8fe0a5c4 482=item Win32
483
484The error return value in list context has been changed for all functions
14218588 485that return a list of values. Previously these functions returned a list
486with a single element C<undef> if an error occurred. Now these functions
487return the empty list in these situations. This applies to the following
8fe0a5c4 488functions:
489
14218588 490 Win32::FsType
491 Win32::GetOSVersion
8fe0a5c4 492
493The remaining functions are unchanged and continue to return C<undef> on
494error even in list context.
495
496The Win32::SetLastError(ERROR) function has been added as a complement
497to the Win32::GetLastError() function.
498
499The new Win32::GetFullPathName(FILENAME) returns the full absolute
14218588 500pathname for FILENAME in scalar context. In list context it returns
501a two-element list containing the fully qualified directory name and
8fe0a5c4 502the filename.
503
9fe6733a 504=item DBM Filters
505
506A new feature called "DBM Filters" has been added to all the
14218588 507DBM modules--DB_File, GDBM_File, NDBM_File, ODBM_File, and SDBM_File.
508DBM Filters add four new methods to each DBM module:
9fe6733a 509
510 filter_store_key
511 filter_store_value
512 filter_fetch_key
513 filter_fetch_value
514
14218588 515These can be used to filter key-value pairs before the pairs are
9fe6733a 516written to the database or just after they are read from the database.
517See L<perldbmfilter> for further information.
518
b7d8191e 519=back
3e8c4fa0 520
521=head2 Pragmata
522
14218588 523C<use utf8> to enable UTF-8 and Unicode support.
43165c05 524
525C<use caller 'encoding'> allows modules to inherit pragmatic attributes
526from the caller's context. C<encoding> is currently the only supported
527attribute.
9d73390d 528
529Lexical warnings pragma, C<use warning;>, to control optional warnings.
6c67e1bb 530
14218588 531C<use filetest> to control the behaviour of filetests (C<-r> C<-w> ...).
6c67e1bb 532Currently only one subpragma implemented, "use filetest 'access';",
14218588 533that enables the use of access(2) or equivalent to check
6c67e1bb 534permissions instead of using stat(2) as usual. This matters
14218588 535in filesystems where there are ACLs (access control lists): the
536stat(2) might lie, but access(2) knows better.
6c67e1bb 537
ba8251e8 538=head1 Utility Changes
539
e02fdbd2 540Todo.
541
ba8251e8 542=head1 Documentation Changes
543
5fdc711f 544=over 4
545
546=item perlopentut.pod
f8284313 547
5fdc711f 548A tutorial on using open() effectively.
549
550=item perlreftut.pod
551
552A tutorial that introduces the essentials of references.
553
14218588 554=item perltootc.pod
555
556A tutorial on managing class data for object modules.
557
5fdc711f 558=back
e02fdbd2 559
ba8251e8 560=head1 New Diagnostics
561
6b121555 562=item /%s/: Unrecognized escape \\%c passed through
563
564(W) You used a backslash-character combination which is not recognized
7711098a 565by Perl. This combination appears in an interpolated variable or a
6b121555 566C<'>-delimited regular expression.
567
af8c498a 568=item Filehandle %s opened only for output
6b121555 569
af8c498a 570(W) You tried to read from a filehandle opened only for writing. If you
571intended it to be a read-write filehandle, you needed to open it with
572"+E<lt>" or "+E<gt>" or "+E<gt>E<gt>" instead of with "E<lt>" or nothing. If
573you intended only to read from the file, use "E<lt>". See
574L<perlfunc/open>.
e02fdbd2 575
06eaf0bc 576=item Missing command in piped open
577
578(W) You used the C<open(FH, "| command")> or C<open(FH, "command |")>
579construction, but the command was missing or blank.
580
af8c498a 581=item Unrecognized escape \\%c passed through
582
583(W) You used a backslash-character combination which is not recognized
584by Perl.
585
f10b0346 586=item defined(@array) is deprecated
69794302 587
588(D) defined() is not usually useful on arrays because it checks for an
589undefined I<scalar> value. If you want to see if the array is empty,
590just use C<if (@array) { # not empty }> for example.
591
f10b0346 592=item defined(%hash) is deprecated
69794302 593
594(D) defined() is not usually useful on hashes because it checks for an
595undefined I<scalar> value. If you want to see if the hash is empty,
596just use C<if (%hash) { # not empty }> for example.
597
ba8251e8 598=head1 Obsolete Diagnostics
599
e02fdbd2 600Todo.
601
04d420f9 602=head1 Configuration Changes
603
27806c82 604=head2 installusrbinperl
605
04d420f9 606You can use "Configure -Uinstallusrbinperl" which causes installperl
607to skip installing perl also as /usr/bin/perl. This is useful if you
608prefer not to modify /usr/bin for some reason or another but harmful
609because many scripts assume to find Perl in /usr/bin/perl.
610
27806c82 611=head2 SOCKS support
555834d1 612
27806c82 613You can use "Configure -Dusesocks" which causes Perl to probe
614for the SOCKS proxy protocol library, http://www.socks.nec.com/
04d420f9 615
ba8251e8 616=head1 BUGS
617
618If you find what you think is a bug, you might check the headers of
14218588 619articles recently posted to the comp.lang.perl.misc newsgroup.
ba8251e8 620There may also be information at http://www.perl.com/perl/, the Perl
621Home Page.
622
623If you believe you have an unreported bug, please run the B<perlbug>
14218588 624program included with your release. Make sure to trim your bug down
ba8251e8 625to a tiny but sufficient test case. Your bug report, along with the
14218588 626output of C<perl -V>, will be sent off to perlbug@perl.com to be
ba8251e8 627analysed by the Perl porting team.
628
629=head1 SEE ALSO
630
631The F<Changes> file for exhaustive details on what changed.
632
633The F<INSTALL> file for how to build Perl.
634
635The F<README> file for general stuff.
636
637The F<Artistic> and F<Copying> files for copyright information.
638
639=head1 HISTORY
640
641Written by Gurusamy Sarathy <F<gsar@umich.edu>>, with many contributions
642from The Perl Porters.
643
644Send omissions or corrections to <F<perlbug@perl.com>>.
645
646=cut