Test comment fix by Dominic Dunlop
[p5sagit/p5-mst-13.2.git] / pod / perl593delta.pod
CommitLineData
496c75d0 1=head1 NAME
2
3perldelta - what is new for perl v5.9.3
4
5=head1 DESCRIPTION
6
7This document describes differences between the 5.9.2 and the 5.9.3
d7f8936a 8development releases. See L<perl590delta>, L<perl591delta> and
496c75d0 9L<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
15C<_> is now forced to be a bareword after a filetest operator. This solves
16a number of misparsing issues when a global C<_> subroutine is defined.
17
78ef48ad 18=head2 C<mkdir()>
19
20C<mkdir()> without arguments now defaults to C<$_>.
21
22=head2 Magic goto and eval
23
24The construct C<eval { goto &foo }> is now disallowed. (Note that the
25similar construct, but with C<eval("")> instead, was already forbidden.)
26
27=head2 C<$#> has been removed
28
29The deprecated C<$#> variable (output format for numbers) has been
30removed. A new warning, C<$# is no longer supported>, has been added.
31
32=head2 C<:unique>
33
8f7e634e 34The C<:unique> attribute has been made a no-op, since its current
78ef48ad 35implementation was fundamentally flawed and not threadsafe.
36
496c75d0 37=head1 Core Enhancements
38
78ef48ad 39=head2 Switch and Smart Match operator
40
41=head2 C<say()>
42
43=head2 C<CLONE_SKIP()>
44
45Perl has now support for the C<CLONE_SKIP> special subroutine. Like
46C<CLONE>, C<CLONE_SKIP> is called once per package; however, it is called
47just before cloning starts, and in the context of the parent thread. If it
48returns a true value, then no objects of that class will be cloned. See
49L<perlmod> for details.
50
51=head2 C<${^CHILD_ERROR_NATIVE}>
52
53A new internal variable, C<${^CHILD_ERROR_NATIVE}>, gives the native
54status returned by the last pipe close, backtick command, successful call
55to wait() or waitpid(), or from the system() operator. See L<perlrun> for
56details.
57
58=head2 Assertions
59
60The support for assertions, introduced in perl 5.9.0, has been improved.
61The syntax for the C<-A> command-line switch has changed; it now accepts
62an optional module name, defaulting to C<assertions::activate>. See
63L<assertions> and L<perlrun>.
64
65=head2 Unicode Character Database 4.1.0
66
67The copy of the Unicode Character Database included in Perl 5.9 has
68been updated to 4.1.0.
69
8f7e634e 70=head2 C<no VERSION>
71
72You can now use C<no> followed by a version number to specify that you
73want to use a version of perl inferior to the specified one.
74
496c75d0 75=head1 Modules and Pragmata
76
78ef48ad 77=head2 C<feature>
78
79=head2 C<assertions::compat>
80
81=head2 C<Math::BigInt::FastCalc>
82
83=head2 C<Compress::Zlib>
84
85=head2 C<IO::Zlib>
86
87=head2 C<Archive::Tar>
88
496c75d0 89=head1 Utility Changes
90
78ef48ad 91=head2 C<ptar>
92
496c75d0 93=head1 Documentation
94
8f7e634e 95=head2 Perl Glossary
96
97The L<perlglossary> manpage is a glossary of terms used in the Perl
98documentation, technical and otherwise.
99
496c75d0 100=head1 Performance Enhancements
101
102=head1 Installation and Configuration Improvements
103
78ef48ad 104=head2 New Or Improved Platforms
105
106Perl is being ported to Symbian OS. See L<perlsymbian> for more
107information.
108
109=head2 Module auxiliary files
110
111README files and changelogs for CPAN modules bundled with perl are no
112longer installed.
113
496c75d0 114=head1 Selected Bug Fixes
115
2e6a7e23 116=head2 C<defined $$x>
117
118C<use strict "refs"> was ignoring taking a hard reference in an argument
119to defined(), as in :
120
121 use strict "refs";
122 my $x = "foo";
123 if (defined $$x) {...}
124
125This now correctly produces the run-time error C<Can't use string as a
126SCALAR ref while "strict refs" in use>. (However, C<defined @$foo> and
127C<defined %$foo> are still allowed. Those constructs are discouraged
128anyway.)
129
78ef48ad 130=head2 Smaller fixes
131
132=over 4
133
134=item *
135
136C<FindBin> now works better with directories where access rights are more
137restrictive than usual.
138
139=item *
140
141Several memory leaks in ithreads were closed.
142
143=item *
144
145C<PerlIO::scalar> now works better with non-default C<$/> settings.
146
147=item *
148
149You can now use the C<x> operator to demultiply a C<qw//> list. This used
150to raise a syntax error.
151
152=back
153
154=head2 More Unicode Fixes
155
156=over 4
157
158=item *
159
160chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement
161character, unless when the C<bytes> pragma is in effect, where the low
162eight bytes of the value are used.
163
164=back
165
496c75d0 166=head1 New or Changed Diagnostics
167
78ef48ad 168=head2 Attempt to set length of freed array
169
170This is a new warning, produced in situations like the following one:
171
172 $r = do {my @a; \$#a};
173 $$r = 503;
174
175=head2 Search pattern not terminated or ternary operator parsed as search pattern
176
177This syntax error indicates that the lexer couldn't find the final
178delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in
179this error message makes syntax diagnostic easier.
180
8f7e634e 181=head2 "%s" variable %s masks earlier declaration
182
183This warning is now emitted in more consistent cases; in short, when one
184of the declarations involved is a C<my> variable:
185
186 my $x; my $x; # warns
187 my $x; our $x; # warns
188 our $x; my $x; # warns
189
190On the other hand, the following :
191
192 our $x; our $x;
193
194now gives a C<"our" variable %s redeclared> warning.
195
496c75d0 196=head1 Changed Internals
197
78ef48ad 198XXX consting
199
200XXX mathoms
201
202The C<AvFLAGS> macro has been removed.
203
204=head2 B:: modules inheritance changed
205
206The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now
207inherits from C<B::SV> (it used to inherit from C<B::IV>).
208
496c75d0 209=head1 Known Problems
210
211=head2 Platform Specific Problems
212
213=head1 Reporting Bugs
214
215If you find what you think is a bug, you might check the articles
216recently posted to the comp.lang.perl.misc newsgroup and the perl
217bug database at http://bugs.perl.org/ . There may also be
218information at http://www.perl.org/ , the Perl Home Page.
219
220If you believe you have an unreported bug, please run the B<perlbug>
221program included with your release. Be sure to trim your bug down
222to a tiny but sufficient test case. Your bug report, along with the
223output of C<perl -V>, will be sent off to perlbug@perl.org to be
224analysed by the Perl porting team.
225
226=head1 SEE ALSO
227
228The F<Changes> file for exhaustive details on what changed.
229
230The F<INSTALL> file for how to build Perl.
231
232The F<README> file for general stuff.
233
234The F<Artistic> and F<Copying> files for copyright information.
235
236=cut