source: for-distributions/trunk/bin/windows/perl/lib/Pod/perl588delta.pod@ 14489

Last change on this file since 14489 was 14489, checked in by oranfry, 17 years ago

upgrading to perl 5.8

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