Commit | Line | Data |
f6eae373 |
1 | =head1 NAME |
2 | |
3 | perldelta - what is new for perl v5.9.5 |
4 | |
5 | =head1 DESCRIPTION |
6 | |
7 | This document describes differences between the 5.9.4 and the 5.9.5 |
8 | development releases. See L<perl590delta>, L<perl591delta>, |
9 | L<perl592delta>, L<perl593delta> and L<perl594delta> for the differences |
10 | between 5.8.0 and 5.9.4. |
11 | |
12 | =head1 Incompatible Changes |
13 | |
20ee07fb |
14 | =head2 Tainting and printf |
15 | |
16 | When perl is run under taint mode, C<printf()> and C<sprintf()> will now |
3f10c77a |
17 | reject any tainted format argument. (Rafael Garcia-Suarez) |
20ee07fb |
18 | |
54a37cc6 |
19 | =head2 undef and signal handlers |
20 | |
21 | Undefining or deleting a signal handler via C<undef $SIG{FOO}> is now |
97f820fb |
22 | equivalent to setting it to C<'DEFAULT'>. (Rafael) |
23 | |
24 | =head2 strictures and array/hash dereferencing in defined() |
25 | |
26 | C<defined @$foo> and C<defined %$bar> are now subject to C<strict 'refs'> |
27 | (that is, C<$foo> and C<$bar> shall be proper references there.) |
28 | (Nicholas Clark) |
29 | |
30 | (However, C<defined(@foo)> and C<defined(%bar)> are discouraged constructs |
31 | anyway.) |
54a37cc6 |
32 | |
74bb26f2 |
33 | =head2 C<(?p{})> has been removed |
34 | |
35 | The regular expression construct C<(?p{})>, which was deprecated in perl |
36 | 5.8, has been removed. Use C<(??{})> instead. (Rafael) |
37 | |
73966613 |
38 | =head2 Removal of the bytecode compiler and of perlcc |
39 | |
40 | C<perlcc>, the byteloader and the supporting modules (B::C, B::CC, |
41 | B::Bytecode, etc.) are no longer distributed with the perl sources. Those |
42 | experimental tools have never worked reliably, and, due to the lack of |
43 | volunteers to keep them in line with the perl interpreter developments, it |
44 | was decided to remove them instead of shipping a broken version of those. |
45 | The last version of those modules can be found with perl 5.9.4. |
46 | |
47 | However the B compiler framework stays supported in the perl core, as with |
48 | the more useful modules it has permitted (among others, B::Deparse and |
49 | B::Concise). |
50 | |
51 | =head2 Removal of the JPL |
52 | |
53 | The JPL (Java-Perl Linguo) has been removed from the perl sources tarball. |
54 | |
afa2ea4a |
55 | =head2 Recursive inheritance detected earlier |
56 | |
57 | Perl will now immediately throw an exception if you modify any package's |
58 | C<@ISA> in such a way that it would cause recursive inheritance. |
59 | |
60 | Previously, the exception would not occur until Perl attempted to make |
61 | use of the recursive inheritance while resolving a method or doing a |
62 | C<$foo-E<gt>isa($bar)> lookup. |
63 | |
f6eae373 |
64 | =head1 Core Enhancements |
65 | |
072f65b4 |
66 | =head2 Regular expressions |
67 | |
68 | =over 4 |
69 | |
70 | =item Recursive Patterns |
71 | |
72 | It is now possible to write recursive patterns without using the C<(??{})> |
73 | construct. This new way is more efficient, and in many cases easier to |
74 | read. |
75 | |
76 | Each capturing parenthesis can now be treated as an independent pattern |
77 | that can be entered by using the C<(?PARNO)> syntax (C<PARNO> standing for |
78 | "parenthesis number"). For example, the following pattern will match |
79 | nested balanced angle brackets: |
80 | |
81 | / |
82 | ^ # start of line |
83 | ( # start capture buffer 1 |
84 | < # match an opening angle bracket |
85 | (?: # match one of: |
86 | (?> # don't backtrack over the inside of this group |
87 | [^<>]+ # one or more non angle brackets |
88 | ) # end non backtracking group |
89 | | # ... or ... |
90 | (?1) # recurse to bracket 1 and try it again |
91 | )* # 0 or more times. |
92 | > # match a closing angle bracket |
93 | ) # end capture buffer one |
94 | $ # end of line |
95 | /x |
96 | |
97 | Note, users experienced with PCRE will find that the Perl implementation |
98 | of this feature differs from the PCRE one in that it is possible to |
99 | backtrack into a recursed pattern, whereas in PCRE the recursion is |
73966613 |
100 | atomic or "possessive" in nature. (Yves Orton) |
072f65b4 |
101 | |
102 | =item Named Capture Buffers |
103 | |
104 | It is now possible to name capturing parenthesis in a pattern and refer to |
105 | the captured contents by name. The naming syntax is C<< (?<NAME>....) >>. |
106 | It's possible to backreference to a named buffer with the C<< \k<NAME> >> |
97f820fb |
107 | syntax. In code, the new magical hashes C<%+> and C<%-> can be used to |
108 | access the contents of the capture buffers. |
072f65b4 |
109 | |
110 | Thus, to replace all doubled chars, one could write |
111 | |
112 | s/(?<letter>.)\k<letter>/$+{letter}/g |
113 | |
97f820fb |
114 | Only buffers with defined contents will be "visible" in the C<%+> hash, so |
072f65b4 |
115 | it's possible to do something like |
116 | |
117 | foreach my $name (keys %+) { |
118 | print "content of buffer '$name' is $+{$name}\n"; |
119 | } |
120 | |
97f820fb |
121 | The C<%-> hash is a bit more complete, since it will contain array refs |
122 | holding values from all capture buffers similarly named, if there should |
123 | be many of them. |
124 | |
125 | C<%+> and C<%-> are implemented as tied hashes through the new module |
80305961 |
126 | C<Tie::Hash::NamedCapture>. |
97f820fb |
127 | |
072f65b4 |
128 | Users exposed to the .NET regex engine will find that the perl |
129 | implementation differs in that the numerical ordering of the buffers |
130 | is sequential, and not "unnamed first, then named". Thus in the pattern |
131 | |
132 | /(A)(?<B>B)(C)(?<D>D)/ |
133 | |
134 | $1 will be 'A', $2 will be 'B', $3 will be 'C' and $4 will be 'D' and not |
135 | $1 is 'A', $2 is 'C' and $3 is 'B' and $4 is 'D' that a .NET programmer |
73966613 |
136 | would expect. This is considered a feature. :-) (Yves Orton) |
072f65b4 |
137 | |
b9b4dddf |
138 | =item Possessive Quantifiers |
139 | |
ee9b8eae |
140 | Perl now supports the "possessive quantifier" syntax of the "atomic match" |
b9b4dddf |
141 | pattern. Basically a possessive quantifier matches as much as it can and never |
ee9b8eae |
142 | gives any back. Thus it can be used to control backtracking. The syntax is |
b9b4dddf |
143 | similar to non-greedy matching, except instead of using a '?' as the modifier |
144 | the '+' is used. Thus C<?+>, C<*+>, C<++>, C<{min,max}+> are now legal |
73966613 |
145 | quantifiers. (Yves Orton) |
b9b4dddf |
146 | |
24b23f37 |
147 | =item Backtracking control verbs |
148 | |
3f10c77a |
149 | The regex engine now supports a number of special-purpose backtrack |
5d458dd8 |
150 | control verbs: (*THEN), (*PRUNE), (*MARK), (*SKIP), (*COMMIT), (*FAIL) |
c74340f9 |
151 | and (*ACCEPT). See L<perlre> for their descriptions. (Yves Orton) |
152 | |
153 | =item Relative backreferences |
154 | |
2bf803e2 |
155 | A new syntax C<\g{N}> or C<\gN> where "N" is a decimal integer allows a |
156 | safer form of back-reference notation as well as allowing relative |
157 | backreferences. This should make it easier to generate and embed patterns |
3f10c77a |
158 | that contain backreferences. See L<perlre/"Capture buffers">. (Yves Orton) |
24b23f37 |
159 | |
97f820fb |
160 | =item C<\K> escape |
ee9b8eae |
161 | |
162 | The functionality of Jeff Pinyan's module Regexp::Keep has been added to |
163 | the core. You can now use in regular expressions the special escape C<\K> |
164 | as a way to do something like floating length positive lookbehind. It is |
165 | also useful in substitutions like: |
166 | |
167 | s/(foo)bar/$1/g |
168 | |
169 | that can now be converted to |
170 | |
171 | s/foo\Kbar//g |
172 | |
97f820fb |
173 | which is much more efficient. (Yves Orton) |
ee9b8eae |
174 | |
41b9272f |
175 | =item Vertical and horizontal whitespace, and linebreak |
176 | |
177 | Regular expressions now recognize the C<\v> and C<\h> escapes, that match |
178 | vertical and horizontal whitespace, respectively. C<\V> and C<\H> |
179 | logically match their complements. |
180 | |
329d35d1 |
181 | C<\R> matches a generic linebreak, that is, vertical whitespace, plus |
41b9272f |
182 | the multi-character sequence C<"\x0D\x0A">. |
183 | |
75c442e4 |
184 | =back |
185 | |
d5494b07 |
186 | =head2 The C<_> prototype |
187 | |
188 | A new prototype character has been added. C<_> is equivalent to C<$> (it |
189 | denotes a scalar), but defaults to C<$_> if the corresponding argument |
190 | isn't supplied. Due to the optional nature of the argument, you can only |
191 | use it at the end of a prototype, or before a semicolon. |
192 | |
73966613 |
193 | This has a small incompatible consequence: the prototype() function has |
194 | been adjusted to return C<_> for some built-ins in appropriate cases (for |
97f820fb |
195 | example, C<prototype('CORE::rmdir')>). (Rafael) |
73966613 |
196 | |
49f595a6 |
197 | =head2 UNITCHECK blocks |
198 | |
199 | C<UNITCHECK>, a new special code block has been introduced, in addition to |
200 | C<BEGIN>, C<CHECK>, C<INIT> and C<END>. |
201 | |
202 | C<CHECK> and C<INIT> blocks, while useful for some specialized purposes, |
203 | are always executed at the transition between the compilation and the |
204 | execution of the main program, and thus are useless whenever code is |
205 | loaded at runtime. On the other hand, C<UNITCHECK> blocks are executed |
206 | just after the unit which defined them has been compiled. See L<perlmod> |
207 | for more information. (Alex Gough) |
208 | |
5a093634 |
209 | =head2 readpipe() is now overridable |
210 | |
211 | The built-in function readpipe() is now overridable. Overriding it permits |
74bb26f2 |
212 | also to override its operator counterpart, C<qx//> (a.k.a. C<``>). |
213 | Moreover, it now defaults to C<$_> if no argument is provided. (Rafael) |
214 | |
215 | =head2 default argument for readline() |
216 | |
217 | readline() now defaults to C<*ARGV> if no argument is provided. (Rafael) |
5a093634 |
218 | |
73966613 |
219 | =head2 UCD 5.0.0 |
220 | |
221 | The copy of the Unicode Character Database included in Perl 5.9 has |
222 | been updated to version 5.0.0. |
223 | |
97f820fb |
224 | =head2 Smart match |
225 | |
226 | The smart match operator (C<~~>) is now available by default (you don't |
227 | need to enable it with C<use feature> any longer). (Michael G Schwern) |
228 | |
74bb26f2 |
229 | =head2 Implicit loading of C<feature> |
230 | |
231 | The C<feature> pragma is now implicitly loaded when you require a minimal |
232 | perl version (with the C<use VERSION> construct) greater than, or equal |
233 | to, 5.9.5. |
234 | |
f6eae373 |
235 | =head1 Modules and Pragmas |
236 | |
74bb26f2 |
237 | =head2 New Pragma, C<mro> |
238 | |
239 | A new pragma, C<mro> (for Method Resolution Order) has been added. It |
240 | permits to switch, on a per-class basis, the algorithm that perl uses to |
241 | find inherited methods in case of a mutiple inheritance hierachy. The |
242 | default MRO hasn't changed (DFS, for Depth First Search). Another MRO is |
243 | available: the C3 algorithm. See L<mro> for more information. |
244 | (Brandon Black) |
245 | |
3284ac36 |
246 | =head2 bignum, bigint, bigrat |
247 | |
248 | The three numeric pragmas C<bignum>, C<bigint> and C<bigrat> are now |
249 | lexically scoped. (Tels) |
250 | |
f6eae373 |
251 | =head2 New Core Modules |
252 | |
73966613 |
253 | =over 4 |
254 | |
255 | =item * |
256 | |
257 | C<Locale::Maketext::Simple>, needed by CPANPLUS, is a simple wrapper around |
258 | C<Locale::Maketext::Lexicon>. Note that C<Locale::Maketext::Lexicon> isn't |
259 | included in the perl core; the behaviour of C<Locale::Maketext::Simple> |
260 | gracefully degrades when the later isn't present. |
261 | |
262 | =item * |
263 | |
264 | C<Params::Check> implements a generic input parsing/checking mechanism. It |
265 | is used by CPANPLUS. |
266 | |
5a093634 |
267 | =item * |
268 | |
269 | C<Term::UI> simplifies the task to ask questions at a terminal prompt. |
270 | |
271 | =item * |
272 | |
273 | C<Object::Accessor> provides an interface to create per-object accessors. |
274 | |
97f820fb |
275 | =item * |
276 | |
277 | C<Module::Pluggable> is a simple framework to create modules that accept |
278 | pluggable sub-modules. |
279 | |
280 | =item * |
281 | |
282 | C<Module::Load::Conditional> provides simple ways to query and possibly |
283 | load installed modules. |
284 | |
285 | =item * |
286 | |
287 | C<Time::Piece> provides an object oriented interface to time functions, |
288 | overriding the built-ins localtime() and gmtime(). |
289 | |
290 | =item * |
291 | |
292 | C<IPC::Cmd> helps to find and run external commands, possibly |
293 | interactively. |
294 | |
295 | =item * |
296 | |
297 | C<File::Fetch> provide a simple generic file fetching mechanism. |
298 | |
299 | =item * |
300 | |
301 | C<Archive::Extract> is a generic archive extraction mechanism |
302 | for F<.tar> (plain, gziped or bzipped) or F<.zip> files. |
303 | |
74bb26f2 |
304 | =item * |
305 | |
306 | C<CPANPLUS> provides an API and a command-line tool to access the CPAN |
307 | mirrors. |
308 | |
73966613 |
309 | =back |
310 | |
d5494b07 |
311 | =head2 Module changes |
312 | |
313 | =over 4 |
314 | |
ddf4dafe |
315 | =item C<assertions> |
316 | |
317 | The C<assertions> pragma, its submodules C<assertions::activate> and |
318 | C<assertions::compat> and the B<-A> command-line switch have been removed. |
319 | The interface was not judged mature enough for inclusion in a stable |
320 | release. |
321 | |
d5494b07 |
322 | =item C<base> |
323 | |
324 | The C<base> pragma now warns if a class tries to inherit from itself. |
97f820fb |
325 | (Curtis "Ovid" Poe) |
d5494b07 |
326 | |
74bb26f2 |
327 | =item C<strict> and C<warnings> |
328 | |
329 | C<strict> and C<warnings> will now complain loudly if they are loaded via |
330 | incorrect casing (as in C<use Strict;>). (Johan Vromans) |
331 | |
18857c0b |
332 | =item C<warnings> |
333 | |
334 | The C<warnings> pragma doesn't load C<Carp> anymore. That means that code |
335 | that used C<Carp> routines without having loaded it at compile time might |
336 | need to be adjusted; typically, the following (faulty) code won't work |
337 | anymore, and will require parentheses to be added after the function name: |
338 | |
339 | use warnings; |
340 | require Carp; |
341 | Carp::confess "argh"; |
342 | |
97f820fb |
343 | =item C<less> |
344 | |
345 | C<less> now does something useful (or at least it tries to). In fact, it |
346 | has been turned into a lexical pragma. So, in your modules, you can now |
347 | test whether your users have requested to use less CPU, or less memory, |
348 | less magic, or maybe even less fat. See L<less> for more. (Joshua ben |
349 | Jore) |
350 | |
3f10c77a |
351 | =item C<Attribute::Handlers> |
352 | |
353 | C<Attribute::Handlers> can now report the caller's file and line number. |
354 | (David Feldman) |
355 | |
97f820fb |
356 | =item C<B::Lint> |
357 | |
358 | C<B::Lint> is now based on C<Module::Pluggable>, and so can be extended |
359 | with plugins. (Joshua ben Jore) |
360 | |
361 | =item C<B> |
362 | |
363 | It's now possible to access the lexical pragma hints (C<%^H>) by using the |
364 | method B::COP::hints_hash(). It returns a C<B::RHE> object, which in turn |
365 | can be used to get a hash reference via the method B::RHE::HASH(). (Joshua |
366 | ben Jore) |
367 | |
368 | =for p5p XXX document this in B.pm too |
369 | |
ab4e6221 |
370 | =item C<Thread> |
371 | |
372 | As the old 5005thread threading model has been removed, in favor of the |
373 | ithreads scheme, the C<Thread> module is now a compatibility wrapper, to |
374 | be used in old code only. |
375 | |
d5494b07 |
376 | =back |
377 | |
f6eae373 |
378 | =head1 Utility Changes |
379 | |
74bb26f2 |
380 | =head2 C<cpanp> |
381 | |
382 | C<cpanp>, the CPANPLUS shell, has been added. (C<cpanp-run-perl>, an |
383 | helper for CPANPLUS operation, has been added too, but isn't intended for |
384 | direct use). |
385 | |
8a499140 |
386 | =head2 C<cpan2dist> |
387 | |
388 | C<cpan2dist> is a new utility, that comes with CPANPLUS. It's a tool to |
389 | create distributions (or packages) from CPAN modules. |
390 | |
74bb26f2 |
391 | =head2 C<pod2html> |
392 | |
393 | The output of C<pod2html> has been enhanced to be more customizable via |
394 | CSS. Some formatting problems were also corrected. (Jari Aalto) |
395 | |
f6eae373 |
396 | =head1 Documentation |
397 | |
74bb26f2 |
398 | =head2 New manpage, perlunifaq |
399 | |
400 | A new manual page, L<perlunifaq> (the Perl Unicode FAQ), has been added |
401 | (Juerd Waalboer). |
402 | |
f6eae373 |
403 | =head1 Performance Enhancements |
404 | |
405 | =head1 Installation and Configuration Improvements |
406 | |
73966613 |
407 | =head2 C++ compatibility |
408 | |
409 | Efforts have been made to make perl and the core XS modules compilable |
410 | with various C++ compilers (although the situation is not perfect with |
411 | some of the compilers on some of the platforms tested.) |
412 | |
ab4e6221 |
413 | =head2 Visual C++ |
414 | |
415 | Perl now can be compiled with Microsoft Visual C++ 2005. |
416 | |
3f10c77a |
417 | =head2 Static build on Win32 |
418 | |
419 | It's now possible to build a C<perl-static.exe> that doesn't depend |
420 | on C<perl59.dll> on Win32. See the Win32 makefiles for details. |
e3c82801 |
421 | (Vadim Konovalov) |
3f10c77a |
422 | |
ab4e6221 |
423 | =head2 C<d_pseudofork> |
424 | |
425 | A new configuration variable, available as C<$Config{d_pseudofork}> in |
426 | the L<Config> module, has been added, to distinguish real fork() support |
427 | from fake pseudofork used on Windows platforms. |
428 | |
73966613 |
429 | =head2 Ports |
430 | |
431 | Perl has been reported to work on MidnightBSD. |
432 | |
f6eae373 |
433 | =head1 Selected Bug Fixes |
434 | |
49f595a6 |
435 | PerlIO::scalar will now prevent writing to read-only scalars. Moreover, |
436 | seek() is now supported with PerlIO::scalar-based filehandles, the |
97f820fb |
437 | underlying string being zero-filled as needed. (Rafael, Jarkko Hietaniemi) |
73966613 |
438 | |
439 | study() never worked for UTF-8 strings, but could lead to false results. |
440 | It's now a no-op on UTF-8 data. (Yves Orton) |
441 | |
49f595a6 |
442 | The signals SIGILL, SIGBUS and SIGSEGV are now always delivered in an |
443 | "unsafe" manner (contrary to other signals, that are deferred until the |
444 | perl interpreter reaches a reasonably stable state; see |
97f820fb |
445 | L<perlipc/"Deferred Signals (Safe Signals)">). (Rafael) |
49f595a6 |
446 | |
5a093634 |
447 | When a module or a file is loaded through an @INC-hook, and when this hook |
448 | has set a filename entry in %INC, __FILE__ is now set for this module |
97f820fb |
449 | accordingly to the contents of that %INC entry. (Rafael) |
450 | |
451 | The C<-w> and C<-t> switches can now be used together without messing |
452 | up what categories of warnings are activated or not. (Rafael) |
5a093634 |
453 | |
74bb26f2 |
454 | Duping a filehandle which has the C<:utf8> PerlIO layer set will now |
455 | properly carry that layer on the duped filehandle. (Rafael) |
456 | |
37a7450d |
457 | Localizing an hash element whose key was given as a variable didn't work |
21e0a455 |
458 | correctly if the variable was changed while the local() was in effect (as |
459 | in C<local $h{$x}; ++$x>). (Bo Lindbergh) |
37a7450d |
460 | |
f6eae373 |
461 | =head1 New or Changed Diagnostics |
462 | |
74bb26f2 |
463 | =head2 Deprecations |
464 | |
465 | Two deprecation warnings have been added: (Rafael) |
466 | |
467 | Opening dirhandle %s also as a file |
468 | Opening filehandle %s also as a directory |
469 | |
f6eae373 |
470 | =head1 Changed Internals |
471 | |
73966613 |
472 | The anonymous hash and array constructors now take 1 op in the optree |
473 | instead of 3, now that pp_anonhash and pp_anonlist return a reference to |
474 | an hash/array when the op is flagged with OPf_SPECIAL (Nicholas Clark). |
475 | |
97f820fb |
476 | =for p5p XXX have we some docs on how to create regexp engine plugins, since that's now possible ? (perlreguts) |
477 | |
478 | =for p5p XXX new BIND SV type, #29544, #29642 |
479 | |
f6eae373 |
480 | =head1 Known Problems |
481 | |
482 | =head2 Platform Specific Problems |
483 | |
484 | =head1 Reporting Bugs |
485 | |
486 | If you find what you think is a bug, you might check the articles |
487 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
488 | bug database at http://rt.perl.org/rt3/ . There may also be |
489 | information at http://www.perl.org/ , the Perl Home Page. |
490 | |
491 | If you believe you have an unreported bug, please run the B<perlbug> |
492 | program included with your release. Be sure to trim your bug down |
493 | to a tiny but sufficient test case. Your bug report, along with the |
494 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
495 | analysed by the Perl porting team. |
496 | |
497 | =head1 SEE ALSO |
498 | |
499 | The F<Changes> file for exhaustive details on what changed. |
500 | |
501 | The F<INSTALL> file for how to build Perl. |
502 | |
503 | The F<README> file for general stuff. |
504 | |
505 | The F<Artistic> and F<Copying> files for copyright information. |
506 | |
507 | =cut |