Commit | Line | Data |
496c75d0 |
1 | =head1 NAME |
2 | |
3 | perldelta - what is new for perl v5.9.3 |
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 | |
15 | C<_> is now forced to be a bareword after a filetest operator. This solves |
16 | a number of misparsing issues when a global C<_> subroutine is defined. |
17 | |
78ef48ad |
18 | =head2 C<mkdir()> |
19 | |
20 | C<mkdir()> without arguments now defaults to C<$_>. |
21 | |
22 | =head2 Magic goto and eval |
23 | |
24 | The construct C<eval { goto &foo }> is now disallowed. (Note that the |
25 | similar construct, but with C<eval("")> instead, was already forbidden.) |
26 | |
27 | =head2 C<$#> has been removed |
28 | |
29 | The deprecated C<$#> variable (output format for numbers) has been |
30 | removed. A new warning, C<$# is no longer supported>, has been added. |
31 | |
32 | =head2 C<:unique> |
33 | |
8f7e634e |
34 | The C<:unique> attribute has been made a no-op, since its current |
78ef48ad |
35 | implementation was fundamentally flawed and not threadsafe. |
36 | |
e603cea9 |
37 | =head2 Scoping of the C<sort> pragma |
38 | |
39 | The C<sort> pragma is now lexically scoped. Its effect used to be global. |
40 | |
496c75d0 |
41 | =head1 Core Enhancements |
42 | |
e603cea9 |
43 | =head2 The C<feature> pragma |
44 | |
45 | The C<feature> pragma is used to enable new syntax that would break Perl's |
46 | backward-compatibility with older releases of the language. It's a lexical |
47 | pragma, like C<strict> or C<warnings>. |
48 | |
49 | Currently the following new features are available: C<switch> (adds a |
50 | switch statement), C<~~> (adds a Perl 6-like smart match operator), C<say> |
51 | (adds a C<say> built-in function), and C<err> (adds an C<err> keyword). |
52 | Those features are described below. |
53 | |
54 | Note that C<err> low-precedence defined-or operator used to be enabled by |
ffabe59c |
55 | default, but as a weak keyword. It's now only recognized when explicitly |
e603cea9 |
56 | turned on. |
57 | |
78ef48ad |
58 | =head2 Switch and Smart Match operator |
59 | |
e603cea9 |
60 | XXX |
61 | |
78ef48ad |
62 | =head2 C<say()> |
63 | |
e603cea9 |
64 | say() is a new built-in, only avaiable when C<use feature 'say'> is in |
65 | effect, that is similar to print(), but that implicitly appends a newline |
66 | to the printed string. See L<perlfunc/say>. |
67 | |
78ef48ad |
68 | =head2 C<CLONE_SKIP()> |
69 | |
70 | Perl has now support for the C<CLONE_SKIP> special subroutine. Like |
71 | C<CLONE>, C<CLONE_SKIP> is called once per package; however, it is called |
72 | just before cloning starts, and in the context of the parent thread. If it |
73 | returns a true value, then no objects of that class will be cloned. See |
74 | L<perlmod> for details. |
75 | |
76 | =head2 C<${^CHILD_ERROR_NATIVE}> |
77 | |
78 | A new internal variable, C<${^CHILD_ERROR_NATIVE}>, gives the native |
79 | status returned by the last pipe close, backtick command, successful call |
80 | to wait() or waitpid(), or from the system() operator. See L<perlrun> for |
81 | details. |
82 | |
83 | =head2 Assertions |
84 | |
85 | The support for assertions, introduced in perl 5.9.0, has been improved. |
86 | The syntax for the C<-A> command-line switch has changed; it now accepts |
87 | an optional module name, defaulting to C<assertions::activate>. See |
88 | L<assertions> and L<perlrun>. |
89 | |
90 | =head2 Unicode Character Database 4.1.0 |
91 | |
92 | The copy of the Unicode Character Database included in Perl 5.9 has |
93 | been updated to 4.1.0. |
94 | |
8f7e634e |
95 | =head2 C<no VERSION> |
96 | |
97 | You can now use C<no> followed by a version number to specify that you |
98 | want to use a version of perl inferior to the specified one. |
99 | |
e603cea9 |
100 | =head2 Recursive sort subs |
101 | |
ebab5fdd |
102 | You can now use recursive subroutines with sort(), thanks to Robin Houston. |
e603cea9 |
103 | |
104 | =head2 Effect of pragmas in eval |
105 | |
106 | The compile-time value of the C<%^H> hint variable can now propagate into |
107 | eval("")uated code. This makes it more useful to implement lexical |
108 | pragmas. |
109 | |
110 | As a side-effect of this, the overloaded-ness of constants now propagates |
111 | into eval(""). |
112 | |
113 | =head2 New B<-E> command-line switch |
114 | |
115 | B<-E> is equivalent to B<-e>, but it implicitly enables all |
116 | optional features. |
117 | |
ebab5fdd |
118 | =head2 C<chdir>, C<chmod> and C<chown> on filehandles |
119 | |
120 | C<chdir>, C<chmod> and C<chown> can now work on filehandles as well as |
121 | filenames, if the system supports respectively C<fchdir>, C<fchmod> and |
122 | C<fchown>, thanks to a patch provided by Gisle Aas. |
123 | |
496c75d0 |
124 | =head1 Modules and Pragmata |
125 | |
78ef48ad |
126 | =head2 C<feature> |
127 | |
e603cea9 |
128 | This new module implements the C<feature> pragma; see above in |
129 | L</"Core Enhancements">. |
130 | |
78ef48ad |
131 | =head2 C<assertions::compat> |
132 | |
133 | =head2 C<Math::BigInt::FastCalc> |
134 | |
135 | =head2 C<Compress::Zlib> |
136 | |
137 | =head2 C<IO::Zlib> |
138 | |
139 | =head2 C<Archive::Tar> |
140 | |
496c75d0 |
141 | =head1 Utility Changes |
142 | |
78ef48ad |
143 | =head2 C<ptar> |
144 | |
496c75d0 |
145 | =head1 Documentation |
146 | |
8f7e634e |
147 | =head2 Perl Glossary |
148 | |
149 | The L<perlglossary> manpage is a glossary of terms used in the Perl |
150 | documentation, technical and otherwise. |
151 | |
496c75d0 |
152 | =head1 Performance Enhancements |
153 | |
e603cea9 |
154 | =head2 XS-assisted SWASHGET |
155 | |
156 | Some pure-perl code that perl was using to retrieve Unicode properties and |
ffabe59c |
157 | transliteration mappings has been reimplemented in XS. |
e603cea9 |
158 | |
159 | =head2 Constants subroutines |
160 | |
161 | XXX |
162 | |
ebab5fdd |
163 | =head2 C<PERL_DONT_CREATE_GVSV> |
164 | |
165 | The new compilation flag C<PERL_DONT_CREATE_GVSV>, introduced as an option |
166 | in perl 5.8.8, is turned on by default in perl 5.9.3. It prevents perl |
167 | from creating an empty scalar with every new typeglob. See L<perl588delta> |
168 | for details. |
169 | |
170 | =head2 Weak references are cheaper |
171 | |
172 | Weak reference creation is now I<O(1)> rather than I<O(n)>, courtesy of |
173 | Nicholas Clark. Weak reference deletion remains I<O(n)>, but if deletion only |
174 | happens at program exit, it may be skipped completely. |
175 | |
176 | =head2 sort() enhancements |
177 | |
178 | Salvador FandiƱo provided improvements to reduce the memory usage of C<sort> |
179 | and to speed up some cases. |
180 | |
496c75d0 |
181 | =head1 Installation and Configuration Improvements |
182 | |
78ef48ad |
183 | =head2 New Or Improved Platforms |
184 | |
185 | Perl is being ported to Symbian OS. See L<perlsymbian> for more |
186 | information. |
187 | |
e603cea9 |
188 | The VMS port has been improved. See L<perlvms>. |
189 | |
190 | DynaLoader::dl_unload_file() now works on Windows. |
191 | |
192 | Portability of Perl on various recent compilers on Windows has been |
193 | improved (Borland C++, Visual C++ 7.0). |
194 | |
195 | =head2 New probes |
196 | |
197 | Perl will detect and use internally futimes(2) if available. |
198 | |
78ef48ad |
199 | =head2 Module auxiliary files |
200 | |
201 | README files and changelogs for CPAN modules bundled with perl are no |
202 | longer installed. |
203 | |
496c75d0 |
204 | =head1 Selected Bug Fixes |
205 | |
2e6a7e23 |
206 | =head2 C<defined $$x> |
207 | |
208 | C<use strict "refs"> was ignoring taking a hard reference in an argument |
209 | to defined(), as in : |
210 | |
211 | use strict "refs"; |
212 | my $x = "foo"; |
213 | if (defined $$x) {...} |
214 | |
215 | This now correctly produces the run-time error C<Can't use string as a |
216 | SCALAR ref while "strict refs" in use>. (However, C<defined @$foo> and |
217 | C<defined %$foo> are still allowed. Those constructs are discouraged |
218 | anyway.) |
219 | |
e603cea9 |
220 | =head2 Calling CORE::require() |
221 | |
222 | CORE::require() and CORE::do() were always parsed as require() and do() |
223 | when they were overriden. This is now fixed. |
224 | |
225 | =head2 Subscripts of slices |
226 | |
227 | You can now use a non-arrowed form for chained subscripts after a list |
228 | slice, like in: |
229 | |
230 | ({foo => "bar"})[0]{foo} |
231 | |
232 | This used to be a syntax error; a C<< -> >> was required. |
233 | |
234 | =head2 Remove over-optimisation |
235 | |
236 | Perl 5.9.2 introduced a change so that assignments of C<undef> to a |
237 | scalar, or of an empty list to an array or a hash, were optimised out. As |
238 | this could cause problems when C<goto> jumps were involved, this change |
239 | was backed out. |
240 | |
241 | =head2 sprintf() fixes |
242 | |
243 | Using the sprintf() function with some formats could lead to a buffer |
244 | overflow in some specific cases. This has been fixed, along with several |
245 | other bugs, notably in bound checking. |
246 | |
247 | In related fixes, a format string injection vulnerability has been fixed |
248 | in Sys::Syslog. |
249 | |
78ef48ad |
250 | =head2 Smaller fixes |
251 | |
252 | =over 4 |
253 | |
254 | =item * |
255 | |
256 | C<FindBin> now works better with directories where access rights are more |
257 | restrictive than usual. |
258 | |
259 | =item * |
260 | |
e603cea9 |
261 | Several memory leaks in ithreads were closed. Also, ithreads were made |
262 | less memory-intensive. |
78ef48ad |
263 | |
264 | =item * |
265 | |
ebab5fdd |
266 | Trailing spaces are now trimmed from C<$!> and C<$^E>. |
267 | |
268 | =item * |
269 | |
270 | Operations that require perl to read a process' list of groups, such as reads |
271 | of C<$(> and C<$)>, now dynamically allocate memory rather than using a |
272 | fixed sized array. The fixed size array could cause C stack exhaustion on |
273 | systems configured to use large numbers of groups. |
274 | |
275 | =item * |
276 | |
78ef48ad |
277 | C<PerlIO::scalar> now works better with non-default C<$/> settings. |
278 | |
279 | =item * |
280 | |
ffabe59c |
281 | You can now use the C<x> operator to repeat a C<qw//> list. This used |
282 | to raise a syntax error. For example: C<qw(foo bar) x 3>. |
78ef48ad |
283 | |
e603cea9 |
284 | =item * |
285 | |
286 | The debugger now traces correctly execution in eval("")uated code that |
287 | contains #line directives. |
288 | |
289 | =item * |
290 | |
291 | The value of the C<open> pragma is no longer ignored for three-argument |
292 | opens. |
293 | |
294 | =item * |
295 | |
ebab5fdd |
296 | Perl will now use the C library calls C<unsetenv> and C<clearenv> if present |
297 | to delete keys from C<%ENV> and delete C<%ENV> entirely, thanks to a patch |
298 | from Alan Burlison. |
e603cea9 |
299 | |
78ef48ad |
300 | =back |
301 | |
302 | =head2 More Unicode Fixes |
303 | |
304 | =over 4 |
305 | |
306 | =item * |
307 | |
308 | chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement |
309 | character, unless when the C<bytes> pragma is in effect, where the low |
310 | eight bytes of the value are used. |
311 | |
ebab5fdd |
312 | =item * |
313 | |
314 | Some case insensitive matches between UTF-8 encoded data and 8 bit regexps, |
315 | and vice versa, could give malformed character warnings. These have been |
316 | fixed by Dave Mitchell and Yves Orton. |
317 | |
318 | =item * |
319 | |
320 | C<lcfirst> and C<ucfirst> could corrupt the string for certain cases where |
321 | the length UTF-8 encoding of the string in lower case, upper case or title |
322 | case differed. This was fixed by Nicholas Clark. |
323 | |
78ef48ad |
324 | =back |
325 | |
496c75d0 |
326 | =head1 New or Changed Diagnostics |
327 | |
78ef48ad |
328 | =head2 Attempt to set length of freed array |
329 | |
330 | This is a new warning, produced in situations like the following one: |
331 | |
332 | $r = do {my @a; \$#a}; |
333 | $$r = 503; |
334 | |
335 | =head2 Search pattern not terminated or ternary operator parsed as search pattern |
336 | |
337 | This syntax error indicates that the lexer couldn't find the final |
338 | delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in |
339 | this error message makes syntax diagnostic easier. |
340 | |
8f7e634e |
341 | =head2 "%s" variable %s masks earlier declaration |
342 | |
343 | This warning is now emitted in more consistent cases; in short, when one |
344 | of the declarations involved is a C<my> variable: |
345 | |
346 | my $x; my $x; # warns |
347 | my $x; our $x; # warns |
348 | our $x; my $x; # warns |
349 | |
350 | On the other hand, the following : |
351 | |
352 | our $x; our $x; |
353 | |
354 | now gives a C<"our" variable %s redeclared> warning. |
355 | |
e603cea9 |
356 | =head2 readdir()/closedir()/etc. attempted on invalid dirhandle |
357 | |
358 | These new warnings are now emitted when a dirhandle is used but is |
359 | either closed or not really a dirhandle. |
360 | |
496c75d0 |
361 | =head1 Changed Internals |
362 | |
78ef48ad |
363 | XXX consting |
364 | |
e603cea9 |
365 | A new file, F<mathoms.c>, has been added. It contains functions that are |
366 | no longer used in the perl core, but that remain available for binary or |
367 | source compatibility reasons. However, those functions will not be |
ffabe59c |
368 | compiled in if you add C<-DNO_MATHOMS> in the compiler flags. |
78ef48ad |
369 | |
370 | The C<AvFLAGS> macro has been removed. |
371 | |
ebab5fdd |
372 | The C<av_*()> functions, used to manipulate arrays, no longer accept null |
373 | C<AV*> parameters. |
374 | |
78ef48ad |
375 | =head2 B:: modules inheritance changed |
376 | |
377 | The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now |
378 | inherits from C<B::SV> (it used to inherit from C<B::IV>). |
379 | |
496c75d0 |
380 | =head1 Known Problems |
381 | |
382 | =head2 Platform Specific Problems |
383 | |
384 | =head1 Reporting Bugs |
385 | |
386 | If you find what you think is a bug, you might check the articles |
387 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
388 | bug database at http://bugs.perl.org/ . There may also be |
389 | information at http://www.perl.org/ , the Perl Home Page. |
390 | |
391 | If you believe you have an unreported bug, please run the B<perlbug> |
392 | program included with your release. Be sure to trim your bug down |
393 | to a tiny but sufficient test case. Your bug report, along with the |
394 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
395 | analysed by the Perl porting team. |
396 | |
397 | =head1 SEE ALSO |
398 | |
399 | The F<Changes> file for exhaustive details on what changed. |
400 | |
401 | The F<INSTALL> file for how to build Perl. |
402 | |
403 | The F<README> file for general stuff. |
404 | |
405 | The F<Artistic> and F<Copying> files for copyright information. |
406 | |
407 | =cut |