minor tweaks to pods and toke.c comments
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
1 =head1 NAME
2
3 perldelta - what's new for perl v5.6 (as of v5.005_58)
4
5 =head1 DESCRIPTION
6
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).
11
12 This document describes differences between the 5.005 release and this one.
13
14 =head1 Incompatible Changes
15
16 =head2 Perl Source Incompatibilities
17
18 TODO
19
20 =head2 C Source Incompatibilities
21
22 =over 4
23
24 =item C<PERL_POLLUTE>
25
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:
32
33     perl Makefile.PL POLLUTE=1
34
35 =item C<PERL_IMPLICIT_CONTEXT>
36
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.
44
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).
48
49 For testing purposes, the 5.005_58 release automatically enables
50 PERL_IMPLICIT_CONTEXT whenever Perl is built with -Dusethreads or
51 -Dusemultiplicity.
52
53 =item C<PERL_POLLUTE_MALLOC>
54
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
58 same names.
59
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.
65
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
70 the default.
71
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.
74
75 =item C<PL_na> and C<dTHR> Issues
76
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
81 a C<dTHR>.
82
83 =back
84
85 =head2 Compatible C Source API Changes
86
87 =over
88
89 =item C<PATCHLEVEL> is now C<PERL_VERSION>
90
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>.
96
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
101 from the change.
102
103 =back
104
105 =head2 Binary Incompatibilities
106
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.
111
112 The usethreads or usemultiplicity builds are B<not> binary compatible
113 with the corresponding builds in 5.005.
114
115 =head1 Core Changes
116
117 =head2 Unicode and UTF-8 support
118
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.
122
123 =head2 Lexically scoped warning categories
124
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>
127 for details.
128
129 =head2 Binary numbers supported
130
131 Binary numbers are now supported as literals, in s?printf formats, and
132 C<oct()>:
133
134     $answer = 0b101010;
135     printf "The answer is: %b\n", oct("0b101010");
136
137 =head2 Literal hexadecimal, octal, and binary numbers must fit within native sizes
138
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
142 unaffected.
143
144 =head2 syswrite() ease-of-use
145
146 The length argument of C<syswrite()> is now optional.
147
148 =head2 64-bit support
149
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.
157
158 =head2 Better syntax checks on parenthesized unary operators
159
160 Expressions such as:
161
162     print defined(&foo,&bar,&baz);
163     print uc("foo","bar","baz");
164     undef($foo,&bar);
165
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.
169
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
173 behaviour of:
174
175     print defined &foo, &bar, &baz;
176     print uc "foo", "bar", "baz";
177     undef $foo, &bar;
178
179 remains unchanged.  See L<perlop>.
180
181 =head2 POSIX character class syntax [: :] supported
182
183 For example to match alphabetic characters use /[[:alpha:]]/.
184 See L<perlre> for details.
185
186 =head2 Improved C<qw//> operator
187
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().
192
193 Thus:
194
195     $foo = ($bar) = qw(a b c); print "$foo|$bar\n";
196
197 now correctly prints "3|a", instead of "2|a".
198
199 =head2 pack() format 'Z' supported
200
201 The new format type 'Z' is useful for packing and unpacking null-terminated
202 strings.  See L<perlfunc/"pack">.
203
204 =head2 pack() format modifier '!' supported
205
206 The new format type modifier '!' is useful for packing and unpacking
207 native shorts, ints, and longs.  See L<perlfunc/"pack">.
208
209 =head2 pack() and unpack() support counted strings
210
211 The template character '#' can be used to specify a counted string
212 type to be packed or unpacked.  See L<perlfunc/"pack">.
213
214 =head2 $^X variables may now have names longer than one character
215
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.
222
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.
228
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.
235
236 =head1 Significant bug fixes
237
238 =head2 E<lt>HANDLEE<gt> on empty files
239
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>.
243
244 This means that the following will append "foo" to an empty file (it used
245 to do nothing):
246
247     perl -0777 -pi -e 's/^/foo/' empty_file
248
249 The behaviour of:
250
251     perl -pi -e 's/^/foo/' empty_file
252
253 is unchanged (it continues to leave the file empty).
254
255 =head2 C<eval '...'> improvements
256
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.
260
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.
265
266 Parsing of here documents used to be flawed when they appeared as
267 the replacement expression in C<eval 's/.../.../e'>.  This has
268 been fixed.
269
270 =head2 Automatic flushing of output buffers
271
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
276 handles I/O.
277
278 =head2 Better diagnostics on meaningless filehandle operations
279
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).
284
285 =head1 Supported Platforms
286
287 =over 4
288
289 =item *
290
291 VM/ESA is now supported.
292
293 =item *
294
295 Siemens BS2000 is now supported under the POSIX Shell.
296
297 =item *
298
299 The Mach CThreads (NEXTSTEP, OPENSTEP) are now supported by the Thread
300 extension.
301
302 =item *
303
304 GNU/Hurd is now supported.
305
306 =item *
307
308 Rhapsody is now supported.
309
310 =item *
311
312 EPOC is is now supported (on Psion 5).
313
314 =back
315
316 =head1 New tests
317
318 =over 4
319
320 =item   op/io_const
321
322 IO constants (SEEK_*, _IO*).
323
324 =item   op/io_dir
325
326 Directory-related IO methods (new, read, close, rewind, tied delete).
327
328 =item   op/io_multihomed
329
330 INET sockets with multi-homed hosts.
331
332 =item   op/io_poll
333
334 IO poll().
335
336 =item   op/io_unix
337
338 UNIX sockets.
339
340 =item   op/filetest
341
342 File test operators.
343
344 =item   op/lex_assign
345
346 Verify operations that access pad objects (lexicals and temporaries).
347
348 =back
349
350 =head1 Modules and Pragmata
351
352 =head2 Modules
353
354 =over 4
355
356 =item ByteLoader
357
358 The ByteLoader is a dedication extension to generate and run
359 Perl bytecode.  See L<ByteLoader>.
360
361 =item B
362
363 The Perl Compiler suite has been extensively reworked for this
364 release.
365
366 =item Devel::DProf
367
368 Devel::DProf, a Perl source code profiler has been added.
369
370 =item Dumpvalue
371
372 Added Dumpvalue module provides screen dumps of Perl data.
373
374 =item Benchmark
375
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:
381
382 use Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
383
384 will now output something like this:
385
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)
389
390 New features: "each for at least N CPU seconds...", "wallclock secs",
391 and the "@ operations/CPU second (n=operations)".
392
393 =item Devel::Peek
394
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.
397
398 =item Fcntl
399
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.
405
406 =item File::Spec
407
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
414 have been added.
415
416 =item File::Spec::Functions
417
418 The new File::Spec::Functions modules provides a function interface
419 to the File::Spec module.  Allows shorthand
420
421     $fullname = catfile($dir1, $dir2, $file);
422
423 instead of
424
425     $fullname = File::Spec->catfile($dir1, $dir2, $file);
426
427 =item Math::BigInt
428
429 The logical operations C<E<lt>E<lt>>, C<E<gt>E<gt>>, C<&>, C<|>,
430 and C<~> are now supported on bigints.
431
432 =item Math::Complex
433
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)).
436
437 =item Math::Trig
438
439 A little bit of radial trigonometry (cylindrical and spherical),
440 radial coordinate conversions, and the great circle distance were added.
441
442 =item SDBM_File
443
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
447 runtime error.
448
449 =item Time::Local
450
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.
454
455 =item Win32
456
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
461 functions:
462
463     Win32::FsType
464     Win32::GetOSVersion
465
466 The remaining functions are unchanged and continue to return C<undef> on
467 error even in list context.
468
469 The Win32::SetLastError(ERROR) function has been added as a complement
470 to the Win32::GetLastError() function.
471
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
475 the filename.
476
477 =item DBM Filters
478
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:
482
483     filter_store_key
484     filter_store_value
485     filter_fetch_key
486     filter_fetch_value
487
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.
491
492 =back
493
494 =head2 Pragmata
495
496 C<use utf8> to enable UTF-8 and Unicode support.
497
498 C<use caller 'encoding'> allows modules to inherit pragmatic attributes
499 from the caller's context.  C<encoding> is currently the only supported
500 attribute.
501
502 Lexical warnings pragma, C<use warning;>, to control optional warnings.
503
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.
510
511 =head1 Utility Changes
512
513 Todo.
514
515 =head1 Documentation Changes
516
517 =over 4
518
519 =item perlopentut.pod
520
521 A tutorial on using open() effectively.
522
523 =item perlreftut.pod
524
525 A tutorial that introduces the essentials of references.
526
527 =item perltootc.pod
528
529 A tutorial on managing class data for object modules.
530
531 =back
532
533 =head1 New Diagnostics
534
535 =item /%s/: Unrecognized escape \\%c passed through
536
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.
540
541 =item Filehandle %s opened only for output
542
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
547 L<perlfunc/open>.
548
549 =item Missing command in piped open
550
551 (W) You used the C<open(FH, "| command")> or C<open(FH, "command |")>
552 construction, but the command was missing or blank.
553
554 =item Unrecognized escape \\%c passed through
555
556 (W) You used a backslash-character combination which is not recognized
557 by Perl.
558
559 =item defined(@array) is deprecated
560
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.  
564
565 =item defined(%hash) is deprecated
566
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.  
570
571 =head1 Obsolete Diagnostics
572
573 Todo.
574
575 =head1 Configuration Changes
576
577 =head2 installusrbinperl
578
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.
583
584 =head2 SOCKS support
585
586 You can use "Configure -Dusesocks" which causes Perl to probe
587 for the SOCKS proxy protocol library, http://www.socks.nec.com/
588
589 =head1 BUGS
590
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
594 Home Page.
595
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.
601
602 =head1 SEE ALSO
603
604 The F<Changes> file for exhaustive details on what changed.
605
606 The F<INSTALL> file for how to build Perl.
607
608 The F<README> file for general stuff.
609
610 The F<Artistic> and F<Copying> files for copyright information.
611
612 =head1 HISTORY
613
614 Written by Gurusamy Sarathy <F<gsar@umich.edu>>, with many contributions
615 from The Perl Porters.
616
617 Send omissions or corrections to <F<perlbug@perl.com>>.
618
619 =cut