Typo fix in the description of change 26370.
[p5sagit/p5-mst-13.2.git] / pod / perl593delta.pod
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
8 development releases. See L<perl590delta>, L<perl591delta> and
9 L<perl592delta> for the differences between 5.8.0 and 5.9.2.
10
11 =head1 Incompatible Changes
12
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
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
34 The C<:unique> attribute has been made a now-op, since its current
35 implementation was fundamentally flawed and not threadsafe.
36
37 =head1 Core Enhancements
38
39 =head2 Switch and Smart Match operator
40
41 =head2 C<say()>
42
43 =head2 C<CLONE_SKIP()>
44
45 Perl has now support for the C<CLONE_SKIP> special subroutine. Like
46 C<CLONE>, C<CLONE_SKIP> is called once per package; however, it is called
47 just before cloning starts, and in the context of the parent thread. If it
48 returns a true value, then no objects of that class will be cloned. See
49 L<perlmod> for details.
50
51 =head2 C<${^CHILD_ERROR_NATIVE}>
52
53 A new internal variable, C<${^CHILD_ERROR_NATIVE}>, gives the native
54 status returned by the last pipe close, backtick command, successful call
55 to wait() or waitpid(), or from the system() operator. See L<perlrun> for
56 details.
57
58 =head2 Assertions
59
60 The support for assertions, introduced in perl 5.9.0, has been improved.
61 The syntax for the C<-A> command-line switch has changed; it now accepts
62 an optional module name, defaulting to C<assertions::activate>. See
63 L<assertions> and L<perlrun>.
64
65 =head2 Unicode Character Database 4.1.0
66
67 The copy of the Unicode Character Database included in Perl 5.9 has
68 been updated to 4.1.0.
69
70 =head1 Modules and Pragmata
71
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
84 =head1 Utility Changes
85
86 =head2 C<ptar>
87
88 =head1 Documentation
89
90 =head1 Performance Enhancements
91
92 =head1 Installation and Configuration Improvements
93
94 =head2 New Or Improved Platforms
95
96 Perl is being ported to Symbian OS. See L<perlsymbian> for more
97 information.
98
99 =head2 Module auxiliary files
100
101 README files and changelogs for CPAN modules bundled with perl are no
102 longer installed.
103
104 =head1 Selected Bug Fixes
105
106 =head2 C<defined $$x>
107
108 C<use strict "refs"> was ignoring taking a hard reference in an argument
109 to defined(), as in :
110
111     use strict "refs";
112     my $x = "foo";
113     if (defined $$x) {...}
114
115 This now correctly produces the run-time error C<Can't use string as a
116 SCALAR ref while "strict refs" in use>. (However, C<defined @$foo> and
117 C<defined %$foo> are still allowed. Those constructs are discouraged
118 anyway.)
119
120 =head2 Smaller fixes
121
122 =over 4
123
124 =item *
125
126 C<FindBin> now works better with directories where access rights are more
127 restrictive than usual.
128
129 =item *
130
131 Several memory leaks in ithreads were closed.
132
133 =item *
134
135 C<PerlIO::scalar> now works better with non-default C<$/> settings.
136
137 =item *
138
139 You can now use the C<x> operator to demultiply a C<qw//> list. This used
140 to raise a syntax error.
141
142 =back
143
144 =head2 More Unicode Fixes
145
146 =over 4
147
148 =item *
149
150 chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement
151 character, unless when the C<bytes> pragma is in effect, where the low
152 eight bytes of the value are used.
153
154 =back
155
156 =head1 New or Changed Diagnostics
157
158 =head2 Attempt to set length of freed array
159
160 This 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
167 This syntax error indicates that the lexer couldn't find the final
168 delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in
169 this error message makes syntax diagnostic easier.
170
171 =head1 Changed Internals
172
173 XXX consting
174
175 XXX mathoms
176
177 The C<AvFLAGS> macro has been removed.
178
179 =head2 B:: modules inheritance changed
180
181 The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now
182 inherits from C<B::SV> (it used to inherit from C<B::IV>).
183
184 =head1 Known Problems
185
186 =head2 Platform Specific Problems
187
188 =head1 Reporting Bugs
189
190 If you find what you think is a bug, you might check the articles
191 recently posted to the comp.lang.perl.misc newsgroup and the perl
192 bug database at http://bugs.perl.org/ .  There may also be
193 information at http://www.perl.org/ , the Perl Home Page.
194
195 If you believe you have an unreported bug, please run the B<perlbug>
196 program included with your release.  Be sure to trim your bug down
197 to a tiny but sufficient test case.  Your bug report, along with the
198 output of C<perl -V>, will be sent off to perlbug@perl.org to be
199 analysed by the Perl porting team.
200
201 =head1 SEE ALSO
202
203 The F<Changes> file for exhaustive details on what changed.
204
205 The F<INSTALL> file for how to build Perl.
206
207 The F<README> file for general stuff.
208
209 The F<Artistic> and F<Copying> files for copyright information.
210
211 =cut