3 perldelta - what's new for perl v5.6 (as of v5.005_58)
7 This is an unsupported alpha release, meant for intrepid Perl developers
8 only. The included sources may not even build correctly on some platforms.
9 Subscribing to perl5-porters is the best way to monitor and contribute
10 to the progress of development releases (see www.perl.org for info).
12 This document describes differences between the 5.005 release and this one.
14 =head1 Incompatible Changes
16 =head2 Perl Source Incompatibilities
20 =head2 C Source Incompatibilities
26 Release 5.005 grandfathered old global symbol names by providing preprocessor
27 macros for extension source compatibility. As of release 5.6, these
28 preprocessor definitions are not available by default. You need to explicitly
29 compile perl with C<-DPERL_POLLUTE> to get these definitions. For
30 extensions still using the old symbols, this option can be
31 specified via MakeMaker:
33 perl Makefile.PL POLLUTE=1
35 =item C<PERL_IMPLICIT_CONTEXT>
37 This new build option provides a set of macros for all API functions
38 such that an implicit interpreter/thread context argument is passed to
39 every API function. As a result of this, something like C<sv_setsv(foo,bar)>
40 amounts to a macro invocation that actually translates to
41 C<Perl_sv_setsv(my_perl,foo,bar)>. While this is generally expected
42 to not have any significant source compatibility issues, the difference
43 between a macro and a real function call will need to be considered.
45 Note that the above issue is not relevant to the default build of
46 Perl, whose interfaces continue to match those of prior versions
47 (but subject to the other options described here).
49 For testing purposes, the 5.005_58 release automatically enables
50 PERL_IMPLICIT_CONTEXT whenever Perl is built with -Dusethreads or
53 =item C<PERL_POLLUTE_MALLOC>
55 Enabling Perl's malloc in release 5.005 and earlier caused
56 the namespace of system versions of the malloc family of functions to
57 be usurped by the Perl versions, since by default they used the
60 Besides causing problems on platforms that do not allow these functions to
61 be cleanly replaced, this also meant that the system versions could not
62 be called in programs that used Perl's malloc. Previous versions of Perl
63 have allowed this behaviour to be suppressed with the HIDEMYMALLOC and
64 EMBEDMYMALLOC preprocessor definitions.
66 As of release 5.6, Perl's malloc family of functions have default names
67 distinct from the system versions. You need to explicitly compile perl with
68 C<-DPERL_POLLUTE_MALLOC> to get the older behaviour. HIDEMYMALLOC
69 and EMBEDMYMALLOC have no effect, since the behaviour they enabled is now
72 Note that these functions do B<not> constitute Perl's memory allocation API.
73 See L<perlguts/"Memory Allocation"> for further information about that.
75 =item C<PL_na> and C<dTHR> Issues
77 The C<PL_na> global is now thread local, so a C<dTHR> declaration is needed
78 in the scope in which the global appears. XSUBs should handle this automatically,
79 but if you have used C<PL_na> in support functions, you either need to
80 change the C<PL_na> to a local variable (which is recommended), or put in
85 =head2 Compatible C Source API Changes
89 =item C<PATCHLEVEL> is now C<PERL_VERSION>
91 The cpp macros C<PERL_REVISION>, C<PERL_VERSION>, and C<PERL_SUBVERSION>
92 are now available by default from perl.h, and reflect the base revision,
93 patchlevel, and subversion respectively. C<PERL_REVISION> had no
94 prior equivalent, while C<PERL_VERSION> and C<PERL_SUBVERSION> were
95 previously available as C<PATCHLEVEL> and C<SUBVERSION>.
97 The new names cause less pollution of the B<cpp> namespace and reflect what
98 the numbers have come to stand for in common practice. For compatibility,
99 the old names are still supported when F<patchlevel.h> is explicitly
100 included (as required before), so there is no source incompatibility
105 =head2 Binary Incompatibilities
107 The default build of this release can be made binary compatible with the
108 5.005 release or its maintenance versions. Add -DPERL_BINCOMPAT_5005
109 to ccflags in config.sh to achieve this. See INSTALL for further
110 information about adding build flags to config.sh.
112 The usethreads or usemultiplicity builds are B<not> binary compatible
113 with the corresponding builds in 5.005.
117 =head2 Unicode and UTF-8 support
119 Perl can optionally use UTF-8 as its internal representation for character
120 strings. The C<use utf8> pragma enables this support in the current lexical
121 scope. See L<utf8> for more information.
123 =head2 Lexically scoped warning categories
125 You can now control the granularity of warnings emitted by perl at a finer
126 level using the C<use warning> pragma. See L<warning> and L<perllexwarn>
129 =head2 Binary numbers supported
131 Binary numbers are now supported as literals, in s?printf formats, and
135 printf "The answer is: %b\n", oct("0b101010");
137 =head2 Literal hexadecimal, octal, and binary numbers must fit within native sizes
139 The warning that used to be produced when encountering hexadecimal, octal,
140 and binary literals that are too large to be represented as native integers
141 has now been promoted to a fatal error. Literal decimal numbers are
144 =head2 syswrite() ease-of-use
146 The length argument of C<syswrite()> is now optional.
148 =head2 64-bit support
150 Better 64-bit support -- but full support still a distant goal. One
151 must Configure with -Duse64bits to get Configure to probe for the
152 extent of 64-bit support. Depending on the platform (hints file) more
153 or less 64-awareness becomes available. As of 5.005_54 at least
154 somewhat 64-bit aware platforms are HP-UX 11 or better, Solaris 2.6 or
155 better, IRIX 6.2 or better. Naturally 64-bit platforms like Digital
156 Unix and UNICOS also have 64-bit support.
158 =head2 Better syntax checks on parenthesized unary operators
162 print defined(&foo,&bar,&baz);
163 print uc("foo","bar","baz");
166 used to be accidentally allowed in earlier versions, and produced
167 unpredictable behaviour. Some produced ancillary warnings
168 when used in this way; others silently did the wrong thing.
170 The parenthesized forms of most unary operators that expect a single
171 argument now ensure that they are not called with more than one
172 argument, making the cases shown above syntax errors. The usual
175 print defined &foo, &bar, &baz;
176 print uc "foo", "bar", "baz";
179 remains unchanged. See L<perlop>.
181 =head2 POSIX character class syntax [: :] supported
183 For example to match alphabetic characters use /[[:alpha:]]/.
184 See L<perlre> for details.
186 =head2 Improved C<qw//> operator
188 The C<qw//> operator is now evaluated at compile time into a true list
189 instead of being replaced with a run time call to C<split()>. This
190 removes the confusing misbehaviour of C<qw//> in scalar context, which
191 had inherited that behaviour from split().
195 $foo = ($bar) = qw(a b c); print "$foo|$bar\n";
197 now correctly prints "3|a", instead of "2|a".
199 =head2 pack() format 'Z' supported
201 The new format type 'Z' is useful for packing and unpacking null-terminated
202 strings. See L<perlfunc/"pack">.
204 =head2 pack() format modifier '!' supported
206 The new format type modifier '!' is useful for packing and unpacking
207 native shorts, ints, and longs. See L<perlfunc/"pack">.
209 =head2 pack() and unpack() support counted strings
211 The template character '#' can be used to specify a counted string
212 type to be packed or unpacked. See L<perlfunc/"pack">.
214 =head2 $^X variables may now have names longer than one character
216 Formerly, $^X was synonymous with ${"\cX"}, but $^XY was a syntax
217 error. Now variable names that begin with a control character may be
218 arbitrarily long. However, for compatibility reasons, these variables
219 I<must> be written with explicit braces, as C<${^XY}> for example.
220 C<${^XYZ}> is synonymous with ${"\cXYZ"}. Variable names with more
221 than one control character, such as C<${^XY^Z}>, are illegal.
223 The old syntax has not changed. As before, `^X' may be either a
224 literal control-X character or the two-character sequence `caret' plus
225 `X'. When braces are omitted, the variable name stops after the
226 control character. Thus C<"$^XYZ"> continues to be synonymous with
227 C<$^X . "YZ"> as before.
229 As before, lexical variables may not have names beginning with control
230 characters. As before, variables whose names begin with a control
231 character are always forced to be in package `main'. All such variables
232 are reserved for future extensions, except those that begin with
233 C<^_>, which may be used by user programs and is guaranteed not to
234 acquire special meaning in any future version of Perl.
236 =head1 Significant bug fixes
238 =head2 E<lt>HANDLEE<gt> on empty files
240 With C<$/> set to C<undef>, slurping an empty file returns a string of
241 zero length (instead of C<undef>, as it used to) the first time the
242 HANDLE is read. Further reads yield C<undef>.
244 This means that the following will append "foo" to an empty file (it used
247 perl -0777 -pi -e 's/^/foo/' empty_file
251 perl -pi -e 's/^/foo/' empty_file
253 is unchanged (it continues to leave the file empty).
255 =head2 C<eval '...'> improvements
257 Line numbers (as reflected by caller() and most diagnostics) within
258 C<eval '...'> were often incorrect when here documents were involved.
259 This has been corrected.
261 Lexical lookups for variables appearing in C<eval '...'> within
262 functions that were themselves called within an C<eval '...'> were
263 searching the wrong place for lexicals. The lexical search now
264 correctly ends at the subroutine's block boundary.
266 Parsing of here documents used to be flawed when they appeared as
267 the replacement expression in C<eval 's/.../.../e'>. This has
270 =head2 Automatic flushing of output buffers
272 fork(), exec(), system(), qx//, and pipe open()s now flush buffers
273 of all files opened for output when the operation
274 was attempted. This mostly eliminates confusing
275 buffering mishaps suffered by users unaware of how Perl internally
278 =head2 Better diagnostics on meaningless filehandle operations
280 Constructs such as C<open(E<lt>FHE<gt>)> and C<close(E<lt>FHE<gt>)>
281 are compile time errors. Attempting to read from filehandles that
282 were opened only for writing will now produce warnings (just as
283 writing to read-only filehandles does).
285 =head1 Supported Platforms
291 VM/ESA is now supported.
295 Siemens BS2000 is now supported under the POSIX Shell.
299 The Mach CThreads (NEXTSTEP, OPENSTEP) are now supported by the Thread
304 GNU/Hurd is now supported.
308 Rhapsody is now supported.
312 EPOC is is now supported (on Psion 5).
322 IO constants (SEEK_*, _IO*).
326 Directory-related IO methods (new, read, close, rewind, tied delete).
328 =item op/io_multihomed
330 INET sockets with multi-homed hosts.
346 Verify operations that access pad objects (lexicals and temporaries).
350 =head1 Modules and Pragmata
358 The ByteLoader is a dedication extension to generate and run
359 Perl bytecode. See L<ByteLoader>.
363 The Perl Compiler suite has been extensively reworked for this
368 Devel::DProf, a Perl source code profiler has been added.
372 Added Dumpvalue module provides screen dumps of Perl data.
376 You can now run tests for I<n> seconds instead of guessing the right
377 number of tests to run: e.g. timethese(-5, ...) will run each
378 code for at least 5 CPU seconds. Zero as the "number of repetitions"
379 means "for at least 3 CPU seconds". The output format has also
380 changed. For example:
382 use Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
384 will now output something like this:
386 Benchmark: 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)
390 New features: "each for at least N CPU seconds...", "wallclock secs",
391 and the "@ operations/CPU second (n=operations)".
395 The Devel::Peek module provides access to the internal representation
396 of Perl variables and data. It is a data debugging tool for the XS programmer.
400 More Fcntl constants added: F_SETLK64, F_SETLKW64, O_LARGEFILE for
401 large (more than 4G) file access (64-bit support is not yet
402 working, though, so no need to get overly excited), Free/Net/OpenBSD
403 locking behaviour flags F_FLOCK, F_POSIX, Linux F_SHLCK, and
404 O_ACCMODE: the mask of O_RDONLY, O_WRONLY, and O_RDWR.
408 New methods have been added to the File::Spec module: devnull() returns
409 the name of the null device (/dev/null on Unix) and tmpdir() the name of
410 the temp directory (normally /tmp on Unix). There are now also methods
411 to convert between absolute and relative filenames: abs2rel() and
412 rel2abs(). For compatibility with operating systems that specify volume
413 names in file paths, the splitpath(), splitdir(), and catdir() methods
416 =item File::Spec::Functions
418 The new File::Spec::Functions modules provides a function interface
419 to the File::Spec module. Allows shorthand
421 $fullname = catfile($dir1, $dir2, $file);
425 $fullname = File::Spec->catfile($dir1, $dir2, $file);
429 The logical operations C<E<lt>E<lt>>, C<E<gt>E<gt>>, C<&>, C<|>,
430 and C<~> are now supported on bigints.
434 The accessor methods Re, Im, arg, abs, rho, and theta can now also
435 act as mutators (accessor $z->Re(), mutator $z->Re(3)).
439 A little bit of radial trigonometry (cylindrical and spherical),
440 radial coordinate conversions, and the great circle distance were added.
444 An EXISTS method has been added to this module (and sdbm_exists() has
445 been added to the underlying sdbm library), so one can now call exists
446 on an SDBM_File tied hash and get the correct result, rather than a
451 The timelocal() and timegm() functions used to silently return bogus
452 results when the date exceeded the machine's integer range. They
453 now consistently croak() if the date falls in an unsupported range.
457 The error return value in list context has been changed for all functions
458 that return a list of values. Previously these functions returned a list
459 with a single element C<undef> if an error occurred. Now these functions
460 return the empty list in these situations. This applies to the following
466 The remaining functions are unchanged and continue to return C<undef> on
467 error even in list context.
469 The Win32::SetLastError(ERROR) function has been added as a complement
470 to the Win32::GetLastError() function.
472 The new Win32::GetFullPathName(FILENAME) returns the full absolute
473 pathname for FILENAME in scalar context. In list context it returns
474 a two-element list containing the fully qualified directory name and
479 A new feature called "DBM Filters" has been added to all the
480 DBM modules--DB_File, GDBM_File, NDBM_File, ODBM_File, and SDBM_File.
481 DBM Filters add four new methods to each DBM module:
488 These can be used to filter key-value pairs before the pairs are
489 written to the database or just after they are read from the database.
490 See L<perldbmfilter> for further information.
496 C<use utf8> to enable UTF-8 and Unicode support.
498 C<use caller 'encoding'> allows modules to inherit pragmatic attributes
499 from the caller's context. C<encoding> is currently the only supported
502 Lexical warnings pragma, C<use warning;>, to control optional warnings.
504 C<use filetest> to control the behaviour of filetests (C<-r> C<-w> ...).
505 Currently only one subpragma implemented, "use filetest 'access';",
506 that enables the use of access(2) or equivalent to check
507 permissions instead of using stat(2) as usual. This matters
508 in filesystems where there are ACLs (access control lists): the
509 stat(2) might lie, but access(2) knows better.
511 =head1 Utility Changes
515 =head1 Documentation Changes
519 =item perlopentut.pod
521 A tutorial on using open() effectively.
525 A tutorial that introduces the essentials of references.
529 A tutorial on managing class data for object modules.
533 =head1 New Diagnostics
535 =item /%s/: Unrecognized escape \\%c passed through
537 (W) You used a backslash-character combination which is not recognized
538 by Perl. This combination appears in an interpolated variable or a
539 C<'>-delimited regular expression.
541 =item Filehandle %s opened only for output
543 (W) You tried to read from a filehandle opened only for writing. If you
544 intended 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
546 you intended only to read from the file, use "E<lt>". See
549 =item Missing command in piped open
551 (W) You used the C<open(FH, "| command")> or C<open(FH, "command |")>
552 construction, but the command was missing or blank.
554 =item Unrecognized escape \\%c passed through
556 (W) You used a backslash-character combination which is not recognized
559 =item defined(@array) is deprecated
561 (D) defined() is not usually useful on arrays because it checks for an
562 undefined I<scalar> value. If you want to see if the array is empty,
563 just use C<if (@array) { # not empty }> for example.
565 =item defined(%hash) is deprecated
567 (D) defined() is not usually useful on hashes because it checks for an
568 undefined I<scalar> value. If you want to see if the hash is empty,
569 just use C<if (%hash) { # not empty }> for example.
571 =head1 Obsolete Diagnostics
575 =head1 Configuration Changes
577 =head2 installusrbinperl
579 You can use "Configure -Uinstallusrbinperl" which causes installperl
580 to skip installing perl also as /usr/bin/perl. This is useful if you
581 prefer not to modify /usr/bin for some reason or another but harmful
582 because many scripts assume to find Perl in /usr/bin/perl.
586 You can use "Configure -Dusesocks" which causes Perl to probe
587 for the SOCKS proxy protocol library, http://www.socks.nec.com/
591 If you find what you think is a bug, you might check the headers of
592 articles recently posted to the comp.lang.perl.misc newsgroup.
593 There may also be information at http://www.perl.com/perl/, the Perl
596 If you believe you have an unreported bug, please run the B<perlbug>
597 program included with your release. Make sure to trim your bug down
598 to a tiny but sufficient test case. Your bug report, along with the
599 output of C<perl -V>, will be sent off to perlbug@perl.com to be
600 analysed by the Perl porting team.
604 The F<Changes> file for exhaustive details on what changed.
606 The F<INSTALL> file for how to build Perl.
608 The F<README> file for general stuff.
610 The F<Artistic> and F<Copying> files for copyright information.
614 Written by Gurusamy Sarathy <F<gsar@umich.edu>>, with many contributions
615 from The Perl Porters.
617 Send omissions or corrections to <F<perlbug@perl.com>>.