Typo fix in the description of change 26370.
[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
34The C<:unique> attribute has been made a now-op, since its current
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
496c75d0 70=head1 Modules and Pragmata
71
78ef48ad 72=head2 C<feature>
73
74=head2 C<assertions::compat>
75
76=head2 C<Math::BigInt::FastCalc>
77
78=head2 C<Compress::Zlib>
79
80=head2 C<IO::Zlib>
81
82=head2 C<Archive::Tar>
83
496c75d0 84=head1 Utility Changes
85
78ef48ad 86=head2 C<ptar>
87
496c75d0 88=head1 Documentation
89
90=head1 Performance Enhancements
91
92=head1 Installation and Configuration Improvements
93
78ef48ad 94=head2 New Or Improved Platforms
95
96Perl is being ported to Symbian OS. See L<perlsymbian> for more
97information.
98
99=head2 Module auxiliary files
100
101README files and changelogs for CPAN modules bundled with perl are no
102longer installed.
103
496c75d0 104=head1 Selected Bug Fixes
105
2e6a7e23 106=head2 C<defined $$x>
107
108C<use strict "refs"> was ignoring taking a hard reference in an argument
109to defined(), as in :
110
111 use strict "refs";
112 my $x = "foo";
113 if (defined $$x) {...}
114
115This now correctly produces the run-time error C<Can't use string as a
116SCALAR ref while "strict refs" in use>. (However, C<defined @$foo> and
117C<defined %$foo> are still allowed. Those constructs are discouraged
118anyway.)
119
78ef48ad 120=head2 Smaller fixes
121
122=over 4
123
124=item *
125
126C<FindBin> now works better with directories where access rights are more
127restrictive than usual.
128
129=item *
130
131Several memory leaks in ithreads were closed.
132
133=item *
134
135C<PerlIO::scalar> now works better with non-default C<$/> settings.
136
137=item *
138
139You can now use the C<x> operator to demultiply a C<qw//> list. This used
140to raise a syntax error.
141
142=back
143
144=head2 More Unicode Fixes
145
146=over 4
147
148=item *
149
150chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement
151character, unless when the C<bytes> pragma is in effect, where the low
152eight bytes of the value are used.
153
154=back
155
496c75d0 156=head1 New or Changed Diagnostics
157
78ef48ad 158=head2 Attempt to set length of freed array
159
160This is a new warning, produced in situations like the following one:
161
162 $r = do {my @a; \$#a};
163 $$r = 503;
164
165=head2 Search pattern not terminated or ternary operator parsed as search pattern
166
167This syntax error indicates that the lexer couldn't find the final
168delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in
169this error message makes syntax diagnostic easier.
170
496c75d0 171=head1 Changed Internals
172
78ef48ad 173XXX consting
174
175XXX mathoms
176
177The C<AvFLAGS> macro has been removed.
178
179=head2 B:: modules inheritance changed
180
181The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now
182inherits from C<B::SV> (it used to inherit from C<B::IV>).
183
496c75d0 184=head1 Known Problems
185
186=head2 Platform Specific Problems
187
188=head1 Reporting Bugs
189
190If you find what you think is a bug, you might check the articles
191recently posted to the comp.lang.perl.misc newsgroup and the perl
192bug database at http://bugs.perl.org/ . There may also be
193information at http://www.perl.org/ , the Perl Home Page.
194
195If you believe you have an unreported bug, please run the B<perlbug>
196program included with your release. Be sure to trim your bug down
197to a tiny but sufficient test case. Your bug report, along with the
198output of C<perl -V>, will be sent off to perlbug@perl.org to be
199analysed by the Perl porting team.
200
201=head1 SEE ALSO
202
203The F<Changes> file for exhaustive details on what changed.
204
205The F<INSTALL> file for how to build Perl.
206
207The F<README> file for general stuff.
208
209The F<Artistic> and F<Copying> files for copyright information.
210
211=cut