3 perl594delta - what is new for perl v5.9.4
7 This document describes differences between the 5.9.3 and the 5.9.4
8 development releases. See L<perl590delta>, L<perl591delta>, L<perl592delta>
9 and L<perl593delta> for the differences between 5.8.0 and 5.9.3.
11 =head1 Incompatible Changes
15 A bareword argument to chdir() is now recognized as a file handle.
16 Earlier releases interpreted the bareword as a directory name.
19 =head2 Handling of pmc files
21 An old feature of perl was 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.
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.)
30 =head2 @- and @+ in patterns
32 The special arrays C<@-> and C<@+> are no longer interpolated in regular
33 expressions. (Sadahiro Tomoyuki)
35 =head2 $AUTOLOAD can now be tainted
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.
41 =head1 Core Enhancements
43 =head2 state() variables
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 is
48 persistent: unlike C<my> variables, they're not undefined at scope entry,
49 but retain their previous value. (Rafael Garcia-Suarez)
51 To use state variables, one needs to enable them by using
55 or by using the C<-E> command-line switch in one-liners.
57 See L<perlsub/"Persistent variables via state()">.
59 =head2 UNIVERSAL::DOES()
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 overridden when
64 module authors use other types of relations between classes (in addition
65 to inheritance). (chromatic)
67 See L<< UNIVERSAL/"$obj->DOES( ROLE )" >>.
69 =head2 Exceptions in constant folding
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, Dave Mitchell)
76 =head2 Source filters in @INC
78 It's possible to enhance the mechanism of subroutine hooks in @INC by
79 adding a source filter on top of the filehandle opened and returned by the
80 hook. This feature was planned a long time ago, but wasn't quite working
81 until now. See L<perlfunc/require> for details. (Nicholas Clark)
85 MAD, which stands for I<Misc Attribute Decoration>, is a
86 still-in-development work leading to a Perl 5 to Perl 6 converter. To
87 enable it, it's necessary to pass the argument C<-Dmad> to Configure. The
88 obtained perl isn't binary compatible with a regular perl 5.9.4, and has
89 space and speed penalties; moreover not all regression tests still pass
90 with it. (Larry Wall, Nicholas Clark)
92 =head1 Modules and Pragmas
98 C<encoding::warnings> is now a lexical pragma. (Although on older perls,
99 which don't have support for lexical pragmas, it keeps its global
100 behaviour.) (Audrey Tang)
104 C<threads> is now a dual-life module, also available on CPAN. It has been
105 expanded in many ways. A kill() method is available for thread signalling.
106 One can get thread status, or the list of running or joinable threads.
108 A new C<< threads->exit() >> method is used to exit from the application
109 (this is the default for the main thread) or from the current thread only
110 (this is the default for all other threads). On the other hand, the exit()
111 built-in now always causes the whole application to terminate. (Jerry
116 =head2 New Core Modules
122 C<Hash::Util::FieldHash>, by Anno Siegel, has been added. This module
123 provides support for I<field hashes>: hashes that maintain an association
124 of a reference with a value, in a thread-safe garbage-collected way.
125 Such hashes are useful to implement inside-out objects.
129 C<Module::Build>, by Ken Williams, has been added. It's an alternative to
130 C<ExtUtils::MakeMaker> to build and install perl modules.
134 C<Module::Load>, by Jos Boumans, has been added. It provides a single
135 interface to load Perl modules and F<.pl> files.
139 C<Module::Loaded>, by Jos Boumans, has been added. It's used to mark
140 modules as loaded or unloaded.
144 C<Package::Constants>, by Jos Boumans, has been added. It's a simple
145 helper to list all constants declared in a given package.
149 C<Win32API::File>, by Tye McQueen, has been added (for Windows builds).
150 This module provides low-level access to Win32 system API calls for
155 =head1 Utility Changes
159 C<config_data> is a new utility that comes with C<Module::Build>. It
160 provides a command-line interface to the configuration of Perl modules
161 that use Module::Build's framework of configurability (that is,
162 C<*::ConfigData> modules that contain local configuration information for
163 their parent modules.)
167 =head2 New manpage, perlpragma
169 The L<perlpragma> manpage documents how to write one's own lexical
170 pragmas in pure Perl (something that is possible starting with 5.9.4).
172 =head2 New manpage, perlreguts
174 The L<perlreguts> manpage, courtesy of Yves Orton, describes internals of the
175 Perl regular expression engine.
177 =head2 New manpage, perlunitut
179 The L<perlunitut> manpage is an tutorial for programming with Unicode and
180 string encodings in Perl, courtesy of Juerd Waalboer.
182 =head1 Performance Enhancements
184 =head2 Memory optimisations
186 Several internal data structures (typeglobs, GVs, CVs, formats) have been
187 restructured to use less memory. (Nicholas Clark)
189 =head2 UTF-8 cache optimisation
191 The UTF-8 caching code is now more efficient, and used more often.
194 =head2 Regular expressions
198 =item Engine de-recursivised
200 The regular expression engine is no longer recursive, meaning that
201 patterns that used to overflow the stack will either die with useful
202 explanations, or run to completion, which, since they were able to blow
203 the stack before, will likely take a very long time to happen. If you were
204 experiencing the occasional stack overflow (or segfault) and upgrade to
205 discover that now perl apparently hangs instead, look for a degenerate
206 regex. (Dave Mitchell)
208 =item Single char char-classes treated as literals
210 Classes of a single character are now treated the same as if the character
211 had been used as a literal, meaning that code that uses char-classes as an
212 escaping mechanism will see a speedup. (Yves Orton)
214 =item Trie optimisation of literal string alternations
216 Alternations, where possible, are optimised into more efficient matching
217 structures. String literal alternations are merged into a trie and are
218 matched simultaneously. This means that instead of O(N) time for matching
219 N alternations at a given point the new code performs in O(1) time. (Yves
222 B<Note:> Much code exists that works around perl's historic poor
223 performance on alternations. Often the tricks used to do so will disable
224 the new optimisations. Hopefully the utility modules used for this purpose
225 will be educated about these new optimisations by the time 5.10 is
228 =item Aho-Corasick start-point optimisation
230 When a pattern starts with a trie-able alternation and there aren't
231 better optimisations available the regex engine will use Aho-Corasick
232 matching to find the start point. (Yves Orton)
236 =head2 Sloppy stat on Windows
238 On Windows, perl's stat() function normally opens the file to determine
239 the link count and update attributes that may have been changed through
240 hard links. Setting ${^WIN32_SLOPPY_STAT} to a true value speeds up
241 stat() by not performing this operation. (Jan Dubois)
243 =head1 Installation and Configuration Improvements
245 =head2 Relocatable installations
247 There is now Configure support for creating a relocatable perl tree. If
248 you Configure with C<-Duserelocatableinc>, then the paths in @INC (and
249 everything else in %Config) can be optionally located via the path of the
252 That means that, if the string C<".../"> is found at the start of any
253 path, it's substituted with the directory of $^X. So, the relocation can
254 be configured on a per-directory basis, although the default with
255 C<-Duserelocatableinc> is that everything is relocated. The initial
256 install is done to the original configured prefix.
260 Many improvements have been made towards making Perl work correctly on
263 Perl has been reported to work on DragonFlyBSD.
265 =head2 Compilation improvements
267 All F<ppport.h> files in the XS modules bundled with perl are now
268 autogenerated at build time. (Marcus Holland-Moritz)
272 The configuration process now detects whether strlcat() and strlcpy() are
273 available. When they are not available, perl's own version is used (from
274 Russ Allbery's public domain implementation). Various places in the perl
275 interpreter now use them. (Steve Peters)
277 =head2 Windows build improvements
281 =item Building XS extensions
283 Support for building XS extension modules with the free MinGW compiler has
284 been improved in the case where perl itself was built with the Microsoft
285 VC++ compiler. (ActiveState)
287 =item Support for 64-bit compiler
289 Support for building perl with Microsoft's 64-bit compiler has been
290 improved. (ActiveState)
294 =head1 Selected Bug Fixes
296 =head2 PERL5SHELL and tainting
298 On Windows, the PERL5SHELL environment variable is now checked for
299 taintedness. (Rafael Garcia-Suarez)
301 =head2 Using *FILE{IO}
303 C<stat()> and C<-X> filetests now treat *FILE{IO} filehandles like *FILE
304 filehandles. (Steve Peters)
306 =head2 Overloading and reblessing
308 Overloading now works when references are reblessed into another class.
309 Internally, this has been implemented by moving the flag for "overloading"
310 from the reference to the referent, which logically is where it should
311 always have been. (Nicholas Clark)
313 =head2 Overloading and UTF-8
315 A few bugs related to UTF-8 handling with objects that have
316 stringification overloaded have been fixed. (Nicholas Clark)
318 =head2 eval memory leaks fixed
320 Traditionally, C<eval 'syntax error'> has leaked badly. Many (but not all)
321 of these leaks have now been eliminated or reduced. (Dave Mitchell)
323 =head2 Random device on Windows
325 In previous versions, perl would read the file F</dev/urandom> if it
326 existed when seeding its random number generator. That file is unlikely
327 to exist on Windows, and if it did would probably not contain appropriate
328 data, so perl no longer tries to read it on Windows. (Alex Davies)
330 =head1 New or Changed Diagnostics
334 =item State variable %s will be reinitialized
336 One can assign initial values to state variables, but not when they're
337 declared as a sub-part of a list assignment. See L<perldiag>.
341 =head1 Changed Internals
343 A new file, F<mathoms.c>, contains functions that aren't used anymore in
344 the perl core, but remain around because modules out there might
345 still use them. They come from a factorization effort: for example, many
346 PP functions are now shared for several ops.
348 The implementation of the special variables $^H and %^H has changed, to
349 allow implementing lexical pragmas in pure perl.
351 =head1 Known Problems
353 One warning test (number 263 in F<lib/warnings.t>) fails under UTF-8
356 Bytecode tests fail under several platforms. We are considering removing
357 support for byteloader and compiler before the 5.10.0 release.
359 =head1 Reporting Bugs
361 If you find what you think is a bug, you might check the articles
362 recently posted to the comp.lang.perl.misc newsgroup and the perl
363 bug database at http://rt.perl.org/rt3/ . There may also be
364 information at http://www.perl.org/ , the Perl Home Page.
366 If you believe you have an unreported bug, please run the B<perlbug>
367 program included with your release. Be sure to trim your bug down
368 to a tiny but sufficient test case. Your bug report, along with the
369 output of C<perl -V>, will be sent off to perlbug@perl.org to be
370 analysed by the Perl porting team.
374 The F<Changes> file for exhaustive details on what changed.
376 The F<INSTALL> file for how to build Perl.
378 The F<README> file for general stuff.
380 The F<Artistic> and F<Copying> files for copyright information.