3 perldelta - what is new for perl v5.9.3
7 This document describes differences between the 5.9.2 and the 5.9.3
8 development releases. See L<perl590delta>, L<perl591delta> and
9 L<perl592delta> for the differences between 5.8.0 and 5.9.2.
11 =head1 Incompatible Changes
13 =head2 Parsing of C<-f _>
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.
20 C<mkdir()> without arguments now defaults to C<$_>.
22 =head2 Magic goto and eval
24 The construct C<eval { goto &foo }> is now disallowed. (Note that the
25 similar construct, but with C<eval("")> instead, was already forbidden.)
27 =head2 C<$#> has been removed
29 The deprecated C<$#> variable (output format for numbers) has been
30 removed. A new warning, C<$# is no longer supported>, has been added.
34 The C<:unique> attribute has been made a no-op, since its current
35 implementation was fundamentally flawed and not threadsafe.
37 =head2 Scoping of the C<sort> pragma
39 The C<sort> pragma is now lexically scoped. Its effect used to be global.
41 =head1 Core Enhancements
43 =head2 The C<feature> pragma
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>.
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.
54 Note that C<err> low-precedence defined-or operator used to be enabled by
55 default, but as a weak keyword. It's now only recognized when explicitly
58 =head2 Switch and Smart Match operator
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>.
68 =head2 C<CLONE_SKIP()>
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.
76 =head2 C<${^CHILD_ERROR_NATIVE}>
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
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>.
90 =head2 Unicode Character Database 4.1.0
92 The copy of the Unicode Character Database included in Perl 5.9 has
93 been updated to 4.1.0.
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.
100 =head2 Recursive sort subs
102 You can now use recursive subroutines with sort(), thanks to Robin Houston.
104 =head2 Effect of pragmas in eval
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
110 As a side-effect of this, the overloaded-ness of constants now propagates
113 =head2 New B<-E> command-line switch
115 B<-E> is equivalent to B<-e>, but it implicitly enables all
118 =head2 C<chdir>, C<chmod> and C<chown> on filehandles
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.
124 =head1 Modules and Pragmata
128 This new module implements the C<feature> pragma; see above in
129 L</"Core Enhancements">.
131 =head2 C<assertions::compat>
133 =head2 C<Math::BigInt::FastCalc>
135 =head2 C<Compress::Zlib>
139 =head2 C<Archive::Tar>
141 =head1 Utility Changes
149 The L<perlglossary> manpage is a glossary of terms used in the Perl
150 documentation, technical and otherwise.
152 =head1 Performance Enhancements
154 =head2 XS-assisted SWASHGET
156 Some pure-perl code that perl was using to retrieve Unicode properties and
157 transliteration mappings has been reimplemented in XS.
159 =head2 Constants subroutines
163 =head2 C<PERL_DONT_CREATE_GVSV>
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>
170 =head2 Weak references are cheaper
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.
176 =head2 sort() enhancements
178 Salvador FandiƱo provided improvements to reduce the memory usage of C<sort>
179 and to speed up some cases.
181 =head1 Installation and Configuration Improvements
183 =head2 New Or Improved Platforms
185 Perl is being ported to Symbian OS. See L<perlsymbian> for more
188 The VMS port has been improved. See L<perlvms>.
190 DynaLoader::dl_unload_file() now works on Windows.
192 Portability of Perl on various recent compilers on Windows has been
193 improved (Borland C++, Visual C++ 7.0).
197 Perl will detect and use internally futimes(2) if available.
199 =head2 Module auxiliary files
201 README files and changelogs for CPAN modules bundled with perl are no
204 =head1 Selected Bug Fixes
206 =head2 C<defined $$x>
208 C<use strict "refs"> was ignoring taking a hard reference in an argument
209 to defined(), as in :
213 if (defined $$x) {...}
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
220 =head2 Calling CORE::require()
222 CORE::require() and CORE::do() were always parsed as require() and do()
223 when they were overriden. This is now fixed.
225 =head2 Subscripts of slices
227 You can now use a non-arrowed form for chained subscripts after a list
230 ({foo => "bar"})[0]{foo}
232 This used to be a syntax error; a C<< -> >> was required.
234 =head2 Remove over-optimisation
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
241 =head2 sprintf() fixes
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.
247 In related fixes, a format string injection vulnerability has been fixed
256 C<FindBin> now works better with directories where access rights are more
257 restrictive than usual.
261 Several memory leaks in ithreads were closed. Also, ithreads were made
262 less memory-intensive.
266 Trailing spaces are now trimmed from C<$!> and C<$^E>.
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.
277 C<PerlIO::scalar> now works better with non-default C<$/> settings.
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>.
286 The debugger now traces correctly execution in eval("")uated code that
287 contains #line directives.
291 The value of the C<open> pragma is no longer ignored for three-argument
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
302 =head2 More Unicode Fixes
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.
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.
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.
326 =head1 New or Changed Diagnostics
328 =head2 Attempt to set length of freed array
330 This is a new warning, produced in situations like the following one:
332 $r = do {my @a; \$#a};
335 =head2 Search pattern not terminated or ternary operator parsed as search pattern
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.
341 =head2 "%s" variable %s masks earlier declaration
343 This warning is now emitted in more consistent cases; in short, when one
344 of the declarations involved is a C<my> variable:
346 my $x; my $x; # warns
347 my $x; our $x; # warns
348 our $x; my $x; # warns
350 On the other hand, the following :
354 now gives a C<"our" variable %s redeclared> warning.
356 =head2 readdir()/closedir()/etc. attempted on invalid dirhandle
358 These new warnings are now emitted when a dirhandle is used but is
359 either closed or not really a dirhandle.
361 =head1 Changed Internals
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
368 compiled in if you add C<-DNO_MATHOMS> in the compiler flags.
370 The C<AvFLAGS> macro has been removed.
372 The C<av_*()> functions, used to manipulate arrays, no longer accept null
375 =head2 B:: modules inheritance changed
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>).
380 =head1 Known Problems
382 =head2 Platform Specific Problems
384 =head1 Reporting Bugs
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.
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.
399 The F<Changes> file for exhaustive details on what changed.
401 The F<INSTALL> file for how to build Perl.
403 The F<README> file for general stuff.
405 The F<Artistic> and F<Copying> files for copyright information.