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