1=encoding utf8 2 3=head1 NAME 4 5perl588delta - what is new for perl v5.8.8 6 7=head1 DESCRIPTION 8 9This document describes differences between the 5.8.7 release and 10the 5.8.8 release. 11 12=head1 Incompatible Changes 13 14There are no changes intentionally incompatible with 5.8.7. If any exist, 15they are bugs and reports are welcome. 16 17=head1 Core Enhancements 18 19=over 20 21=item * 22 23C<chdir>, C<chmod> and C<chown> can now work on filehandles as well as 24filenames, if the system supports respectively C<fchdir>, C<fchmod> and 25C<fchown>, thanks to a patch provided by Gisle Aas. 26 27=back 28 29=head1 Modules and Pragmata 30 31=over 32 33=item * 34 35C<Attribute::Handlers> upgraded to version 0.78_02 36 37=over 38 39=item * 40 41Documentation typo fix 42 43=back 44 45=item * 46 47C<attrs> upgraded to version 1.02 48 49=over 50 51=item * 52 53Internal cleanup only 54 55=back 56 57=item * 58 59C<autouse> upgraded to version 1.05 60 61=over 62 63=item * 64 65Simplified implementation 66 67=back 68 69=item * 70 71C<B> upgraded to version 1.09_01 72 73=over 74 75=item * 76 77The inheritance hierarchy of the C<B::> modules has been corrected; 78C<B::NV> now inherits from C<B::SV> (instead of C<B::IV>). 79 80=back 81 82=item * 83 84C<blib> upgraded to version 1.03 85 86=over 87 88=item * 89 90Documentation typo fix 91 92=back 93 94=item * 95 96C<ByteLoader> upgraded to version 0.06 97 98=over 99 100=item * 101 102Internal cleanup 103 104=back 105 106=item * 107 108C<CGI> upgraded to version 3.15 109 110=over 111 112=item * 113 114Extraneous "?" from C<self_url()> removed 115 116=item * 117 118C<scrolling_list()> select attribute fixed 119 120=item * 121 122C<virtual_port> now works properly with the https protocol 123 124=item * 125 126C<upload_hook()> and C<append()> now works in function-oriented mode 127 128=item * 129 130C<POST_MAX> doesn't cause the client to hang any more 131 132=item * 133 134Automatic tab indexes are now disabled and new C<-tabindex> pragma has 135been added to turn automatic indexes back on 136 137=item * 138 139C<end_form()> doesn't emit empty (and non-validating) C<< <div> >> 140 141=item * 142 143C<CGI::Carp> works better in certain mod_perl configurations 144 145=item * 146 147Setting C<$CGI::TMPDIRECTORY> is now effective 148 149=item * 150 151Enhanced documentation 152 153=back 154 155=item * 156 157C<charnames> upgraded to version 1.05 158 159=over 160 161=item * 162 163C<viacode()> now accept hex strings and has been optimized. 164 165=back 166 167=item * 168 169C<CPAN> upgraded to version 1.76_02 170 171=over 172 173=item * 174 1751 minor bug fix for Win32 176 177=back 178 179=item * 180 181C<Cwd> upgraded to version 3.12 182 183=over 184 185=item * 186 187C<canonpath()> on Win32 now collapses F<foo\..> sections correctly. 188 189=item * 190 191Improved behaviour on Symbian OS. 192 193=item * 194 195Enhanced documentation and typo fixes 196 197=item * 198 199Internal cleanup 200 201=back 202 203=item * 204 205C<Data::Dumper> upgraded to version 2.121_08 206 207=over 208 209=item * 210 211A problem where C<Data::Dumper> would sometimes update the iterator state 212of hashes has been fixed 213 214=item * 215 216Numeric labels now work 217 218=item * 219 220Internal cleanup 221 222=back 223 224=item * 225 226C<DB> upgraded to version 1.01 227 228=over 229 230=item * 231 232A problem where the state of the regexp engine would sometimes get clobbered when running 233under the debugger has been fixed. 234 235=back 236 237=item * 238 239C<DB_File> upgraded to version 1.814 240 241=over 242 243=item * 244 245Adds support for Berkeley DB 4.4. 246 247=back 248 249=item * 250 251C<Devel::DProf> upgraded to version 20050603.00 252 253=over 254 255=item * 256 257Internal cleanup 258 259=back 260 261=item * 262 263C<Devel::Peek> upgraded to version 1.03 264 265=over 266 267=item * 268 269Internal cleanup 270 271=back 272 273=item * 274 275C<Devel::PPPort> upgraded to version 3.06_01 276 277=over 278 279=item * 280 281C<--compat-version> argument checking has been improved 282 283=item * 284 285Files passed on the command line are filtered by default 286 287=item * 288 289C<--nofilter> option to override the filtering has been added 290 291=item * 292 293Enhanced documentation 294 295=back 296 297=item * 298 299C<diagnostics> upgraded to version 1.15 300 301=over 302 303=item * 304 305Documentation typo fix 306 307=back 308 309=item * 310 311C<Digest> upgraded to version 1.14 312 313=over 314 315=item * 316 317The constructor now knows which module implements SHA-224 318 319=item * 320 321Documentation tweaks and typo fixes 322 323=back 324 325=item * 326 327C<Digest::MD5> upgraded to version 2.36 328 329=over 330 331=item * 332 333C<XSLoader> is now used for faster loading 334 335=item * 336 337Enhanced documentation including MD5 weaknesses discovered lately 338 339=back 340 341=item * 342 343C<Dumpvalue> upgraded to version 1.12 344 345=over 346 347=item * 348 349Documentation fix 350 351=back 352 353=item * 354 355C<DynaLoader> upgraded but unfortunately we're not able to increment its version number :-( 356 357=over 358 359=item * 360 361Implements C<dl_unload_file> on Win32 362 363=item * 364 365Internal cleanup 366 367=item * 368 369C<XSLoader> 0.06 incorporated; small optimisation for calling 370C<bootstrap_inherit()> and documentation enhancements. 371 372=back 373 374=item * 375 376C<Encode> upgraded to version 2.12 377 378=over 379 380=item * 381 382A coderef is now acceptable for C<CHECK>! 383 384=item * 385 3863 new characters added to the ISO-8859-7 encoding 387 388=item * 389 390New encoding C<MIME-Header-ISO_2022_JP> added 391 392=item * 393 394Problem with partial characters and C<< encoding(utf-8-strict) >> fixed. 395 396=item * 397 398Documentation enhancements and typo fixes 399 400=back 401 402=item * 403 404C<English> upgraded to version 1.02 405 406=over 407 408=item * 409 410the C<< $COMPILING >> variable has been added 411 412=back 413 414=item * 415 416C<ExtUtils::Constant> upgraded to version 0.17 417 418=over 419 420=item * 421 422Improved compatibility with older versions of perl 423 424=back 425 426=item * 427 428C<ExtUtils::MakeMaker> upgraded to version 6.30 (was 6.17) 429 430=over 431 432=item * 433 434Too much to list here; see L<http://search.cpan.org/dist/ExtUtils-MakeMaker/Changes> 435 436=back 437 438=item * 439 440C<File::Basename> upgraded to version 2.74, with changes contributed by Michael Schwern. 441 442=over 443 444=item * 445 446Documentation clarified and errors corrected. 447 448=item * 449 450C<basename> now strips trailing path separators before processing the name. 451 452=item * 453 454C<basename> now returns C</> for parameter C</>, to make C<basename> 455consistent with the shell utility of the same name. 456 457=item * 458 459The suffix is no longer stripped if it is identical to the remaining characters 460in the name, again for consistency with the shell utility. 461 462=item * 463 464Some internal code cleanup. 465 466=back 467 468=item * 469 470C<File::Copy> upgraded to version 2.09 471 472=over 473 474=item * 475 476Copying a file onto itself used to fail. 477 478=item * 479 480Moving a file between file systems now preserves the access and 481modification time stamps 482 483=back 484 485=item * 486 487C<File::Find> upgraded to version 1.10 488 489=over 490 491=item * 492 493Win32 portability fixes 494 495=item * 496 497Enhanced documentation 498 499=back 500 501=item * 502 503C<File::Glob> upgraded to version 1.05 504 505=over 506 507=item * 508 509Internal cleanup 510 511=back 512 513=item * 514 515C<File::Path> upgraded to version 1.08 516 517=over 518 519=item * 520 521C<mkpath> now preserves C<errno> when C<mkdir> fails 522 523=back 524 525=item * 526 527C<File::Spec> upgraded to version 3.12 528 529=over 530 531=item * 532 533C<< File::Spec->rootdir() >> now returns C<\> on Win32, instead of C</> 534 535=item * 536 537C<$^O> could sometimes become tainted. This has been fixed. 538 539=item * 540 541C<canonpath> on Win32 now collapses C<foo/..> (or C<foo\..>) sections 542correctly, rather than doing the "misguided" work it was previously doing. 543Note that C<canonpath> on Unix still does B<not> collapse these sections, as 544doing so would be incorrect. 545 546=item * 547 548Some documentation improvements 549 550=item * 551 552Some internal code cleanup 553 554=back 555 556=item * 557 558C<FileCache> upgraded to version 1.06 559 560=over 561 562=item * 563 564POD formatting errors in the documentation fixed 565 566=back 567 568=item * 569 570C<Filter::Simple> upgraded to version 0.82 571 572=item * 573 574C<FindBin> upgraded to version 1.47 575 576=over 577 578=item * 579 580Now works better with directories where access rights are more 581restrictive than usual. 582 583=back 584 585=item * 586 587C<GDBM_File> upgraded to version 1.08 588 589=over 590 591=item * 592 593Internal cleanup 594 595=back 596 597=item * 598 599C<Getopt::Long> upgraded to version 2.35 600 601=over 602 603=item * 604 605C<prefix_pattern> has now been complemented by a new configuration 606option C<long_prefix_pattern> that allows the user to specify what 607prefix patterns should have long option style semantics applied. 608 609=item * 610 611Options can now take multiple values at once (experimental) 612 613=item * 614 615Various bug fixes 616 617=back 618 619=item * 620 621C<if> upgraded to version 0.05 622 623=over 624 625=item * 626 627Give more meaningful error messages from C<if> when invoked with a 628condition in list context. 629 630=item * 631 632Restore backwards compatibility with earlier versions of perl 633 634=back 635 636=item * 637 638C<IO> upgraded to version 1.22 639 640=over 641 642=item * 643 644Enhanced documentation 645 646=item * 647 648Internal cleanup 649 650=back 651 652=item * 653 654C<IPC::Open2> upgraded to version 1.02 655 656=over 657 658=item * 659 660Enhanced documentation 661 662=back 663 664=item * 665 666C<IPC::Open3> upgraded to version 1.02 667 668=over 669 670=item * 671 672Enhanced documentation 673 674=back 675 676=item * 677 678C<List::Util> upgraded to version 1.18 (was 1.14) 679 680=over 681 682=item * 683 684Fix pure-perl version of C<refaddr> to avoid blessing an un-blessed reference 685 686=item * 687 688Use C<XSLoader> for faster loading 689 690=item * 691 692Fixed various memory leaks 693 694=item * 695 696Internal cleanup and portability fixes 697 698=back 699 700=item * 701 702C<Math::Complex> upgraded to version 1.35 703 704=over 705 706=item * 707 708C<atan2(0, i)> now works, as do all the (computable) complex argument cases 709 710=item * 711 712Fixes for certain bugs in C<make> and C<emake> 713 714=item * 715 716Support returning the I<k>th root directly 717 718=item * 719 720Support C<[2,-3pi/8]> in C<emake> 721 722=item * 723 724Support C<inf> for C<make>/C<emake> 725 726=item * 727 728Document C<make>/C<emake> more visibly 729 730=back 731 732=item * 733 734C<Math::Trig> upgraded to version 1.03 735 736=over 737 738=item * 739 740Add more great circle routines: C<great_circle_waypoint> and 741C<great_circle_destination> 742 743=back 744 745=item * 746 747C<MIME::Base64> upgraded to version 3.07 748 749=over 750 751=item * 752 753Use C<XSLoader> for faster loading 754 755=item * 756 757Enhanced documentation 758 759=item * 760 761Internal cleanup 762 763=back 764 765=item * 766 767C<NDBM_File> upgraded to version 1.06 768 769=over 770 771=item * 772 773Enhanced documentation 774 775=back 776 777=item * 778 779C<ODBM_File> upgraded to version 1.06 780 781=over 782 783=item * 784 785Documentation typo fixed 786 787=item * 788 789Internal cleanup 790 791=back 792 793=item * 794 795C<Opcode> upgraded to version 1.06 796 797=over 798 799=item * 800 801Enhanced documentation 802 803=item * 804 805Internal cleanup 806 807=back 808 809=item * 810 811C<open> upgraded to version 1.05 812 813=over 814 815=item * 816 817Enhanced documentation 818 819=back 820 821=item * 822 823C<overload> upgraded to version 1.04 824 825=over 826 827=item * 828 829Enhanced documentation 830 831=back 832 833=item * 834 835C<PerlIO> upgraded to version 1.04 836 837=over 838 839=item * 840 841C<PerlIO::via> iterate over layers properly now 842 843=item * 844 845C<PerlIO::scalar> understands C<< $/ = "" >> now 846 847=item * 848 849C<encoding(utf-8-strict)> with partial characters now works 850 851=item * 852 853Enhanced documentation 854 855=item * 856 857Internal cleanup 858 859=back 860 861=item * 862 863C<Pod::Functions> upgraded to version 1.03 864 865=over 866 867=item * 868 869Documentation typos fixed 870 871=back 872 873=item * 874 875C<Pod::Html> upgraded to version 1.0504 876 877=over 878 879=item * 880 881HTML output will now correctly link 882to C<=item>s on the same page, and should be valid XHTML. 883 884=item * 885 886Variable names are recognized as intended 887 888=item * 889 890Documentation typos fixed 891 892=back 893 894=item * 895 896C<Pod::Parser> upgraded to version 1.32 897 898=over 899 900=item * 901 902Allow files that start with C<=head> on the first line 903 904=item * 905 906Win32 portability fix 907 908=item * 909 910Exit status of C<pod2usage> fixed 911 912=item * 913 914New C<-noperldoc> switch for C<pod2usage> 915 916=item * 917 918Arbitrary URL schemes now allowed 919 920=item * 921 922Documentation typos fixed 923 924=back 925 926=item * 927 928C<POSIX> upgraded to version 1.09 929 930=over 931 932=item * 933 934Documentation typos fixed 935 936=item * 937 938Internal cleanup 939 940=back 941 942=item * 943 944C<re> upgraded to version 0.05 945 946=over 947 948=item * 949 950Documentation typo fixed 951 952=back 953 954=item * 955 956C<Safe> upgraded to version 2.12 957 958=over 959 960=item * 961 962Minor documentation enhancement 963 964=back 965 966=item * 967 968C<SDBM_File> upgraded to version 1.05 969 970=over 971 972=item * 973 974Documentation typo fixed 975 976=item * 977 978Internal cleanup 979 980=back 981 982=item * 983 984C<Socket> upgraded to version 1.78 985 986=over 987 988=item * 989 990Internal cleanup 991 992=back 993 994=item * 995 996C<Storable> upgraded to version 2.15 997 998=over 999 1000=item * 1001 1002This includes the C<STORABLE_attach> hook functionality added by 1003Adam Kennedy, and more frugal memory requirements when storing under C<ithreads>, by 1004using the C<ithreads> cloning tracking code. 1005 1006=back 1007 1008=item * 1009 1010C<Switch> upgraded to version 2.10_01 1011 1012=over 1013 1014=item * 1015 1016Documentation typos fixed 1017 1018=back 1019 1020=item * 1021 1022C<Sys::Syslog> upgraded to version 0.13 1023 1024=over 1025 1026=item * 1027 1028Now provides numeric macros and meaningful C<Exporter> tags. 1029 1030=item * 1031 1032No longer uses C<Sys::Hostname> as it may provide useless values in 1033unconfigured network environments, so instead uses C<INADDR_LOOPBACK> directly. 1034 1035=item * 1036 1037C<syslog()> now uses local timestamp. 1038 1039=item * 1040 1041C<setlogmask()> now behaves like its C counterpart. 1042 1043=item * 1044 1045C<setlogsock()> will now C<croak()> as documented. 1046 1047=item * 1048 1049Improved error and warnings messages. 1050 1051=item * 1052 1053Improved documentation. 1054 1055=back 1056 1057=item * 1058 1059C<Term::ANSIColor> upgraded to version 1.10 1060 1061=over 1062 1063=item * 1064 1065Fixes a bug in C<colored> when C<$EACHLINE> is set that caused it to not color 1066lines consisting solely of 0 (literal zero). 1067 1068=item * 1069 1070Improved tests. 1071 1072=back 1073 1074=item * 1075 1076C<Term::ReadLine> upgraded to version 1.02 1077 1078=over 1079 1080=item * 1081 1082Documentation tweaks 1083 1084=back 1085 1086=item * 1087 1088C<Test::Harness> upgraded to version 2.56 (was 2.48) 1089 1090=over 1091 1092=item * 1093 1094The C<Test::Harness> timer is now off by default. 1095 1096=item * 1097 1098Now shows elapsed time in milliseconds. 1099 1100=item * 1101 1102Various bug fixes 1103 1104=back 1105 1106=item * 1107 1108C<Test::Simple> upgraded to version 0.62 (was 0.54) 1109 1110=over 1111 1112=item * 1113 1114C<is_deeply()> no longer fails to work for many cases 1115 1116=item * 1117 1118Various minor bug fixes 1119 1120=item * 1121 1122Documentation enhancements 1123 1124=back 1125 1126=item * 1127 1128C<Text::Tabs> upgraded to version 2005.0824 1129 1130=over 1131 1132=item * 1133 1134Provides a faster implementation of C<expand> 1135 1136=back 1137 1138=item * 1139 1140C<Text::Wrap> upgraded to version 2005.082401 1141 1142=over 1143 1144=item * 1145 1146Adds C<$Text::Wrap::separator2>, which allows you to preserve existing newlines 1147but add line-breaks with some other string. 1148 1149=back 1150 1151=item * 1152 1153C<threads> upgraded to version 1.07 1154 1155=over 1156 1157=item * 1158 1159C<threads> will now honour C<no warnings 'threads'> 1160 1161=item * 1162 1163A thread's interpreter is now freed after C<< $t->join() >> rather than after 1164C<undef $t>, which should fix some C<ithreads> memory leaks. (Fixed by Dave 1165Mitchell) 1166 1167=item * 1168 1169Some documentation typo fixes. 1170 1171=back 1172 1173=item * 1174 1175C<threads::shared> upgraded to version 0.94 1176 1177=over 1178 1179=item * 1180 1181Documentation changes only 1182 1183=item * 1184 1185Note: An improved implementation of C<threads::shared> is available on 1186CPAN - this will be merged into 5.8.9 if it proves stable. 1187 1188=back 1189 1190=item * 1191 1192C<Tie::Hash> upgraded to version 1.02 1193 1194=over 1195 1196=item * 1197 1198Documentation typo fixed 1199 1200=back 1201 1202=item * 1203 1204C<Time::HiRes> upgraded to version 1.86 (was 1.66) 1205 1206=over 1207 1208=item * 1209 1210C<clock_nanosleep()> and C<clock()> functions added 1211 1212=item * 1213 1214Support for the POSIX C<clock_gettime()> and C<clock_getres()> has been added 1215 1216=item * 1217 1218Return C<undef> or an empty list if the C C<gettimeofday()> function fails 1219 1220=item * 1221 1222Improved C<nanosleep> detection 1223 1224=item * 1225 1226Internal cleanup 1227 1228=item * 1229 1230Enhanced documentation 1231 1232=back 1233 1234=item * 1235 1236C<Unicode::Collate> upgraded to version 0.52 1237 1238=over 1239 1240=item * 1241 1242Now implements UCA Revision 14 (based on Unicode 4.1.0). 1243 1244=item * 1245 1246C<< Unicode::Collate->new >> method no longer overwrites user's C<$_> 1247 1248=item * 1249 1250Enhanced documentation 1251 1252=back 1253 1254=item * 1255 1256C<Unicode::UCD> upgraded to version 0.24 1257 1258=over 1259 1260=item * 1261 1262Documentation typos fixed 1263 1264=back 1265 1266=item * 1267 1268C<User::grent> upgraded to version 1.01 1269 1270=over 1271 1272=item * 1273 1274Documentation typo fixed 1275 1276=back 1277 1278=item * 1279 1280C<utf8> upgraded to version 1.06 1281 1282=over 1283 1284=item * 1285 1286Documentation typos fixed 1287 1288=back 1289 1290=item * 1291 1292C<vmsish> upgraded to version 1.02 1293 1294=over 1295 1296=item * 1297 1298Documentation typos fixed 1299 1300=back 1301 1302=item * 1303 1304C<warnings> upgraded to version 1.05 1305 1306=over 1307 1308=item * 1309 1310Gentler messing with C<Carp::> internals 1311 1312=item * 1313 1314Internal cleanup 1315 1316=item * 1317 1318Documentation update 1319 1320=back 1321 1322=item * 1323 1324C<Win32> upgraded to version 0.2601 1325 1326=for cynics And how many perl 5.8.x versions can I release ahead of Vista? 1327 1328=over 1329 1330=item * 1331 1332Provides Windows Vista support to C<Win32::GetOSName> 1333 1334=item * 1335 1336Documentation enhancements 1337 1338=back 1339 1340=item * 1341 1342C<XS::Typemap> upgraded to version 0.02 1343 1344=over 1345 1346=item * 1347 1348Internal cleanup 1349 1350=back 1351 1352=back 1353 1354=head1 Utility Changes 1355 1356=head2 C<h2xs> enhancements 1357 1358C<h2xs> implements new option C<--use-xsloader> to force use of 1359C<XSLoader> even in backwards compatible modules. 1360 1361The handling of authors' names that had apostrophes has been fixed. 1362 1363Any enums with negative values are now skipped. 1364 1365=head2 C<perlivp> enhancements 1366 1367C<perlivp> implements new option C<-a> and will not check for F<*.ph> 1368files by default any more. Use the C<-a> option to run I<all> tests. 1369 1370=head1 New Documentation 1371 1372The L<perlglossary> manpage is a glossary of terms used in the Perl 1373documentation, technical and otherwise, kindly provided by O'Reilly Media, 1374inc. 1375 1376=head1 Performance Enhancements 1377 1378=over 4 1379 1380=item * 1381 1382Weak reference creation is now I<O(1)> rather than I<O(n)>, courtesy of 1383Nicholas Clark. Weak reference deletion remains I<O(n)>, but if deletion only 1384happens at program exit, it may be skipped completely. 1385 1386=item * 1387 1388Salvador Fandiño provided improvements to reduce the memory usage of C<sort> 1389and to speed up some cases. 1390 1391=item * 1392 1393Jarkko Hietaniemi and Andy Lester worked to mark as much data as possible in 1394the C source files as C<static>, to increase the proportion of the executable 1395file that the operating system can share between process, and thus reduce 1396real memory usage on multi-user systems. 1397 1398=back 1399 1400=head1 Installation and Configuration Improvements 1401 1402Parallel makes should work properly now, although there may still be problems 1403if C<make test> is instructed to run in parallel. 1404 1405Building with Borland's compilers on Win32 should work more smoothly. In 1406particular Steve Hay has worked to side step many warnings emitted by their 1407compilers and at least one C compiler internal error. 1408 1409C<Configure> will now detect C<clearenv> and C<unsetenv>, thanks to a patch 1410from Alan Burlison. It will also probe for C<futimes> and whether C<sprintf> 1411correctly returns the length of the formatted string, which will both be used 1412in perl 5.8.9. 1413 1414There are improved hints for next-3.0, vmesa, IX, Darwin, Solaris, Linux, 1415DEC/OSF, HP-UX and MPE/iX 1416 1417Perl extensions on Windows now can be statically built into the Perl DLL, 1418thanks to a work by Vadim Konovalov. (This improvement was actually in 5.8.7, 1419but was accidentally omitted from L<perl587delta>). 1420 1421=head1 Selected Bug Fixes 1422 1423=head2 no warnings 'category' works correctly with -w 1424 1425Previously when running with warnings enabled globally via C<-w>, selective 1426disabling of specific warning categories would actually turn off all warnings. 1427This is now fixed; now C<no warnings 'io';> will only turn off warnings in the 1428C<io> class. Previously it would erroneously turn off all warnings. 1429 1430This bug fix may cause some programs to start correctly issuing warnings. 1431 1432=head2 Remove over-optimisation 1433 1434Perl 5.8.4 introduced a change so that assignments of C<undef> to a 1435scalar, or of an empty list to an array or a hash, were optimised away. As 1436this could cause problems when C<goto> jumps were involved, this change 1437has been backed out. 1438 1439=head2 sprintf() fixes 1440 1441Using the sprintf() function with some formats could lead to a buffer 1442overflow in some specific cases. This has been fixed, along with several 1443other bugs, notably in bounds checking. 1444 1445In related fixes, it was possible for badly written code that did not follow 1446the documentation of C<Sys::Syslog> to have formatting vulnerabilities. 1447C<Sys::Syslog> has been changed to protect people from poor quality third 1448party code. 1449 1450=head2 Debugger and Unicode slowdown 1451 1452It had been reported that running under perl's debugger when processing 1453Unicode data could cause unexpectedly large slowdowns. The most likely cause 1454of this was identified and fixed by Nicholas Clark. 1455 1456=head2 Smaller fixes 1457 1458=over 4 1459 1460=item * 1461 1462C<FindBin> now works better with directories where access rights are more 1463restrictive than usual. 1464 1465=item * 1466 1467Several memory leaks in ithreads were closed. An improved implementation of 1468C<threads::shared> is available on CPAN - this will be merged into 5.8.9 if 1469it proves stable. 1470 1471=item * 1472 1473Trailing spaces are now trimmed from C<$!> and C<$^E>. 1474 1475=item * 1476 1477Operations that require perl to read a process's list of groups, such as reads 1478of C<$(> and C<$)>, now dynamically allocate memory rather than using a 1479fixed sized array. The fixed size array could cause C stack exhaustion on 1480systems configured to use large numbers of groups. 1481 1482=item * 1483 1484C<PerlIO::scalar> now works better with non-default C<$/> settings. 1485 1486=item * 1487 1488You can now use the C<x> operator to repeat a C<qw//> list. This used 1489to raise a syntax error. 1490 1491=item * 1492 1493The debugger now traces correctly execution in eval("")uated code that 1494contains #line directives. 1495 1496=item * 1497 1498The value of the C<open> pragma is no longer ignored for three-argument 1499opens. 1500 1501=item * 1502 1503The optimisation of C<for (reverse @a)> introduced in perl 5.8.6 could 1504misbehave when the array had undefined elements and was used in LVALUE 1505context. Dave Mitchell provided a fix. 1506 1507=item * 1508 1509Some case insensitive matches between UTF-8 encoded data and 8 bit regexps, 1510and vice versa, could give malformed character warnings. These have been 1511fixed by Dave Mitchell and Yves Orton. 1512 1513=item * 1514 1515C<lcfirst> and C<ucfirst> could corrupt the string for certain cases where 1516the length UTF-8 encoding of the string in lower case, upper case or title 1517case differed. This was fixed by Nicholas Clark. 1518 1519=item * 1520 1521Perl will now use the C library calls C<unsetenv> and C<clearenv> if present 1522to delete keys from C<%ENV> and delete C<%ENV> entirely, thanks to a patch 1523from Alan Burlison. 1524 1525=back 1526 1527=head1 New or Changed Diagnostics 1528 1529=head2 Attempt to set length of freed array 1530 1531This is a new warning, produced in situations such as this: 1532 1533 $r = do {my @a; \$#a}; 1534 $$r = 503; 1535 1536=head2 Non-string passed as bitmask 1537 1538This is a new warning, produced when number has been passed as an argument to 1539select(), instead of a bitmask. 1540 1541 # Wrong, will now warn 1542 $rin = fileno(STDIN); 1543 ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout); 1544 1545 # Should be 1546 $rin = ''; 1547 vec($rin,fileno(STDIN),1) = 1; 1548 ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout); 1549 1550=head2 Search pattern not terminated or ternary operator parsed as search pattern 1551 1552This syntax error indicates that the lexer couldn't find the final 1553delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in 1554this error message makes it easier to diagnose syntax errors. 1555 1556=head1 Changed Internals 1557 1558There has been a fair amount of refactoring of the C<C> source code, partly to 1559make it tidier and more maintainable. The resulting object code and the 1560C<perl> binary may well be smaller than 5.8.7, in particular due to a change 1561contributed by Dave Mitchell which reworked the warnings code to be 1562significantly smaller. Apart from being smaller and possibly faster, there 1563should be no user-detectable changes. 1564 1565Andy Lester supplied many improvements to determine which function 1566parameters and local variables could actually be declared C<const> to the C 1567compiler. Steve Peters provided new C<*_set> macros and reworked the core to 1568use these rather than assigning to macros in LVALUE context. 1569 1570Dave Mitchell improved the lexer debugging output under C<-DT> 1571 1572Nicholas Clark changed the string buffer allocation so that it is now rounded 1573up to the next multiple of 4 (or 8 on platforms with 64 bit pointers). This 1574should reduce the number of calls to C<realloc> without actually using any 1575extra memory. 1576 1577The C<HV>'s array of C<HE*>s is now allocated at the correct (minimal) size, 1578thanks to another change by Nicholas Clark. Compile with 1579C<-DPERL_USE_LARGE_HV_ALLOC> to use the old, sloppier, default. 1580 1581For XS or embedding debugging purposes, if perl is compiled with 1582C<-DDEBUG_LEAKING_SCALARS_FORK_DUMP> in addition to 1583C<-DDEBUG_LEAKING_SCALARS> then a child process is C<fork>ed just before 1584global destruction, which is used to display the values of any scalars 1585found to have leaked at the end of global destruction. Without this, the 1586scalars have already been freed sufficiently at the point of detection that 1587it is impossible to produce any meaningful dump of their contents. This 1588feature was implemented by the indefatigable Nicholas Clark, based on an idea 1589by Mike Giroux. 1590 1591=head1 Platform Specific Problems 1592 1593The optimiser on HP-UX 11.23 (Itanium 2) is currently partly disabled (scaled 1594down to +O1) when using HP C-ANSI-C; the cause of problems at higher 1595optimisation levels is still unclear. 1596 1597There are a handful of remaining test failures on VMS, mostly due to 1598test fixes and minor module tweaks with too many dependencies to 1599integrate into this release from the development stream, where they have 1600all been corrected. The following is a list of expected failures with 1601the patch number of the fix where that is known: 1602 1603 ext/Devel/PPPort/t/ppphtest.t #26913 1604 ext/List/Util/t/p_tainted.t #26912 1605 lib/ExtUtils/t/PL_FILES.t #26813 1606 lib/ExtUtils/t/basic.t #26813 1607 t/io/fs.t 1608 t/op/cmp.t 1609 1610=head1 Reporting Bugs 1611 1612If you find what you think is a bug, you might check the articles 1613recently posted to the comp.lang.perl.misc newsgroup and the perl 1614bug database at http://bugs.perl.org. There may also be 1615information at http://www.perl.org, the Perl Home Page. 1616 1617If you believe you have an unreported bug, please run the B<perlbug> 1618program included with your release. Be sure to trim your bug down 1619to a tiny but sufficient test case. Your bug report, along with the 1620output of C<perl -V>, will be sent off to perlbug@perl.org to be 1621analysed by the Perl porting team. You can browse and search 1622the Perl 5 bugs at http://bugs.perl.org/ 1623 1624=head1 SEE ALSO 1625 1626The F<Changes> file for exhaustive details on what changed. 1627 1628The F<INSTALL> file for how to build Perl. 1629 1630The F<README> file for general stuff. 1631 1632The F<Artistic> and F<Copying> files for copyright information. 1633 1634=cut 1635