Commit | Line | Data |
6c7deadb |
1 | =head1 NAME |
2 | |
3 | perldelta - what is new for perl v5.9.4 |
4 | |
5 | =head1 DESCRIPTION |
6 | |
7 | This document describes differences between the 5.9.3 and the 5.9.4 |
8 | developement releases. See L<perl590delta>, L<perl591delta>, L<perl592delta> |
9 | and L<perl593delta> for the differences between 5.8.0 and 5.9.3. |
10 | |
11 | =head1 Incompatible Changes |
12 | |
4db748fd |
13 | =head2 chdir FOO |
14 | |
473aa102 |
15 | A bareword argument to chdir() is now recognized as a file handle. |
4db748fd |
16 | Earlier releases interpreted the bareword as a directory name. |
21a732f3 |
17 | (Gisle Aas) |
4db748fd |
18 | |
ddc61b51 |
19 | =head2 Handling of pmc files |
20 | |
473aa102 |
21 | And old feature of perl is that before C<require> or C<use> look for a |
22 | file with a F<.pm> extension, they will first look for a similar filename |
23 | with a F<.pmc> extension. If this file is found, it will be loaded in |
24 | place of any potentially existing file ending in a F<.pm> extension. |
ddc61b51 |
25 | |
473aa102 |
26 | Previously, F<.pmc> files were loaded only if more recent than the |
27 | matching F<.pm> file. Starting with 5.9.4, they'll be always loaded if |
28 | they exist. (This trick is used by Pugs.) |
ddc61b51 |
29 | |
30 | =head2 @- and @+ in patterns |
31 | |
32 | The special arrays C<@-> and C<@+> are no longer interpolated in regular |
21a732f3 |
33 | expressions. (Sadahiro Tomoyuki) |
ddc61b51 |
34 | |
5d121f7f |
35 | =head2 $AUTOLOAD can now be tainted |
36 | |
37 | If you call a subroutine by a tainted name, and if it defers to an |
38 | AUTOLOAD function, then $AUTOLOAD will be (correctly) tainted. |
21a732f3 |
39 | (Rick Delaney) |
5d121f7f |
40 | |
6c7deadb |
41 | =head1 Core Enhancements |
42 | |
6c20a8f9 |
43 | =head2 state() variables |
44 | |
3c1cb5e0 |
45 | A new class of variables has been introduced. State variables are similar |
46 | to C<my> variables, but are declared with the C<state> keyword in place of |
47 | C<my>. They're visible only in their lexical scope, but their value in |
48 | persistent: unlike C<my> variables, they're not undefined at scope entry, |
21a732f3 |
49 | and retain their previous value. (Rafael Garcia-Suarez) |
3c1cb5e0 |
50 | |
51 | To use state variables, one needs to enable them by using |
52 | |
53 | use feature "state"; |
54 | |
55 | or by using the C<-E> command-line switch in one-liners. |
56 | |
57 | See L<perlsub/"Persistent variables via state()">. |
58 | |
d06a6528 |
59 | =head2 UNIVERSAL::DOES() |
ddc61b51 |
60 | |
3c1cb5e0 |
61 | The C<UNIVERSAL> class has a new method, C<DOES()>. It has been added to |
62 | solve semantic problems with the C<isa()> method. C<isa()> checks for |
63 | inheritance, while C<DOES()> has been designed to be overriden when |
64 | module authors use other types of relations between classes (in addition |
21a732f3 |
65 | to inheritance). (chromatic) |
3c1cb5e0 |
66 | |
67 | See L<< UNIVERSAL/"$obj->DOES( ROLE )" >>. |
68 | |
21a732f3 |
69 | =head2 Exceptions in constant folding |
70 | |
71 | The constant folding routine is now wrapped in an exception handler, and |
72 | if folding throws an exception (such as attempting to evaluate 0/0), perl |
73 | now retains the current optree, rather than aborting the whole program. |
74 | (Nicholas Clark) |
75 | |
6c7deadb |
76 | =head1 Modules and Pragmata |
77 | |
473aa102 |
78 | C<encoding::warnings> is now a lexical pragma. (Although on older perls, |
79 | which don't have support for lexical pragmas, it keeps its global |
21a732f3 |
80 | behaviour.) (Audrey Tang) |
6c20a8f9 |
81 | |
ddc61b51 |
82 | C<threads> |
83 | |
6c20a8f9 |
84 | =head2 New Core Modules |
85 | |
86 | =over 4 |
87 | |
88 | =item * |
89 | |
21a732f3 |
90 | C<Hash::Util::FieldHash>, by Anno Siegel, has been added. This module |
91 | provides support for I<field hashes>: hashes that maintain an association |
92 | of a reference with a value, in a thread-safe garbage-collected way. |
ecf6cde6 |
93 | |
94 | =item * |
95 | |
21a732f3 |
96 | C<Module::Build>, by Ken Williams, has been added. It's an alternative to |
473aa102 |
97 | C<ExtUtils::MakeMaker> to build and install perl modules. |
98 | |
99 | =item * |
100 | |
21a732f3 |
101 | C<Module::Load>, by Jos Boumans, has been added. It's used to load |
102 | indistinctively modules and files. |
6c20a8f9 |
103 | |
104 | =item * |
105 | |
21a732f3 |
106 | C<Module::Loaded>, by Jos Boumans, has been added. It's used to mark |
107 | modules as loaded or unloaded. |
6c20a8f9 |
108 | |
109 | =item * |
110 | |
21a732f3 |
111 | C<Package::Constants>, by Jos Boumans, has been added. It's a simple |
112 | helper to list all constants declared in a given package. |
6c20a8f9 |
113 | |
d06a6528 |
114 | =item * |
115 | |
21a732f3 |
116 | C<Win32API::File>, by Tye McQueen, has been added (for Windows builds). |
117 | This module provides low-level access to Win32 system API calls for |
118 | files/dirs. |
d06a6528 |
119 | |
6c20a8f9 |
120 | =back |
121 | |
6c7deadb |
122 | =head1 Utility Changes |
123 | |
3c1cb5e0 |
124 | =head2 config_data |
125 | |
126 | C<config_data> is a new utility that comes with C<Module::Build>. It |
127 | provides a command-line interface to the configuration of Perl modules |
128 | that use Module::Build's framework of configurability (that is, |
129 | C<*::ConfigData> modules, that contain local configuration information for |
130 | their parent modules.) |
131 | |
6c7deadb |
132 | =head1 Documentation |
133 | |
6c20a8f9 |
134 | =head2 New manpage, perlpragma |
135 | |
473aa102 |
136 | The L<perlpragma> manpage documents how to write one's own lexical |
36d7017e |
137 | pragmas in pure Perl (something that is possible only starting with |
138 | 5.9.4). |
473aa102 |
139 | |
6c20a8f9 |
140 | =head2 New manpage, perlreguts |
141 | |
473aa102 |
142 | The L<perlreguts> manpage, due to Yves Orton, describes internals of the |
143 | Perl regular expression engine. |
144 | |
6c20a8f9 |
145 | =head2 New manpage, perlunitut |
146 | |
473aa102 |
147 | The L<perlunitut> manpage is an tutorial for programming with Unicode and |
148 | string encodings in Perl, due to Juerd Waalboer. |
149 | |
6c7deadb |
150 | =head1 Performance Enhancements |
151 | |
ffb08095 |
152 | =head2 Memory optimisations |
153 | |
21a732f3 |
154 | Several internal data structures (typeglobs, GVs, CVs, formats) have been |
155 | restructured to use less memory. (Nicholas Clark) |
156 | |
ffb08095 |
157 | =head2 UTF-8 cache optimisation |
158 | |
21a732f3 |
159 | The UTF-8 caching code is now more efficient, and used more often. |
160 | (Nicholas Clark) |
161 | |
ffb08095 |
162 | =head2 Regular expressions |
163 | |
164 | =over 4 |
165 | |
166 | =item Engine de-recursiveized |
167 | |
168 | The regular expression engine is no longer recursive, meaning that |
169 | patterns that used to overflow the stack will either die with useful |
170 | explanations, or run to completion, which, since they were able to blow |
171 | the stack before, will likely take a very long time to happen. If you were |
172 | experiencing the occasional stack overflow (or segfault) and upgrade to |
173 | discover that now perl apparently hangs instead, look for a degenerate |
174 | regex. |
175 | |
176 | =item Single char char-classes treated as literals |
177 | |
178 | Classes of a single character are now treated the same as if the |
179 | character had been used as a literal, meaning that code that uses |
180 | char-classes as an escaping mechanism will see a speedup. |
181 | |
182 | =item Trie optimisation of literal string alternations |
183 | |
184 | Alternations, where possible, are optimised into more efficient matching |
185 | structures. String literal alternations are merged into a trie and are |
186 | matched simultaneously. This means that instead of O(N) time for matching |
187 | N alternations at a given point the new code performs in O(1) time. |
188 | |
189 | B<Note:> Much code exists that works around perl's historic poor |
190 | performance on alternations. Often the tricks used to do so will disable |
191 | the new optimisations. Hopefully the utility modules used for this purpose |
192 | will be educated about these new optimisations by the time 5.10 is |
193 | released. |
194 | |
195 | =item Aho-Corasick start-point optimisation |
196 | |
197 | When a pattern starts with a trie-able alternation and there aren't |
198 | better optimisations available the regex engine will use Aho-Corasick |
199 | matching to find the start point. |
200 | |
201 | =back |
6c20a8f9 |
202 | |
6c7deadb |
203 | =head1 Installation and Configuration Improvements |
204 | |
21a732f3 |
205 | =head2 Relocatable installations |
206 | |
207 | TODO |
208 | |
ddc61b51 |
209 | =head2 Ports |
210 | |
473aa102 |
211 | Many improvements have been made towards making Perl work correctly on |
212 | z/OS. |
213 | |
3c1cb5e0 |
214 | Perl has been reported to work on DragonFlyBSD. |
215 | |
ddc61b51 |
216 | =head2 Compilation improvements |
217 | |
218 | All F<ppport.h> files in the XS modules bundled with perl are now |
21a732f3 |
219 | autogenerated at build time. (Marcus Holland-Moritz) |
ddc61b51 |
220 | |
221 | =head2 New probes |
222 | |
3c1cb5e0 |
223 | The configuration process now detects whether strlcat() and strlcpy() are |
ddc61b51 |
224 | available. When they are not available, perl's own version is used (from |
225 | Russ Allbery's public domain implementation). Various places in the perl |
21a732f3 |
226 | interpreter now uses them. (Steve Peters) |
ddc61b51 |
227 | |
6c7deadb |
228 | =head1 Selected Bug Fixes |
229 | |
473aa102 |
230 | =head2 PERL5SHELL and tainting |
231 | |
21a732f3 |
232 | On Windows, PERL5SHELL is now checked for taintedness. (Rafael |
233 | Garcia-Suarez) |
473aa102 |
234 | |
235 | =head2 Using *FILE{IO} |
236 | |
237 | C<stat()> and C<-X> filetests now treat *FILE{IO} filehandles like *FILE |
21a732f3 |
238 | filehandles. (Steve Peters) |
239 | |
240 | =head2 Overloading and reblessing |
241 | |
242 | Overloading now works when references are reblessed into another class. |
243 | Internally, this has been implemented by moving the flag for "overloading" |
244 | from the reference to the referent, which logically is where it should |
245 | always have been. (Nicholas Clark) |
246 | |
247 | =head2 Overloading and UTF-8 |
248 | |
249 | A few bugs related to UTF-8 handling with objects that have |
250 | stringification overloaded have been fixed. (Nicholas Clark) |
473aa102 |
251 | |
6c7deadb |
252 | =head1 New or Changed Diagnostics |
253 | |
21a732f3 |
254 | =over 4 |
255 | |
256 | =item State variable %s will be reinitialized |
257 | |
258 | One can assign initial values to state variables, but not when they're |
259 | declared as a sub-part of a list assignment. See L<perldiag>. |
260 | |
261 | =back |
262 | |
6c7deadb |
263 | =head1 Changed Internals |
264 | |
3c1cb5e0 |
265 | A new file, F<mathoms.c>, contains functions that aren't used anymore in |
266 | the perl core, but that remain around because modules out there might |
267 | still use them. They come from a factorization effort: for example, many |
268 | PP functions are now shared for several ops. |
6c20a8f9 |
269 | |
6c7deadb |
270 | =head1 Known Problems |
271 | |
3c1cb5e0 |
272 | One warning test (number 263 in F<lib/warnings.t>) fails under UTF-8 |
273 | locales. |
274 | |
275 | Bytecode tests fails under several platforms. Support for byteloader and |
276 | compiler is considered to be removed before the 5.10.0 release. |
6c7deadb |
277 | |
d06a6528 |
278 | =head2 Platform-specific Problems |
279 | |
280 | The test F<ext/Socket/t/socketpair.t> crashes after completing all tests |
281 | successfully when built with USE_ITHREADS and PERL_IMPLICIT_SYS on Win32. |
282 | |
6c7deadb |
283 | =head1 Reporting Bugs |
284 | |
285 | If you find what you think is a bug, you might check the articles |
286 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
36d7017e |
287 | bug database at http://rt.perl.org/rt3/ . There may also be |
6c7deadb |
288 | information at http://www.perl.org/ , the Perl Home Page. |
289 | |
290 | If you believe you have an unreported bug, please run the B<perlbug> |
291 | program included with your release. Be sure to trim your bug down |
292 | to a tiny but sufficient test case. Your bug report, along with the |
293 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
294 | analysed by the Perl porting team. |
295 | |
296 | =head1 SEE ALSO |
297 | |
298 | The F<Changes> file for exhaustive details on what changed. |
299 | |
300 | The F<INSTALL> file for how to build Perl. |
301 | |
302 | The F<README> file for general stuff. |
303 | |
304 | The F<Artistic> and F<Copying> files for copyright information. |
305 | |
306 | =cut |