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