[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  =head1 NAME
   2  
   3  perl591delta - what is new for perl v5.9.1
   4  
   5  =head1 DESCRIPTION
   6  
   7  This document describes differences between the 5.9.0 and the 5.9.1
   8  development releases. See L<perl590delta> for the differences between
   9  5.8.0 and 5.9.0.
  10  
  11  =head1 Incompatible Changes
  12  
  13  =head2 substr() lvalues are no longer fixed-length
  14  
  15  The lvalues returned by the three argument form of substr() used to be a
  16  "fixed length window" on the original string. In some cases this could
  17  cause surprising action at distance or other undefined behaviour. Now the
  18  length of the window adjusts itself to the length of the string assigned to
  19  it.
  20  
  21  =head2 The C<:unique> attribute is only meaningful for globals
  22  
  23  Now applying C<:unique> to lexical variables and to subroutines will
  24  result in a compilation error.
  25  
  26  =head1 Core Enhancements
  27  
  28  =head2 Lexical C<$_>
  29  
  30  The default variable C<$_> can now be lexicalized, by declaring it like
  31  any other lexical variable, with a simple
  32  
  33      my $_;
  34  
  35  The operations that default on C<$_> will use the lexically-scoped
  36  version of C<$_> when it exists, instead of the global C<$_>.
  37  
  38  In a C<map> or a C<grep> block, if C<$_> was previously my'ed, then the
  39  C<$_> inside the block is lexical as well (and scoped to the block).
  40  
  41  In a scope where C<$_> has been lexicalized, you can still have access to
  42  the global version of C<$_> by using C<$::_>, or, more simply, by
  43  overriding the lexical declaration with C<our $_>.
  44  
  45  =head2 Tied hashes in scalar context
  46  
  47  As of perl 5.8.2/5.9.0, tied hashes did not return anything useful in
  48  scalar context, for example when used as boolean tests:
  49  
  50      if (%tied_hash) { ... }
  51  
  52  The old nonsensical behaviour was always to return false,
  53  regardless of whether the hash is empty or has elements.
  54  
  55  There is now an interface for the implementors of tied hashes to implement
  56  the behaviour of a hash in scalar context, via the SCALAR method (see
  57  L<perltie>).  Without a SCALAR method, perl will try to guess whether
  58  the hash is empty, by testing if it's inside an iteration (in this case
  59  it can't be empty) or by calling FIRSTKEY.
  60  
  61  =head2 Formats
  62  
  63  Formats were improved in several ways. A new field, C<^*>, can be used for
  64  variable-width, one-line-at-a-time text. Null characters are now handled
  65  correctly in picture lines. Using C<@#> and C<~~> together will now
  66  produce a compile-time error, as those format fields are incompatible.
  67  L<perlform> has been improved, and miscellaneous bugs fixed.
  68  
  69  =head2 Stacked filetest operators
  70  
  71  As a new form of syntactic sugar, it's now possible to stack up filetest
  72  operators. You can now write C<-f -w -x $file> in a row to mean
  73  C<-x $file && -w _ && -f _>. See L<perlfunc/-X>.
  74  
  75  =head1 Modules and Pragmata
  76  
  77  =over 4
  78  
  79  =item Benchmark
  80  
  81  In C<Benchmark>, cmpthese() and timestr() now use the time statistics of
  82  children instead of parent when the selected style is 'nop'.
  83  
  84  =item Carp
  85  
  86  The error messages produced by C<Carp> now include spaces between the
  87  arguments in function argument lists: this makes long error messages
  88  appear more nicely in browsers and other tools.
  89  
  90  =item Exporter
  91  
  92  C<Exporter> will now recognize grouping tags (such as C<:name>) anywhere
  93  in the import list, not only at the beginning.
  94  
  95  =item FindBin
  96  
  97  A function C<again> is provided to resolve problems where modules in different
  98  directories wish to use FindBin.
  99  
 100  =item List::Util
 101  
 102  You can now weaken references to read only values.
 103  
 104  =item threads::shared
 105  
 106  C<cond_wait> has a new two argument form. C<cond_timedwait> has been added.
 107  
 108  =back
 109  
 110  =head1 Utility Changes
 111  
 112  C<find2perl> now assumes C<-print> as a default action. Previously, it
 113  needed to be specified explicitly.
 114  
 115  A new utility, C<prove>, makes it easy to run an individual regression test
 116  at the command line. C<prove> is part of Test::Harness, which users of earlier
 117  Perl versions can install from CPAN.
 118  
 119  The perl debugger now supports a C<save> command, to save the current
 120  history to a file, and an C<i> command, which prints the inheritance tree
 121  of its argument (if the C<Class::ISA> module is installed.)
 122  
 123  =head1 Documentation
 124  
 125  The documentation has been revised in places to produce more standard manpages.
 126  
 127  The long-existing feature of C</(?{...})/> regexps setting C<$_> and pos()
 128  is now documented.
 129  
 130  =head1 Performance Enhancements
 131  
 132  Sorting arrays in place (C<@a = sort @a>) is now optimized to avoid
 133  making a temporary copy of the array.
 134  
 135  The operations involving case mapping on UTF-8 strings (uc(), lc(),
 136  C<//i>, etc.) have been greatly speeded up.
 137  
 138  Access to elements of lexical arrays via a numeric constant between 0 and
 139  255 is now faster. (This used to be only the case for global arrays.)
 140  
 141  =head1 Selected Bug Fixes
 142  
 143  =head2 UTF-8 bugs
 144  
 145  Using substr() on a UTF-8 string could cause subsequent accesses on that
 146  string to return garbage. This was due to incorrect UTF-8 offsets being
 147  cached, and is now fixed.
 148  
 149  join() could return garbage when the same join() statement was used to
 150  process 8 bit data having earlier processed UTF-8 data, due to the flags
 151  on that statement's temporary workspace not being reset correctly. This
 152  is now fixed.
 153  
 154  Using Unicode keys with tied hashes should now work correctly.
 155  
 156  chop() and chomp() used to mangle UTF-8 strings.  This has been fixed.
 157  
 158  sprintf() used to misbehave when the format string was in UTF-8. This is
 159  now fixed.
 160  
 161  =head2 Threading bugs
 162  
 163  Hashes with the C<:unique> attribute weren't made read-only in new
 164  threads. They are now.
 165  
 166  =head2 More bugs
 167  
 168  C<$a .. $b> will now work as expected when either $a or $b is C<undef>.
 169  
 170  Reading $^E now preserves $!. Previously, the C code implementing $^E
 171  did not preserve C<errno>, so reading $^E could cause C<errno> and therefore
 172  C<$!> to change unexpectedly.
 173  
 174  C<strict> wasn't in effect in regexp-eval blocks (C</(?{...})/>).
 175  
 176  =head1 New or Changed Diagnostics
 177  
 178  A new deprecation warning, I<Deprecated use of my() in false conditional>,
 179  has been added, to warn against the use of the dubious and deprecated
 180  construct
 181  
 182      my $x if 0;
 183  
 184  See L<perldiag>.
 185  
 186  The fatal error I<DESTROY created new reference to dead object> is now
 187  documented in L<perldiag>.
 188  
 189  A new error, I<%ENV is aliased to %s>, is produced when taint checks are
 190  enabled and when C<*ENV> has been aliased (and thus doesn't reflect the
 191  program's environment anymore.)
 192  
 193  =head1 Changed Internals
 194  
 195  These news matter to you only if you either write XS code or like to
 196  know about or hack Perl internals (using Devel::Peek or any of the
 197  C<B::> modules counts), or like to run Perl with the C<-D> option.
 198  
 199  =head2 Reordering of SVt_* constants
 200  
 201  The relative ordering of constants that define the various types of C<SV>
 202  have changed; in particular, C<SVt_PVGV> has been moved before C<SVt_PVLV>,
 203  C<SVt_PVAV>, C<SVt_PVHV> and C<SVt_PVCV>.  This is unlikely to make any
 204  difference unless you have code that explicitly makes assumptions about that
 205  ordering. (The inheritance hierarchy of C<B::*> objects has been changed
 206  to reflect this.)
 207  
 208  =head2 Removal of CPP symbols
 209  
 210  The C preprocessor symbols C<PERL_PM_APIVERSION> and
 211  C<PERL_XS_APIVERSION>, which were supposed to give the version number of
 212  the oldest perl binary-compatible (resp. source-compatible) with the
 213  present one, were not used, and sometimes had misleading values. They have
 214  been removed.
 215  
 216  =head2 Less space is used by ops
 217  
 218  The C<BASEOP> structure now uses less space. The C<op_seq> field has been
 219  removed and replaced by two one-bit fields, C<op_opt> and C<op_static>.
 220  C<opt_type> is now 9 bits long. (Consequently, the C<B::OP> class doesn't
 221  provide an C<seq> method anymore.)
 222  
 223  =head2 New parser
 224  
 225  perl's parser is now generated by bison (it used to be generated by
 226  byacc.) As a result, it seems to be a bit more robust.
 227  
 228  =head1 Configuration and Building
 229  
 230  C<Configure> now invokes callbacks regardless of the value of the variable
 231  they are called for. Previously callbacks were only invoked in the
 232  C<case $variable $define)> branch. This change should only affect platform
 233  maintainers writing configuration hints files.
 234  
 235  The portability and cleanliness of the Win32 makefiles has been improved.
 236  
 237  =head1 Known Problems
 238  
 239  There are still a couple of problems in the implementation of the lexical
 240  C<$_>: it doesn't work inside C</(?{...})/> blocks and with regard to the
 241  reverse() built-in used without arguments. (See the TODO tests in
 242  F<t/op/mydef.t>.)
 243  
 244  =head2 Platform Specific Problems
 245  
 246  The test F<ext/IPC/SysV/t/ipcsysv.t> may fail on OpenBSD. This hasn't been
 247  diagnosed yet.
 248  
 249  On some configurations on AIX 5, one test in F<lib/Time/Local.t> fails.
 250  When configured with long doubles, perl may fail tests 224-236 in
 251  F<t/op/pow.t> on the same platform.
 252  
 253  For threaded builds, F<ext/threads/shared/t/wait.t> has been reported to
 254  fail some tests on HP-UX 10.20.
 255  
 256  =head1 To-do for perl 5.10.0
 257  
 258  This is a non-exhaustive, non-ordered, non-contractual and non-definitive
 259  list of things to do (or nice to have) for perl 5.10.0 :
 260  
 261  Clean up and finish support for assertions. See L<assertions>.
 262  
 263  Reimplement the mechanism of lexical pragmas to be more extensible. Fix
 264  current pragmas that don't work well (or at all) with lexical scopes or in
 265  run-time eval(STRING) (C<sort>, C<re>, C<encoding> for example). MJD has a
 266  preliminary patch that implements this.
 267  
 268  Fix (or rewrite) the implementation of the C</(?{...})/> closures.
 269  
 270  Conversions from byte strings to UTF-8 currently map high bit characters
 271  to Unicode without translation (or, depending on how you look at it, by
 272  implicitly assuming that the byte strings are in Latin-1). As perl assumes
 273  the C locale by default, upgrading a string to UTF-8 may change the
 274  meaning of its contents regarding character classes, case mapping, etc.
 275  This should probably emit a warning (at least).
 276  
 277  Introduce a new special block, UNITCHECK, which is run at the end of a
 278  compilation unit (module, file, eval(STRING) block). This will correspond to
 279  the Perl 6 CHECK. Perl 5's CHECK cannot be changed or removed because the
 280  O.pm/B.pm backend framework depends on it.
 281  
 282  Study the possibility of adding a new prototype character, C<_>, meaning
 283  "this argument defaults to $_".
 284  
 285  Make the peephole optimizer optional.
 286  
 287  Allow lexical aliases (maybe via the syntax C<my \$alias = \$foo>.
 288  
 289  Fix the bugs revealed by running the test suite with the C<-t> switch (via
 290  C<make test.taintwarn>).
 291  
 292  Make threads more robust.
 293  
 294  Make C<no 6> and C<no v6> work (opposite of C<use 5.005>, etc.).
 295  
 296  A test suite for the B module would be nice.
 297  
 298  A ponie.
 299  
 300  =head1 Reporting Bugs
 301  
 302  If you find what you think is a bug, you might check the articles
 303  recently posted to the comp.lang.perl.misc newsgroup and the perl
 304  bug database at http://bugs.perl.org/ .  There may also be
 305  information at http://www.perl.org/ , the Perl Home Page.
 306  
 307  If you believe you have an unreported bug, please run the B<perlbug>
 308  program included with your release.  Be sure to trim your bug down
 309  to a tiny but sufficient test case.  Your bug report, along with the
 310  output of C<perl -V>, will be sent off to perlbug@perl.org to be
 311  analysed by the Perl porting team.
 312  
 313  =head1 SEE ALSO
 314  
 315  The F<Changes> file for exhaustive details on what changed.
 316  
 317  The F<INSTALL> file for how to build Perl.
 318  
 319  The F<README> file for general stuff.
 320  
 321  The F<Artistic> and F<Copying> files for copyright information.
 322  
 323  =cut


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