This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
45abd77dfa39567ead23f6150737219a04d279aa
[perl5.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 no-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 =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
75 =head1 Modules and Pragmata
76
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
89 =head1 Utility Changes
90
91 =head2 C<ptar>
92
93 =head1 Documentation
94
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
100 =head1 Performance Enhancements
101
102 =head1 Installation and Configuration Improvements
103
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
114 =head1 Selected Bug Fixes
115
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
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
166 =head1 New or Changed Diagnostics
167
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
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
196 =head1 Changed Internals
197
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
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