Commit | Line | Data |
496c75d0 |
1 | =head1 NAME |
2 | |
70693193 |
3 | perl593delta - what is new for perl v5.9.3 |
496c75d0 |
4 | |
5 | =head1 DESCRIPTION |
6 | |
7 | This document describes differences between the 5.9.2 and the 5.9.3 |
d7f8936a |
8 | development releases. See L<perl590delta>, L<perl591delta> and |
496c75d0 |
9 | L<perl592delta> for the differences between 5.8.0 and 5.9.2. |
10 | |
11 | =head1 Incompatible Changes |
12 | |
2770530f |
13 | =head2 Parsing of C<-f _> |
14 | |
35cdf2f9 |
15 | The identifier C<_> is now forced to be a bareword after a filetest |
16 | operator. This solves a number of misparsing issues when a global C<_> |
17 | subroutine is defined. |
2770530f |
18 | |
78ef48ad |
19 | =head2 C<mkdir()> |
20 | |
21 | C<mkdir()> without arguments now defaults to C<$_>. |
22 | |
23 | =head2 Magic goto and eval |
24 | |
25 | The construct C<eval { goto &foo }> is now disallowed. (Note that the |
26 | similar construct, but with C<eval("")> instead, was already forbidden.) |
27 | |
28 | =head2 C<$#> has been removed |
29 | |
30 | The deprecated C<$#> variable (output format for numbers) has been |
31 | removed. A new warning, C<$# is no longer supported>, has been added. |
32 | |
33 | =head2 C<:unique> |
34 | |
8f7e634e |
35 | The C<:unique> attribute has been made a no-op, since its current |
78ef48ad |
36 | implementation was fundamentally flawed and not threadsafe. |
37 | |
e603cea9 |
38 | =head2 Scoping of the C<sort> pragma |
39 | |
40 | The C<sort> pragma is now lexically scoped. Its effect used to be global. |
41 | |
496c75d0 |
42 | =head1 Core Enhancements |
43 | |
e603cea9 |
44 | =head2 The C<feature> pragma |
45 | |
46 | The C<feature> pragma is used to enable new syntax that would break Perl's |
35cdf2f9 |
47 | backwards-compatibility with older releases of the language. It's a lexical |
e603cea9 |
48 | pragma, like C<strict> or C<warnings>. |
49 | |
50 | Currently the following new features are available: C<switch> (adds a |
51 | switch statement), C<~~> (adds a Perl 6-like smart match operator), C<say> |
52 | (adds a C<say> built-in function), and C<err> (adds an C<err> keyword). |
53 | Those features are described below. |
54 | |
55 | Note that C<err> low-precedence defined-or operator used to be enabled by |
35cdf2f9 |
56 | default (although as a weak keyword, meaning that any function would |
57 | override it). It's now only recognized when explicitly turned on (and is |
58 | then a regular keyword). |
59 | |
60 | Those features, and the C<feature> pragma itself, have been contributed by |
61 | Robin Houston. |
e603cea9 |
62 | |
78ef48ad |
63 | =head2 Switch and Smart Match operator |
64 | |
35cdf2f9 |
65 | Perl 5 now has a switch statement. It's available when C<use feature |
66 | 'switch'> is in effect. This feature introduces three new keywords, |
a8ca0236 |
67 | C<given>, C<when>, and C<default>: |
35cdf2f9 |
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 | |
76 | A more complete description of how Perl matches the switch variable |
77 | against the C<when> conditions is given in L<perlsyn/"Switch statements">. |
78 | |
79 | This kind of match is called I<smart match>, and it's also possible to use |
80 | it outside of switch statements, via the new C<~~> operator (enabled via |
81 | the C<use feature '~~'> directive). See L<perlsyn/"Smart matching in |
82 | detail">. |
e603cea9 |
83 | |
78ef48ad |
84 | =head2 C<say()> |
85 | |
409c2c5b |
86 | say() is a new built-in, only available when C<use feature 'say'> is in |
e603cea9 |
87 | effect, that is similar to print(), but that implicitly appends a newline |
88 | to the printed string. See L<perlfunc/say>. |
89 | |
78ef48ad |
90 | =head2 C<CLONE_SKIP()> |
91 | |
92 | Perl has now support for the C<CLONE_SKIP> special subroutine. Like |
93 | C<CLONE>, C<CLONE_SKIP> is called once per package; however, it is called |
94 | just before cloning starts, and in the context of the parent thread. If it |
95 | returns a true value, then no objects of that class will be cloned. See |
35cdf2f9 |
96 | L<perlmod> for details. (Contributed by Dave Mitchell.) |
78ef48ad |
97 | |
98 | =head2 C<${^CHILD_ERROR_NATIVE}> |
99 | |
100 | A new internal variable, C<${^CHILD_ERROR_NATIVE}>, gives the native |
101 | status returned by the last pipe close, backtick command, successful call |
102 | to wait() or waitpid(), or from the system() operator. See L<perlrun> for |
35cdf2f9 |
103 | details. (Contributed by Gisle Aas.) |
78ef48ad |
104 | |
105 | =head2 Assertions |
106 | |
107 | The support for assertions, introduced in perl 5.9.0, has been improved. |
108 | The syntax for the C<-A> command-line switch has changed; it now accepts |
109 | an optional module name, defaulting to C<assertions::activate>. See |
35cdf2f9 |
110 | L<assertions> and L<perlrun>. (Contributed by Salvador Fandiño García.) |
78ef48ad |
111 | |
112 | =head2 Unicode Character Database 4.1.0 |
113 | |
114 | The copy of the Unicode Character Database included in Perl 5.9 has |
115 | been updated to 4.1.0. |
116 | |
8f7e634e |
117 | =head2 C<no VERSION> |
118 | |
119 | You can now use C<no> followed by a version number to specify that you |
c986422f |
120 | want to use a version of perl older than the specified one. |
8f7e634e |
121 | |
e603cea9 |
122 | =head2 Recursive sort subs |
123 | |
ebab5fdd |
124 | You can now use recursive subroutines with sort(), thanks to Robin Houston. |
e603cea9 |
125 | |
126 | =head2 Effect of pragmas in eval |
127 | |
128 | The compile-time value of the C<%^H> hint variable can now propagate into |
129 | eval("")uated code. This makes it more useful to implement lexical |
130 | pragmas. |
131 | |
132 | As a side-effect of this, the overloaded-ness of constants now propagates |
133 | into eval(""). |
134 | |
135 | =head2 New B<-E> command-line switch |
136 | |
137 | B<-E> is equivalent to B<-e>, but it implicitly enables all |
35cdf2f9 |
138 | optional features (like C<use feature ":5.10">). |
e603cea9 |
139 | |
ebab5fdd |
140 | =head2 C<chdir>, C<chmod> and C<chown> on filehandles |
141 | |
142 | C<chdir>, C<chmod> and C<chown> can now work on filehandles as well as |
143 | filenames, if the system supports respectively C<fchdir>, C<fchmod> and |
144 | C<fchown>, thanks to a patch provided by Gisle Aas. |
145 | |
35cdf2f9 |
146 | =head2 OS groups |
147 | |
148 | C<$(> and C<$)> now return groups in the order where the OS returns them, |
149 | thanks to Gisle Aas. This wasn't previously the case. |
150 | |
496c75d0 |
151 | =head1 Modules and Pragmata |
152 | |
35cdf2f9 |
153 | =head2 New Core Modules |
154 | |
155 | =over 4 |
156 | |
157 | =item * |
158 | |
159 | A new pragma, C<feature>, has been added; see above in L</"Core |
160 | Enhancements">. |
161 | |
162 | =item * |
163 | |
a8ca0236 |
164 | C<assertions::compat>, also available on CPAN, allows the use of assertions on |
35cdf2f9 |
165 | perl versions prior to 5.9.0 (that is the first one to natively support |
166 | them). |
167 | |
168 | =item * |
169 | |
170 | C<Math::BigInt::FastCalc> is an XS-enabled, and thus faster, version of |
171 | C<Math::BigInt::Calc>. |
172 | |
173 | =item * |
174 | |
175 | C<Compress::Zlib> is an interface to the zlib compression library. It |
176 | comes with a bundled version of zlib, so having a working zlib is not a |
177 | prerequisite to install it. It's used by C<Archive::Tar> (see below). |
178 | |
179 | =item * |
78ef48ad |
180 | |
35cdf2f9 |
181 | C<IO::Zlib> is an C<IO::>-style interface to C<Compress::Zlib>. |
e603cea9 |
182 | |
35cdf2f9 |
183 | =item * |
78ef48ad |
184 | |
35cdf2f9 |
185 | C<Archive::Tar> is a module to manipulate C<tar> archives. |
78ef48ad |
186 | |
35cdf2f9 |
187 | =item * |
78ef48ad |
188 | |
35cdf2f9 |
189 | C<Digest::SHA> is a module used to calculate many types of SHA digests, |
190 | has been included for SHA support in the CPAN module. |
78ef48ad |
191 | |
473aa102 |
192 | =item * |
193 | |
194 | C<ExtUtils::CBuilder> and C<ExtUtils::ParseXS> have been added. |
195 | |
35cdf2f9 |
196 | =back |
78ef48ad |
197 | |
496c75d0 |
198 | =head1 Utility Changes |
199 | |
78ef48ad |
200 | =head2 C<ptar> |
201 | |
35cdf2f9 |
202 | C<ptar> is a pure perl implementation of C<tar>, that comes with |
203 | C<Archive::Tar>. |
204 | |
8716aee0 |
205 | =head2 C<ptardiff> |
206 | |
207 | C<ptardiff> is a small script used to generate a diff between the contents |
208 | of a tar archive and a directory tree. Like C<ptar>, it comes with |
209 | C<Archive::Tar>. |
210 | |
35cdf2f9 |
211 | =head2 C<shasum> |
212 | |
213 | This command-line utility, used to print or to check SHA digests, comes |
214 | with the new C<Digest::SHA> module. |
215 | |
216 | =head2 C<h2xs> enhancements |
217 | |
a8ca0236 |
218 | C<h2xs> implements a new option C<--use-xsloader> to force use of |
35cdf2f9 |
219 | C<XSLoader> even in backwards compatible modules. |
220 | |
221 | The handling of authors' names that had apostrophes has been fixed. |
222 | |
223 | Any enums with negative values are now skipped. |
224 | |
225 | =head2 C<perlivp> enhancements |
226 | |
409c2c5b |
227 | C<perlivp> no longer checks for F<*.ph> files by default. Use the new C<-a> |
228 | option to run I<all> tests. |
35cdf2f9 |
229 | |
496c75d0 |
230 | =head1 Documentation |
231 | |
8f7e634e |
232 | =head2 Perl Glossary |
233 | |
234 | The L<perlglossary> manpage is a glossary of terms used in the Perl |
35cdf2f9 |
235 | documentation, technical and otherwise, kindly provided by O'Reilly Media, |
a8ca0236 |
236 | Inc. |
8f7e634e |
237 | |
cd8b8377 |
238 | L<perltodo> now lists a rough roadmap to Perl 5.10. |
239 | |
496c75d0 |
240 | =head1 Performance Enhancements |
241 | |
e603cea9 |
242 | =head2 XS-assisted SWASHGET |
243 | |
244 | Some pure-perl code that perl was using to retrieve Unicode properties and |
ffabe59c |
245 | transliteration mappings has been reimplemented in XS. |
e603cea9 |
246 | |
35cdf2f9 |
247 | =head2 Constant subroutines |
e603cea9 |
248 | |
e761a786 |
249 | The interpreter internals now support a far more memory efficient form of |
250 | inlineable constants. Storing a reference to a constant value in a symbol |
251 | table is equivalent to a full typeglob referencing a constant subroutine, |
252 | but using about 400 bytes less memory. This proxy constant subroutine is |
253 | automatically upgraded to a real typeglob with subroutine if necessary. |
254 | The approach taken is analogous to the existing space optimisation for |
255 | subroutine stub declarations, which are stored as plain scalars in place |
256 | of the full typeglob. |
257 | |
258 | Several of the core modules have been converted to use this feature for |
259 | their system dependent constants - as a result C<use POSIX;> now takes about |
260 | 200K less memory. |
e603cea9 |
261 | |
ebab5fdd |
262 | =head2 C<PERL_DONT_CREATE_GVSV> |
263 | |
264 | The new compilation flag C<PERL_DONT_CREATE_GVSV>, introduced as an option |
265 | in perl 5.8.8, is turned on by default in perl 5.9.3. It prevents perl |
266 | from creating an empty scalar with every new typeglob. See L<perl588delta> |
267 | for details. |
268 | |
269 | =head2 Weak references are cheaper |
270 | |
271 | Weak reference creation is now I<O(1)> rather than I<O(n)>, courtesy of |
272 | Nicholas Clark. Weak reference deletion remains I<O(n)>, but if deletion only |
273 | happens at program exit, it may be skipped completely. |
274 | |
275 | =head2 sort() enhancements |
276 | |
277 | Salvador Fandiño provided improvements to reduce the memory usage of C<sort> |
278 | and to speed up some cases. |
279 | |
496c75d0 |
280 | =head1 Installation and Configuration Improvements |
281 | |
35cdf2f9 |
282 | =head2 Compilation improvements |
283 | |
284 | Parallel makes should work properly now, although there may still be problems |
285 | if C<make test> is instructed to run in parallel. |
286 | |
287 | Building with Borland's compilers on Win32 should work more smoothly. In |
288 | particular Steve Hay has worked to side step many warnings emitted by their |
289 | compilers and at least one C compiler internal error. |
290 | |
291 | Perl extensions on Windows now can be statically built into the Perl DLL, |
292 | thanks to a work by Vadim Konovalov. |
293 | |
78ef48ad |
294 | =head2 New Or Improved Platforms |
295 | |
296 | Perl is being ported to Symbian OS. See L<perlsymbian> for more |
297 | information. |
298 | |
e603cea9 |
299 | The VMS port has been improved. See L<perlvms>. |
300 | |
301 | DynaLoader::dl_unload_file() now works on Windows. |
302 | |
303 | Portability of Perl on various recent compilers on Windows has been |
304 | improved (Borland C++, Visual C++ 7.0). |
305 | |
306 | =head2 New probes |
307 | |
35cdf2f9 |
308 | C<Configure> will now detect C<clearenv> and C<unsetenv>, thanks to a |
309 | patch from Alan Burlison. It will also probe for C<futimes> (and use it |
310 | internally if available), and whether C<sprintf> correctly returns the |
311 | length of the formatted string. |
e603cea9 |
312 | |
78ef48ad |
313 | =head2 Module auxiliary files |
314 | |
315 | README files and changelogs for CPAN modules bundled with perl are no |
316 | longer installed. |
317 | |
496c75d0 |
318 | =head1 Selected Bug Fixes |
319 | |
2e6a7e23 |
320 | =head2 C<defined $$x> |
321 | |
322 | C<use strict "refs"> was ignoring taking a hard reference in an argument |
323 | to defined(), as in : |
324 | |
325 | use strict "refs"; |
326 | my $x = "foo"; |
327 | if (defined $$x) {...} |
328 | |
329 | This now correctly produces the run-time error C<Can't use string as a |
330 | SCALAR ref while "strict refs" in use>. (However, C<defined @$foo> and |
331 | C<defined %$foo> are still allowed. Those constructs are discouraged |
332 | anyway.) |
333 | |
e603cea9 |
334 | =head2 Calling CORE::require() |
335 | |
336 | CORE::require() and CORE::do() were always parsed as require() and do() |
409c2c5b |
337 | when they were overridden. This is now fixed. |
e603cea9 |
338 | |
339 | =head2 Subscripts of slices |
340 | |
341 | You can now use a non-arrowed form for chained subscripts after a list |
342 | slice, like in: |
343 | |
344 | ({foo => "bar"})[0]{foo} |
345 | |
346 | This used to be a syntax error; a C<< -> >> was required. |
347 | |
348 | =head2 Remove over-optimisation |
349 | |
350 | Perl 5.9.2 introduced a change so that assignments of C<undef> to a |
351 | scalar, or of an empty list to an array or a hash, were optimised out. As |
352 | this could cause problems when C<goto> jumps were involved, this change |
353 | was backed out. |
354 | |
355 | =head2 sprintf() fixes |
356 | |
357 | Using the sprintf() function with some formats could lead to a buffer |
358 | overflow in some specific cases. This has been fixed, along with several |
cd8b8377 |
359 | other bugs, notably in bounds checking. |
e603cea9 |
360 | |
35cdf2f9 |
361 | In related fixes, it was possible for badly written code that did not follow |
362 | the documentation of C<Sys::Syslog> to have formatting vulnerabilities. |
363 | C<Sys::Syslog> has been changed to protect people from poor quality third |
364 | party code. |
365 | |
366 | =head2 no warnings 'category' works correctly with -w |
367 | |
368 | Previously when running with warnings enabled globally via C<-w>, selective |
369 | disabling of specific warning categories would actually turn off all warnings. |
370 | This is now fixed; now C<no warnings 'io';> will only turn off warnings in the |
371 | C<io> class. Previously it would erroneously turn off all warnings. |
e603cea9 |
372 | |
78ef48ad |
373 | =head2 Smaller fixes |
374 | |
375 | =over 4 |
376 | |
377 | =item * |
378 | |
379 | C<FindBin> now works better with directories where access rights are more |
380 | restrictive than usual. |
381 | |
382 | =item * |
383 | |
e603cea9 |
384 | Several memory leaks in ithreads were closed. Also, ithreads were made |
385 | less memory-intensive. |
78ef48ad |
386 | |
387 | =item * |
388 | |
ebab5fdd |
389 | Trailing spaces are now trimmed from C<$!> and C<$^E>. |
390 | |
391 | =item * |
392 | |
393 | Operations that require perl to read a process' list of groups, such as reads |
394 | of C<$(> and C<$)>, now dynamically allocate memory rather than using a |
395 | fixed sized array. The fixed size array could cause C stack exhaustion on |
396 | systems configured to use large numbers of groups. |
397 | |
398 | =item * |
399 | |
78ef48ad |
400 | C<PerlIO::scalar> now works better with non-default C<$/> settings. |
401 | |
402 | =item * |
403 | |
cd8b8377 |
404 | The C<x> repetition operator is now able to operate on C<qw//> lists. This |
405 | used to raise a syntax error. |
78ef48ad |
406 | |
e603cea9 |
407 | =item * |
408 | |
409 | The debugger now traces correctly execution in eval("")uated code that |
410 | contains #line directives. |
411 | |
412 | =item * |
413 | |
414 | The value of the C<open> pragma is no longer ignored for three-argument |
415 | opens. |
416 | |
417 | =item * |
418 | |
ebab5fdd |
419 | Perl will now use the C library calls C<unsetenv> and C<clearenv> if present |
420 | to delete keys from C<%ENV> and delete C<%ENV> entirely, thanks to a patch |
421 | from Alan Burlison. |
e603cea9 |
422 | |
78ef48ad |
423 | =back |
424 | |
425 | =head2 More Unicode Fixes |
426 | |
427 | =over 4 |
428 | |
429 | =item * |
430 | |
431 | chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement |
432 | character, unless when the C<bytes> pragma is in effect, where the low |
433 | eight bytes of the value are used. |
434 | |
ebab5fdd |
435 | =item * |
436 | |
437 | Some case insensitive matches between UTF-8 encoded data and 8 bit regexps, |
438 | and vice versa, could give malformed character warnings. These have been |
439 | fixed by Dave Mitchell and Yves Orton. |
440 | |
441 | =item * |
442 | |
443 | C<lcfirst> and C<ucfirst> could corrupt the string for certain cases where |
444 | the length UTF-8 encoding of the string in lower case, upper case or title |
445 | case differed. This was fixed by Nicholas Clark. |
446 | |
78ef48ad |
447 | =back |
448 | |
496c75d0 |
449 | =head1 New or Changed Diagnostics |
450 | |
78ef48ad |
451 | =head2 Attempt to set length of freed array |
452 | |
453 | This is a new warning, produced in situations like the following one: |
454 | |
455 | $r = do {my @a; \$#a}; |
456 | $$r = 503; |
457 | |
35cdf2f9 |
458 | =head2 Non-string passed as bitmask |
459 | |
460 | This is a new warning, produced when number has been passed as a argument to |
461 | select(), instead of a bitmask. |
462 | |
463 | # Wrong, will now warn |
464 | $rin = fileno(STDIN); |
465 | ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout); |
466 | |
467 | # Should be |
468 | $rin = ''; |
469 | vec($rin,fileno(STDIN),1) = 1; |
470 | ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout); |
471 | |
78ef48ad |
472 | =head2 Search pattern not terminated or ternary operator parsed as search pattern |
473 | |
474 | This syntax error indicates that the lexer couldn't find the final |
475 | delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in |
476 | this error message makes syntax diagnostic easier. |
477 | |
8f7e634e |
478 | =head2 "%s" variable %s masks earlier declaration |
479 | |
480 | This warning is now emitted in more consistent cases; in short, when one |
481 | of the declarations involved is a C<my> variable: |
482 | |
483 | my $x; my $x; # warns |
484 | my $x; our $x; # warns |
485 | our $x; my $x; # warns |
486 | |
a8ca0236 |
487 | On the other hand, the following: |
8f7e634e |
488 | |
489 | our $x; our $x; |
490 | |
491 | now gives a C<"our" variable %s redeclared> warning. |
492 | |
e603cea9 |
493 | =head2 readdir()/closedir()/etc. attempted on invalid dirhandle |
494 | |
495 | These new warnings are now emitted when a dirhandle is used but is |
496 | either closed or not really a dirhandle. |
497 | |
496c75d0 |
498 | =head1 Changed Internals |
499 | |
35cdf2f9 |
500 | In general, the source code of perl has been refactored, tied up, and |
501 | optimized in many places. Also, memory management and allocation has been |
502 | improved in a couple of points. |
503 | |
504 | Andy Lester supplied many improvements to determine which function |
505 | parameters and local variables could actually be declared C<const> to the C |
506 | compiler. Steve Peters provided new C<*_set> macros and reworked the core to |
507 | use these rather than assigning to macros in LVALUE context. |
508 | |
509 | Dave Mitchell improved the lexer debugging output under C<-DT>. |
78ef48ad |
510 | |
e603cea9 |
511 | A new file, F<mathoms.c>, has been added. It contains functions that are |
512 | no longer used in the perl core, but that remain available for binary or |
513 | source compatibility reasons. However, those functions will not be |
ffabe59c |
514 | compiled in if you add C<-DNO_MATHOMS> in the compiler flags. |
78ef48ad |
515 | |
516 | The C<AvFLAGS> macro has been removed. |
517 | |
ebab5fdd |
518 | The C<av_*()> functions, used to manipulate arrays, no longer accept null |
519 | C<AV*> parameters. |
520 | |
78ef48ad |
521 | =head2 B:: modules inheritance changed |
522 | |
523 | The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now |
524 | inherits from C<B::SV> (it used to inherit from C<B::IV>). |
525 | |
496c75d0 |
526 | =head1 Reporting Bugs |
527 | |
528 | If you find what you think is a bug, you might check the articles |
529 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
530 | bug database at http://bugs.perl.org/ . There may also be |
531 | information at http://www.perl.org/ , the Perl Home Page. |
532 | |
533 | If you believe you have an unreported bug, please run the B<perlbug> |
534 | program included with your release. Be sure to trim your bug down |
535 | to a tiny but sufficient test case. Your bug report, along with the |
536 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
537 | analysed by the Perl porting team. |
538 | |
539 | =head1 SEE ALSO |
540 | |
541 | The F<Changes> file for exhaustive details on what changed. |
542 | |
543 | The F<INSTALL> file for how to build Perl. |
544 | |
545 | The F<README> file for general stuff. |
546 | |
547 | The F<Artistic> and F<Copying> files for copyright information. |
548 | |
549 | =cut |