[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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
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 |