| 1 | =head1 NAME
|
|---|
| 2 |
|
|---|
| 3 | perldelta - what is new for perl v5.8.7
|
|---|
| 4 |
|
|---|
| 5 | =head1 DESCRIPTION
|
|---|
| 6 |
|
|---|
| 7 | This document describes differences between the 5.8.6 release and
|
|---|
| 8 | the 5.8.7 release.
|
|---|
| 9 |
|
|---|
| 10 | =head1 Incompatible Changes
|
|---|
| 11 |
|
|---|
| 12 | There are no changes incompatible with 5.8.6.
|
|---|
| 13 |
|
|---|
| 14 | =head1 Core Enhancements
|
|---|
| 15 |
|
|---|
| 16 | =head2 Unicode Character Database 4.1.0
|
|---|
| 17 |
|
|---|
| 18 | The copy of the Unicode Character Database included in Perl 5.8 has
|
|---|
| 19 | been updated to 4.1.0 from 4.0.1. See
|
|---|
| 20 | L<http://www.unicode.org/versions/Unicode4.1.0/#NotableChanges> for the
|
|---|
| 21 | notable changes.
|
|---|
| 22 |
|
|---|
| 23 | =head2 suidperl less insecure
|
|---|
| 24 |
|
|---|
| 25 | A pair of exploits in C<suidperl> involving debugging code have been closed.
|
|---|
| 26 |
|
|---|
| 27 | For new projects the core perl team strongly recommends that you use
|
|---|
| 28 | dedicated, single purpose security tools such as C<sudo> in preference to
|
|---|
| 29 | C<suidperl>.
|
|---|
| 30 |
|
|---|
| 31 | =head2 Optional site customization script
|
|---|
| 32 |
|
|---|
| 33 | The perl interpreter can be built to allow the use of a site customization
|
|---|
| 34 | script. By default this is not enabled, to be consistent with previous perl
|
|---|
| 35 | releases. To use this, add C<-Dusesitecustomize> to the command line flags
|
|---|
| 36 | when running the C<Configure> script. See also L<perlrun/-f>.
|
|---|
| 37 |
|
|---|
| 38 | =head2 C<Config.pm> is now much smaller.
|
|---|
| 39 |
|
|---|
| 40 | C<Config.pm> is now about 3K rather than 32K, with the infrequently used
|
|---|
| 41 | code and C<%Config> values loaded on demand. This is transparent to the
|
|---|
| 42 | programmer, but means that most code will save parsing and loading 29K of
|
|---|
| 43 | script (for example, code that uses C<File::Find>).
|
|---|
| 44 |
|
|---|
| 45 | =head1 Modules and Pragmata
|
|---|
| 46 |
|
|---|
| 47 | =over 4
|
|---|
| 48 |
|
|---|
| 49 | =item *
|
|---|
| 50 |
|
|---|
| 51 | B upgraded to version 1.09
|
|---|
| 52 |
|
|---|
| 53 | =item *
|
|---|
| 54 |
|
|---|
| 55 | base upgraded to version 2.07
|
|---|
| 56 |
|
|---|
| 57 | =item *
|
|---|
| 58 |
|
|---|
| 59 | bignum upgraded to version 0.17
|
|---|
| 60 |
|
|---|
| 61 | =item *
|
|---|
| 62 |
|
|---|
| 63 | bytes upgraded to version 1.02
|
|---|
| 64 |
|
|---|
| 65 | =item *
|
|---|
| 66 |
|
|---|
| 67 | Carp upgraded to version 1.04
|
|---|
| 68 |
|
|---|
| 69 | =item *
|
|---|
| 70 |
|
|---|
| 71 | CGI upgraded to version 3.10
|
|---|
| 72 |
|
|---|
| 73 | =item *
|
|---|
| 74 |
|
|---|
| 75 | Class::ISA upgraded to version 0.33
|
|---|
| 76 |
|
|---|
| 77 | =item *
|
|---|
| 78 |
|
|---|
| 79 | Data::Dumper upgraded to version 2.121_02
|
|---|
| 80 |
|
|---|
| 81 | =item *
|
|---|
| 82 |
|
|---|
| 83 | DB_File upgraded to version 1.811
|
|---|
| 84 |
|
|---|
| 85 | =item *
|
|---|
| 86 |
|
|---|
| 87 | Devel::PPPort upgraded to version 3.06
|
|---|
| 88 |
|
|---|
| 89 | =item *
|
|---|
| 90 |
|
|---|
| 91 | Digest upgraded to version 1.10
|
|---|
| 92 |
|
|---|
| 93 | =item *
|
|---|
| 94 |
|
|---|
| 95 | Encode upgraded to version 2.10
|
|---|
| 96 |
|
|---|
| 97 | =item *
|
|---|
| 98 |
|
|---|
| 99 | FileCache upgraded to version 1.05
|
|---|
| 100 |
|
|---|
| 101 | =item *
|
|---|
| 102 |
|
|---|
| 103 | File::Path upgraded to version 1.07
|
|---|
| 104 |
|
|---|
| 105 | =item *
|
|---|
| 106 |
|
|---|
| 107 | File::Temp upgraded to version 0.16
|
|---|
| 108 |
|
|---|
| 109 | =item *
|
|---|
| 110 |
|
|---|
| 111 | IO::File upgraded to version 1.11
|
|---|
| 112 |
|
|---|
| 113 | =item *
|
|---|
| 114 |
|
|---|
| 115 | IO::Socket upgraded to version 1.28
|
|---|
| 116 |
|
|---|
| 117 | =item *
|
|---|
| 118 |
|
|---|
| 119 | Math::BigInt upgraded to version 1.77
|
|---|
| 120 |
|
|---|
| 121 | =item *
|
|---|
| 122 |
|
|---|
| 123 | Math::BigRat upgraded to version 0.15
|
|---|
| 124 |
|
|---|
| 125 | =item *
|
|---|
| 126 |
|
|---|
| 127 | overload upgraded to version 1.03
|
|---|
| 128 |
|
|---|
| 129 | =item *
|
|---|
| 130 |
|
|---|
| 131 | PathTools upgraded to version 3.05
|
|---|
| 132 |
|
|---|
| 133 | =item *
|
|---|
| 134 |
|
|---|
| 135 | Pod::HTML upgraded to version 1.0503
|
|---|
| 136 |
|
|---|
| 137 | =item *
|
|---|
| 138 |
|
|---|
| 139 | Pod::Perldoc upgraded to version 3.14
|
|---|
| 140 |
|
|---|
| 141 | =item *
|
|---|
| 142 |
|
|---|
| 143 | Pod::LaTeX upgraded to version 0.58
|
|---|
| 144 |
|
|---|
| 145 | =item *
|
|---|
| 146 |
|
|---|
| 147 | Pod::Parser upgraded to version 1.30
|
|---|
| 148 |
|
|---|
| 149 | =item *
|
|---|
| 150 |
|
|---|
| 151 | Symbol upgraded to version 1.06
|
|---|
| 152 |
|
|---|
| 153 | =item *
|
|---|
| 154 |
|
|---|
| 155 | Term::ANSIColor upgraded to version 1.09
|
|---|
| 156 |
|
|---|
| 157 | =item *
|
|---|
| 158 |
|
|---|
| 159 | Test::Harness upgraded to version 2.48
|
|---|
| 160 |
|
|---|
| 161 | =item *
|
|---|
| 162 |
|
|---|
| 163 | Test::Simple upgraded to version 0.54
|
|---|
| 164 |
|
|---|
| 165 | =item *
|
|---|
| 166 |
|
|---|
| 167 | Text::Wrap upgraded to version 2001.09293, to fix a bug when wrap() was
|
|---|
| 168 | called with a non-space separator.
|
|---|
| 169 |
|
|---|
| 170 | =item *
|
|---|
| 171 |
|
|---|
| 172 | threads::shared upgraded to version 0.93
|
|---|
| 173 |
|
|---|
| 174 | =item *
|
|---|
| 175 |
|
|---|
| 176 | Time::HiRes upgraded to version 1.66
|
|---|
| 177 |
|
|---|
| 178 | =item *
|
|---|
| 179 |
|
|---|
| 180 | Time::Local upgraded to version 1.11
|
|---|
| 181 |
|
|---|
| 182 | =item *
|
|---|
| 183 |
|
|---|
| 184 | Unicode::Normalize upgraded to version 0.32
|
|---|
| 185 |
|
|---|
| 186 | =item *
|
|---|
| 187 |
|
|---|
| 188 | utf8 upgraded to version 1.05
|
|---|
| 189 |
|
|---|
| 190 | =item *
|
|---|
| 191 |
|
|---|
| 192 | Win32 upgraded to version 0.24, which provides Win32::GetFileVersion
|
|---|
| 193 |
|
|---|
| 194 | =back
|
|---|
| 195 |
|
|---|
| 196 | =head1 Utility Changes
|
|---|
| 197 |
|
|---|
| 198 | =head2 find2perl enhancements
|
|---|
| 199 |
|
|---|
| 200 | C<find2perl> has new options C<-iname>, C<-path> and C<-ipath>.
|
|---|
| 201 |
|
|---|
| 202 | =head1 Performance Enhancements
|
|---|
| 203 |
|
|---|
| 204 | The internal pointer mapping hash used during ithreads cloning now uses an
|
|---|
| 205 | arena for memory allocation. In tests this reduced ithreads cloning time by
|
|---|
| 206 | about 10%.
|
|---|
| 207 |
|
|---|
| 208 | =head1 Installation and Configuration Improvements
|
|---|
| 209 |
|
|---|
| 210 | =over 4
|
|---|
| 211 |
|
|---|
| 212 | =item *
|
|---|
| 213 |
|
|---|
| 214 | The Win32 "dmake" makefile.mk has been updated to make it compatible
|
|---|
| 215 | with the latest versions of dmake.
|
|---|
| 216 |
|
|---|
| 217 | =item *
|
|---|
| 218 |
|
|---|
| 219 | C<PERL_MALLOC>, C<DEBUG_MSTATS>, C<PERL_HASH_SEED_EXPLICIT> and C<NO_HASH_SEED>
|
|---|
| 220 | should now work in Win32 makefiles.
|
|---|
| 221 |
|
|---|
| 222 | =back
|
|---|
| 223 |
|
|---|
| 224 | =head1 Selected Bug Fixes
|
|---|
| 225 |
|
|---|
| 226 | =over 4
|
|---|
| 227 |
|
|---|
| 228 | =item *
|
|---|
| 229 |
|
|---|
| 230 | The socket() function on Win32 has been fixed so that it is able to use
|
|---|
| 231 | transport providers which specify a protocol of 0 (meaning any protocol
|
|---|
| 232 | is allowed) once more. (This was broken in 5.8.6, and typically caused
|
|---|
| 233 | the use of ICMP sockets to fail.)
|
|---|
| 234 |
|
|---|
| 235 | =item *
|
|---|
| 236 |
|
|---|
| 237 | Another obscure bug involving C<substr> and UTF-8 caused by bad internal
|
|---|
| 238 | offset caching has been identified and fixed.
|
|---|
| 239 |
|
|---|
| 240 | =item *
|
|---|
| 241 |
|
|---|
| 242 | A bug involving the loading of UTF-8 tables by the regexp engine has been
|
|---|
| 243 | fixed - code such as C<"\x{100}" =~ /[[:print:]]/> will no longer give
|
|---|
| 244 | corrupt results.
|
|---|
| 245 |
|
|---|
| 246 | =item *
|
|---|
| 247 |
|
|---|
| 248 | Case conversion operations such as C<uc> on a long Unicode string could
|
|---|
| 249 | exhaust memory. This has been fixed.
|
|---|
| 250 |
|
|---|
| 251 | =item *
|
|---|
| 252 |
|
|---|
| 253 | C<index>/C<rindex> were buggy for some combinations of Unicode and
|
|---|
| 254 | non-Unicode data. This has been fixed.
|
|---|
| 255 |
|
|---|
| 256 | =item *
|
|---|
| 257 |
|
|---|
| 258 | C<read> (and presumably C<sysread>) would expose the UTF-8 internals when
|
|---|
| 259 | reading from a byte oriented file handle into a UTF-8 scalar. This has
|
|---|
| 260 | been fixed.
|
|---|
| 261 |
|
|---|
| 262 | =item *
|
|---|
| 263 |
|
|---|
| 264 | Several C<pack>/C<unpack> bug fixes:
|
|---|
| 265 |
|
|---|
| 266 | =over 4
|
|---|
| 267 |
|
|---|
| 268 | =item *
|
|---|
| 269 |
|
|---|
| 270 | Checksums with C<b> or C<B> formats were broken.
|
|---|
| 271 |
|
|---|
| 272 | =item *
|
|---|
| 273 |
|
|---|
| 274 | C<unpack> checksums could overflow with the C<C> format.
|
|---|
| 275 |
|
|---|
| 276 | =item *
|
|---|
| 277 |
|
|---|
| 278 | C<U0> and C<C0> are now scoped to C<()> C<pack> sub-templates.
|
|---|
| 279 |
|
|---|
| 280 | =item *
|
|---|
| 281 |
|
|---|
| 282 | Counted length prefixes now don't change C<C0>/C<U0> mode.
|
|---|
| 283 |
|
|---|
| 284 | =item *
|
|---|
| 285 |
|
|---|
| 286 | C<pack> C<Z0> used to destroy the preceding character.
|
|---|
| 287 |
|
|---|
| 288 | =item *
|
|---|
| 289 |
|
|---|
| 290 | C<P>/C<p> C<pack> formats used to only recognise literal C<undef>
|
|---|
| 291 |
|
|---|
| 292 | =back
|
|---|
| 293 |
|
|---|
| 294 | =item *
|
|---|
| 295 |
|
|---|
| 296 | Using closures with ithreads could cause perl to crash. This was due to
|
|---|
| 297 | failure to correctly lock internal OP structures, and has been fixed.
|
|---|
| 298 |
|
|---|
| 299 | =item *
|
|---|
| 300 |
|
|---|
| 301 | The return value of C<close> now correctly reflects any file errors that
|
|---|
| 302 | occur while flushing the handle's data, instead of just giving failure if
|
|---|
| 303 | the actual underlying file close operation failed.
|
|---|
| 304 |
|
|---|
| 305 | =item *
|
|---|
| 306 |
|
|---|
| 307 | C<not() || 1> used to segfault. C<not()> now behaves like C<not(0)>, which was
|
|---|
| 308 | the pre 5.6.0 behaviour.
|
|---|
| 309 |
|
|---|
| 310 | =item *
|
|---|
| 311 |
|
|---|
| 312 | C<h2ph> has various enhancements to cope with constructs in header files that
|
|---|
| 313 | used to result in incorrect or invalid output.
|
|---|
| 314 |
|
|---|
| 315 | =back
|
|---|
| 316 |
|
|---|
| 317 | =head1 New or Changed Diagnostics
|
|---|
| 318 |
|
|---|
| 319 | There is a new taint error, "%ENV is aliased to %s". This error is thrown
|
|---|
| 320 | when taint checks are enabled and when C<*ENV> has been aliased, so that
|
|---|
| 321 | C<%ENV> has no env-magic anymore and hence the environment cannot be verified
|
|---|
| 322 | as taint-free.
|
|---|
| 323 |
|
|---|
| 324 | The internals of C<pack> and C<unpack> have been updated. All legitimate
|
|---|
| 325 | templates should work as before, but there may be some changes in the error
|
|---|
| 326 | reported for complex failure cases. Any behaviour changes for non-error cases
|
|---|
| 327 | are bugs, and should be reported.
|
|---|
| 328 |
|
|---|
| 329 | =head1 Changed Internals
|
|---|
| 330 |
|
|---|
| 331 | There has been a fair amount of refactoring of the C<C> source code, partly to
|
|---|
| 332 | make it tidier and more maintainable. The resulting object code and the
|
|---|
| 333 | C<perl> binary may well be smaller than 5.8.6, and hopefully faster in some
|
|---|
| 334 | cases, but apart from this there should be no user-detectable changes.
|
|---|
| 335 |
|
|---|
| 336 | C<${^UTF8LOCALE}> has been added to give perl space access to C<PL_utf8locale>.
|
|---|
| 337 |
|
|---|
| 338 | The size of the arenas used to allocate SV heads and most SV bodies can now
|
|---|
| 339 | be changed at compile time. The old size was 1008 bytes, the new default size
|
|---|
| 340 | is 4080 bytes.
|
|---|
| 341 |
|
|---|
| 342 | =head1 Known Problems
|
|---|
| 343 |
|
|---|
| 344 | Unicode strings returned from overloaded operators can be buggy. This is a
|
|---|
| 345 | long standing bug reported since 5.8.6 was released, but we do not yet have
|
|---|
| 346 | a suitable fix for it.
|
|---|
| 347 |
|
|---|
| 348 | =head1 Platform Specific Problems
|
|---|
| 349 |
|
|---|
| 350 | On UNICOS, lib/Math/BigInt/t/bigintc.t hangs burning CPU.
|
|---|
| 351 | ext/B/t/bytecode.t and ext/Socket/t/socketpair.t both fail tests.
|
|---|
| 352 | These are unlikely to be resolved, as our valiant UNICOS porter's last
|
|---|
| 353 | Cray is being decommissioned.
|
|---|
| 354 |
|
|---|
| 355 | =head1 Reporting Bugs
|
|---|
| 356 |
|
|---|
| 357 | If you find what you think is a bug, you might check the articles
|
|---|
| 358 | recently posted to the comp.lang.perl.misc newsgroup and the perl
|
|---|
| 359 | bug database at http://bugs.perl.org. There may also be
|
|---|
| 360 | information at http://www.perl.org, the Perl Home Page.
|
|---|
| 361 |
|
|---|
| 362 | If you believe you have an unreported bug, please run the B<perlbug>
|
|---|
| 363 | program included with your release. Be sure to trim your bug down
|
|---|
| 364 | to a tiny but sufficient test case. Your bug report, along with the
|
|---|
| 365 | output of C<perl -V>, will be sent off to perlbug@perl.org to be
|
|---|
| 366 | analysed by the Perl porting team. You can browse and search
|
|---|
| 367 | the Perl 5 bugs at http://bugs.perl.org/
|
|---|
| 368 |
|
|---|
| 369 | =head1 SEE ALSO
|
|---|
| 370 |
|
|---|
| 371 | The F<Changes> file for exhaustive details on what changed.
|
|---|
| 372 |
|
|---|
| 373 | The F<INSTALL> file for how to build Perl.
|
|---|
| 374 |
|
|---|
| 375 | The F<README> file for general stuff.
|
|---|
| 376 |
|
|---|
| 377 | The F<Artistic> and F<Copying> files for copyright information.
|
|---|
| 378 |
|
|---|
| 379 | =cut
|
|---|