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 | |
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 | |
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 | |
8f7e634e |
70 | =head2 C<no VERSION> |
71 | |
72 | You can now use C<no> followed by a version number to specify that you |
73 | want 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 | |
97 | The L<perlglossary> manpage is a glossary of terms used in the Perl |
98 | documentation, 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 | |
106 | Perl is being ported to Symbian OS. See L<perlsymbian> for more |
107 | information. |
108 | |
109 | =head2 Module auxiliary files |
110 | |
111 | README files and changelogs for CPAN modules bundled with perl are no |
112 | longer installed. |
113 | |
496c75d0 |
114 | =head1 Selected Bug Fixes |
115 | |
2e6a7e23 |
116 | =head2 C<defined $$x> |
117 | |
118 | C<use strict "refs"> was ignoring taking a hard reference in an argument |
119 | to defined(), as in : |
120 | |
121 | use strict "refs"; |
122 | my $x = "foo"; |
123 | if (defined $$x) {...} |
124 | |
125 | This now correctly produces the run-time error C<Can't use string as a |
126 | SCALAR ref while "strict refs" in use>. (However, C<defined @$foo> and |
127 | C<defined %$foo> are still allowed. Those constructs are discouraged |
128 | anyway.) |
129 | |
78ef48ad |
130 | =head2 Smaller fixes |
131 | |
132 | =over 4 |
133 | |
134 | =item * |
135 | |
136 | C<FindBin> now works better with directories where access rights are more |
137 | restrictive than usual. |
138 | |
139 | =item * |
140 | |
141 | Several memory leaks in ithreads were closed. |
142 | |
143 | =item * |
144 | |
145 | C<PerlIO::scalar> now works better with non-default C<$/> settings. |
146 | |
147 | =item * |
148 | |
149 | You can now use the C<x> operator to demultiply a C<qw//> list. This used |
150 | to raise a syntax error. |
151 | |
152 | =back |
153 | |
154 | =head2 More Unicode Fixes |
155 | |
156 | =over 4 |
157 | |
158 | =item * |
159 | |
160 | chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement |
161 | character, unless when the C<bytes> pragma is in effect, where the low |
162 | eight 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 | |
170 | This 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 | |
177 | This syntax error indicates that the lexer couldn't find the final |
178 | delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in |
179 | this error message makes syntax diagnostic easier. |
180 | |
8f7e634e |
181 | =head2 "%s" variable %s masks earlier declaration |
182 | |
183 | This warning is now emitted in more consistent cases; in short, when one |
184 | of 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 | |
190 | On the other hand, the following : |
191 | |
192 | our $x; our $x; |
193 | |
194 | now gives a C<"our" variable %s redeclared> warning. |
195 | |
496c75d0 |
196 | =head1 Changed Internals |
197 | |
78ef48ad |
198 | XXX consting |
199 | |
200 | XXX mathoms |
201 | |
202 | The C<AvFLAGS> macro has been removed. |
203 | |
204 | =head2 B:: modules inheritance changed |
205 | |
206 | The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now |
207 | inherits 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 | |
215 | If you find what you think is a bug, you might check the articles |
216 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
217 | bug database at http://bugs.perl.org/ . There may also be |
218 | information at http://www.perl.org/ , the Perl Home Page. |
219 | |
220 | If you believe you have an unreported bug, please run the B<perlbug> |
221 | program included with your release. Be sure to trim your bug down |
222 | to a tiny but sufficient test case. Your bug report, along with the |
223 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
224 | analysed by the Perl porting team. |
225 | |
226 | =head1 SEE ALSO |
227 | |
228 | The F<Changes> file for exhaustive details on what changed. |
229 | |
230 | The F<INSTALL> file for how to build Perl. |
231 | |
232 | The F<README> file for general stuff. |
233 | |
234 | The F<Artistic> and F<Copying> files for copyright information. |
235 | |
236 | =cut |