Repent and make overly large integerish
[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 syswrite() ease-of-use
138
139 The length argument of C<syswrite()> is now optional.
140
141 =head2 64-bit support
142
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.
150
151 =head2 Better syntax checks on parenthesized unary operators
152
153 Expressions such as:
154
155     print defined(&foo,&bar,&baz);
156     print uc("foo","bar","baz");
157     undef($foo,&bar);
158
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.
162
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
166 behaviour of:
167
168     print defined &foo, &bar, &baz;
169     print uc "foo", "bar", "baz";
170     undef $foo, &bar;
171
172 remains unchanged.  See L<perlop>.
173
174 =head2 POSIX character class syntax [: :] supported
175
176 For example to match alphabetic characters use /[[:alpha:]]/.
177 See L<perlre> for details.
178
179 =head2 Improved C<qw//> operator
180
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().
185
186 Thus:
187
188     $foo = ($bar) = qw(a b c); print "$foo|$bar\n";
189
190 now correctly prints "3|a", instead of "2|a".
191
192 =head2 pack() format 'Z' supported
193
194 The new format type 'Z' is useful for packing and unpacking null-terminated
195 strings.  See L<perlfunc/"pack">.
196
197 =head2 pack() format modifier '!' supported
198
199 The new format type modifier '!' is useful for packing and unpacking
200 native shorts, ints, and longs.  See L<perlfunc/"pack">.
201
202 =head2 pack() and unpack() support counted strings
203
204 The template character '#' can be used to specify a counted string
205 type to be packed or unpacked.  See L<perlfunc/"pack">.
206
207 =head2 $^X variables may now have names longer than one character
208
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.
215
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.
221
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.
228
229 =head1 Significant bug fixes
230
231 =head2 E<lt>HANDLEE<gt> on empty files
232
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>.
236
237 This means that the following will append "foo" to an empty file (it used
238 to do nothing):
239
240     perl -0777 -pi -e 's/^/foo/' empty_file
241
242 The behaviour of:
243
244     perl -pi -e 's/^/foo/' empty_file
245
246 is unchanged (it continues to leave the file empty).
247
248 =head2 C<eval '...'> improvements
249
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.
253
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.
258
259 Parsing of here documents used to be flawed when they appeared as
260 the replacement expression in C<eval 's/.../.../e'>.  This has
261 been fixed.
262
263 =head2 Automatic flushing of output buffers
264
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
269 handles I/O.
270
271 =head2 Better diagnostics on meaningless filehandle operations
272
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).
277
278 =head1 Supported Platforms
279
280 =over 4
281
282 =item *
283
284 VM/ESA is now supported.
285
286 =item *
287
288 Siemens BS2000 is now supported under the POSIX Shell.
289
290 =item *
291
292 The Mach CThreads (NEXTSTEP, OPENSTEP) are now supported by the Thread
293 extension.
294
295 =item *
296
297 GNU/Hurd is now supported.
298
299 =item *
300
301 Rhapsody is now supported.
302
303 =item *
304
305 EPOC is is now supported (on Psion 5).
306
307 =back
308
309 =head1 New tests
310
311 =over 4
312
313 =item   op/io_const
314
315 IO constants (SEEK_*, _IO*).
316
317 =item   op/io_dir
318
319 Directory-related IO methods (new, read, close, rewind, tied delete).
320
321 =item   op/io_multihomed
322
323 INET sockets with multi-homed hosts.
324
325 =item   op/io_poll
326
327 IO poll().
328
329 =item   op/io_unix
330
331 UNIX sockets.
332
333 =item   op/filetest
334
335 File test operators.
336
337 =item   op/lex_assign
338
339 Verify operations that access pad objects (lexicals and temporaries).
340
341 =back
342
343 =head1 Modules and Pragmata
344
345 =head2 Modules
346
347 =over 4
348
349 =item ByteLoader
350
351 The ByteLoader is a dedication extension to generate and run
352 Perl bytecode.  See L<ByteLoader>.
353
354 =item B
355
356 The Perl Compiler suite has been extensively reworked for this
357 release.
358
359 =item Devel::DProf
360
361 Devel::DProf, a Perl source code profiler has been added.
362
363 =item Dumpvalue
364
365 Added Dumpvalue module provides screen dumps of Perl data.
366
367 =item Benchmark
368
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:
374
375 use Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}})
376
377 will now output something like this:
378
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)
382
383 New features: "each for at least N CPU seconds...", "wallclock secs",
384 and the "@ operations/CPU second (n=operations)".
385
386 =item Devel::Peek
387
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.
390
391 =item Fcntl
392
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.
398
399 =item File::Spec
400
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
407 have been added.
408
409 =item File::Spec::Functions
410
411 The new File::Spec::Functions modules provides a function interface
412 to the File::Spec module.  Allows shorthand
413
414     $fullname = catfile($dir1, $dir2, $file);
415
416 instead of
417
418     $fullname = File::Spec->catfile($dir1, $dir2, $file);
419
420 =item Math::BigInt
421
422 The logical operations C<E<lt>E<lt>>, C<E<gt>E<gt>>, C<&>, C<|>,
423 and C<~> are now supported on bigints.
424
425 =item Math::Complex
426
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)).
429
430 =item Math::Trig
431
432 A little bit of radial trigonometry (cylindrical and spherical),
433 radial coordinate conversions, and the great circle distance were added.
434
435 =item SDBM_File
436
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
440 runtime error.
441
442 =item Time::Local
443
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.
447
448 =item Win32
449
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
454 functions:
455
456     Win32::FsType
457     Win32::GetOSVersion
458
459 The remaining functions are unchanged and continue to return C<undef> on
460 error even in list context.
461
462 The Win32::SetLastError(ERROR) function has been added as a complement
463 to the Win32::GetLastError() function.
464
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
468 the filename.
469
470 =item DBM Filters
471
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:
475
476     filter_store_key
477     filter_store_value
478     filter_fetch_key
479     filter_fetch_value
480
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.
484
485 =back
486
487 =head2 Pragmata
488
489 C<use utf8> to enable UTF-8 and Unicode support.
490
491 C<use caller 'encoding'> allows modules to inherit pragmatic attributes
492 from the caller's context.  C<encoding> is currently the only supported
493 attribute.
494
495 Lexical warnings pragma, C<use warning;>, to control optional warnings.
496
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.
503
504 =head1 Utility Changes
505
506 Todo.
507
508 =head1 Documentation Changes
509
510 =over 4
511
512 =item perlopentut.pod
513
514 A tutorial on using open() effectively.
515
516 =item perlreftut.pod
517
518 A tutorial that introduces the essentials of references.
519
520 =item perltootc.pod
521
522 A tutorial on managing class data for object modules.
523
524 =back
525
526 =head1 New Diagnostics
527
528 =item /%s/: Unrecognized escape \\%c passed through
529
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.
533
534 =item Filehandle %s opened only for output
535
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
540 L<perlfunc/open>.
541
542 =item Missing command in piped open
543
544 (W) You used the C<open(FH, "| command")> or C<open(FH, "command |")>
545 construction, but the command was missing or blank.
546
547 =item Unrecognized escape \\%c passed through
548
549 (W) You used a backslash-character combination which is not recognized
550 by Perl.
551
552 =item defined(@array) is deprecated
553
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.  
557
558 =item defined(%hash) is deprecated
559
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.  
563
564 =head1 Obsolete Diagnostics
565
566 Todo.
567
568 =head1 Configuration Changes
569
570 =head2 installusrbinperl
571
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.
576
577 =head2 SOCKS support
578
579 You can use "Configure -Dusesocks" which causes Perl to probe
580 for the SOCKS proxy protocol library, http://www.socks.nec.com/
581
582 =head1 BUGS
583
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
587 Home Page.
588
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.
594
595 =head1 SEE ALSO
596
597 The F<Changes> file for exhaustive details on what changed.
598
599 The F<INSTALL> file for how to build Perl.
600
601 The F<README> file for general stuff.
602
603 The F<Artistic> and F<Copying> files for copyright information.
604
605 =head1 HISTORY
606
607 Written by Gurusamy Sarathy <F<gsar@umich.edu>>, with many contributions
608 from The Perl Porters.
609
610 Send omissions or corrections to <F<perlbug@perl.com>>.
611
612 =cut