[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 =head1 NAME 2 3 perl594delta - 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 development 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 13 =head2 chdir FOO 14 15 A bareword argument to chdir() is now recognized as a file handle. 16 Earlier releases interpreted the bareword as a directory name. 17 (Gisle Aas) 18 19 =head2 Handling of pmc files 20 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. 25 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.) 29 30 =head2 @- and @+ in patterns 31 32 The special arrays C<@-> and C<@+> are no longer interpolated in regular 33 expressions. (Sadahiro Tomoyuki) 34 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. 39 (Rick Delaney) 40 41 =head1 Core Enhancements 42 43 =head2 state() variables 44 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) 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 59 =head2 UNIVERSAL::DOES() 60 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) 66 67 See L<< UNIVERSAL/"$obj->DOES( ROLE )" >>. 68 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, Dave Mitchell) 75 76 =head2 Source filters in @INC 77 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) 82 83 =head2 MAD 84 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) 91 92 =head1 Modules and Pragmas 93 94 =over 4 95 96 =item * 97 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) 101 102 =item * 103 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. 107 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 112 D. Hedden) 113 114 =back 115 116 =head2 New Core Modules 117 118 =over 4 119 120 =item * 121 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. 126 127 =item * 128 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. 131 132 =item * 133 134 C<Module::Load>, by Jos Boumans, has been added. It provides a single 135 interface to load Perl modules and F<.pl> files. 136 137 =item * 138 139 C<Module::Loaded>, by Jos Boumans, has been added. It's used to mark 140 modules as loaded or unloaded. 141 142 =item * 143 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. 146 147 =item * 148 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 151 files/dirs. 152 153 =back 154 155 =head1 Utility Changes 156 157 =head2 config_data 158 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.) 164 165 =head1 Documentation 166 167 =head2 New manpage, perlpragma 168 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). 171 172 =head2 New manpage, perlreguts 173 174 The L<perlreguts> manpage, courtesy of Yves Orton, describes internals of the 175 Perl regular expression engine. 176 177 =head2 New manpage, perlunitut 178 179 The L<perlunitut> manpage is an tutorial for programming with Unicode and 180 string encodings in Perl, courtesy of Juerd Waalboer. 181 182 =head1 Performance Enhancements 183 184 =head2 Memory optimisations 185 186 Several internal data structures (typeglobs, GVs, CVs, formats) have been 187 restructured to use less memory. (Nicholas Clark) 188 189 =head2 UTF-8 cache optimisation 190 191 The UTF-8 caching code is now more efficient, and used more often. 192 (Nicholas Clark) 193 194 =head2 Regular expressions 195 196 =over 4 197 198 =item Engine de-recursivised 199 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) 207 208 =item Single char char-classes treated as literals 209 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) 213 214 =item Trie optimisation of literal string alternations 215 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 220 Orton) 221 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 226 released. 227 228 =item Aho-Corasick start-point optimisation 229 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) 233 234 =back 235 236 =head2 Sloppy stat on Windows 237 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) 242 243 =head1 Installation and Configuration Improvements 244 245 =head2 Relocatable installations 246 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 250 perl executable. 251 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. 257 258 =head2 Ports 259 260 Many improvements have been made towards making Perl work correctly on 261 z/OS. 262 263 Perl has been reported to work on DragonFlyBSD. 264 265 =head2 Compilation improvements 266 267 All F<ppport.h> files in the XS modules bundled with perl are now 268 autogenerated at build time. (Marcus Holland-Moritz) 269 270 =head2 New probes 271 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) 276 277 =head2 Windows build improvements 278 279 =over 4 280 281 =item Building XS extensions 282 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) 286 287 =item Support for 64-bit compiler 288 289 Support for building perl with Microsoft's 64-bit compiler has been 290 improved. (ActiveState) 291 292 =back 293 294 =head1 Selected Bug Fixes 295 296 =head2 PERL5SHELL and tainting 297 298 On Windows, the PERL5SHELL environment variable is now checked for 299 taintedness. (Rafael Garcia-Suarez) 300 301 =head2 Using *FILE{IO} 302 303 C<stat()> and C<-X> filetests now treat *FILE{IO} filehandles like *FILE 304 filehandles. (Steve Peters) 305 306 =head2 Overloading and reblessing 307 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) 312 313 =head2 Overloading and UTF-8 314 315 A few bugs related to UTF-8 handling with objects that have 316 stringification overloaded have been fixed. (Nicholas Clark) 317 318 =head2 eval memory leaks fixed 319 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) 322 323 =head2 Random device on Windows 324 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) 329 330 =head1 New or Changed Diagnostics 331 332 =over 4 333 334 =item State variable %s will be reinitialized 335 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>. 338 339 =back 340 341 =head1 Changed Internals 342 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. 347 348 The implementation of the special variables $^H and %^H has changed, to 349 allow implementing lexical pragmas in pure perl. 350 351 =head1 Known Problems 352 353 One warning test (number 263 in F<lib/warnings.t>) fails under UTF-8 354 locales. 355 356 Bytecode tests fail under several platforms. We are considering removing 357 support for byteloader and compiler before the 5.10.0 release. 358 359 =head1 Reporting Bugs 360 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. 365 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. 371 372 =head1 SEE ALSO 373 374 The F<Changes> file for exhaustive details on what changed. 375 376 The F<INSTALL> file for how to build Perl. 377 378 The F<README> file for general stuff. 379 380 The F<Artistic> and F<Copying> files for copyright information. 381 382 =cut
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |