Commit | Line | Data |
---|---|---|
1400179b NC |
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 RGS |
8 | the 5.9.1 release. See L<perl590delta> for the differences between |
9 | 5.8.0 and 5.9.0. | |
1400179b NC |
10 | |
11 | =head1 Incompatible Changes | |
12 | ||
13 | =head1 Core Enhancements | |
14 | ||
59f00321 RGS |
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 NC |
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 RGS |
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 RGS |
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 NC |
67 | =head1 Modules and Pragmata |
68 | ||
f0f92e3c RGS |
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 NC |
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 RGS |
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 NC |
112 | |
113 | =head1 Performance Enhancements | |
114 | ||
115 | =head1 Installation and Configuration Improvements | |
116 | ||
117 | =head1 Selected Bug Fixes | |
118 | ||
f0f92e3c RGS |
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 RGS |
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 NC |
152 | =head1 New or Changed Diagnostics |
153 | ||
f0f92e3c RGS |
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 NC |
161 | =head1 Changed Internals |
162 | ||
9b11ae5e RGS |
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 RGS |
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 RGS |
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 RGS |
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 RGS |
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 NC |
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 |