1*0Sstevel@tonic-gate=head1 NAME 2*0Sstevel@tonic-gate 3*0Sstevel@tonic-gateperl570delta - what's new for perl v5.7.0 4*0Sstevel@tonic-gate 5*0Sstevel@tonic-gate=head1 DESCRIPTION 6*0Sstevel@tonic-gate 7*0Sstevel@tonic-gateThis document describes differences between the 5.6.0 release and 8*0Sstevel@tonic-gatethe 5.7.0 release. 9*0Sstevel@tonic-gate 10*0Sstevel@tonic-gate=head1 Security Vulnerability Closed 11*0Sstevel@tonic-gate 12*0Sstevel@tonic-gateA potential security vulnerability in the optional suidperl component 13*0Sstevel@tonic-gateof Perl has been identified. suidperl is neither built nor installed 14*0Sstevel@tonic-gateby default. As of September the 2nd, 2000, the only known vulnerable 15*0Sstevel@tonic-gateplatform is Linux, most likely all Linux distributions. CERT and 16*0Sstevel@tonic-gatevarious vendors have been alerted about the vulnerability. 17*0Sstevel@tonic-gate 18*0Sstevel@tonic-gateThe problem was caused by Perl trying to report a suspected security 19*0Sstevel@tonic-gateexploit attempt using an external program, /bin/mail. On Linux 20*0Sstevel@tonic-gateplatforms the /bin/mail program had an undocumented feature which 21*0Sstevel@tonic-gatewhen combined with suidperl gave access to a root shell, resulting in 22*0Sstevel@tonic-gatea serious compromise instead of reporting the exploit attempt. If you 23*0Sstevel@tonic-gatedon't have /bin/mail, or if you have 'safe setuid scripts', or if 24*0Sstevel@tonic-gatesuidperl is not installed, you are safe. 25*0Sstevel@tonic-gate 26*0Sstevel@tonic-gateThe exploit attempt reporting feature has been completely removed from 27*0Sstevel@tonic-gatethe Perl 5.7.0 release, so that particular vulnerability isn't there 28*0Sstevel@tonic-gateanymore. However, further security vulnerabilities are, 29*0Sstevel@tonic-gateunfortunately, always possible. The suidperl code is being reviewed 30*0Sstevel@tonic-gateand if deemed too risky to continue to be supported, it may be 31*0Sstevel@tonic-gatecompletely removed from future releases. In any case, suidperl should 32*0Sstevel@tonic-gateonly be used by security experts who know exactly what they are doing 33*0Sstevel@tonic-gateand why they are using suidperl instead of some other solution such as 34*0Sstevel@tonic-gatesudo ( see http://www.courtesan.com/sudo/ ). 35*0Sstevel@tonic-gate 36*0Sstevel@tonic-gate=head1 Incompatible Changes 37*0Sstevel@tonic-gate 38*0Sstevel@tonic-gate=over 4 39*0Sstevel@tonic-gate 40*0Sstevel@tonic-gate=item * 41*0Sstevel@tonic-gate 42*0Sstevel@tonic-gateArrays now always interpolate into double-quoted strings: 43*0Sstevel@tonic-gateconstructs like "foo@bar" now always assume C<@bar> is an array, 44*0Sstevel@tonic-gatewhether or not the compiler has seen use of C<@bar>. 45*0Sstevel@tonic-gate 46*0Sstevel@tonic-gate=item * 47*0Sstevel@tonic-gate 48*0Sstevel@tonic-gateThe semantics of bless(REF, REF) were unclear and until someone proves 49*0Sstevel@tonic-gateit to make some sense, it is forbidden. 50*0Sstevel@tonic-gate 51*0Sstevel@tonic-gate=item * 52*0Sstevel@tonic-gate 53*0Sstevel@tonic-gateA reference to a reference now stringify as "REF(0x81485ec)" instead 54*0Sstevel@tonic-gateof "SCALAR(0x81485ec)" in order to be more consistent with the return 55*0Sstevel@tonic-gatevalue of ref(). 56*0Sstevel@tonic-gate 57*0Sstevel@tonic-gate=item * 58*0Sstevel@tonic-gate 59*0Sstevel@tonic-gateThe very dusty examples in the eg/ directory have been removed. 60*0Sstevel@tonic-gateSuggestions for new shiny examples welcome but the main issue is that 61*0Sstevel@tonic-gatethe examples need to be documented, tested and (most importantly) 62*0Sstevel@tonic-gatemaintained. 63*0Sstevel@tonic-gate 64*0Sstevel@tonic-gate=item * 65*0Sstevel@tonic-gate 66*0Sstevel@tonic-gateThe obsolete chat2 library that should never have been allowed 67*0Sstevel@tonic-gateto escape the laboratory has been decommissioned. 68*0Sstevel@tonic-gate 69*0Sstevel@tonic-gate=item * 70*0Sstevel@tonic-gate 71*0Sstevel@tonic-gateThe unimplemented POSIX regex features [[.cc.]] and [[=c=]] are still 72*0Sstevel@tonic-gaterecognised but now cause fatal errors. The previous behaviour of 73*0Sstevel@tonic-gateignoring them by default and warning if requested was unacceptable 74*0Sstevel@tonic-gatesince it, in a way, falsely promised that the features could be used. 75*0Sstevel@tonic-gate 76*0Sstevel@tonic-gate=item * 77*0Sstevel@tonic-gate 78*0Sstevel@tonic-gateThe (bogus) escape sequences \8 and \9 now give an optional warning 79*0Sstevel@tonic-gate("Unrecognized escape passed through"). There is no need to \-escape 80*0Sstevel@tonic-gateany C<\w> character. 81*0Sstevel@tonic-gate 82*0Sstevel@tonic-gate=item * 83*0Sstevel@tonic-gate 84*0Sstevel@tonic-gatelstat(FILEHANDLE) now gives a warning because the operation makes no sense. 85*0Sstevel@tonic-gateIn future releases this may become a fatal error. 86*0Sstevel@tonic-gate 87*0Sstevel@tonic-gate=item * 88*0Sstevel@tonic-gate 89*0Sstevel@tonic-gateThe long deprecated uppercase aliases for the string comparison 90*0Sstevel@tonic-gateoperators (EQ, NE, LT, LE, GE, GT) have now been removed. 91*0Sstevel@tonic-gate 92*0Sstevel@tonic-gate=item * 93*0Sstevel@tonic-gate 94*0Sstevel@tonic-gateThe regular expression captured submatches ($1, $2, ...) are now 95*0Sstevel@tonic-gatemore consistently unset if the match fails, instead of leaving false 96*0Sstevel@tonic-gatedata lying around in them. 97*0Sstevel@tonic-gate 98*0Sstevel@tonic-gate=item * 99*0Sstevel@tonic-gate 100*0Sstevel@tonic-gateThe tr///C and tr///U features have been removed and will not return; 101*0Sstevel@tonic-gatethe interface was a mistake. Sorry about that. For similar 102*0Sstevel@tonic-gatefunctionality, see pack('U0', ...) and pack('C0', ...). 103*0Sstevel@tonic-gate 104*0Sstevel@tonic-gate=back 105*0Sstevel@tonic-gate 106*0Sstevel@tonic-gate=head1 Core Enhancements 107*0Sstevel@tonic-gate 108*0Sstevel@tonic-gate=over 4 109*0Sstevel@tonic-gate 110*0Sstevel@tonic-gate=item * 111*0Sstevel@tonic-gate 112*0Sstevel@tonic-gateC<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass 113*0Sstevel@tonic-gatein multiple arguments.) 114*0Sstevel@tonic-gate 115*0Sstevel@tonic-gate=item * 116*0Sstevel@tonic-gate 117*0Sstevel@tonic-gatemy __PACKAGE__ $obj now works. 118*0Sstevel@tonic-gate 119*0Sstevel@tonic-gate=item * 120*0Sstevel@tonic-gate 121*0Sstevel@tonic-gateC<no Module;> now works even if there is no "sub unimport" in the Module. 122*0Sstevel@tonic-gate 123*0Sstevel@tonic-gate=item * 124*0Sstevel@tonic-gate 125*0Sstevel@tonic-gateThe numerical comparison operators return C<undef> if either operand 126*0Sstevel@tonic-gateis a NaN. Previously the behaviour was unspecified. 127*0Sstevel@tonic-gate 128*0Sstevel@tonic-gate=item * 129*0Sstevel@tonic-gate 130*0Sstevel@tonic-gateC<pack('U0a*', ...)> can now be used to force a string to UTF-8. 131*0Sstevel@tonic-gate 132*0Sstevel@tonic-gate=item * 133*0Sstevel@tonic-gate 134*0Sstevel@tonic-gateprototype(\&) is now available. 135*0Sstevel@tonic-gate 136*0Sstevel@tonic-gate=item * 137*0Sstevel@tonic-gate 138*0Sstevel@tonic-gateThere is now an UNTIE method. 139*0Sstevel@tonic-gate 140*0Sstevel@tonic-gate=back 141*0Sstevel@tonic-gate 142*0Sstevel@tonic-gate=head1 Modules and Pragmata 143*0Sstevel@tonic-gate 144*0Sstevel@tonic-gate=head2 New Modules 145*0Sstevel@tonic-gate 146*0Sstevel@tonic-gate=over 4 147*0Sstevel@tonic-gate 148*0Sstevel@tonic-gate=item * 149*0Sstevel@tonic-gate 150*0Sstevel@tonic-gateFile::Temp allows one to create temporary files and directories in an 151*0Sstevel@tonic-gateeasy, portable, and secure way. 152*0Sstevel@tonic-gate 153*0Sstevel@tonic-gate=item * 154*0Sstevel@tonic-gate 155*0Sstevel@tonic-gateStorable gives persistence to Perl data structures by allowing the 156*0Sstevel@tonic-gatestorage and retrieval of Perl data to and from files in a fast and 157*0Sstevel@tonic-gatecompact binary format. 158*0Sstevel@tonic-gate 159*0Sstevel@tonic-gate=back 160*0Sstevel@tonic-gate 161*0Sstevel@tonic-gate=head2 Updated And Improved Modules and Pragmata 162*0Sstevel@tonic-gate 163*0Sstevel@tonic-gate=over 4 164*0Sstevel@tonic-gate 165*0Sstevel@tonic-gate=item * 166*0Sstevel@tonic-gate 167*0Sstevel@tonic-gateThe following independently supported modules have been updated to 168*0Sstevel@tonic-gatenewer versions from CPAN: CGI, CPAN, DB_File, File::Spec, Getopt::Long, 169*0Sstevel@tonic-gatethe podlators bundle, Pod::LaTeX, Pod::Parser, Term::ANSIColor, Test. 170*0Sstevel@tonic-gate 171*0Sstevel@tonic-gate=item * 172*0Sstevel@tonic-gate 173*0Sstevel@tonic-gateBug fixes and minor enhancements have been applied to B::Deparse, 174*0Sstevel@tonic-gateData::Dumper, IO::Poll, IO::Socket::INET, Math::BigFloat, 175*0Sstevel@tonic-gateMath::Complex, Math::Trig, Net::protoent, the re pragma, SelfLoader, 176*0Sstevel@tonic-gateSys::SysLog, Test::Harness, Text::Wrap, UNIVERSAL, and the warnings 177*0Sstevel@tonic-gatepragma. 178*0Sstevel@tonic-gate 179*0Sstevel@tonic-gate=item * 180*0Sstevel@tonic-gate 181*0Sstevel@tonic-gateThe attributes::reftype() now works on tied arguments. 182*0Sstevel@tonic-gate 183*0Sstevel@tonic-gate=item * 184*0Sstevel@tonic-gate 185*0Sstevel@tonic-gateAutoLoader can now be disabled with C<no AutoLoader;>, 186*0Sstevel@tonic-gate 187*0Sstevel@tonic-gate=item * 188*0Sstevel@tonic-gate 189*0Sstevel@tonic-gateThe English module can now be used without the infamous performance 190*0Sstevel@tonic-gatehit by saying 191*0Sstevel@tonic-gate 192*0Sstevel@tonic-gate use English '-no_performance_hit'; 193*0Sstevel@tonic-gate 194*0Sstevel@tonic-gate(Assuming, of course, that one doesn't need the troublesome variables 195*0Sstevel@tonic-gateC<$`>, C<$&>, or C<$'>.) Also, introduced C<@LAST_MATCH_START> and 196*0Sstevel@tonic-gateC<@LAST_MATCH_END> English aliases for C<@-> and C<@+>. 197*0Sstevel@tonic-gate 198*0Sstevel@tonic-gate=item * 199*0Sstevel@tonic-gate 200*0Sstevel@tonic-gateFile::Find now has pre- and post-processing callbacks. It also 201*0Sstevel@tonic-gatecorrectly changes directories when chasing symbolic links. Callbacks 202*0Sstevel@tonic-gate(naughtily) exiting with "next;" instead of "return;" now work. 203*0Sstevel@tonic-gate 204*0Sstevel@tonic-gate=item * 205*0Sstevel@tonic-gate 206*0Sstevel@tonic-gateFile::Glob::glob() renamed to File::Glob::bsd_glob() to avoid 207*0Sstevel@tonic-gateprototype mismatch with CORE::glob(). 208*0Sstevel@tonic-gate 209*0Sstevel@tonic-gate=item * 210*0Sstevel@tonic-gate 211*0Sstevel@tonic-gateIPC::Open3 now allows the use of numeric file descriptors. 212*0Sstevel@tonic-gate 213*0Sstevel@tonic-gate=item * 214*0Sstevel@tonic-gate 215*0Sstevel@tonic-gateuse lib now works identically to @INC. Removing directories 216*0Sstevel@tonic-gatewith 'no lib' now works. 217*0Sstevel@tonic-gate 218*0Sstevel@tonic-gate=item * 219*0Sstevel@tonic-gate 220*0Sstevel@tonic-gateC<%INC> now localised in a Safe compartment so that use/require work. 221*0Sstevel@tonic-gate 222*0Sstevel@tonic-gate=item * 223*0Sstevel@tonic-gate 224*0Sstevel@tonic-gateThe Shell module now has an OO interface. 225*0Sstevel@tonic-gate 226*0Sstevel@tonic-gate=back 227*0Sstevel@tonic-gate 228*0Sstevel@tonic-gate=head1 Utility Changes 229*0Sstevel@tonic-gate 230*0Sstevel@tonic-gate=over 4 231*0Sstevel@tonic-gate 232*0Sstevel@tonic-gate=item * 233*0Sstevel@tonic-gate 234*0Sstevel@tonic-gateThe Emacs perl mode (emacs/cperl-mode.el) has been updated to version 235*0Sstevel@tonic-gate4.31. 236*0Sstevel@tonic-gate 237*0Sstevel@tonic-gate=item * 238*0Sstevel@tonic-gate 239*0Sstevel@tonic-gatePerlbug is now much more robust. It also sends the bug report to 240*0Sstevel@tonic-gateperl.org, not perl.com. 241*0Sstevel@tonic-gate 242*0Sstevel@tonic-gate=item * 243*0Sstevel@tonic-gate 244*0Sstevel@tonic-gateThe perlcc utility has been rewritten and its user interface (that is, 245*0Sstevel@tonic-gatecommand line) is much more like that of the UNIX C compiler, cc. 246*0Sstevel@tonic-gate 247*0Sstevel@tonic-gate=item * 248*0Sstevel@tonic-gate 249*0Sstevel@tonic-gateThe xsubpp utility for extension writers now understands POD 250*0Sstevel@tonic-gatedocumentation embedded in the *.xs files. 251*0Sstevel@tonic-gate 252*0Sstevel@tonic-gate=back 253*0Sstevel@tonic-gate 254*0Sstevel@tonic-gate=head1 New Documentation 255*0Sstevel@tonic-gate 256*0Sstevel@tonic-gate=over 4 257*0Sstevel@tonic-gate 258*0Sstevel@tonic-gate=item * 259*0Sstevel@tonic-gate 260*0Sstevel@tonic-gateperl56delta details the changes between the 5.005 release and the 261*0Sstevel@tonic-gate5.6.0 release. 262*0Sstevel@tonic-gate 263*0Sstevel@tonic-gate=item * 264*0Sstevel@tonic-gate 265*0Sstevel@tonic-gateperldebtut is a Perl debugging tutorial. 266*0Sstevel@tonic-gate 267*0Sstevel@tonic-gate=item * 268*0Sstevel@tonic-gate 269*0Sstevel@tonic-gateperlebcdic contains considerations for running Perl on EBCDIC platforms. 270*0Sstevel@tonic-gateNote that unfortunately EBCDIC platforms that used to supported back in 271*0Sstevel@tonic-gatePerl 5.005 are still unsupported by Perl 5.7.0; the plan, however, is to 272*0Sstevel@tonic-gatebring them back to the fold. 273*0Sstevel@tonic-gate 274*0Sstevel@tonic-gate=item * 275*0Sstevel@tonic-gate 276*0Sstevel@tonic-gateperlnewmod tells about writing and submitting a new module. 277*0Sstevel@tonic-gate 278*0Sstevel@tonic-gate=item * 279*0Sstevel@tonic-gate 280*0Sstevel@tonic-gateperlposix-bc explains using Perl on the POSIX-BC platform 281*0Sstevel@tonic-gate(an EBCDIC mainframe platform). 282*0Sstevel@tonic-gate 283*0Sstevel@tonic-gate=item * 284*0Sstevel@tonic-gate 285*0Sstevel@tonic-gateperlretut is a regular expression tutorial. 286*0Sstevel@tonic-gate 287*0Sstevel@tonic-gate=item * 288*0Sstevel@tonic-gate 289*0Sstevel@tonic-gateperlrequick is a regular expressions quick-start guide. 290*0Sstevel@tonic-gateYes, much quicker than perlretut. 291*0Sstevel@tonic-gate 292*0Sstevel@tonic-gate=item * 293*0Sstevel@tonic-gate 294*0Sstevel@tonic-gateperlutil explains the command line utilities packaged with the Perl 295*0Sstevel@tonic-gatedistribution. 296*0Sstevel@tonic-gate 297*0Sstevel@tonic-gate=back 298*0Sstevel@tonic-gate 299*0Sstevel@tonic-gate=head1 Performance Enhancements 300*0Sstevel@tonic-gate 301*0Sstevel@tonic-gate=over 4 302*0Sstevel@tonic-gate 303*0Sstevel@tonic-gate=item * 304*0Sstevel@tonic-gate 305*0Sstevel@tonic-gatemap() that changes the size of the list should now work faster. 306*0Sstevel@tonic-gate 307*0Sstevel@tonic-gate=item * 308*0Sstevel@tonic-gate 309*0Sstevel@tonic-gatesort() has been changed to use mergesort internally as opposed to the 310*0Sstevel@tonic-gateearlier quicksort. For very small lists this may result in slightly 311*0Sstevel@tonic-gateslower sorting times, but in general the speedup should be at least 312*0Sstevel@tonic-gate20%. Additional bonuses are that the worst case behaviour of sort() 313*0Sstevel@tonic-gateis now better (in computer science terms it now runs in time O(N log N), 314*0Sstevel@tonic-gateas opposed to quicksort's Theta(N**2) worst-case run time behaviour), 315*0Sstevel@tonic-gateand that sort() is now stable (meaning that elements with identical 316*0Sstevel@tonic-gatekeys will stay ordered as they were before the sort). 317*0Sstevel@tonic-gate 318*0Sstevel@tonic-gate=back 319*0Sstevel@tonic-gate 320*0Sstevel@tonic-gate=head1 Installation and Configuration Improvements 321*0Sstevel@tonic-gate 322*0Sstevel@tonic-gate=head2 Generic Improvements 323*0Sstevel@tonic-gate 324*0Sstevel@tonic-gate=over 4 325*0Sstevel@tonic-gate 326*0Sstevel@tonic-gate=item * 327*0Sstevel@tonic-gate 328*0Sstevel@tonic-gateINSTALL now explains how you can configure Perl to use 64-bit 329*0Sstevel@tonic-gateintegers even on non-64-bit platforms. 330*0Sstevel@tonic-gate 331*0Sstevel@tonic-gate=item * 332*0Sstevel@tonic-gate 333*0Sstevel@tonic-gatePolicy.sh policy change: if you are reusing a Policy.sh file 334*0Sstevel@tonic-gate(see INSTALL) and you use Configure -Dprefix=/foo/bar and in the old 335*0Sstevel@tonic-gatePolicy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of 336*0Sstevel@tonic-gatethem will now be changed to the new prefix, /foo/bar. (Previously 337*0Sstevel@tonic-gateonly $prefix changed.) If you do not like this new behaviour, 338*0Sstevel@tonic-gatespecify prefix, siteprefix, and vendorprefix explicitly. 339*0Sstevel@tonic-gate 340*0Sstevel@tonic-gate=item * 341*0Sstevel@tonic-gate 342*0Sstevel@tonic-gateA new optional location for Perl libraries, otherlibdirs, is available. 343*0Sstevel@tonic-gateIt can be used for example for vendor add-ons without disturbing Perl's 344*0Sstevel@tonic-gateown library directories. 345*0Sstevel@tonic-gate 346*0Sstevel@tonic-gate=item * 347*0Sstevel@tonic-gate 348*0Sstevel@tonic-gateIn many platforms the vendor-supplied 'cc' is too stripped-down to 349*0Sstevel@tonic-gatebuild Perl (basically, 'cc' doesn't do ANSI C). If this seems 350*0Sstevel@tonic-gateto be the case and 'cc' does not seem to be the GNU C compiler 351*0Sstevel@tonic-gate'gcc', an automatic attempt is made to find and use 'gcc' instead. 352*0Sstevel@tonic-gate 353*0Sstevel@tonic-gate=item * 354*0Sstevel@tonic-gate 355*0Sstevel@tonic-gategcc needs to closely track the operating system release to avoid 356*0Sstevel@tonic-gatebuild problems. If Configure finds that gcc was built for a different 357*0Sstevel@tonic-gateoperating system release than is running, it now gives a clearly visible 358*0Sstevel@tonic-gatewarning that there may be trouble ahead. 359*0Sstevel@tonic-gate 360*0Sstevel@tonic-gate=item * 361*0Sstevel@tonic-gate 362*0Sstevel@tonic-gateIf binary compatibility with the 5.005 release is not wanted, Configure 363*0Sstevel@tonic-gateno longer suggests including the 5.005 modules in @INC. 364*0Sstevel@tonic-gate 365*0Sstevel@tonic-gate=item * 366*0Sstevel@tonic-gate 367*0Sstevel@tonic-gateConfigure C<-S> can now run non-interactively. 368*0Sstevel@tonic-gate 369*0Sstevel@tonic-gate=item * 370*0Sstevel@tonic-gate 371*0Sstevel@tonic-gateconfigure.gnu now works with options with whitespace in them. 372*0Sstevel@tonic-gate 373*0Sstevel@tonic-gate=item * 374*0Sstevel@tonic-gate 375*0Sstevel@tonic-gateinstallperl now outputs everything to STDERR. 376*0Sstevel@tonic-gate 377*0Sstevel@tonic-gate=item * 378*0Sstevel@tonic-gate 379*0Sstevel@tonic-gate$Config{byteorder} is now computed dynamically (this is more robust 380*0Sstevel@tonic-gatewith "fat binaries" where an executable image contains binaries for 381*0Sstevel@tonic-gatemore than one binary platform.) 382*0Sstevel@tonic-gate 383*0Sstevel@tonic-gate=back 384*0Sstevel@tonic-gate 385*0Sstevel@tonic-gate=head1 Selected Bug Fixes 386*0Sstevel@tonic-gate 387*0Sstevel@tonic-gate=over 4 388*0Sstevel@tonic-gate 389*0Sstevel@tonic-gate=item * 390*0Sstevel@tonic-gate 391*0Sstevel@tonic-gateSeveral debugger fixes: exit code now reflects the script exit code, 392*0Sstevel@tonic-gatecondition C<"0"> now treated correctly, the C<d> command now checks 393*0Sstevel@tonic-gateline number, the C<$.> no longer gets corrupted, all debugger output now 394*0Sstevel@tonic-gategoes correctly to the socket if RemotePort is set. 395*0Sstevel@tonic-gate 396*0Sstevel@tonic-gate=item * 397*0Sstevel@tonic-gate 398*0Sstevel@tonic-gateC<*foo{FORMAT}> now works. 399*0Sstevel@tonic-gate 400*0Sstevel@tonic-gate=item * 401*0Sstevel@tonic-gate 402*0Sstevel@tonic-gateLexical warnings now propagating correctly between scopes. 403*0Sstevel@tonic-gate 404*0Sstevel@tonic-gate=item * 405*0Sstevel@tonic-gate 406*0Sstevel@tonic-gateLine renumbering with eval and C<#line> now works. 407*0Sstevel@tonic-gate 408*0Sstevel@tonic-gate=item * 409*0Sstevel@tonic-gate 410*0Sstevel@tonic-gateFixed numerous memory leaks, especially in eval "". 411*0Sstevel@tonic-gate 412*0Sstevel@tonic-gate=item * 413*0Sstevel@tonic-gate 414*0Sstevel@tonic-gateModulus of unsigned numbers now works (4063328477 % 65535 used to 415*0Sstevel@tonic-gatereturn 27406, instead of 27047). 416*0Sstevel@tonic-gate 417*0Sstevel@tonic-gate=item * 418*0Sstevel@tonic-gate 419*0Sstevel@tonic-gateSome "not a number" warnings introduced in 5.6.0 eliminated to be 420*0Sstevel@tonic-gatemore compatible with 5.005. Infinity is now recognised as a number. 421*0Sstevel@tonic-gate 422*0Sstevel@tonic-gate=item * 423*0Sstevel@tonic-gate 424*0Sstevel@tonic-gateour() variables will not cause "will not stay shared" warnings. 425*0Sstevel@tonic-gate 426*0Sstevel@tonic-gate=item * 427*0Sstevel@tonic-gate 428*0Sstevel@tonic-gatepack "Z" now correctly terminates the string with "\0". 429*0Sstevel@tonic-gate 430*0Sstevel@tonic-gate=item * 431*0Sstevel@tonic-gate 432*0Sstevel@tonic-gateFix password routines which in some shadow password platforms 433*0Sstevel@tonic-gate(e.g. HP-UX) caused getpwent() to return every other entry. 434*0Sstevel@tonic-gate 435*0Sstevel@tonic-gate=item * 436*0Sstevel@tonic-gate 437*0Sstevel@tonic-gateprintf() no longer resets the numeric locale to "C". 438*0Sstevel@tonic-gate 439*0Sstevel@tonic-gate=item * 440*0Sstevel@tonic-gate 441*0Sstevel@tonic-gateC<q(a\\b)> now parses correctly as C<'a\\b'>. 442*0Sstevel@tonic-gate 443*0Sstevel@tonic-gate=item * 444*0Sstevel@tonic-gate 445*0Sstevel@tonic-gatePrinting quads (64-bit integers) with printf/sprintf now works 446*0Sstevel@tonic-gatewithout the q L ll prefixes (assuming you are on a quad-capable platform). 447*0Sstevel@tonic-gate 448*0Sstevel@tonic-gate=item * 449*0Sstevel@tonic-gate 450*0Sstevel@tonic-gateRegular expressions on references and overloaded scalars now work. 451*0Sstevel@tonic-gate 452*0Sstevel@tonic-gate=item * 453*0Sstevel@tonic-gate 454*0Sstevel@tonic-gatescalar() now forces scalar context even when used in void context. 455*0Sstevel@tonic-gate 456*0Sstevel@tonic-gate=item * 457*0Sstevel@tonic-gate 458*0Sstevel@tonic-gatesort() arguments are now compiled in the right wantarray context 459*0Sstevel@tonic-gate(they were accidentally using the context of the sort() itself). 460*0Sstevel@tonic-gate 461*0Sstevel@tonic-gate=item * 462*0Sstevel@tonic-gate 463*0Sstevel@tonic-gateChanged the POSIX character class C<[[:space:]]> to include the (very 464*0Sstevel@tonic-gaterare) vertical tab character. Added a new POSIX-ish character class 465*0Sstevel@tonic-gateC<[[:blank:]]> which stands for horizontal whitespace (currently, 466*0Sstevel@tonic-gatethe space and the tab). 467*0Sstevel@tonic-gate 468*0Sstevel@tonic-gate=item * 469*0Sstevel@tonic-gate 470*0Sstevel@tonic-gate$AUTOLOAD, sort(), lock(), and spawning subprocesses 471*0Sstevel@tonic-gatein multiple threads simultaneously are now thread-safe. 472*0Sstevel@tonic-gate 473*0Sstevel@tonic-gate=item * 474*0Sstevel@tonic-gate 475*0Sstevel@tonic-gateAllow read-only string on left hand side of non-modifying tr///. 476*0Sstevel@tonic-gate 477*0Sstevel@tonic-gate=item * 478*0Sstevel@tonic-gate 479*0Sstevel@tonic-gateSeveral Unicode fixes (but still not perfect). 480*0Sstevel@tonic-gate 481*0Sstevel@tonic-gate=over 8 482*0Sstevel@tonic-gate 483*0Sstevel@tonic-gate=item * 484*0Sstevel@tonic-gate 485*0Sstevel@tonic-gateBOMs (byte order marks) in the beginning of Perl files 486*0Sstevel@tonic-gate(scripts, modules) should now be transparently skipped. 487*0Sstevel@tonic-gateUTF-16 (UCS-2) encoded Perl files should now be read correctly. 488*0Sstevel@tonic-gate 489*0Sstevel@tonic-gate=item * 490*0Sstevel@tonic-gate 491*0Sstevel@tonic-gateThe character tables have been updated to Unicode 3.0.1. 492*0Sstevel@tonic-gate 493*0Sstevel@tonic-gate=item * 494*0Sstevel@tonic-gate 495*0Sstevel@tonic-gatechr() for values greater than 127 now create utf8 when under use 496*0Sstevel@tonic-gateutf8. 497*0Sstevel@tonic-gate 498*0Sstevel@tonic-gate=item * 499*0Sstevel@tonic-gate 500*0Sstevel@tonic-gateComparing with utf8 data does not magically upgrade non-utf8 data into 501*0Sstevel@tonic-gateutf8. 502*0Sstevel@tonic-gate 503*0Sstevel@tonic-gate=item * 504*0Sstevel@tonic-gate 505*0Sstevel@tonic-gateC<IsAlnum>, C<IsAlpha>, and C<IsWord> now match titlecase. 506*0Sstevel@tonic-gate 507*0Sstevel@tonic-gate=item * 508*0Sstevel@tonic-gate 509*0Sstevel@tonic-gateConcatenation with the C<.> operator or via variable interpolation, 510*0Sstevel@tonic-gateC<eq>, C<substr>, C<reverse>, C<quotemeta>, the C<x> operator, 511*0Sstevel@tonic-gatesubstitution with C<s///>, single-quoted UTF-8, should now work--in 512*0Sstevel@tonic-gatetheory. 513*0Sstevel@tonic-gate 514*0Sstevel@tonic-gate=item * 515*0Sstevel@tonic-gate 516*0Sstevel@tonic-gateThe C<tr///> operator now works I<slightly> better but is still rather 517*0Sstevel@tonic-gatebroken. Note that the C<tr///CU> functionality has been removed (but 518*0Sstevel@tonic-gatesee pack('U0', ...)). 519*0Sstevel@tonic-gate 520*0Sstevel@tonic-gate=item * 521*0Sstevel@tonic-gate 522*0Sstevel@tonic-gatevec() now refuses to deal with characters >255. 523*0Sstevel@tonic-gate 524*0Sstevel@tonic-gate=item * 525*0Sstevel@tonic-gate 526*0Sstevel@tonic-gateZero entries were missing from the Unicode classes like C<IsDigit>. 527*0Sstevel@tonic-gate 528*0Sstevel@tonic-gate=back 529*0Sstevel@tonic-gate 530*0Sstevel@tonic-gate=item * 531*0Sstevel@tonic-gate 532*0Sstevel@tonic-gateUNIVERSAL::isa no longer caches methods incorrectly. (This broke 533*0Sstevel@tonic-gatethe Tk extension with 5.6.0.) 534*0Sstevel@tonic-gate 535*0Sstevel@tonic-gate=back 536*0Sstevel@tonic-gate 537*0Sstevel@tonic-gate=head2 Platform Specific Changes and Fixes 538*0Sstevel@tonic-gate 539*0Sstevel@tonic-gate=over 4 540*0Sstevel@tonic-gate 541*0Sstevel@tonic-gate=item * 542*0Sstevel@tonic-gate 543*0Sstevel@tonic-gateBSDI 4.* 544*0Sstevel@tonic-gate 545*0Sstevel@tonic-gatePerl now works on post-4.0 BSD/OSes. 546*0Sstevel@tonic-gate 547*0Sstevel@tonic-gate=item * 548*0Sstevel@tonic-gate 549*0Sstevel@tonic-gateAll BSDs 550*0Sstevel@tonic-gate 551*0Sstevel@tonic-gateSetting C<$0> now works (as much as possible; see perlvar for details). 552*0Sstevel@tonic-gate 553*0Sstevel@tonic-gate=item * 554*0Sstevel@tonic-gate 555*0Sstevel@tonic-gateCygwin 556*0Sstevel@tonic-gate 557*0Sstevel@tonic-gateNumerous updates; currently synchronised with Cygwin 1.1.4. 558*0Sstevel@tonic-gate 559*0Sstevel@tonic-gate=item * 560*0Sstevel@tonic-gate 561*0Sstevel@tonic-gateEPOC 562*0Sstevel@tonic-gate 563*0Sstevel@tonic-gateEPOC update after Perl 5.6.0. See README.epoc. 564*0Sstevel@tonic-gate 565*0Sstevel@tonic-gate=item * 566*0Sstevel@tonic-gate 567*0Sstevel@tonic-gateFreeBSD 3.* 568*0Sstevel@tonic-gate 569*0Sstevel@tonic-gatePerl now works on post-3.0 FreeBSDs. 570*0Sstevel@tonic-gate 571*0Sstevel@tonic-gate=item * 572*0Sstevel@tonic-gate 573*0Sstevel@tonic-gateHP-UX 574*0Sstevel@tonic-gate 575*0Sstevel@tonic-gateREADME.hpux updated; C<Configure -Duse64bitall> now almost works. 576*0Sstevel@tonic-gate 577*0Sstevel@tonic-gate=item * 578*0Sstevel@tonic-gate 579*0Sstevel@tonic-gateIRIX 580*0Sstevel@tonic-gate 581*0Sstevel@tonic-gateNumerous compilation flag and hint enhancements; accidental mixing 582*0Sstevel@tonic-gateof 32-bit and 64-bit libraries (a doomed attempt) made much harder. 583*0Sstevel@tonic-gate 584*0Sstevel@tonic-gate=item * 585*0Sstevel@tonic-gate 586*0Sstevel@tonic-gateLinux 587*0Sstevel@tonic-gate 588*0Sstevel@tonic-gateLong doubles should now work (see INSTALL). 589*0Sstevel@tonic-gate 590*0Sstevel@tonic-gate=item * 591*0Sstevel@tonic-gate 592*0Sstevel@tonic-gateMac OS Classic 593*0Sstevel@tonic-gate 594*0Sstevel@tonic-gateCompilation of the standard Perl distribution in Mac OS Classic should 595*0Sstevel@tonic-gatenow work if you have the Metrowerks development environment and the 596*0Sstevel@tonic-gatemissing Mac-specific toolkit bits. Contact the macperl mailing list 597*0Sstevel@tonic-gatefor details. 598*0Sstevel@tonic-gate 599*0Sstevel@tonic-gate=item * 600*0Sstevel@tonic-gate 601*0Sstevel@tonic-gateMPE/iX 602*0Sstevel@tonic-gate 603*0Sstevel@tonic-gateMPE/iX update after Perl 5.6.0. See README.mpeix. 604*0Sstevel@tonic-gate 605*0Sstevel@tonic-gate=item * 606*0Sstevel@tonic-gate 607*0Sstevel@tonic-gateNetBSD/sparc 608*0Sstevel@tonic-gate 609*0Sstevel@tonic-gatePerl now works on NetBSD/sparc. 610*0Sstevel@tonic-gate 611*0Sstevel@tonic-gate=item * 612*0Sstevel@tonic-gate 613*0Sstevel@tonic-gateOS/2 614*0Sstevel@tonic-gate 615*0Sstevel@tonic-gateNow works with usethreads (see INSTALL). 616*0Sstevel@tonic-gate 617*0Sstevel@tonic-gate=item * 618*0Sstevel@tonic-gate 619*0Sstevel@tonic-gateSolaris 620*0Sstevel@tonic-gate 621*0Sstevel@tonic-gate64-bitness using the Sun Workshop compiler now works. 622*0Sstevel@tonic-gate 623*0Sstevel@tonic-gate=item * 624*0Sstevel@tonic-gate 625*0Sstevel@tonic-gateTru64 (aka Digital UNIX, aka DEC OSF/1) 626*0Sstevel@tonic-gate 627*0Sstevel@tonic-gateThe operating system version letter now recorded in $Config{osvers}. 628*0Sstevel@tonic-gateAllow compiling with gcc (previously explicitly forbidden). Compiling 629*0Sstevel@tonic-gatewith gcc still not recommended because buggy code results, even with 630*0Sstevel@tonic-gategcc 2.95.2. 631*0Sstevel@tonic-gate 632*0Sstevel@tonic-gate=item * 633*0Sstevel@tonic-gate 634*0Sstevel@tonic-gateUnicos 635*0Sstevel@tonic-gate 636*0Sstevel@tonic-gateFixed various alignment problems that lead into core dumps either 637*0Sstevel@tonic-gateduring build or later; no longer dies on math errors at runtime; 638*0Sstevel@tonic-gatenow using full quad integers (64 bits), previously was using 639*0Sstevel@tonic-gateonly 46 bit integers for speed. 640*0Sstevel@tonic-gate 641*0Sstevel@tonic-gate=item * 642*0Sstevel@tonic-gate 643*0Sstevel@tonic-gateVMS 644*0Sstevel@tonic-gate 645*0Sstevel@tonic-gatechdir() now works better despite a CRT bug; now works with MULTIPLICITY 646*0Sstevel@tonic-gate(see INSTALL); now works with Perl's malloc. 647*0Sstevel@tonic-gate 648*0Sstevel@tonic-gate=item * 649*0Sstevel@tonic-gate 650*0Sstevel@tonic-gateWindows 651*0Sstevel@tonic-gate 652*0Sstevel@tonic-gate=over 8 653*0Sstevel@tonic-gate 654*0Sstevel@tonic-gate=item * 655*0Sstevel@tonic-gate 656*0Sstevel@tonic-gateaccept() no longer leaks memory. 657*0Sstevel@tonic-gate 658*0Sstevel@tonic-gate=item * 659*0Sstevel@tonic-gate 660*0Sstevel@tonic-gateBetter chdir() return value for a non-existent directory. 661*0Sstevel@tonic-gate 662*0Sstevel@tonic-gate=item * 663*0Sstevel@tonic-gate 664*0Sstevel@tonic-gateNew %ENV entries now propagate to subprocesses. 665*0Sstevel@tonic-gate 666*0Sstevel@tonic-gate=item * 667*0Sstevel@tonic-gate 668*0Sstevel@tonic-gate$ENV{LIB} now used to search for libs under Visual C. 669*0Sstevel@tonic-gate 670*0Sstevel@tonic-gate=item * 671*0Sstevel@tonic-gate 672*0Sstevel@tonic-gateA failed (pseudo)fork now returns undef and sets errno to EAGAIN. 673*0Sstevel@tonic-gate 674*0Sstevel@tonic-gate=item * 675*0Sstevel@tonic-gate 676*0Sstevel@tonic-gateAllow REG_EXPAND_SZ keys in the registry. 677*0Sstevel@tonic-gate 678*0Sstevel@tonic-gate=item * 679*0Sstevel@tonic-gate 680*0Sstevel@tonic-gateCan now send() from all threads, not just the first one. 681*0Sstevel@tonic-gate 682*0Sstevel@tonic-gate=item * 683*0Sstevel@tonic-gate 684*0Sstevel@tonic-gateFake signal handling reenabled, bugs and all. 685*0Sstevel@tonic-gate 686*0Sstevel@tonic-gate=item * 687*0Sstevel@tonic-gate 688*0Sstevel@tonic-gateLess stack reserved per thread so that more threads can run 689*0Sstevel@tonic-gateconcurrently. (Still 16M per thread.) 690*0Sstevel@tonic-gate 691*0Sstevel@tonic-gate=item * 692*0Sstevel@tonic-gate 693*0Sstevel@tonic-gateC<< File::Spec->tmpdir() >> now prefers C:/temp over /tmp 694*0Sstevel@tonic-gate(works better when perl is running as service). 695*0Sstevel@tonic-gate 696*0Sstevel@tonic-gate=item * 697*0Sstevel@tonic-gate 698*0Sstevel@tonic-gateBetter UNC path handling under ithreads. 699*0Sstevel@tonic-gate 700*0Sstevel@tonic-gate=item * 701*0Sstevel@tonic-gate 702*0Sstevel@tonic-gatewait() and waitpid() now work much better. 703*0Sstevel@tonic-gate 704*0Sstevel@tonic-gate=item * 705*0Sstevel@tonic-gate 706*0Sstevel@tonic-gatewinsock handle leak fixed. 707*0Sstevel@tonic-gate 708*0Sstevel@tonic-gate=back 709*0Sstevel@tonic-gate 710*0Sstevel@tonic-gate=back 711*0Sstevel@tonic-gate 712*0Sstevel@tonic-gate=head1 New or Changed Diagnostics 713*0Sstevel@tonic-gate 714*0Sstevel@tonic-gateAll regular expression compilation error messages are now hopefully 715*0Sstevel@tonic-gateeasier to understand both because the error message now comes before 716*0Sstevel@tonic-gatethe failed regex and because the point of failure is now clearly 717*0Sstevel@tonic-gatemarked. 718*0Sstevel@tonic-gate 719*0Sstevel@tonic-gateThe various "opened only for", "on closed", "never opened" warnings 720*0Sstevel@tonic-gatedrop the C<main::> prefix for filehandles in the C<main> package, 721*0Sstevel@tonic-gatefor example C<STDIN> instead of <main::STDIN>. 722*0Sstevel@tonic-gate 723*0Sstevel@tonic-gateThe "Unrecognized escape" warning has been extended to include C<\8>, 724*0Sstevel@tonic-gateC<\9>, and C<\_>. There is no need to escape any of the C<\w> characters. 725*0Sstevel@tonic-gate 726*0Sstevel@tonic-gate=head1 Changed Internals 727*0Sstevel@tonic-gate 728*0Sstevel@tonic-gate=over 4 729*0Sstevel@tonic-gate 730*0Sstevel@tonic-gate=item * 731*0Sstevel@tonic-gate 732*0Sstevel@tonic-gateperlapi.pod (a companion to perlguts) now attempts to document the 733*0Sstevel@tonic-gateinternal API. 734*0Sstevel@tonic-gate 735*0Sstevel@tonic-gate=item * 736*0Sstevel@tonic-gate 737*0Sstevel@tonic-gateYou can now build a really minimal perl called microperl. 738*0Sstevel@tonic-gateBuilding microperl does not require even running Configure; 739*0Sstevel@tonic-gateC<make -f Makefile.micro> should be enough. Beware: microperl makes 740*0Sstevel@tonic-gatemany assumptions, some of which may be too bold; the resulting 741*0Sstevel@tonic-gateexecutable may crash or otherwise misbehave in wondrous ways. 742*0Sstevel@tonic-gateFor careful hackers only. 743*0Sstevel@tonic-gate 744*0Sstevel@tonic-gate=item * 745*0Sstevel@tonic-gate 746*0Sstevel@tonic-gateAdded rsignal(), whichsig(), do_join() to the publicised API. 747*0Sstevel@tonic-gate 748*0Sstevel@tonic-gate=item * 749*0Sstevel@tonic-gate 750*0Sstevel@tonic-gateMade possible to propagate customised exceptions via croak()ing. 751*0Sstevel@tonic-gate 752*0Sstevel@tonic-gate=item * 753*0Sstevel@tonic-gate 754*0Sstevel@tonic-gateAdded is_utf8_char(), is_utf8_string(), bytes_to_utf8(), and utf8_to_bytes(). 755*0Sstevel@tonic-gate 756*0Sstevel@tonic-gate=item * 757*0Sstevel@tonic-gate 758*0Sstevel@tonic-gateNow xsubs can have attributes just like subs. 759*0Sstevel@tonic-gate 760*0Sstevel@tonic-gate=back 761*0Sstevel@tonic-gate 762*0Sstevel@tonic-gate=head1 Known Problems 763*0Sstevel@tonic-gate 764*0Sstevel@tonic-gate=head2 Unicode Support Still Far From Perfect 765*0Sstevel@tonic-gate 766*0Sstevel@tonic-gateWe're working on it. Stay tuned. 767*0Sstevel@tonic-gate 768*0Sstevel@tonic-gate=head2 EBCDIC Still A Lost Platform 769*0Sstevel@tonic-gate 770*0Sstevel@tonic-gateThe plan is to bring them back. 771*0Sstevel@tonic-gate 772*0Sstevel@tonic-gate=head2 Building Extensions Can Fail Because Of Largefiles 773*0Sstevel@tonic-gate 774*0Sstevel@tonic-gateCertain extensions like mod_perl and BSD::Resource are known to have 775*0Sstevel@tonic-gateissues with `largefiles', a change brought by Perl 5.6.0 in which file 776*0Sstevel@tonic-gateoffsets default to 64 bits wide, where supported. Modules may fail to 777*0Sstevel@tonic-gatecompile at all or compile and work incorrectly. Currently there is no 778*0Sstevel@tonic-gategood solution for the problem, but Configure now provides appropriate 779*0Sstevel@tonic-gatenon-largefile ccflags, ldflags, libswanted, and libs in the %Config 780*0Sstevel@tonic-gatehash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are 781*0Sstevel@tonic-gatehaving problems can try configuring themselves without the 782*0Sstevel@tonic-gatelargefileness. This is admittedly not a clean solution, and the 783*0Sstevel@tonic-gatesolution may not even work at all. One potential failure is whether 784*0Sstevel@tonic-gateone can (or, if one can, whether it's a good idea) link together at 785*0Sstevel@tonic-gateall binaries with different ideas about file offsets, all this is 786*0Sstevel@tonic-gateplatform-dependent. 787*0Sstevel@tonic-gate 788*0Sstevel@tonic-gate=head2 ftmp-security tests warn 'system possibly insecure' 789*0Sstevel@tonic-gate 790*0Sstevel@tonic-gateDon't panic. Read INSTALL 'make test' section instead. 791*0Sstevel@tonic-gate 792*0Sstevel@tonic-gate=head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX 793*0Sstevel@tonic-gate 794*0Sstevel@tonic-gateIf perl is configured with -Duse64bitall, the successful result of the 795*0Sstevel@tonic-gatesubtest 10 of lib/posix may arrive before the successful result of the 796*0Sstevel@tonic-gatesubtest 9, which confuses the test harness so much that it thinks the 797*0Sstevel@tonic-gatesubtest 9 failed. 798*0Sstevel@tonic-gate 799*0Sstevel@tonic-gate=head2 Long Doubles Still Don't Work In Solaris 800*0Sstevel@tonic-gate 801*0Sstevel@tonic-gateThe experimental long double support is still very much so in Solaris. 802*0Sstevel@tonic-gate(Other platforms like Linux and Tru64 are beginning to solidify in 803*0Sstevel@tonic-gatethis area.) 804*0Sstevel@tonic-gate 805*0Sstevel@tonic-gate=head2 Linux With Sfio Fails op/misc Test 48 806*0Sstevel@tonic-gate 807*0Sstevel@tonic-gateNo known fix. 808*0Sstevel@tonic-gate 809*0Sstevel@tonic-gate=head2 Storable tests fail in some platforms 810*0Sstevel@tonic-gate 811*0Sstevel@tonic-gateIf any Storable tests fail the use of Storable is not advisable. 812*0Sstevel@tonic-gate 813*0Sstevel@tonic-gate=over 4 814*0Sstevel@tonic-gate 815*0Sstevel@tonic-gate=item * 816*0Sstevel@tonic-gate 817*0Sstevel@tonic-gateMany Storable tests fail on AIX configured with 64 bit integers. 818*0Sstevel@tonic-gate 819*0Sstevel@tonic-gateSo far unidentified problems break Storable in AIX if Perl is 820*0Sstevel@tonic-gateconfigured to use 64 bit integers. AIX in 32-bit mode works and 821*0Sstevel@tonic-gateother 64-bit platforms work with Storable. 822*0Sstevel@tonic-gate 823*0Sstevel@tonic-gate=item * 824*0Sstevel@tonic-gate 825*0Sstevel@tonic-gateDOS DJGPP may hang when testing Storable. 826*0Sstevel@tonic-gate 827*0Sstevel@tonic-gate=item * 828*0Sstevel@tonic-gate 829*0Sstevel@tonic-gatest-06compat fails in UNICOS and UNICOS/mk. 830*0Sstevel@tonic-gate 831*0Sstevel@tonic-gateThis means that you cannot read old (pre-Storable-0.7) Storable images 832*0Sstevel@tonic-gatemade in other platforms. 833*0Sstevel@tonic-gate 834*0Sstevel@tonic-gate=item * 835*0Sstevel@tonic-gate 836*0Sstevel@tonic-gatest-store.t and st-retrieve may fail with Compaq C 6.2 on OpenVMS Alpha 7.2. 837*0Sstevel@tonic-gate 838*0Sstevel@tonic-gate=back 839*0Sstevel@tonic-gate 840*0Sstevel@tonic-gate=head2 Threads Are Still Experimental 841*0Sstevel@tonic-gate 842*0Sstevel@tonic-gateMultithreading is still an experimental feature. Some platforms 843*0Sstevel@tonic-gateemit the following message for lib/thr5005 844*0Sstevel@tonic-gate 845*0Sstevel@tonic-gate # 846*0Sstevel@tonic-gate # This is a KNOWN FAILURE, and one of the reasons why threading 847*0Sstevel@tonic-gate # is still an experimental feature. It is here to stop people 848*0Sstevel@tonic-gate # from deploying threads in production. ;-) 849*0Sstevel@tonic-gate # 850*0Sstevel@tonic-gate 851*0Sstevel@tonic-gateand another known thread-related warning is 852*0Sstevel@tonic-gate 853*0Sstevel@tonic-gate pragma/overload......Unbalanced saves: 3 more saves than restores 854*0Sstevel@tonic-gate panic: magic_mutexfree during global destruction. 855*0Sstevel@tonic-gate ok 856*0Sstevel@tonic-gate lib/selfloader.......Unbalanced saves: 3 more saves than restores 857*0Sstevel@tonic-gate panic: magic_mutexfree during global destruction. 858*0Sstevel@tonic-gate ok 859*0Sstevel@tonic-gate lib/st-dclone........Unbalanced saves: 3 more saves than restores 860*0Sstevel@tonic-gate panic: magic_mutexfree during global destruction. 861*0Sstevel@tonic-gate ok 862*0Sstevel@tonic-gate 863*0Sstevel@tonic-gate=head2 The Compiler Suite Is Still Experimental 864*0Sstevel@tonic-gate 865*0Sstevel@tonic-gateThe compiler suite is slowly getting better but is nowhere near 866*0Sstevel@tonic-gateworking order yet. The backend part that has seen perhaps the most 867*0Sstevel@tonic-gateprogress is the bytecode compiler. 868*0Sstevel@tonic-gate 869*0Sstevel@tonic-gate=head1 Reporting Bugs 870*0Sstevel@tonic-gate 871*0Sstevel@tonic-gateIf you find what you think is a bug, you might check the articles 872*0Sstevel@tonic-gaterecently posted to the comp.lang.perl.misc newsgroup and the perl 873*0Sstevel@tonic-gatebug database at http://bugs.perl.org/ There may also be 874*0Sstevel@tonic-gateinformation at http://www.perl.com/perl/ , the Perl Home Page. 875*0Sstevel@tonic-gate 876*0Sstevel@tonic-gateIf you believe you have an unreported bug, please run the B<perlbug> 877*0Sstevel@tonic-gateprogram included with your release. Be sure to trim your bug down 878*0Sstevel@tonic-gateto a tiny but sufficient test case. Your bug report, along with the 879*0Sstevel@tonic-gateoutput of C<perl -V>, will be sent off to perlbug@perl.org to be 880*0Sstevel@tonic-gateanalysed by the Perl porting team. 881*0Sstevel@tonic-gate 882*0Sstevel@tonic-gate=head1 SEE ALSO 883*0Sstevel@tonic-gate 884*0Sstevel@tonic-gateThe F<Changes> file for exhaustive details on what changed. 885*0Sstevel@tonic-gate 886*0Sstevel@tonic-gateThe F<INSTALL> file for how to build Perl. 887*0Sstevel@tonic-gate 888*0Sstevel@tonic-gateThe F<README> file for general stuff. 889*0Sstevel@tonic-gate 890*0Sstevel@tonic-gateThe F<Artistic> and F<Copying> files for copyright information. 891*0Sstevel@tonic-gate 892*0Sstevel@tonic-gate=head1 HISTORY 893*0Sstevel@tonic-gate 894*0Sstevel@tonic-gateWritten by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions 895*0Sstevel@tonic-gatefrom The Perl Porters and Perl Users submitting feedback and patches. 896*0Sstevel@tonic-gate 897*0Sstevel@tonic-gateSend omissions or corrections to <F<perlbug@perl.org>>. 898*0Sstevel@tonic-gate 899*0Sstevel@tonic-gate=cut 900