This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
update perldelta
[perl5.git] / pod / perldelta.pod
CommitLineData
01784f0d
AD
1=head1 NAME
2
3perldelta - what's new for perl5.005
4
5=head1 DESCRIPTION
6
7This document describes differences between the 5.004 release and this one.
8
429b3afa
GS
9[XXX this needs more verbose summaries of the sub topics, instead of just
10the "See L<foo>." Scheduled for a second iteration. GSAR]
11
12=head1 About the new versioning system
13
01784f0d
AD
14=head1 Incompatible Changes
15
429b3afa
GS
16=head2 WARNING: This version is not binary compatible with Perl 5.004.
17
18Starting with Perl 5.004_50 there were many deep and far-reaching changes
19to the language internals. If you have dynamically loaded extensions
20that you built under perl 5.003 or 5.004, you can continue to use them
21with 5.004, but you will need to rebuild and reinstall those extensions
22to use them 5.005. See L<INSTALL> for detailed instructions on how to
23upgrade.
24
7ea97eb9 25=head2 Default installation structure has changed
429b3afa 26
7ea97eb9
AD
27The new Configure defaults are designed to allow a smooth upgrade from
285.004 to 5.005, but you should read L<INSTALL> for a detailed
29discussion of the changes in order to adapt them to your system.
429b3afa
GS
30
31=head2 Perl Source Compatibility
32
33When none of the experimental features are enabled, there should be
34no user-visible Perl source compatibility issue.
35
36If threads are enabled, then some caveats apply. C<@_> and C<$_> become
37lexical variables. The effect of this should be largely transparent to
38the user, but there are some boundary conditions under which user will
39need to be aware of the issues. [XXX Add e.g. here.]
40
fe61ab85
GS
41Some new keywords have been introduced. These are generally expected to
42have very little impact on compatibility. See L</New C<INIT> keyword>,
43L</New C<lock> keyword>, and L</New C<qr//> operator>.
44
45Certain barewords are now reserved. Use of these will provoke a warning
46if you have asked for them with the C<-w> switch.
47See L</C<our> is now a reserved word>.
48
429b3afa
GS
49=head2 C Source Compatibility
50
51=item Core sources now require ANSI C compiler
52
53=item Enabling threads has source compatibility issues
54
55=head2 Binary Compatibility
56
57This version is NOT binary compatible with older versions. All extensions
58will need to be recompiled.
59
60=head2 Security fixes may affect compatibility
61
62A few taint leaks and taint omissions have been corrected. This may lead
63to "failure" of scripts that used to work with older versions. Compiling
64with -DINCOMPLETE_TAINTS provides a perl with minimal amounts of changes
65to the tainting behavior. But note that the resulting perl will have
66known insecurities.
67
68Oneliners with the C<-e> switch do not create temporary files anymore.
69
70=head2 Relaxed new mandatory warnings introduced in 5.004
71
fe61ab85 72Many new warnings that were introduced in 5.004 have been made
429b3afa
GS
73optional. Some of these warnings are still present, but perl's new
74features make them less often a problem. See L<New Diagnostics>.
75
76=head2 Licensing
77
fe61ab85 78Perl has a new Social Contract for contributors. See F<Porting/Contract>.
429b3afa 79
fe61ab85
GS
80The license included in much of the Perl documentation has changed.
81[XXX See where?]
429b3afa 82
01784f0d
AD
83=head1 Core Changes
84
01784f0d 85
429b3afa
GS
86=head2 Threads
87
88WARNING: Threading is considered an experimental feature. Details of the
89implementation may change without notice. There are known limitations
fe61ab85 90and and some bugs.
429b3afa
GS
91
92See L<README.threads>.
93
94=head2 Compiler
95
96WARNING: The Compiler and related tools are considered experimental.
97Features may change without notice, and there are known limitations
98and bugs.
99
fe61ab85
GS
100The Compiler produces three different types of transformations of a
101perl program. The C backend generates C code that captures perl's state
102just before execution begins. It eliminates the compile-time overheads
103of the regular perl interpreter, but the run-time performance remains
104comparatively the same. The CC backend generates optimized C code
105equivivalent to the code path at run-time. The CC backend has greater
106potential for big optimizations, but only a few optimizations are
107implemented currently. The Bytecode backend generates a platform
108independent bytecode representation of the interpreter's state
109just before execution. Thus, the Bytecode back end also eliminates
110much of the compilation overhead of the interpreter.
111
112The compiler comes with several valuable utilities.
113
114C<B::Lint> is an experimental module to detect and warn about suspicious
115code, especially the cases that the C<-w> switch does not detect.
116
117C<B::Deparse> can be used to demystify perl code, and understand
118how perl optimizes certain constructs.
119
120C<B::Xref> generates cross reference reports of all definition and use
121of variables, subroutines and formats in a program.
429b3afa 122
fe61ab85
GS
123C<B::Showlex> show the lexical variables used by a subroutine or file
124at a glance.
125
126C<perlcc> is a simple frontend for compiling perl.
429b3afa
GS
127
128See C<ext/B/README>.
129
130=head2 Regular Expressions
131
132See L<perlre> and L<perlop>.
133
134=head2 Improved malloc()
135
136See banner at the beginning of C<malloc.c> for details.
137
138=head2 Quicksort is internally implemented
139
140See C<perlfunc/sort>.
141
142=head2 Reliable signals
143
fe61ab85
GS
144Two kinds.
145
146Via C<Thread::Signal>.
429b3afa 147
fe61ab85 148Via switched runtime op loop. [XXX Not yet available.]
429b3afa
GS
149
150=head2 Reliable stack pointers
151
fe61ab85 152The internals now reallocate the perl stack only at predictable times.
429b3afa
GS
153In particular, magic calls never trigger reallocations of the stack,
154because all reentrancy of the runtime is handled using a "stack of stacks".
fe61ab85
GS
155This should improve reliability of cached stack pointers in the internals
156and in XSUBs.
429b3afa 157
fe61ab85 158=head2 Behavior of local() on composites is now well-defined
429b3afa
GS
159
160See L<perlfunc/local>.
161
162=head2 C<%!> is transparently tied to the L<Errno> module
163
fe61ab85 164See L<perlvar>, and L<Errno>.
429b3afa
GS
165
166=head2 Pseudo-hashes are supported
167
168See L<perlref>.
169
170=head2 C<EXPR foreach EXPR> is supported
171
172See L<perlsyn>.
173
174=head2 Slice notation on glob elements is supported
175
176[XXX See what?]
177
178=head2 Keywords can be globally overridden
179
180See L<perlsub>.
181
182=head2 C<$^E> is meaningful on Win32
183
184See L<perlvar>.
185
186=head2 C<foreach (1..1000000)> optimized
187
188C<foreach (1..1000000)> is now optimized into a counting loop. It does
189not try to allocate a 1000000-size list anymore.
190
191=head2 C<Foo::> can be used as implicitly quoted package name
192
193[XXX See what?]
194
195=head2 C<exists $Foo::{Bar::}> tests existence of a package
196
197[XXX See what?]
198
199=head2 Better locale support
200
201See L<perllocale>.
202
7ea97eb9 203=head2 Experimental support for 64-bit platforms
429b3afa 204
7ea97eb9
AD
205Perl5 has always had 64-bit support on systems with 64-bit longs.
206Starting with 5.005, the beginnings of experimental support for systems
207with 32-bit long and 64-bit 'long long' integers has been added.
208If you add -DUSE_LONG_LONG to your ccflags in config.sh (or manually
209define it in perl.h) then perl will be built with 'long long' support.
210There will be many compiler warnings, and the resultant perl may not
211work on all systems. There are many other issues related to
212third-party extensions and libraries. This option exists to allow
213people to work on those issues.
429b3afa
GS
214
215=head2 prototype() returns useful results on builtins
216
217See L<perlfunc/prototype>.
218
219=head2 Re-blessing in DESTROY() supported for chaining DESTROY() methods
220
221See L<perlobj/Destructors>.
222
223=head2 All C<printf> format conversions are handled internally
224
225See L<perlfunc/printf>.
226
227=head2 New C<INIT> keyword
228
fe61ab85
GS
229C<INIT> subs are like C<BEGIN> and C<END>, but they get run just before
230the perl runtime begins execution. e.g., the Perl Compiler makes use of
231C<INIT> blocks to initialize and resolve pointers to XSUBs.
429b3afa
GS
232
233[XXX Needs to be documented in perlsub or perlmod.]
234
235=head2 New C<lock> keyword
236
fe61ab85
GS
237The C<lock> keyword is the fundamental synchronization primitive
238in threaded perl. When threads are not enabled, it is currently a noop.
239
429b3afa
GS
240To minimize impact on source compatibility this keyword is "weak", i.e., any
241user-defined subroutine of the same name overrides it, unless a C<use Thread>
242has been seen.
243
fe61ab85
GS
244=head2 New C<qr//> operator
245
246The C<qr//> operator, which is syntactically similar to the other quote-like
247operators, is used to create compiled regular expressions. This compiled
248form can now be explicitly passed around in variables, and interpolated in
249other regular expressions. See L<perlop> and L<perlre>.
250
251=head2 C<our> is now a reserved word
252
429b3afa
GS
253=head2 Tied arrays are now fully supported
254
255See L<Tie::Array>.
256
257=head2 Tied handles support is better
258
259Several missing hooks have been added. There is also a new base class for
260TIEARRAY implementations. See L<Tie::Array>.
261
262
263=head1 Supported Platforms
264
265Configure has many incremental improvements. Site-wide policy for building
fe61ab85 266perl can now be made persistent, via Policy.sh. Configure also records
7ea97eb9 267the command-line arguments used in F<config.sh>.
429b3afa
GS
268
269=head2 New Platforms
270
271BeOS is now supported. See L<README.beos>.
272
273DOS is now supported under the DJGPP tools. See L<README.dos>.
274
275=head2 Changes in existing support
276
277Win32 support has been vastly enhanced. Support for Perl Object, a C++
278encapsulation of Perl. GCC and EGCS are now supported on Win32.
279[XXX Perl Object needs a big explanation elsewhere, and a pointer to
280that location here.]
281
282VMS configuration system has been rewritten. See L<README.vms>.
283
284OpenBSD better supported. [XXX what others?]
285
286=head1 Modules and Pragmata
287
288=head2 New Modules
289
290=over
291
292=item B
293
294Perl compiler and tools. See [XXX what?].
295
296=item Data::Dumper
297
298A module to pretty print Perl data. See L<Data::Dumper>.
299
300=item Errno
301
302A module to look up errors more conveniently. See L<Errno>.
303
304=item File::Spec
305
306A portable API for file operations.
307
308=item ExtUtils::Installed
309
310Query and manage installed modules.
311
312=item ExtUtils::Packlist
313
314Manipulate .packlist files.
315
316=item Fatal
317
318Make functions/builtins succeed or die.
319
320=item IPC::SysV
321
322Constants and other support infrastructure for System V IPC operations
323in perl.
324
325=item Test
326
327A framework for writing testsuites.
01784f0d 328
429b3afa
GS
329=item Tie::Array
330
331Base class for tied arrays.
332
333=item Tie::Handle
334
335Base class for tied handles.
336
337=item Thread
338
339Perl thread creation, manipulation, and support.
340
341=item attrs
342
343Set subroutine attributes.
344
345=item fields
346
347Compile-time class fields.
348
349=item re
350
351Various pragmata to control behavior of regular expressions.
352
353=back
354
355=head2 Changes in existing modules
356
357=over
358
359=item CGI
360
361CGI has been updated to version 2.42.
362
363=item POSIX
364
365POSIX now has its own platform-specific hints files.
366
367=item DB_File
368
369DB_File supports version 2.x of Berkeley DB. See C<ext/DB_File/Changes>.
370
371=item MakeMaker
372
373MakeMaker now supports writing empty makefiles, provides a way to
374specify that site umask() policy should be honored. There is also
375better support for manipulation of .packlist files, and getting
376information about installed modules.
377
7ea97eb9
AD
378Extensions that have both architecture-dependent and
379architecture-independent files are now always installed completely in
380the architecture-dependent locations. Previously, the shareable parts
381were shared both across architectures and across perl versions and were
382therefore liable to be overwritten with newer versions that might have
383subtle incompatibilities.
384
429b3afa
GS
385=item CPAN
386
387[XXX What?]
388
389=item Cwd
390
391Cwd::cwd is faster on most platforms.
392
393=item Benchmark
394
395Keeps better time.
396
397=back
01784f0d
AD
398
399=head1 Utility Changes
400
429b3afa
GS
401h2ph and related utilities have been vastly overhauled.
402
403perlcc, a new experimental front end for the compiler is available.
404
7ea97eb9
AD
405The crude GNU configure emulator is now called configure.gnu.
406
429b3afa
GS
407=head1 API Changes
408
409=head2 Incompatible Changes
410
411=head2 Deprecations, Extensions
412
413=head2 C++ Support
01784f0d
AD
414
415=head1 Documentation Changes
416
429b3afa
GS
417Config.pm now has a glossary of variables.
418
419Porting/patching.pod has detailed instructions on how to create and
420submit patches for perl.
421
422=head1 New Diagnostics
423
424=over
425
426=item Ambiguous call resolved as CORE::%s(), qualify as such or use &
427
428(W) A subroutine you have declared has the same name as a Perl keyword,
429and you have used the name without qualification for calling one or the
430other. Perl decided to call the builtin because the subroutine is
431not imported.
432
433To force interpretation as a subroutine call, either put an ampersand
434before the subroutine name, or qualify the name with its package.
435Alternatively, you can import the subroutine (or pretend that it's
436imported with the C<use subs> pragma).
437
438To silently interpret it as the Perl operator, use the C<CORE::> prefix
439on the operator (e.g. C<CORE::log($x)>) or by declaring the subroutine
440to be an object method (see L<attrs>).
441
442=item Bad index while coercing array into hash
443
444(F) The index looked up in the hash found as the 0'th element of a
445pseudo-hash is not legal. Index values must be at 1 or greater.
446See L<perlref>.
447
448=item Bareword "%s" refers to nonexistent package
449
450(W) You used a qualified bareword of the form C<Foo::>, but
451the compiler saw no other uses of that namespace before that point.
452Perhaps you need to predeclare a package?
453
454=item Can't call method "%s" on an undefined value
455
456(F) You used the syntax of a method call, but the slot filled by the
457object reference or package name contains an undefined value.
458Something like this will reproduce the error:
459
460 $BADREF = 42;
461 process $BADREF 1,2,3;
462 $BADREF->process(1,2,3);
463
464=item Can't coerce array into hash
465
466(F) You used an array where a hash was expected, but the array has no
467information on how to map from keys to array indices. You can do that
468only with arrays that have a hash reference at index 0.
469
470=item Can't goto subroutine from an eval-string
471
472(F) The "goto subroutine" call can't be used to jump out of an eval "string".
473(You can use it to jump out of an eval {BLOCK}, but you probably don't want to.)
474
475=item Can't use %%! because Errno.pm is not available
476
477(F) The first time the %! hash is used, perl automatically loads the
478Errno.pm module. The Errno module is expected to tie the %! hash to
479provide symbolic names for C<$!> errno values.
480
481=item Can't use %%! because Errno.pm is not available
482
483(F) The first time the %! hash is used, perl automatically loads the
484Errno.pm module. The Errno module is expected to tie the %! hash to
485provide symbolic names for C<$!> errno values.
486
487=item Cannot find an opnumber for "%s"
488
489(F) A string of a form C<CORE::word> was given to prototype(), but
490there is no builtin with the name C<word>.
491
492=item Character class syntax [. .] is reserved for future extensions
493
494(W) Within regular expression character classes ([]) the syntax beginning
495with "[." and ending with ".]" is reserved for future extensions.
496If you need to represent those character sequences inside a regular
497expression character class, just quote the square brackets with the
498backslash: "\[." and ".\]".
499
500=item Character class syntax [: :] is reserved for future extensions
501
502(W) Within regular expression character classes ([]) the syntax beginning
503with "[:" and ending with ":]" is reserved for future extensions.
504If you need to represent those character sequences inside a regular
505expression character class, just quote the square brackets with the
506backslash: "\[:" and ":\]".
507
508=item Character class syntax [= =] is reserved for future extensions
509
510(W) Within regular expression character classes ([]) the syntax
511beginning with "[=" and ending with "=]" is reserved for future extensions.
512If you need to represent those character sequences inside a regular
513expression character class, just quote the square brackets with the
514backslash: "\[=" and "=\]".
515
516=item %s: Eval-group in insecure regular expression
517
518(F) Perl detected tainted data when trying to compile a regular expression
519that contains the C<(?{ ... })> zero-width assertion, which is unsafe.
520See L<perlre/(?{ code })>, and L<perlsec>.
521
522=item %s: Eval-group not allowed, use re 'eval'
523
524(F) A regular expression contained the C<(?{ ... })> zero-width assertion,
525but that construct is only allowed when the C<use re 'eval'> pragma is
526in effect. See L<perlre/(?{ code })>.
527
528=item %s: Eval-group not allowed at run time
529
530(F) Perl tried to compile a regular expression containing the C<(?{ ... })>
531zero-width assertion at run time, as it would when the pattern contains
532interpolated values. Since that is a security risk, it is not allowed.
533If you insist, you may still do this by explicitly building the pattern
534from an interpolated string at run time and using that in an eval().
535See L<perlre/(?{ code })>.
536
537=item Explicit blessing to '' (assuming package main)
538
539(W) You are blessing a reference to a zero length string. This has
540the effect of blessing the reference into the package main. This is
541usually not what you want. Consider providing a default target
542package, e.g. bless($ref, $p or 'MyPackage');
543
544=item Illegal hex digit ignored
545
546(W) You may have tried to use a character other than 0 - 9 or A - F in a
547hexadecimal number. Interpretation of the hexadecimal number stopped
548before the illegal character.
549
550=item No such array field
551
552(F) You tried to access an array as a hash, but the field name used is
553not defined. The hash at index 0 should map all valid field names to
554array indices for that to work.
555
556=item No such field "%s" in variable %s of type %s
557
558(F) You tried to access a field of a typed variable where the type
559does not know about the field name. The field names are looked up in
560the %FIELDS hash in the type package at compile time. The %FIELDS hash
561is usually set up with the 'fields' pragma.
562
563=item Out of memory during ridiculously large request
564
565(F) You can't allocate more than 2^31+"small amount" bytes. This error
566is most likely to be caused by a typo in the Perl program. e.g., C<$arr[time]>
567instead of C<$arr[$time]>.
568
569=item Range iterator outside integer range
570
571(F) One (or both) of the numeric arguments to the range operator ".."
572are outside the range which can be represented by integers internally.
573One possible workaround is to force Perl to use magical string
574increment by prepending "0" to your numbers.
575
576=item Recursive inheritance detected while looking for method '%s' in package '%s'
577
578(F) More than 100 levels of inheritance were encountered while invoking a
579method. Probably indicates an unintended loop in your inheritance hierarchy.
580
581=item Reference found where even-sized list expected
582
583(W) You gave a single reference where Perl was expecting a list with
584an even number of elements (for assignment to a hash). This
585usually means that you used the anon hash constructor when you meant
586to use parens. In any case, a hash requires key/value B<pairs>.
587
588 %hash = { one => 1, two => 2, }; # WRONG
589 %hash = [ qw/ an anon array / ]; # WRONG
590 %hash = ( one => 1, two => 2, ); # right
591 %hash = qw( one 1 two 2 ); # also fine
592
593=item Undefined value assigned to typeglob
594
595(W) An undefined value was assigned to a typeglob, a la C<*foo = undef>.
596This does nothing. It's possible that you really mean C<undef *foo>.
597
598=item Use of reserved word "%s" is deprecated
599
600(D) The indicated bareword is a reserved word. Future versions of perl
601may use it as a keyword, so you're better off either explicitly quoting
602the word in a manner appropriate for its context of use, or using a
603different name altogether. The warning can be suppressed for subroutine
604names by either adding a C<&> prefix, or using a package qualifier,
605e.g. C<&our()>, or C<Foo::our()>.
606
607=item perl: warning: Setting locale failed.
608
609(S) The whole warning message will look something like:
610
611 perl: warning: Setting locale failed.
612 perl: warning: Please check that your locale settings:
613 LC_ALL = "En_US",
614 LANG = (unset)
615 are supported and installed on your system.
616 perl: warning: Falling back to the standard locale ("C").
617
618Exactly what were the failed locale settings varies. In the above the
619settings were that the LC_ALL was "En_US" and the LANG had no value.
620This error means that Perl detected that you and/or your system
621administrator have set up the so-called variable system but Perl could
622not use those settings. This was not dead serious, fortunately: there
623is a "default locale" called "C" that Perl can and will use, the
624script will be run. Before you really fix the problem, however, you
625will get the same error message each time you run Perl. How to really
626fix the problem can be found in L<perllocale> section B<LOCALE PROBLEMS>.
627
628=back
629
630
631=head1 Obsolete Diagnostics
632
633=over
6cc33c6d 634
429b3afa
GS
635=item Can't mktemp()
636
637(F) The mktemp() routine failed for some reason while trying to process
638a B<-e> switch. Maybe your /tmp partition is full, or clobbered.
639
640=item Can't write to temp file for B<-e>: %s
641
642(F) The write routine failed for some reason while trying to process
643a B<-e> switch. Maybe your /tmp partition is full, or clobbered.
644
645=item Cannot open temporary file
646
647(F) The create routine failed for some reason while trying to process
648a B<-e> switch. Maybe your /tmp partition is full, or clobbered.
649
650
651=back
652
01784f0d
AD
653=head1 BUGS
654
655If you find what you think is a bug, you might check the headers of
656recently posted articles in the comp.lang.perl.misc newsgroup.
657There may also be information at http://www.perl.com/perl/, the Perl
658Home Page.
659
660If you believe you have an unreported bug, please run the B<perlbug>
661program included with your release. Make sure you trim your bug down
662to a tiny but sufficient test case. Your bug report, along with the
663output of C<perl -V>, will be sent off to <F<perlbug@perl.com>> to be
664analysed by the Perl porting team.
665
666=head1 SEE ALSO
667
668The F<Changes> file for exhaustive details on what changed.
669
670The F<INSTALL> file for how to build Perl.
671
672The F<README> file for general stuff.
673
674The F<Artistic> and F<Copying> files for copyright information.
675
676=head1 HISTORY
429b3afa
GS
677
678=cut