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