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 syswrite() ease-of-use
139 The length argument of C<syswrite()> is now optional.
141 =head2 64-bit support
143 Better 64-bit support -- but full support still a distant goal. One
144 must Configure with -Duse64bits to get Configure to probe for the
145 extent of 64-bit support. Depending on the platform (hints file) more
146 or less 64-awareness becomes available. As of 5.005_54 at least
147 somewhat 64-bit aware platforms are HP-UX 11 or better, Solaris 2.6 or
148 better, IRIX 6.2 or better. Naturally 64-bit platforms like Digital
149 Unix and UNICOS also have 64-bit support.
151 =head2 Better syntax checks on parenthesized unary operators
155 print defined(&foo,&bar,&baz);
156 print uc("foo","bar","baz");
159 used to be accidentally allowed in earlier versions, and produced
160 unpredictable behaviour. Some produced ancillary warnings
161 when used in this way; others silently did the wrong thing.
163 The parenthesized forms of most unary operators that expect a single
164 argument now ensure that they are not called with more than one
165 argument, making the cases shown above syntax errors. The usual
168 print defined &foo, &bar, &baz;
169 print uc "foo", "bar", "baz";
172 remains unchanged. See L<perlop>.
174 =head2 POSIX character class syntax [: :] supported
176 For example to match alphabetic characters use /[[:alpha:]]/.
177 See L<perlre> for details.
179 =head2 Improved C<qw//> operator
181 The C<qw//> operator is now evaluated at compile time into a true list
182 instead of being replaced with a run time call to C<split()>. This
183 removes the confusing misbehaviour of C<qw//> in scalar context, which
184 had inherited that behaviour from split().
188 $foo = ($bar) = qw(a b c); print "$foo|$bar\n";
190 now correctly prints "3|a", instead of "2|a".
192 =head2 pack() format 'Z' supported
194 The new format type 'Z' is useful for packing and unpacking null-terminated
195 strings. See L<perlfunc/"pack">.
197 =head2 pack() format modifier '!' supported
199 The new format type modifier '!' is useful for packing and unpacking
200 native shorts, ints, and longs. See L<perlfunc/"pack">.
202 =head2 pack() and unpack() support counted strings
204 The template character '#' can be used to specify a counted string
205 type to be packed or unpacked. See L<perlfunc/"pack">.
207 =head2 $^X variables may now have names longer than one character
209 Formerly, $^X was synonymous with ${"\cX"}, but $^XY was a syntax
210 error. Now variable names that begin with a control character may be
211 arbitrarily long. However, for compatibility reasons, these variables
212 I<must> be written with explicit braces, as C<${^XY}> for example.
213 C<${^XYZ}> is synonymous with ${"\cXYZ"}. Variable names with more
214 than one control character, such as C<${^XY^Z}>, are illegal.
216 The old syntax has not changed. As before, `^X' may be either a
217 literal control-X character or the two-character sequence `caret' plus
218 `X'. When braces are omitted, the variable name stops after the
219 control character. Thus C<"$^XYZ"> continues to be synonymous with
220 C<$^X . "YZ"> as before.
222 As before, lexical variables may not have names beginning with control
223 characters. As before, variables whose names begin with a control
224 character are always forced to be in package `main'. All such variables
225 are reserved for future extensions, except those that begin with
226 C<^_>, which may be used by user programs and is guaranteed not to
227 acquire special meaning in any future version of Perl.
229 =head1 Significant bug fixes
231 =head2 E<lt>HANDLEE<gt> on empty files
233 With C<$/> set to C<undef>, slurping an empty file returns a string of
234 zero length (instead of C<undef>, as it used to) the first time the
235 HANDLE is read. Further reads yield C<undef>.
237 This means that the following will append "foo" to an empty file (it used
240 perl -0777 -pi -e 's/^/foo/' empty_file
244 perl -pi -e 's/^/foo/' empty_file
246 is unchanged (it continues to leave the file empty).
248 =head2 C<eval '...'> improvements
250 Line numbers (as reflected by caller() and most diagnostics) within
251 C<eval '...'> were often incorrect when here documents were involved.
252 This has been corrected.
254 Lexical lookups for variables appearing in C<eval '...'> within
255 functions that were themselves called within an C<eval '...'> were
256 searching the wrong place for lexicals. The lexical search now
257 correctly ends at the subroutine's block boundary.
259 Parsing of here documents used to be flawed when they appeared as
260 the replacement expression in C<eval 's/.../.../e'>. This has
263 =head2 Automatic flushing of output buffers
265 fork(), exec(), system(), qx//, and pipe open()s now flush buffers
266 of all files opened for output when the operation
267 was attempted. This mostly eliminates confusing
268 buffering mishaps suffered by users unaware of how Perl internally
271 =head2 Better diagnostics on meaningless filehandle operations
273 Constructs such as C<open(E<lt>FHE<gt>)> and C<close(E<lt>FHE<gt>)>
274 are compile time errors. Attempting to read from filehandles that
275 were opened only for writing will now produce warnings (just as
276 writing to read-only filehandles does).
278 =head1 Supported Platforms
284 VM/ESA is now supported.
288 Siemens BS2000 is now supported under the POSIX Shell.
292 The Mach CThreads (NEXTSTEP, OPENSTEP) are now supported by the Thread
297 GNU/Hurd is now supported.
301 Rhapsody is now supported.
305 EPOC is is now supported (on Psion 5).
315 IO constants (SEEK_*, _IO*).
319 Directory-related IO methods (new, read, close, rewind, tied delete).
321 =item op/io_multihomed
323 INET sockets with multi-homed hosts.
339 Verify operations that access pad objects (lexicals and temporaries).
343 =head1 Modules and Pragmata
351 The ByteLoader is a dedication extension to generate and run
352 Perl bytecode. See L<ByteLoader>.
356 The Perl Compiler suite has been extensively reworked for this
361 Devel::DProf, a Perl source code profiler has been added.
365 Added Dumpvalue module provides screen dumps of Perl data.
369 You can now run tests for I<n> seconds instead of guessing the right
370 number of tests to run: e.g. timethese(-5, ...) will run each
371 code for at least 5 CPU seconds. Zero as the "number of repetitions"
372 means "for at least 3 CPU seconds". The output format has also
373 changed. For example:
375 use Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
377 will now output something like this:
379 Benchmark: 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)
383 New features: "each for at least N CPU seconds...", "wallclock secs",
384 and the "@ operations/CPU second (n=operations)".
388 The Devel::Peek module provides access to the internal representation
389 of Perl variables and data. It is a data debugging tool for the XS programmer.
393 More Fcntl constants added: F_SETLK64, F_SETLKW64, O_LARGEFILE for
394 large (more than 4G) file access (64-bit support is not yet
395 working, though, so no need to get overly excited), Free/Net/OpenBSD
396 locking behaviour flags F_FLOCK, F_POSIX, Linux F_SHLCK, and
397 O_ACCMODE: the mask of O_RDONLY, O_WRONLY, and O_RDWR.
401 New methods have been added to the File::Spec module: devnull() returns
402 the name of the null device (/dev/null on Unix) and tmpdir() the name of
403 the temp directory (normally /tmp on Unix). There are now also methods
404 to convert between absolute and relative filenames: abs2rel() and
405 rel2abs(). For compatibility with operating systems that specify volume
406 names in file paths, the splitpath(), splitdir(), and catdir() methods
409 =item File::Spec::Functions
411 The new File::Spec::Functions modules provides a function interface
412 to the File::Spec module. Allows shorthand
414 $fullname = catfile($dir1, $dir2, $file);
418 $fullname = File::Spec->catfile($dir1, $dir2, $file);
422 The logical operations C<E<lt>E<lt>>, C<E<gt>E<gt>>, C<&>, C<|>,
423 and C<~> are now supported on bigints.
427 The accessor methods Re, Im, arg, abs, rho, and theta can now also
428 act as mutators (accessor $z->Re(), mutator $z->Re(3)).
432 A little bit of radial trigonometry (cylindrical and spherical),
433 radial coordinate conversions, and the great circle distance were added.
437 An EXISTS method has been added to this module (and sdbm_exists() has
438 been added to the underlying sdbm library), so one can now call exists
439 on an SDBM_File tied hash and get the correct result, rather than a
444 The timelocal() and timegm() functions used to silently return bogus
445 results when the date exceeded the machine's integer range. They
446 now consistently croak() if the date falls in an unsupported range.
450 The error return value in list context has been changed for all functions
451 that return a list of values. Previously these functions returned a list
452 with a single element C<undef> if an error occurred. Now these functions
453 return the empty list in these situations. This applies to the following
459 The remaining functions are unchanged and continue to return C<undef> on
460 error even in list context.
462 The Win32::SetLastError(ERROR) function has been added as a complement
463 to the Win32::GetLastError() function.
465 The new Win32::GetFullPathName(FILENAME) returns the full absolute
466 pathname for FILENAME in scalar context. In list context it returns
467 a two-element list containing the fully qualified directory name and
472 A new feature called "DBM Filters" has been added to all the
473 DBM modules--DB_File, GDBM_File, NDBM_File, ODBM_File, and SDBM_File.
474 DBM Filters add four new methods to each DBM module:
481 These can be used to filter key-value pairs before the pairs are
482 written to the database or just after they are read from the database.
483 See L<perldbmfilter> for further information.
489 C<use utf8> to enable UTF-8 and Unicode support.
491 C<use caller 'encoding'> allows modules to inherit pragmatic attributes
492 from the caller's context. C<encoding> is currently the only supported
495 Lexical warnings pragma, C<use warning;>, to control optional warnings.
497 C<use filetest> to control the behaviour of filetests (C<-r> C<-w> ...).
498 Currently only one subpragma implemented, "use filetest 'access';",
499 that enables the use of access(2) or equivalent to check
500 permissions instead of using stat(2) as usual. This matters
501 in filesystems where there are ACLs (access control lists): the
502 stat(2) might lie, but access(2) knows better.
504 =head1 Utility Changes
508 =head1 Documentation Changes
512 =item perlopentut.pod
514 A tutorial on using open() effectively.
518 A tutorial that introduces the essentials of references.
522 A tutorial on managing class data for object modules.
526 =head1 New Diagnostics
528 =item /%s/: Unrecognized escape \\%c passed through
530 (W) You used a backslash-character combination which is not recognized
531 by Perl. This combination appears in an interpolated variable or a
532 C<'>-delimited regular expression.
534 =item Filehandle %s opened only for output
536 (W) You tried to read from a filehandle opened only for writing. If you
537 intended 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
539 you intended only to read from the file, use "E<lt>". See
542 =item Missing command in piped open
544 (W) You used the C<open(FH, "| command")> or C<open(FH, "command |")>
545 construction, but the command was missing or blank.
547 =item Unrecognized escape \\%c passed through
549 (W) You used a backslash-character combination which is not recognized
552 =item defined(@array) is deprecated
554 (D) defined() is not usually useful on arrays because it checks for an
555 undefined I<scalar> value. If you want to see if the array is empty,
556 just use C<if (@array) { # not empty }> for example.
558 =item defined(%hash) is deprecated
560 (D) defined() is not usually useful on hashes because it checks for an
561 undefined I<scalar> value. If you want to see if the hash is empty,
562 just use C<if (%hash) { # not empty }> for example.
564 =head1 Obsolete Diagnostics
568 =head1 Configuration Changes
570 =head2 installusrbinperl
572 You can use "Configure -Uinstallusrbinperl" which causes installperl
573 to skip installing perl also as /usr/bin/perl. This is useful if you
574 prefer not to modify /usr/bin for some reason or another but harmful
575 because many scripts assume to find Perl in /usr/bin/perl.
579 You can use "Configure -Dusesocks" which causes Perl to probe
580 for the SOCKS proxy protocol library, http://www.socks.nec.com/
584 If you find what you think is a bug, you might check the headers of
585 articles recently posted to the comp.lang.perl.misc newsgroup.
586 There may also be information at http://www.perl.com/perl/, the Perl
589 If you believe you have an unreported bug, please run the B<perlbug>
590 program included with your release. Make sure to trim your bug down
591 to a tiny but sufficient test case. Your bug report, along with the
592 output of C<perl -V>, will be sent off to perlbug@perl.com to be
593 analysed by the Perl porting team.
597 The F<Changes> file for exhaustive details on what changed.
599 The F<INSTALL> file for how to build Perl.
601 The F<README> file for general stuff.
603 The F<Artistic> and F<Copying> files for copyright information.
607 Written by Gurusamy Sarathy <F<gsar@umich.edu>>, with many contributions
608 from The Perl Porters.
610 Send omissions or corrections to <F<perlbug@perl.com>>.