This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Comment out a now unused variable
[perl5.git] / pod / perl5100delta.pod
CommitLineData
81663c3a
RGS
1=encoding utf8
2
cf6c151c
RGS
3=head1 NAME
4
5perldelta - what is new for perl 5.10.0
6
7=head1 DESCRIPTION
8
9This document describes the differences between the 5.8.8 release and
10the 5.10.0 release.
11
12Many of the bug fixes in 5.10.0 were already seen in the 5.8.X maintenance
13releases; they are not duplicated here and are documented in the set of
14man pages named perl58[1-8]?delta.
15
cf6c151c
RGS
16=head1 Core Enhancements
17
18=head2 The C<feature> pragma
19
20The C<feature> pragma is used to enable new syntax that would break Perl's
21backwards-compatibility with older releases of the language. It's a lexical
22pragma, like C<strict> or C<warnings>.
23
24Currently the following new features are available: C<switch> (adds a
25switch statement), C<say> (adds a C<say> built-in function), and C<state>
292c2b28 26(adds a C<state> keyword for declaring "static" variables). Those
cf6c151c
RGS
27features are described in their own sections of this document.
28
29The C<feature> pragma is also implicitly loaded when you require a minimal
30perl version (with the C<use VERSION> construct) greater than, or equal
31to, 5.9.5. See L<feature> for details.
32
33=head2 New B<-E> command-line switch
34
35B<-E> is equivalent to B<-e>, but it implicitly enables all
36optional features (like C<use feature ":5.10">).
37
38=head2 Defined-or operator
39
40A new operator C<//> (defined-or) has been implemented.
dbef3c66 41The following expression:
cf6c151c
RGS
42
43 $a // $b
44
45is merely equivalent to
46
47 defined $a ? $a : $b
48
dbef3c66 49and the statement
cf6c151c
RGS
50
51 $c //= $d;
52
53can now be used instead of
54
55 $c = $d unless defined $c;
56
57The C<//> operator has the same precedence and associativity as C<||>.
58Special care has been taken to ensure that this operator Do What You Mean
59while not breaking old code, but some edge cases involving the empty
60regular expression may now parse differently. See L<perlop> for
61details.
62
63=head2 Switch and Smart Match operator
64
65Perl 5 now has a switch statement. It's available when C<use feature
66'switch'> is in effect. This feature introduces three new keywords,
67C<given>, C<when>, and C<default>:
68
69 given ($foo) {
70 when (/^abc/) { $abc = 1; }
71 when (/^def/) { $def = 1; }
72 when (/^xyz/) { $xyz = 1; }
73 default { $nothing = 1; }
74 }
75
76A more complete description of how Perl matches the switch variable
77against the C<when> conditions is given in L<perlsyn/"Switch statements">.
78
79This kind of match is called I<smart match>, and it's also possible to use
80it outside of switch statements, via the new C<~~> operator. See
81L<perlsyn/"Smart matching in detail">.
82
83This feature was contributed by Robin Houston.
84
85=head2 Regular expressions
86
87=over 4
88
89=item Recursive Patterns
90
91It is now possible to write recursive patterns without using the C<(??{})>
92construct. This new way is more efficient, and in many cases easier to
93read.
94
95Each capturing parenthesis can now be treated as an independent pattern
96that can be entered by using the C<(?PARNO)> syntax (C<PARNO> standing for
97"parenthesis number"). For example, the following pattern will match
98nested balanced angle brackets:
99
100 /
101 ^ # start of line
102 ( # start capture buffer 1
103 < # match an opening angle bracket
104 (?: # match one of:
105 (?> # don't backtrack over the inside of this group
106 [^<>]+ # one or more non angle brackets
107 ) # end non backtracking group
108 | # ... or ...
109 (?1) # recurse to bracket 1 and try it again
110 )* # 0 or more times.
111 > # match a closing angle bracket
112 ) # end capture buffer one
113 $ # end of line
114 /x
115
e15dad31
JC
116PCRE users should note that Perl's recursive regex feature allows
117backtracking into a recursed pattern, whereas in PCRE the recursion is
118atomic or "possessive" in nature. As in the example above, you can
119add (?>) to control this selectively. (Yves Orton)
cf6c151c
RGS
120
121=item Named Capture Buffers
122
123It is now possible to name capturing parenthesis in a pattern and refer to
124the captured contents by name. The naming syntax is C<< (?<NAME>....) >>.
125It's possible to backreference to a named buffer with the C<< \k<NAME> >>
126syntax. In code, the new magical hashes C<%+> and C<%-> can be used to
127access the contents of the capture buffers.
128
e15dad31 129Thus, to replace all doubled chars with a single copy, one could write
cf6c151c
RGS
130
131 s/(?<letter>.)\k<letter>/$+{letter}/g
132
133Only buffers with defined contents will be "visible" in the C<%+> hash, so
134it's possible to do something like
135
136 foreach my $name (keys %+) {
137 print "content of buffer '$name' is $+{$name}\n";
138 }
139
140The C<%-> hash is a bit more complete, since it will contain array refs
141holding values from all capture buffers similarly named, if there should
142be many of them.
143
144C<%+> and C<%-> are implemented as tied hashes through the new module
145C<Tie::Hash::NamedCapture>.
146
147Users exposed to the .NET regex engine will find that the perl
148implementation differs in that the numerical ordering of the buffers
149is sequential, and not "unnamed first, then named". Thus in the pattern
150
151 /(A)(?<B>B)(C)(?<D>D)/
152
153$1 will be 'A', $2 will be 'B', $3 will be 'C' and $4 will be 'D' and not
154$1 is 'A', $2 is 'C' and $3 is 'B' and $4 is 'D' that a .NET programmer
155would expect. This is considered a feature. :-) (Yves Orton)
156
157=item Possessive Quantifiers
158
159Perl now supports the "possessive quantifier" syntax of the "atomic match"
160pattern. Basically a possessive quantifier matches as much as it can and never
161gives any back. Thus it can be used to control backtracking. The syntax is
162similar to non-greedy matching, except instead of using a '?' as the modifier
163the '+' is used. Thus C<?+>, C<*+>, C<++>, C<{min,max}+> are now legal
164quantifiers. (Yves Orton)
165
166=item Backtracking control verbs
167
168The regex engine now supports a number of special-purpose backtrack
169control verbs: (*THEN), (*PRUNE), (*MARK), (*SKIP), (*COMMIT), (*FAIL)
170and (*ACCEPT). See L<perlre> for their descriptions. (Yves Orton)
171
172=item Relative backreferences
173
174A new syntax C<\g{N}> or C<\gN> where "N" is a decimal integer allows a
175safer form of back-reference notation as well as allowing relative
176backreferences. This should make it easier to generate and embed patterns
177that contain backreferences. See L<perlre/"Capture buffers">. (Yves Orton)
178
179=item C<\K> escape
180
181The functionality of Jeff Pinyan's module Regexp::Keep has been added to
254a8700 182the core. In regular expressions you can now use the special escape C<\K>
cf6c151c
RGS
183as a way to do something like floating length positive lookbehind. It is
184also useful in substitutions like:
185
186 s/(foo)bar/$1/g
187
188that can now be converted to
189
190 s/foo\Kbar//g
191
192which is much more efficient. (Yves Orton)
193
194=item Vertical and horizontal whitespace, and linebreak
195
292c2b28 196Regular expressions now recognize the C<\v> and C<\h> escapes that match
cf6c151c
RGS
197vertical and horizontal whitespace, respectively. C<\V> and C<\H>
198logically match their complements.
199
200C<\R> matches a generic linebreak, that is, vertical whitespace, plus
201the multi-character sequence C<"\x0D\x0A">.
202
203=back
204
205=head2 C<say()>
206
207say() is a new built-in, only available when C<use feature 'say'> is in
208effect, that is similar to print(), but that implicitly appends a newline
209to the printed string. See L<perlfunc/say>. (Robin Houston)
210
211=head2 Lexical C<$_>
212
213The default variable C<$_> can now be lexicalized, by declaring it like
214any other lexical variable, with a simple
215
216 my $_;
217
218The operations that default on C<$_> will use the lexically-scoped
219version of C<$_> when it exists, instead of the global C<$_>.
220
221In a C<map> or a C<grep> block, if C<$_> was previously my'ed, then the
222C<$_> inside the block is lexical as well (and scoped to the block).
223
224In a scope where C<$_> has been lexicalized, you can still have access to
225the global version of C<$_> by using C<$::_>, or, more simply, by
597bb945 226overriding the lexical declaration with C<our $_>. (Rafael Garcia-Suarez)
cf6c151c
RGS
227
228=head2 The C<_> prototype
229
254a8700
NC
230A new prototype character has been added. C<_> is equivalent to C<$> but
231defaults to C<$_> if the corresponding argument isn't supplied. (both C<$>
3d9f6fa1 232and C<_> denote a scalar). Due to the optional nature of the argument, you
254a8700 233can only use it at the end of a prototype, or before a semicolon.
cf6c151c
RGS
234
235This has a small incompatible consequence: the prototype() function has
236been adjusted to return C<_> for some built-ins in appropriate cases (for
237example, C<prototype('CORE::rmdir')>). (Rafael Garcia-Suarez)
238
239=head2 UNITCHECK blocks
240
241C<UNITCHECK>, a new special code block has been introduced, in addition to
242C<BEGIN>, C<CHECK>, C<INIT> and C<END>.
243
244C<CHECK> and C<INIT> blocks, while useful for some specialized purposes,
245are always executed at the transition between the compilation and the
246execution of the main program, and thus are useless whenever code is
247loaded at runtime. On the other hand, C<UNITCHECK> blocks are executed
248just after the unit which defined them has been compiled. See L<perlmod>
249for more information. (Alex Gough)
250
251=head2 New Pragma, C<mro>
252
253A new pragma, C<mro> (for Method Resolution Order) has been added. It
254permits to switch, on a per-class basis, the algorithm that perl uses to
dbef3c66 255find inherited methods in case of a multiple inheritance hierarchy. The
cf6c151c
RGS
256default MRO hasn't changed (DFS, for Depth First Search). Another MRO is
257available: the C3 algorithm. See L<mro> for more information.
258(Brandon Black)
259
dbef3c66 260Note that, due to changes in the implementation of class hierarchy search,
cf6c151c
RGS
261code that used to undef the C<*ISA> glob will most probably break. Anyway,
262undef'ing C<*ISA> had the side-effect of removing the magic on the @ISA
0e44e2ed
RGS
263array and should not have been done in the first place. Also, the
264cache C<*::ISA::CACHE::> no longer exists; to force reset the @ISA cache,
265you now need to use the C<mro> API, or more simply to assign to @ISA
266(e.g. with C<@ISA = @ISA>).
cf6c151c 267
3de67921
JD
268=head2 readdir() may return a "short filename" on Windows
269
270The readdir() function may return a "short filename" when the long
271filename contains characters outside the ANSI codepage. Similarly
272Cwd::cwd() may return a short directory name, and glob() may return short
273names as well. On the NTFS file system these short names can always be
274represented in the ANSI codepage. This will not be true for all other file
275system drivers; e.g. the FAT filesystem stores short filenames in the OEM
276codepage, so some files on FAT volumes remain unaccessible through the
277ANSI APIs.
278
279Similarly, $^X, @INC, and $ENV{PATH} are preprocessed at startup to make
280sure all paths are valid in the ANSI codepage (if possible).
281
282The Win32::GetLongPathName() function now returns the UTF-8 encoded
283correct long file name instead of using replacement characters to force
284the name into the ANSI codepage. The new Win32::GetANSIPathName()
285function can be used to turn a long pathname into a short one only if the
286long one cannot be represented in the ANSI codepage.
287
288Many other functions in the C<Win32> module have been improved to accept
289UTF-8 encoded arguments. Please see L<Win32> for details.
290
cf6c151c
RGS
291=head2 readpipe() is now overridable
292
293The built-in function readpipe() is now overridable. Overriding it permits
294also to override its operator counterpart, C<qx//> (a.k.a. C<``>).
295Moreover, it now defaults to C<$_> if no argument is provided. (Rafael
296Garcia-Suarez)
297
597bb945 298=head2 Default argument for readline()
cf6c151c
RGS
299
300readline() now defaults to C<*ARGV> if no argument is provided. (Rafael
301Garcia-Suarez)
302
303=head2 state() variables
304
305A new class of variables has been introduced. State variables are similar
306to C<my> variables, but are declared with the C<state> keyword in place of
307C<my>. They're visible only in their lexical scope, but their value is
308persistent: unlike C<my> variables, they're not undefined at scope entry,
309but retain their previous value. (Rafael Garcia-Suarez, Nicholas Clark)
310
311To use state variables, one needs to enable them by using
312
254a8700 313 use feature 'state';
cf6c151c
RGS
314
315or by using the C<-E> command-line switch in one-liners.
316See L<perlsub/"Persistent variables via state()">.
317
318=head2 Stacked filetest operators
319
320As a new form of syntactic sugar, it's now possible to stack up filetest
321operators. You can now write C<-f -w -x $file> in a row to mean
322C<-x $file && -w _ && -f _>. See L<perlfunc/-X>.
323
324=head2 UNIVERSAL::DOES()
325
326The C<UNIVERSAL> class has a new method, C<DOES()>. It has been added to
327solve semantic problems with the C<isa()> method. C<isa()> checks for
328inheritance, while C<DOES()> has been designed to be overridden when
329module authors use other types of relations between classes (in addition
330to inheritance). (chromatic)
331
332See L<< UNIVERSAL/"$obj->DOES( ROLE )" >>.
333
cf6c151c
RGS
334=head2 Formats
335
336Formats were improved in several ways. A new field, C<^*>, can be used for
337variable-width, one-line-at-a-time text. Null characters are now handled
338correctly in picture lines. Using C<@#> and C<~~> together will now
339produce a compile-time error, as those format fields are incompatible.
340L<perlform> has been improved, and miscellaneous bugs fixed.
341
342=head2 Byte-order modifiers for pack() and unpack()
343
344There are two new byte-order modifiers, C<E<gt>> (big-endian) and C<E<lt>>
345(little-endian), that can be appended to most pack() and unpack() template
346characters and groups to force a certain byte-order for that type or group.
347See L<perlfunc/pack> and L<perlpacktut> for details.
348
cf6c151c
RGS
349=head2 C<no VERSION>
350
351You can now use C<no> followed by a version number to specify that you
352want to use a version of perl older than the specified one.
353
354=head2 C<chdir>, C<chmod> and C<chown> on filehandles
355
356C<chdir>, C<chmod> and C<chown> can now work on filehandles as well as
357filenames, if the system supports respectively C<fchdir>, C<fchmod> and
358C<fchown>, thanks to a patch provided by Gisle Aas.
359
360=head2 OS groups
361
362C<$(> and C<$)> now return groups in the order where the OS returns them,
363thanks to Gisle Aas. This wasn't previously the case.
364
365=head2 Recursive sort subs
366
367You can now use recursive subroutines with sort(), thanks to Robin Houston.
368
369=head2 Exceptions in constant folding
370
371The constant folding routine is now wrapped in an exception handler, and
372if folding throws an exception (such as attempting to evaluate 0/0), perl
373now retains the current optree, rather than aborting the whole program.
254a8700
NC
374Without this change, programs would not compile if they had expressions that
375happened to generate exceptions, even though those expressions were in code
376that could never be reached at runtime. (Nicholas Clark, Dave Mitchell)
cf6c151c
RGS
377
378=head2 Source filters in @INC
379
380It's possible to enhance the mechanism of subroutine hooks in @INC by
381adding a source filter on top of the filehandle opened and returned by the
382hook. This feature was planned a long time ago, but wasn't quite working
383until now. See L<perlfunc/require> for details. (Nicholas Clark)
384
385=head2 New internal variables
386
387=over 4
388
389=item C<${^RE_DEBUG_FLAGS}>
390
391This variable controls what debug flags are in effect for the regular
392expression engine when running under C<use re "debug">. See L<re> for
393details.
394
395=item C<${^CHILD_ERROR_NATIVE}>
396
397This variable gives the native status returned by the last pipe close,
398backtick command, successful call to wait() or waitpid(), or from the
399system() operator. See L<perlrun> for details. (Contributed by Gisle Aas.)
400
597bb945
RGS
401=item C<${^RE_TRIE_MAXBUF}>
402
403See L</"Trie optimisation of literal string alternations">.
404
405=item C<${^WIN32_SLOPPY_STAT}>
406
407See L</"Sloppy stat on Windows">.
408
cf6c151c
RGS
409=back
410
411=head2 Miscellaneous
412
413C<unpack()> now defaults to unpacking the C<$_> variable.
414
415C<mkdir()> without arguments now defaults to C<$_>.
416
417The internal dump output has been improved, so that non-printable characters
418such as newline and backspace are output in C<\x> notation, rather than
419octal.
420
421The B<-C> option can no longer be used on the C<#!> line. It wasn't
cba8bf60
RGS
422working there anyway, since the standard streams are already set up
423at this point in the execution of the perl interpreter. You can use
424binmode() instead to get the desired behaviour.
cf6c151c
RGS
425
426=head2 UCD 5.0.0
427
428The copy of the Unicode Character Database included in Perl 5 has
429been updated to version 5.0.0.
430
cf6c151c
RGS
431=head2 MAD
432
254a8700 433MAD, which stands for I<Miscellaneous Attribute Decoration>, is a
cf6c151c
RGS
434still-in-development work leading to a Perl 5 to Perl 6 converter. To
435enable it, it's necessary to pass the argument C<-Dmad> to Configure. The
254a8700 436obtained perl isn't binary compatible with a regular perl 5.10, and has
cf6c151c
RGS
437space and speed penalties; moreover not all regression tests still pass
438with it. (Larry Wall, Nicholas Clark)
439
c7d332a5
RGS
440=head2 kill() on Windows
441
442On Windows platforms, C<kill(-9, $pid)> now kills a process tree.
443(On UNIX, this delivers the signal to all processes in the same process
444group.)
445
597bb945
RGS
446=head1 Incompatible Changes
447
448=head2 Packing and UTF-8 strings
449
597bb945
RGS
450The semantics of pack() and unpack() regarding UTF-8-encoded data has been
451changed. Processing is now by default character per character instead of
452byte per byte on the underlying encoding. Notably, code that used things
453like C<pack("a*", $string)> to see through the encoding of string will now
454simply get back the original $string. Packed strings can also get upgraded
455during processing when you store upgraded characters. You can get the old
456behaviour by using C<use bytes>.
457
458To be consistent with pack(), the C<C0> in unpack() templates indicates
459that the data is to be processed in character mode, i.e. character by
460character; on the contrary, C<U0> in unpack() indicates UTF-8 mode, where
461the packed string is processed in its UTF-8-encoded Unicode form on a byte
254a8700
NC
462by byte basis. This is reversed with regard to perl 5.8.X, but now consistent
463between pack() and unpack().
597bb945
RGS
464
465Moreover, C<C0> and C<U0> can also be used in pack() templates to specify
466respectively character and byte modes.
467
468C<C0> and C<U0> in the middle of a pack or unpack format now switch to the
469specified encoding mode, honoring parens grouping. Previously, parens were
470ignored.
471
472Also, there is a new pack() character format, C<W>, which is intended to
473replace the old C<C>. C<C> is kept for unsigned chars coded as bytes in
474the strings internal representation. C<W> represents unsigned (logical)
475character values, which can be greater than 255. It is therefore more
476robust when dealing with potentially UTF-8-encoded data (as C<C> will wrap
477values outside the range 0..255, and not respect the string encoding).
478
479In practice, that means that pack formats are now encoding-neutral, except
480C<C>.
481
482For consistency, C<A> in unpack() format now trims all Unicode whitespace
483from the end of the string. Before perl 5.9.2, it used to strip only the
484classical ASCII space characters.
485
486=head2 Byte/character count feature in unpack()
487
488A new unpack() template character, C<".">, returns the number of bytes or
489characters (depending on the selected encoding mode, see above) read so far.
490
491=head2 The C<$*> and C<$#> variables have been removed
492
493C<$*>, which was deprecated in favor of the C</s> and C</m> regexp
494modifiers, has been removed.
495
496The deprecated C<$#> variable (output format for numbers) has been
497removed.
498
f00638a2 499Two new severe warnings, C<$#/$* is no longer supported>, have been added.
597bb945
RGS
500
501=head2 substr() lvalues are no longer fixed-length
502
503The lvalues returned by the three argument form of substr() used to be a
504"fixed length window" on the original string. In some cases this could
505cause surprising action at distance or other undefined behaviour. Now the
506length of the window adjusts itself to the length of the string assigned to
507it.
508
509=head2 Parsing of C<-f _>
510
511The identifier C<_> is now forced to be a bareword after a filetest
512operator. This solves a number of misparsing issues when a global C<_>
513subroutine is defined.
514
515=head2 C<:unique>
516
517The C<:unique> attribute has been made a no-op, since its current
518implementation was fundamentally flawed and not threadsafe.
519
597bb945
RGS
520=head2 Effect of pragmas in eval
521
522The compile-time value of the C<%^H> hint variable can now propagate into
523eval("")uated code. This makes it more useful to implement lexical
524pragmas.
525
526As a side-effect of this, the overloaded-ness of constants now propagates
527into eval("").
528
529=head2 chdir FOO
530
531A bareword argument to chdir() is now recognized as a file handle.
532Earlier releases interpreted the bareword as a directory name.
533(Gisle Aas)
534
535=head2 Handling of .pmc files
536
537An old feature of perl was that before C<require> or C<use> look for a
538file with a F<.pm> extension, they will first look for a similar filename
539with a F<.pmc> extension. If this file is found, it will be loaded in
540place of any potentially existing file ending in a F<.pm> extension.
541
542Previously, F<.pmc> files were loaded only if more recent than the
543matching F<.pm> file. Starting with 5.9.4, they'll be always loaded if
544they exist.
545
546=head2 @- and @+ in patterns
547
548The special arrays C<@-> and C<@+> are no longer interpolated in regular
549expressions. (Sadahiro Tomoyuki)
550
551=head2 $AUTOLOAD can now be tainted
552
553If you call a subroutine by a tainted name, and if it defers to an
554AUTOLOAD function, then $AUTOLOAD will be (correctly) tainted.
555(Rick Delaney)
556
557=head2 Tainting and printf
558
559When perl is run under taint mode, C<printf()> and C<sprintf()> will now
560reject any tainted format argument. (Rafael Garcia-Suarez)
561
562=head2 undef and signal handlers
563
564Undefining or deleting a signal handler via C<undef $SIG{FOO}> is now
565equivalent to setting it to C<'DEFAULT'>. (Rafael Garcia-Suarez)
566
567=head2 strictures and dereferencing in defined()
568
254a8700 569C<use strict 'refs'> was ignoring taking a hard reference in an argument
597bb945
RGS
570to defined(), as in :
571
254a8700
NC
572 use strict 'refs';
573 my $x = 'foo';
597bb945
RGS
574 if (defined $$x) {...}
575
576This now correctly produces the run-time error C<Can't use string as a
577SCALAR ref while "strict refs" in use>.
578
579C<defined @$foo> and C<defined %$bar> are now also subject to C<strict
580'refs'> (that is, C<$foo> and C<$bar> shall be proper references there.)
581(C<defined(@foo)> and C<defined(%bar)> are discouraged constructs anyway.)
582(Nicholas Clark)
583
584=head2 C<(?p{})> has been removed
585
586The regular expression construct C<(?p{})>, which was deprecated in perl
5875.8, has been removed. Use C<(??{})> instead. (Rafael Garcia-Suarez)
588
589=head2 Pseudo-hashes have been removed
590
591Support for pseudo-hashes has been removed from Perl 5.9. (The C<fields>
592pragma remains here, but uses an alternate implementation.)
593
594=head2 Removal of the bytecode compiler and of perlcc
595
596C<perlcc>, the byteloader and the supporting modules (B::C, B::CC,
597B::Bytecode, etc.) are no longer distributed with the perl sources. Those
598experimental tools have never worked reliably, and, due to the lack of
599volunteers to keep them in line with the perl interpreter developments, it
600was decided to remove them instead of shipping a broken version of those.
601The last version of those modules can be found with perl 5.9.4.
602
603However the B compiler framework stays supported in the perl core, as with
604the more useful modules it has permitted (among others, B::Deparse and
605B::Concise).
606
607=head2 Removal of the JPL
608
ed8ea1b6 609The JPL (Java-Perl Lingo) has been removed from the perl sources tarball.
597bb945
RGS
610
611=head2 Recursive inheritance detected earlier
612
613Perl will now immediately throw an exception if you modify any package's
614C<@ISA> in such a way that it would cause recursive inheritance.
615
616Previously, the exception would not occur until Perl attempted to make
617use of the recursive inheritance while resolving a method or doing a
618C<$foo-E<gt>isa($bar)> lookup.
619
cf6c151c 620=head1 Modules and Pragmata
c0c97549 621
187a0176
AD
622=head2 Upgrading individual core modules
623
624Even more core modules are now also available separately through the
625CPAN. If you wish to update one of these modules, you don't need to
626wait for a new perl release. From within the cpan shell, running the
627'r' command will report on modules with upgrades available. See
628C<perldoc CPAN> for more information.
629
f0e260b8
RGS
630=head2 Pragmata Changes
631
632=over 4
633
634=item C<feature>
635
636The new pragma C<feature> is used to enable new features that might break
637old code. See L</"The C<feature> pragma"> above.
638
639=item C<mro>
640
641This new pragma enables to change the algorithm used to resolve inherited
642methods. See L</"New Pragma, C<mro>"> above.
643
644=item Scoping of the C<sort> pragma
645
646The C<sort> pragma is now lexically scoped. Its effect used to be global.
647
648=item Scoping of C<bignum>, C<bigint>, C<bigrat>
649
650The three numeric pragmas C<bignum>, C<bigint> and C<bigrat> are now
651lexically scoped. (Tels)
652
653=item C<base>
654
655The C<base> pragma now warns if a class tries to inherit from itself.
656(Curtis "Ovid" Poe)
657
658=item C<strict> and C<warnings>
659
660C<strict> and C<warnings> will now complain loudly if they are loaded via
661incorrect casing (as in C<use Strict;>). (Johan Vromans)
662
6601a838
RGS
663=item C<version>
664
665The C<version> module provides support for version objects.
666
f0e260b8
RGS
667=item C<warnings>
668
669The C<warnings> pragma doesn't load C<Carp> anymore. That means that code
670that used C<Carp> routines without having loaded it at compile time might
671need to be adjusted; typically, the following (faulty) code won't work
672anymore, and will require parentheses to be added after the function name:
673
674 use warnings;
675 require Carp;
254a8700 676 Carp::confess 'argh';
f0e260b8
RGS
677
678=item C<less>
679
680C<less> now does something useful (or at least it tries to). In fact, it
681has been turned into a lexical pragma. So, in your modules, you can now
682test whether your users have requested to use less CPU, or less memory,
683less magic, or maybe even less fat. See L<less> for more. (Joshua ben
684Jore)
685
686=back
687
0eece9c0
RGS
688=head2 New modules
689
690=over 4
691
692=item *
693
694C<encoding::warnings>, by Audrey Tang, is a module to emit warnings
695whenever an ASCII character string containing high-bit bytes is implicitly
597bb945
RGS
696converted into UTF-8. It's a lexical pragma since Perl 5.9.4; on older
697perls, its effect is global.
0eece9c0
RGS
698
699=item *
700
701C<Module::CoreList>, by Richard Clamp, is a small handy module that tells
702you what versions of core modules ship with any versions of Perl 5. It
703comes with a command-line frontend, C<corelist>.
704
bd3831ee
RGS
705=item *
706
707C<Math::BigInt::FastCalc> is an XS-enabled, and thus faster, version of
708C<Math::BigInt::Calc>.
709
710=item *
711
712C<Compress::Zlib> is an interface to the zlib compression library. It
713comes with a bundled version of zlib, so having a working zlib is not a
714prerequisite to install it. It's used by C<Archive::Tar> (see below).
715
716=item *
717
718C<IO::Zlib> is an C<IO::>-style interface to C<Compress::Zlib>.
719
720=item *
721
722C<Archive::Tar> is a module to manipulate C<tar> archives.
723
724=item *
725
726C<Digest::SHA> is a module used to calculate many types of SHA digests,
727has been included for SHA support in the CPAN module.
728
729=item *
730
731C<ExtUtils::CBuilder> and C<ExtUtils::ParseXS> have been added.
732
597bb945
RGS
733=item *
734
735C<Hash::Util::FieldHash>, by Anno Siegel, has been added. This module
736provides support for I<field hashes>: hashes that maintain an association
737of a reference with a value, in a thread-safe garbage-collected way.
738Such hashes are useful to implement inside-out objects.
739
740=item *
741
742C<Module::Build>, by Ken Williams, has been added. It's an alternative to
743C<ExtUtils::MakeMaker> to build and install perl modules.
744
745=item *
746
747C<Module::Load>, by Jos Boumans, has been added. It provides a single
748interface to load Perl modules and F<.pl> files.
749
750=item *
751
752C<Module::Loaded>, by Jos Boumans, has been added. It's used to mark
753modules as loaded or unloaded.
754
755=item *
756
757C<Package::Constants>, by Jos Boumans, has been added. It's a simple
758helper to list all constants declared in a given package.
759
760=item *
761
762C<Win32API::File>, by Tye McQueen, has been added (for Windows builds).
763This module provides low-level access to Win32 system API calls for
764files/dirs.
765
f0e260b8
RGS
766=item *
767
768C<Locale::Maketext::Simple>, needed by CPANPLUS, is a simple wrapper around
769C<Locale::Maketext::Lexicon>. Note that C<Locale::Maketext::Lexicon> isn't
770included in the perl core; the behaviour of C<Locale::Maketext::Simple>
771gracefully degrades when the later isn't present.
772
773=item *
774
775C<Params::Check> implements a generic input parsing/checking mechanism. It
776is used by CPANPLUS.
777
778=item *
779
780C<Term::UI> simplifies the task to ask questions at a terminal prompt.
781
782=item *
783
784C<Object::Accessor> provides an interface to create per-object accessors.
785
786=item *
787
788C<Module::Pluggable> is a simple framework to create modules that accept
789pluggable sub-modules.
790
791=item *
792
793C<Module::Load::Conditional> provides simple ways to query and possibly
794load installed modules.
795
796=item *
797
798C<Time::Piece> provides an object oriented interface to time functions,
799overriding the built-ins localtime() and gmtime().
800
801=item *
802
803C<IPC::Cmd> helps to find and run external commands, possibly
804interactively.
805
806=item *
807
808C<File::Fetch> provide a simple generic file fetching mechanism.
809
810=item *
811
812C<Log::Message> and C<Log::Message::Simple> are used by the log facility
813of C<CPANPLUS>.
814
815=item *
816
817C<Archive::Extract> is a generic archive extraction mechanism
818for F<.tar> (plain, gziped or bzipped) or F<.zip> files.
819
820=item *
821
822C<CPANPLUS> provides an API and a command-line tool to access the CPAN
823mirrors.
824
e6746346
SP
825=item *
826
827C<Pod::Escapes> provides utilities that are useful in decoding Pod
828EE<lt>...E<gt> sequences.
829
830=item *
831
832C<Pod::Simple> is now the backend for several of the Pod-related modules
833included with Perl.
834
f0e260b8
RGS
835=back
836
837=head2 Selected Changes to Core Modules
838
839=over 4
840
841=item C<Attribute::Handlers>
842
843C<Attribute::Handlers> can now report the caller's file and line number.
844(David Feldman)
845
6cdf4617
RGS
846All interpreted attributes are now passed as array references. (Damian
847Conway)
848
f0e260b8
RGS
849=item C<B::Lint>
850
851C<B::Lint> is now based on C<Module::Pluggable>, and so can be extended
852with plugins. (Joshua ben Jore)
853
854=item C<B>
855
856It's now possible to access the lexical pragma hints (C<%^H>) by using the
857method B::COP::hints_hash(). It returns a C<B::RHE> object, which in turn
858can be used to get a hash reference via the method B::RHE::HASH(). (Joshua
859ben Jore)
860
861=item C<Thread>
862
863As the old 5005thread threading model has been removed, in favor of the
864ithreads scheme, the C<Thread> module is now a compatibility wrapper, to
865be used in old code only. It has been removed from the default list of
866dynamic extensions.
867
0eece9c0
RGS
868=back
869
cf6c151c 870=head1 Utility Changes
c0c97549
RGS
871
872=over 4
873
bd3831ee 874=item perl -d
c0c97549
RGS
875
876The Perl debugger can now save all debugger commands for sourcing later;
877notably, it can now emulate stepping backwards, by restarting and
878rerunning all bar the last command from a saved command history.
879
880It can also display the parent inheritance tree of a given class, with the
881C<i> command.
882
bd3831ee
RGS
883=item ptar
884
292c2b28 885C<ptar> is a pure perl implementation of C<tar> that comes with
bd3831ee
RGS
886C<Archive::Tar>.
887
888=item ptardiff
889
254a8700 890C<ptardiff> is a small utility used to generate a diff between the contents
bd3831ee
RGS
891of a tar archive and a directory tree. Like C<ptar>, it comes with
892C<Archive::Tar>.
893
894=item shasum
895
896C<shasum> is a command-line utility, used to print or to check SHA
897digests. It comes with the new C<Digest::SHA> module.
898
899=item corelist
0eece9c0
RGS
900
901The C<corelist> utility is now installed with perl (see L</"New modules">
902above).
903
bd3831ee 904=item h2ph and h2xs
0eece9c0 905
254a8700 906C<h2ph> and C<h2xs> have been made more robust with regard to
0eece9c0
RGS
907"modern" C code.
908
bd3831ee
RGS
909C<h2xs> implements a new option C<--use-xsloader> to force use of
910C<XSLoader> even in backwards compatible modules.
911
912The handling of authors' names that had apostrophes has been fixed.
913
914Any enums with negative values are now skipped.
915
916=item perlivp
917
918C<perlivp> no longer checks for F<*.ph> files by default. Use the new C<-a>
919option to run I<all> tests.
920
921=item find2perl
0eece9c0
RGS
922
923C<find2perl> now assumes C<-print> as a default action. Previously, it
924needed to be specified explicitly.
925
926Several bugs have been fixed in C<find2perl>, regarding C<-exec> and
927C<-eval>. Also the options C<-path>, C<-ipath> and C<-iname> have been
928added.
929
597bb945
RGS
930=item config_data
931
932C<config_data> is a new utility that comes with C<Module::Build>. It
933provides a command-line interface to the configuration of Perl modules
934that use Module::Build's framework of configurability (that is,
935C<*::ConfigData> modules that contain local configuration information for
936their parent modules.)
937
f00638a2 938=item cpanp
f0e260b8 939
254a8700 940C<cpanp>, the CPANPLUS shell, has been added. (C<cpanp-run-perl>, a
f0e260b8
RGS
941helper for CPANPLUS operation, has been added too, but isn't intended for
942direct use).
943
f00638a2 944=item cpan2dist
f0e260b8 945
292c2b28 946C<cpan2dist> is a new utility that comes with CPANPLUS. It's a tool to
f0e260b8
RGS
947create distributions (or packages) from CPAN modules.
948
f00638a2 949=item pod2html
f0e260b8
RGS
950
951The output of C<pod2html> has been enhanced to be more customizable via
952CSS. Some formatting problems were also corrected. (Jari Aalto)
953
c0c97549
RGS
954=back
955
cf6c151c 956=head1 New Documentation
c0c97549 957
597bb945
RGS
958The L<perlpragma> manpage documents how to write one's own lexical
959pragmas in pure Perl (something that is possible starting with 5.9.4).
960
bd3831ee
RGS
961The new L<perlglossary> manpage is a glossary of terms used in the Perl
962documentation, technical and otherwise, kindly provided by O'Reilly Media,
963Inc.
964
597bb945
RGS
965The L<perlreguts> manpage, courtesy of Yves Orton, describes internals of the
966Perl regular expression engine.
967
62c26f88
RGS
968The L<perlreapi> manpage describes the interface to the perl interpreter
969used to write pluggable regular expression engines (by Ævar Arnfjörð
970Bjarmason).
971
597bb945
RGS
972The L<perlunitut> manpage is an tutorial for programming with Unicode and
973string encodings in Perl, courtesy of Juerd Waalboer.
974
f0e260b8
RGS
975A new manual page, L<perlunifaq> (the Perl Unicode FAQ), has been added
976(Juerd Waalboer).
977
dbef3c66
RGS
978The L<perlcommunity> manpage gives a description of the Perl community
979on the Internet and in real life. (Edgar "Trizor" Bering)
980
f00638a2
RGS
981The L<CORE> manual page documents the C<CORE::> namespace. (Tels)
982
c0c97549
RGS
983The long-existing feature of C</(?{...})/> regexps setting C<$_> and pos()
984is now documented.
985
cf6c151c 986=head1 Performance Enhancements
c0c97549 987
597bb945 988=head2 In-place sorting
0eece9c0 989
c0c97549
RGS
990Sorting arrays in place (C<@a = sort @a>) is now optimized to avoid
991making a temporary copy of the array.
992
0eece9c0
RGS
993Likewise, C<reverse sort ...> is now optimized to sort in reverse,
994avoiding the generation of a temporary intermediate list.
995
597bb945 996=head2 Lexical array access
0eece9c0 997
c0c97549
RGS
998Access to elements of lexical arrays via a numeric constant between 0 and
999255 is now faster. (This used to be only the case for global arrays.)
1000
597bb945 1001=head2 XS-assisted SWASHGET
bd3831ee
RGS
1002
1003Some pure-perl code that perl was using to retrieve Unicode properties and
1004transliteration mappings has been reimplemented in XS.
1005
597bb945 1006=head2 Constant subroutines
bd3831ee
RGS
1007
1008The interpreter internals now support a far more memory efficient form of
1009inlineable constants. Storing a reference to a constant value in a symbol
1010table is equivalent to a full typeglob referencing a constant subroutine,
1011but using about 400 bytes less memory. This proxy constant subroutine is
1012automatically upgraded to a real typeglob with subroutine if necessary.
1013The approach taken is analogous to the existing space optimisation for
1014subroutine stub declarations, which are stored as plain scalars in place
1015of the full typeglob.
1016
1017Several of the core modules have been converted to use this feature for
1018their system dependent constants - as a result C<use POSIX;> now takes about
1019200K less memory.
1020
597bb945 1021=head2 C<PERL_DONT_CREATE_GVSV>
bd3831ee
RGS
1022
1023The new compilation flag C<PERL_DONT_CREATE_GVSV>, introduced as an option
1024in perl 5.8.8, is turned on by default in perl 5.9.3. It prevents perl
1025from creating an empty scalar with every new typeglob. See L<perl588delta>
1026for details.
1027
597bb945 1028=head2 Weak references are cheaper
bd3831ee
RGS
1029
1030Weak reference creation is now I<O(1)> rather than I<O(n)>, courtesy of
1031Nicholas Clark. Weak reference deletion remains I<O(n)>, but if deletion only
1032happens at program exit, it may be skipped completely.
1033
597bb945 1034=head2 sort() enhancements
bd3831ee
RGS
1035
1036Salvador Fandiño provided improvements to reduce the memory usage of C<sort>
1037and to speed up some cases.
1038
597bb945
RGS
1039=head2 Memory optimisations
1040
1041Several internal data structures (typeglobs, GVs, CVs, formats) have been
1042restructured to use less memory. (Nicholas Clark)
1043
1044=head2 UTF-8 cache optimisation
1045
1046The UTF-8 caching code is now more efficient, and used more often.
1047(Nicholas Clark)
1048
1049=head2 Sloppy stat on Windows
1050
1051On Windows, perl's stat() function normally opens the file to determine
1052the link count and update attributes that may have been changed through
1053hard links. Setting ${^WIN32_SLOPPY_STAT} to a true value speeds up
1054stat() by not performing this operation. (Jan Dubois)
1055
597bb945
RGS
1056=head2 Regular expressions optimisations
1057
1058=over 4
1059
1060=item Engine de-recursivised
1061
1062The regular expression engine is no longer recursive, meaning that
1063patterns that used to overflow the stack will either die with useful
1064explanations, or run to completion, which, since they were able to blow
1065the stack before, will likely take a very long time to happen. If you were
1066experiencing the occasional stack overflow (or segfault) and upgrade to
1067discover that now perl apparently hangs instead, look for a degenerate
1068regex. (Dave Mitchell)
1069
1070=item Single char char-classes treated as literals
1071
1072Classes of a single character are now treated the same as if the character
1073had been used as a literal, meaning that code that uses char-classes as an
1074escaping mechanism will see a speedup. (Yves Orton)
1075
1076=item Trie optimisation of literal string alternations
1077
1078Alternations, where possible, are optimised into more efficient matching
1079structures. String literal alternations are merged into a trie and are
1080matched simultaneously. This means that instead of O(N) time for matching
1081N alternations at a given point, the new code performs in O(1) time.
1082A new special variable, ${^RE_TRIE_MAXBUF}, has been added to fine-tune
1083this optimization. (Yves Orton)
1084
1085B<Note:> Much code exists that works around perl's historic poor
1086performance on alternations. Often the tricks used to do so will disable
1087the new optimisations. Hopefully the utility modules used for this purpose
99d59c4d 1088will be educated about these new optimisations.
597bb945
RGS
1089
1090=item Aho-Corasick start-point optimisation
1091
1092When a pattern starts with a trie-able alternation and there aren't
e15dad31 1093better optimisations available, the regex engine will use Aho-Corasick
597bb945
RGS
1094matching to find the start point. (Yves Orton)
1095
0eece9c0
RGS
1096=back
1097
cf6c151c 1098=head1 Installation and Configuration Improvements
c0c97549 1099
597bb945
RGS
1100=head2 Configuration improvements
1101
1102=over 4
1103
1104=item C<-Dusesitecustomize>
bd3831ee 1105
0eece9c0 1106Run-time customization of @INC can be enabled by passing the
597bb945 1107C<-Dusesitecustomize> flag to Configure. When enabled, this will make perl
0eece9c0
RGS
1108run F<$sitelibexp/sitecustomize.pl> before anything else. This script can
1109then be set up to add additional entries to @INC.
1110
597bb945
RGS
1111=item Relocatable installations
1112
1113There is now Configure support for creating a relocatable perl tree. If
1114you Configure with C<-Duserelocatableinc>, then the paths in @INC (and
1115everything else in %Config) can be optionally located via the path of the
1116perl executable.
1117
1118That means that, if the string C<".../"> is found at the start of any
1119path, it's substituted with the directory of $^X. So, the relocation can
1120be configured on a per-directory basis, although the default with
1121C<-Duserelocatableinc> is that everything is relocated. The initial
1122install is done to the original configured prefix.
1123
1124=item strlcat() and strlcpy()
1125
1126The configuration process now detects whether strlcat() and strlcpy() are
1127available. When they are not available, perl's own version is used (from
1128Russ Allbery's public domain implementation). Various places in the perl
1129interpreter now use them. (Steve Peters)
1130
f0e260b8
RGS
1131=item C<d_pseudofork> and C<d_printf_format_null>
1132
1133A new configuration variable, available as C<$Config{d_pseudofork}> in
1134the L<Config> module, has been added, to distinguish real fork() support
1135from fake pseudofork used on Windows platforms.
1136
1137A new configuration variable, C<d_printf_format_null>, has been added,
1138to see if printf-like formats are allowed to be NULL.
1139
1140=item Configure help
1141
1142C<Configure -h> has been extended with the most commonly used options.
1143
597bb945
RGS
1144=back
1145
1146=head2 Compilation improvements
1147
1148=over 4
1149
1150=item Parallel build
0eece9c0 1151
bd3831ee
RGS
1152Parallel makes should work properly now, although there may still be problems
1153if C<make test> is instructed to run in parallel.
1154
597bb945
RGS
1155=item Borland's compilers support
1156
bd3831ee
RGS
1157Building with Borland's compilers on Win32 should work more smoothly. In
1158particular Steve Hay has worked to side step many warnings emitted by their
1159compilers and at least one C compiler internal error.
1160
597bb945
RGS
1161=item Static build on Windows
1162
f0e260b8
RGS
1163Perl extensions on Windows now can be statically built into the Perl DLL.
1164
1165Also, it's now possible to build a C<perl-static.exe> that doesn't depend
1166on the Perl DLL on Win32. See the Win32 makefiles for details.
1167(Vadim Konovalov)
bd3831ee 1168
69d2c521 1169=item ppport.h files
597bb945
RGS
1170
1171All F<ppport.h> files in the XS modules bundled with perl are now
1172autogenerated at build time. (Marcus Holland-Moritz)
1173
f0e260b8
RGS
1174=item C++ compatibility
1175
1176Efforts have been made to make perl and the core XS modules compilable
1177with various C++ compilers (although the situation is not perfect with
1178some of the compilers on some of the platforms tested.)
1179
597bb945
RGS
1180=item Support for Microsoft 64-bit compiler
1181
1182Support for building perl with Microsoft's 64-bit compiler has been
1183improved. (ActiveState)
1184
f0e260b8
RGS
1185=item Visual C++
1186
c01f0d41 1187Perl can now be compiled with Microsoft Visual C++ 2005 (and 2008 Beta 2).
f0e260b8
RGS
1188
1189=item Win32 builds
1190
1191All win32 builds (MS-Win, WinCE) have been merged and cleaned up.
1192
597bb945
RGS
1193=back
1194
1195=head2 Installation improvements
1196
1197=over 4
1198
1199=item Module auxiliary files
1200
1201README files and changelogs for CPAN modules bundled with perl are no
1202longer installed.
1203
1204=back
1205
bd3831ee
RGS
1206=head2 New Or Improved Platforms
1207
597bb945 1208Perl has been reported to work on Symbian OS. See L<perlsymbian> for more
bd3831ee
RGS
1209information.
1210
597bb945
RGS
1211Many improvements have been made towards making Perl work correctly on
1212z/OS.
1213
f0e260b8 1214Perl has been reported to work on DragonFlyBSD and MidnightBSD.
597bb945 1215
3af9ce7f
RGS
1216Perl has also been reported to work on NexentaOS
1217( http://www.gnusolaris.org/ ).
1218
bd3831ee
RGS
1219The VMS port has been improved. See L<perlvms>.
1220
d43695a1
RGS
1221Support for Cray XT4 Catamount/Qk has been added. See
1222F<hints/catamount.sh> in the source code distribution for more
1223information.
bd3831ee 1224
f0e260b8
RGS
1225Vendor patches have been merged for RedHat and Gentoo.
1226
1227DynaLoader::dl_unload_file() now works on Windows.
bd3831ee 1228
cf6c151c 1229=head1 Selected Bug Fixes
c0c97549 1230
bd3831ee
RGS
1231=over 4
1232
1233=item strictures in regexp-eval blocks
1234
c0c97549
RGS
1235C<strict> wasn't in effect in regexp-eval blocks (C</(?{...})/>).
1236
bd3831ee
RGS
1237=item Calling CORE::require()
1238
1239CORE::require() and CORE::do() were always parsed as require() and do()
1240when they were overridden. This is now fixed.
1241
1242=item Subscripts of slices
1243
1244You can now use a non-arrowed form for chained subscripts after a list
1245slice, like in:
1246
1247 ({foo => "bar"})[0]{foo}
1248
1249This used to be a syntax error; a C<< -> >> was required.
1250
1251=item C<no warnings 'category'> works correctly with -w
1252
1253Previously when running with warnings enabled globally via C<-w>, selective
1254disabling of specific warning categories would actually turn off all warnings.
1255This is now fixed; now C<no warnings 'io';> will only turn off warnings in the
1256C<io> class. Previously it would erroneously turn off all warnings.
1257
597bb945 1258=item threads improvements
bd3831ee
RGS
1259
1260Several memory leaks in ithreads were closed. Also, ithreads were made
1261less memory-intensive.
1262
597bb945
RGS
1263C<threads> is now a dual-life module, also available on CPAN. It has been
1264expanded in many ways. A kill() method is available for thread signalling.
1265One can get thread status, or the list of running or joinable threads.
1266
1267A new C<< threads->exit() >> method is used to exit from the application
1268(this is the default for the main thread) or from the current thread only
1269(this is the default for all other threads). On the other hand, the exit()
1270built-in now always causes the whole application to terminate. (Jerry
1271D. Hedden)
1272
bd3831ee
RGS
1273=item chr() and negative values
1274
1275chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement
1276character, unless when the C<bytes> pragma is in effect, where the low
1277eight bytes of the value are used.
1278
597bb945
RGS
1279=item PERL5SHELL and tainting
1280
1281On Windows, the PERL5SHELL environment variable is now checked for
1282taintedness. (Rafael Garcia-Suarez)
1283
1284=item Using *FILE{IO}
1285
1286C<stat()> and C<-X> filetests now treat *FILE{IO} filehandles like *FILE
1287filehandles. (Steve Peters)
1288
1289=item Overloading and reblessing
1290
1291Overloading now works when references are reblessed into another class.
1292Internally, this has been implemented by moving the flag for "overloading"
1293from the reference to the referent, which logically is where it should
1294always have been. (Nicholas Clark)
1295
1296=item Overloading and UTF-8
1297
1298A few bugs related to UTF-8 handling with objects that have
1299stringification overloaded have been fixed. (Nicholas Clark)
1300
1301=item eval memory leaks fixed
1302
1303Traditionally, C<eval 'syntax error'> has leaked badly. Many (but not all)
1304of these leaks have now been eliminated or reduced. (Dave Mitchell)
1305
1306=item Random device on Windows
1307
1308In previous versions, perl would read the file F</dev/urandom> if it
1309existed when seeding its random number generator. That file is unlikely
1310to exist on Windows, and if it did would probably not contain appropriate
1311data, so perl no longer tries to read it on Windows. (Alex Davies)
1312
1313=item PERLIO_DEBUG
1314
254a8700 1315The C<PERLIO_DEBUG> environment variable no longer has any effect for
597bb945
RGS
1316setuid scripts and for scripts run with B<-T>.
1317
1318Moreover, with a thread-enabled perl, using C<PERLIO_DEBUG> could lead to
1319an internal buffer overflow. This has been fixed.
1320
f0e260b8
RGS
1321=item PerlIO::scalar and read-only scalars
1322
1323PerlIO::scalar will now prevent writing to read-only scalars. Moreover,
1324seek() is now supported with PerlIO::scalar-based filehandles, the
1325underlying string being zero-filled as needed. (Rafael, Jarkko Hietaniemi)
1326
1327=item study() and UTF-8
1328
1329study() never worked for UTF-8 strings, but could lead to false results.
1330It's now a no-op on UTF-8 data. (Yves Orton)
1331
1332=item Critical signals
1333
1334The signals SIGILL, SIGBUS and SIGSEGV are now always delivered in an
1335"unsafe" manner (contrary to other signals, that are deferred until the
1336perl interpreter reaches a reasonably stable state; see
1337L<perlipc/"Deferred Signals (Safe Signals)">). (Rafael)
1338
1339=item @INC-hook fix
1340
1341When a module or a file is loaded through an @INC-hook, and when this hook
1342has set a filename entry in %INC, __FILE__ is now set for this module
1343accordingly to the contents of that %INC entry. (Rafael)
1344
1345=item C<-t> switch fix
1346
1347The C<-w> and C<-t> switches can now be used together without messing
254a8700 1348up which categories of warnings are activated. (Rafael)
f0e260b8
RGS
1349
1350=item Duping UTF-8 filehandles
1351
1352Duping a filehandle which has the C<:utf8> PerlIO layer set will now
1353properly carry that layer on the duped filehandle. (Rafael)
1354
1355=item Localisation of hash elements
1356
292c2b28 1357Localizing a hash element whose key was given as a variable didn't work
f0e260b8
RGS
1358correctly if the variable was changed while the local() was in effect (as
1359in C<local $h{$x}; ++$x>). (Bo Lindbergh)
1360
bd3831ee 1361=back
0eece9c0 1362
cf6c151c 1363=head1 New or Changed Diagnostics
c0c97549 1364
bd3831ee
RGS
1365=over 4
1366
d43695a1
RGS
1367=item Use of uninitialized value
1368
1369Perl will now try to tell you the name of the variable (if any) that was
1370undefined.
1371
bd3831ee
RGS
1372=item Deprecated use of my() in false conditional
1373
c0c97549
RGS
1374A new deprecation warning, I<Deprecated use of my() in false conditional>,
1375has been added, to warn against the use of the dubious and deprecated
1376construct
1377
1378 my $x if 0;
1379
1380See L<perldiag>. Use C<state> variables instead.
1381
bd3831ee
RGS
1382=item !=~ should be !~
1383
0eece9c0
RGS
1384A new warning, C<!=~ should be !~>, is emitted to prevent this misspelling
1385of the non-matching operator.
1386
bd3831ee
RGS
1387=item Newline in left-justified string
1388
0eece9c0
RGS
1389The warning I<Newline in left-justified string> has been removed.
1390
bd3831ee
RGS
1391=item Too late for "-T" option
1392
0eece9c0
RGS
1393The error I<Too late for "-T" option> has been reformulated to be more
1394descriptive.
1395
bd3831ee
RGS
1396=item "%s" variable %s masks earlier declaration
1397
1398This warning is now emitted in more consistent cases; in short, when one
1399of the declarations involved is a C<my> variable:
1400
1401 my $x; my $x; # warns
1402 my $x; our $x; # warns
1403 our $x; my $x; # warns
1404
1405On the other hand, the following:
1406
1407 our $x; our $x;
1408
1409now gives a C<"our" variable %s redeclared> warning.
1410
1411=item readdir()/closedir()/etc. attempted on invalid dirhandle
1412
1413These new warnings are now emitted when a dirhandle is used but is
1414either closed or not really a dirhandle.
1415
f0e260b8
RGS
1416=item Opening dirhandle/filehandle %s also as a file/directory
1417
1418Two deprecation warnings have been added: (Rafael)
1419
1420 Opening dirhandle %s also as a file
1421 Opening filehandle %s also as a directory
1422
f00638a2
RGS
1423=item Use of -P is deprecated
1424
1425Perl's command-line switch C<-P> is now deprecated.
1426
6601a838
RGS
1427=item v-string in use/require is non-portable
1428
1429Perl will warn you against potential backwards compatibility problems with
1430the C<use VERSION> syntax.
1431
bd3831ee
RGS
1432=item perl -V
1433
0eece9c0
RGS
1434C<perl -V> has several improvements, making it more useable from shell
1435scripts to get the value of configuration variables. See L<perlrun> for
1436details.
1437
bd3831ee
RGS
1438=back
1439
cf6c151c 1440=head1 Changed Internals
c0c97549 1441
16993b2e
JH
1442In general, the source code of perl has been refactored, tidied up,
1443and optimized in many places. Also, memory management and allocation
1444has been improved in several points.
1445
1446When compiling the perl core with gcc, as many gcc warning flags are
1447turned on as is possible on the platform. (This quest for cleanliness
1448doesn't extend to XS code because we cannot guarantee the tidiness of
1449code we didn't write.) Similar strictness flags have been added or
1450tightened for various other C compilers.
bd3831ee 1451
c0c97549
RGS
1452=head2 Reordering of SVt_* constants
1453
1454The relative ordering of constants that define the various types of C<SV>
1455have changed; in particular, C<SVt_PVGV> has been moved before C<SVt_PVLV>,
1456C<SVt_PVAV>, C<SVt_PVHV> and C<SVt_PVCV>. This is unlikely to make any
1457difference unless you have code that explicitly makes assumptions about that
1458ordering. (The inheritance hierarchy of C<B::*> objects has been changed
1459to reflect this.)
1460
254a8700
NC
1461=head2 Elimination of SVt_PVBM
1462
1463Related to this, the internal type C<SVt_PVBM> has been been removed. This
1464dedicated type of C<SV> was used by the C<index> operator and parts of the
1465regexp engine to facilitate fast Boyer-Moore matches. Its use internally has
1466been replaced by C<SV>s of type C<SVt_PVGV>.
1467
1468=head2 New type SVt_BIND
1469
1470A new type C<SVt_BIND> has been added, in readiness for the project to
1471implement Perl 6 on 5. There deliberately is no implementation yet, and
1472they cannot yet be created or destroyed.
1473
c0c97549
RGS
1474=head2 Removal of CPP symbols
1475
1476The C preprocessor symbols C<PERL_PM_APIVERSION> and
1477C<PERL_XS_APIVERSION>, which were supposed to give the version number of
1478the oldest perl binary-compatible (resp. source-compatible) with the
1479present one, were not used, and sometimes had misleading values. They have
1480been removed.
1481
1482=head2 Less space is used by ops
1483
1484The C<BASEOP> structure now uses less space. The C<op_seq> field has been
254a8700 1485removed and replaced by a single bit bit-field C<op_opt>. C<op_type> is now 9
c0c97549
RGS
1486bits long. (Consequently, the C<B::OP> class doesn't provide an C<seq>
1487method anymore.)
1488
1489=head2 New parser
1490
1491perl's parser is now generated by bison (it used to be generated by
1492byacc.) As a result, it seems to be a bit more robust.
1493
bd3831ee
RGS
1494Also, Dave Mitchell improved the lexer debugging output under C<-DT>.
1495
1496=head2 Use of C<const>
1497
1498Andy Lester supplied many improvements to determine which function
1499parameters and local variables could actually be declared C<const> to the C
1500compiler. Steve Peters provided new C<*_set> macros and reworked the core to
1501use these rather than assigning to macros in LVALUE context.
1502
1503=head2 Mathoms
1504
1505A new file, F<mathoms.c>, has been added. It contains functions that are
1506no longer used in the perl core, but that remain available for binary or
1507source compatibility reasons. However, those functions will not be
1508compiled in if you add C<-DNO_MATHOMS> in the compiler flags.
1509
1510=head2 C<AvFLAGS> has been removed
1511
1512The C<AvFLAGS> macro has been removed.
1513
1514=head2 C<av_*> changes
1515
1516The C<av_*()> functions, used to manipulate arrays, no longer accept null
1517C<AV*> parameters.
1518
597bb945
RGS
1519=head2 $^H and %^H
1520
1521The implementation of the special variables $^H and %^H has changed, to
254a8700 1522allow implementing lexical pragmas in pure Perl.
597bb945 1523
bd3831ee
RGS
1524=head2 B:: modules inheritance changed
1525
1526The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now
1527inherits from C<B::SV> (it used to inherit from C<B::IV>).
1528
f0e260b8
RGS
1529=head2 Anonymous hash and array constructors
1530
1531The anonymous hash and array constructors now take 1 op in the optree
1532instead of 3, now that pp_anonhash and pp_anonlist return a reference to
1533an hash/array when the op is flagged with OPf_SPECIAL (Nicholas Clark).
1534
cf6c151c 1535=head1 Known Problems
c0c97549
RGS
1536
1537There's still a remaining problem in the implementation of the lexical
1538C<$_>: it doesn't work inside C</(?{...})/> blocks. (See the TODO test in
1539F<t/op/mydef.t>.)
1540
3af9ce7f
RGS
1541Stacked filetest operators won't work when the C<filetest> pragma is in
1542effect, because they rely on the stat() buffer C<_> being populated, and
1543filetest bypasses stat().
1544
48d64ccf
RGS
1545When compiled with g++ and thread support on Linux, it's reported that the
1546C<$!> stops working correctly. This is related to the fact that the glibc
1547provides two strerror_r(3) implementation, and perl selects the wrong
1548one.
1549
cf6c151c 1550=head1 Platform Specific Problems
c0c97549 1551
cf6c151c
RGS
1552=head1 Reporting Bugs
1553
1554=head1 SEE ALSO
1555
1556The F<Changes> file and the perl590delta to perl595delta man pages for
1557exhaustive details on what changed.
1558
1559The F<INSTALL> file for how to build Perl.
1560
1561The F<README> file for general stuff.
1562
1563The F<Artistic> and F<Copying> files for copyright information.
1564
1565=cut