Commit | Line | Data |
1400179b |
1 | =head1 NAME |
2 | |
3 | perldelta - what is new for perl v5.9.1 |
4 | |
5 | =head1 DESCRIPTION |
6 | |
7 | This document describes differences between the 5.9.0 release and |
9b11ae5e |
8 | the 5.9.1 release. See L<perl590delta> for the differences between |
9 | 5.8.0 and 5.9.0. |
1400179b |
10 | |
11 | =head1 Incompatible Changes |
12 | |
13 | =head1 Core Enhancements |
14 | |
59f00321 |
15 | =head2 Lexical C<$_> |
16 | |
17 | The default variable C<$_> can now be lexicalized, by declaring it like |
18 | any other lexical variable, with a simple |
19 | |
20 | my $_; |
21 | |
22 | The operations that default on C<$_> will use the lexically-scoped |
23 | version of C<$_> when it exists, instead of the global C<$_>. |
24 | |
25 | In a C<map> or a C<grep> block, if C<$_> was previously my'ed, then the |
26 | C<$_> inside the block is lexical as well (and scoped to the block). |
27 | |
28 | In a scope where C<$_> has been lexicalized, you can still have access to |
29 | the global version of C<$_> by using C<$::_>, or, more simply, by |
30 | overriding the lexical declaration with C<our $_>. |
31 | |
1400179b |
32 | =head2 Tied hashes in scalar context |
33 | |
34 | As of perl 5.8.2, tied hashes did not return anything useful in scalar |
35 | context, for example when used as boolean tests: |
36 | |
37 | if (%tied_hash) { ... } |
38 | |
39 | The old nonsensical behaviour was always to return false, |
40 | regardless of whether the hash is empty or has elements. |
41 | |
42 | There is now an interface for the implementors of tied hashes to implement |
43 | the behaviour of a hash in scalar context, via the SCALAR method (see |
44 | L<perltie>). Without a SCALAR method, perl will try to guess whether |
45 | the hash is empty, by testing if it's inside an iteration (in this case |
46 | it can't be empty) or by calling FIRSTKEY. |
47 | |
f0f92e3c |
48 | =head2 Formats |
49 | |
50 | Formats were improved in several ways. A new field, C<^*>, can be used for |
51 | variable-width, one-line-at-a-time text. Null characters are now handled |
52 | correctly in picture lines. Using C<@#> and C<~~> together will now |
53 | produce a compile-time error, as those format fields are incompatible. |
54 | L<perlform> has been improved, and miscellaneous bugs fixed. |
55 | |
56 | =head2 The C<:unique> attribute is only meaningful for globals |
57 | |
58 | Now applying C<:unique> to lexical variables and to subroutines will |
59 | result in a compilation error. |
60 | |
fbb0b3b3 |
61 | =head2 Stacked filetest operators |
62 | |
63 | As a new form of syntactic sugar, it's now possible to stack up filetest |
64 | operators. You can now write C<-f -w -x $file> in a row to mean |
65 | C<-x $file && -w _ && -f _>. See L<perlfunc/-X>. |
66 | |
1400179b |
67 | =head1 Modules and Pragmata |
68 | |
f0f92e3c |
69 | =over 4 |
70 | |
71 | =item Carp |
72 | |
73 | The error messages produced by C<Carp> now include spaces between the |
74 | arguments in function argument lists: this makes long error messages |
75 | appear more nicely in browsers and other tools. |
76 | |
77 | =item Exporter |
78 | |
79 | C<Exporter> will now recognize grouping tags (such as C<:name>) anywhere |
80 | in the import list, not only at the beginning. |
81 | |
82 | =item FindBin |
83 | |
84 | A function C<again> is provided to resolve problems where modules in different |
85 | directories wish to use FindBin. |
86 | |
87 | =item List::Util |
88 | |
89 | You can now weaken references to read only values. |
90 | |
91 | =item threads::shared |
92 | |
93 | C<cond_wait> has a new two argument form. C<cond_timedwait> has been added. |
94 | |
95 | =back |
96 | |
1400179b |
97 | =head1 Utility Changes |
98 | |
99 | C<find2perl> now assumes C<-print> as a default action. Previously, it |
100 | needed to be specified explicitly. |
101 | |
f0f92e3c |
102 | A new utility, C<prove>, makes it easy to run an individual regression test |
103 | at the command line. C<prove> is part of Test::Harness, which users of earlier |
104 | Perl versions can install from CPAN. |
105 | |
106 | =head1 Documentation |
107 | |
108 | The documentation has been revised in places to produce more standard manpages. |
109 | |
110 | The long-existing feature of C</(?{...})/> regexps setting C<$_> and pos() |
111 | is now documented. |
1400179b |
112 | |
113 | =head1 Performance Enhancements |
114 | |
115 | =head1 Installation and Configuration Improvements |
116 | |
117 | =head1 Selected Bug Fixes |
118 | |
f0f92e3c |
119 | =head2 UTF8 bugs |
120 | |
121 | Using substr() on a UTF8 string could cause subsequent accesses on that |
122 | string to return garbage. This was due to incorrect UTF8 offsets being |
123 | cached, and is now fixed. |
124 | |
125 | join() could return garbage when the same join() statement was used to |
126 | process 8 bit data having earlier processed UTF8 data, due to the flags |
127 | on that statement's temporary workspace not being reset correctly. This |
128 | is now fixed. |
129 | |
130 | Using Unicode keys with tied hashes should now work correctly. |
131 | |
132 | chop() and chomp() used to mangle UTF8 strings. This has been fixed. |
133 | |
134 | =head2 Threading bugs |
135 | |
136 | Hashes with the C<:unique> attribute weren't made read-only in new |
137 | threads. They are now. |
138 | |
139 | =head2 More bugs |
140 | |
141 | C<$a .. $b> will now work as expected when either $a or $b is C<undef> |
142 | |
143 | Reading $^E now preserves $!. Previously, the C code implementing $^E |
144 | did not preserve C<errno>, so reading $^E could cause C<errno> and therefore |
145 | C<$!> to change unexpectedly. |
146 | |
147 | Reentrant functions will (once more) work with C++. 5.8.2 introduced a bugfix |
31a10c70 |
148 | which accidentally broke the compilation of Perl extensions written in C++. |
149 | |
150 | C<strict> wasn't in effect in regexp-eval blocks (C</(?{...})/>). |
f0f92e3c |
151 | |
1400179b |
152 | =head1 New or Changed Diagnostics |
153 | |
f0f92e3c |
154 | The fatal error "DESTROY created new reference to dead object" is now |
155 | documented in L<perldiag>. |
156 | |
157 | A new error, "%ENV is aliased to %s", is produced when taint checks are |
158 | enabled and when *ENV has been aliased (and thus doesn't reflect the |
159 | program's environment anymore.) |
160 | |
1400179b |
161 | =head1 Changed Internals |
162 | |
9b11ae5e |
163 | These news matter to you only if you either write XS code or like to |
164 | know about or hack Perl internals (using Devel::Peek or any of the |
165 | C<B::> modules counts), or like to run Perl with the C<-D> option. |
166 | |
167 | =head2 Reordering of SVt_* constants |
168 | |
169 | The relative ordering of constants that define the various types of C<SV> |
fa46452e |
170 | have changed; in particular, C<SVt_PVGV> has been moved before C<SVt_PVLV>, |
9b11ae5e |
171 | C<SVt_PVAV>, C<SVt_PVHV> and C<SVt_PVCV>. This is unlikely to make any |
172 | difference unless you have code that explicitly makes assumptions about that |
173 | ordering. (The inheritance hierarchy of C<B::*> objects has been changed |
174 | to reflect this.) |
175 | |
a5dbb3ac |
176 | =head2 Removal of CPP symbols |
177 | |
178 | The C preprocessor symbols C<PERL_PM_APIVERSION> and |
179 | C<PERL_XS_APIVERSION>, which were supposed to give the version number of |
180 | the oldest perl binary-compatible (resp. source-compatible) with the |
181 | present one, were not used, and sometimes had misleading values. They have |
182 | been removed. |
183 | |
265db0e6 |
184 | =head2 Less space is used by ops |
185 | |
186 | The C<BASEOP> structure now uses less space. The C<op_seq> field has been |
187 | removed and replaced by two one-bit fields, C<op_opt> and C<op_static>. |
188 | C<opt_type> is now 9 bits long. (Consequently, the C<B::OP> class doesn't |
189 | provide an C<seq> method anymore.) |
190 | |
f0f92e3c |
191 | =head1 Configuration and Building |
192 | |
193 | C<Configure> now invokes callbacks regardless of the value of the variable |
194 | they are called for. Previously callbacks were only invoked in the |
195 | C<case $variable $define)> branch. This change should only affect platform |
196 | maintainers writing configuration hints files. |
197 | |
1400179b |
198 | =head1 New Tests |
199 | |
200 | =head1 Known Problems |
201 | |
202 | =head1 Platform Specific Problems |
203 | |
204 | =head1 Reporting Bugs |
205 | |
206 | If you find what you think is a bug, you might check the articles |
207 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
208 | bug database at http://bugs.perl.org/ . There may also be |
209 | information at http://www.perl.com/ , the Perl Home Page. |
210 | |
211 | If you believe you have an unreported bug, please run the B<perlbug> |
212 | program included with your release. Be sure to trim your bug down |
213 | to a tiny but sufficient test case. Your bug report, along with the |
214 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
215 | analysed by the Perl porting team. |
216 | |
217 | =head1 SEE ALSO |
218 | |
219 | The F<Changes> file for exhaustive details on what changed. |
220 | |
221 | The F<INSTALL> file for how to build Perl. |
222 | |
223 | The F<README> file for general stuff. |
224 | |
225 | The F<Artistic> and F<Copying> files for copyright information. |
226 | |
227 | =cut |