[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/pod/ -> perl594delta.pod (source)

   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


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1