1PERL588DELTA(1) Perl Programmers Reference Guide PERL588DELTA(1)
2
3
4
6 perl588delta - what is new for perl v5.8.8
7
9 This document describes differences between the 5.8.7 release and the
10 5.8.8 release.
11
13 There are no changes intentionally incompatible with 5.8.7. If any
14 exist, they are bugs and reports are welcome.
15
17 • "chdir", "chmod" and "chown" can now work on filehandles as well as
18 filenames, if the system supports respectively "fchdir", "fchmod"
19 and "fchown", thanks to a patch provided by Gisle Aas.
20
22 • "Attribute::Handlers" upgraded to version 0.78_02
23
24 • Documentation typo fix
25
26 • "attrs" upgraded to version 1.02
27
28 • Internal cleanup only
29
30 • "autouse" upgraded to version 1.05
31
32 • Simplified implementation
33
34 • "B" upgraded to version 1.09_01
35
36 • The inheritance hierarchy of the "B::" modules has been
37 corrected; "B::NV" now inherits from "B::SV" (instead of
38 "B::IV").
39
40 • "blib" upgraded to version 1.03
41
42 • Documentation typo fix
43
44 • "ByteLoader" upgraded to version 0.06
45
46 • Internal cleanup
47
48 • "CGI" upgraded to version 3.15
49
50 • Extraneous "?" from self_url() removed
51
52 • scrolling_list() select attribute fixed
53
54 • "virtual_port" now works properly with the https protocol
55
56 • upload_hook() and append() now works in function-oriented mode
57
58 • "POST_MAX" doesn't cause the client to hang any more
59
60 • Automatic tab indexes are now disabled and new "-tabindex"
61 pragma has been added to turn automatic indexes back on
62
63 • end_form() doesn't emit empty (and non-validating) "<div>"
64
65 • "CGI::Carp" works better in certain mod_perl configurations
66
67 • Setting $CGI::TMPDIRECTORY is now effective
68
69 • Enhanced documentation
70
71 • "charnames" upgraded to version 1.05
72
73 • viacode() now accept hex strings and has been optimized.
74
75 • "CPAN" upgraded to version 1.76_02
76
77 • 1 minor bug fix for Win32
78
79 • "Cwd" upgraded to version 3.12
80
81 • canonpath() on Win32 now collapses foo\.. sections correctly.
82
83 • Improved behaviour on Symbian OS.
84
85 • Enhanced documentation and typo fixes
86
87 • Internal cleanup
88
89 • "Data::Dumper" upgraded to version 2.121_08
90
91 • A problem where "Data::Dumper" would sometimes update the
92 iterator state of hashes has been fixed
93
94 • Numeric labels now work
95
96 • Internal cleanup
97
98 • "DB" upgraded to version 1.01
99
100 • A problem where the state of the regexp engine would sometimes
101 get clobbered when running under the debugger has been fixed.
102
103 • "DB_File" upgraded to version 1.814
104
105 • Adds support for Berkeley DB 4.4.
106
107 • "Devel::DProf" upgraded to version 20050603.00
108
109 • Internal cleanup
110
111 • "Devel::Peek" upgraded to version 1.03
112
113 • Internal cleanup
114
115 • "Devel::PPPort" upgraded to version 3.06_01
116
117 • "--compat-version" argument checking has been improved
118
119 • Files passed on the command line are filtered by default
120
121 • "--nofilter" option to override the filtering has been added
122
123 • Enhanced documentation
124
125 • "diagnostics" upgraded to version 1.15
126
127 • Documentation typo fix
128
129 • "Digest" upgraded to version 1.14
130
131 • The constructor now knows which module implements SHA-224
132
133 • Documentation tweaks and typo fixes
134
135 • "Digest::MD5" upgraded to version 2.36
136
137 • "XSLoader" is now used for faster loading
138
139 • Enhanced documentation including MD5 weaknesses discovered
140 lately
141
142 • "Dumpvalue" upgraded to version 1.12
143
144 • Documentation fix
145
146 • "DynaLoader" upgraded but unfortunately we're not able to increment
147 its version number :-(
148
149 • Implements "dl_unload_file" on Win32
150
151 • Internal cleanup
152
153 • "XSLoader" 0.06 incorporated; small optimisation for calling
154 bootstrap_inherit() and documentation enhancements.
155
156 • "Encode" upgraded to version 2.12
157
158 • A coderef is now acceptable for "CHECK"!
159
160 • 3 new characters added to the ISO-8859-7 encoding
161
162 • New encoding "MIME-Header-ISO_2022_JP" added
163
164 • Problem with partial characters and encoding(utf-8-strict)
165 fixed.
166
167 • Documentation enhancements and typo fixes
168
169 • "English" upgraded to version 1.02
170
171 • the $COMPILING variable has been added
172
173 • "ExtUtils::Constant" upgraded to version 0.17
174
175 • Improved compatibility with older versions of perl
176
177 • "ExtUtils::MakeMaker" upgraded to version 6.30 (was 6.17)
178
179 • Too much to list here; see
180 <http://search.cpan.org/dist/ExtUtils-MakeMaker/Changes>
181
182 • "File::Basename" upgraded to version 2.74, with changes contributed
183 by Michael Schwern.
184
185 • Documentation clarified and errors corrected.
186
187 • "basename" now strips trailing path separators before
188 processing the name.
189
190 • "basename" now returns "/" for parameter "/", to make
191 "basename" consistent with the shell utility of the same name.
192
193 • The suffix is no longer stripped if it is identical to the
194 remaining characters in the name, again for consistency with
195 the shell utility.
196
197 • Some internal code cleanup.
198
199 • "File::Copy" upgraded to version 2.09
200
201 • Copying a file onto itself used to fail.
202
203 • Moving a file between file systems now preserves the access and
204 modification time stamps
205
206 • "File::Find" upgraded to version 1.10
207
208 • Win32 portability fixes
209
210 • Enhanced documentation
211
212 • "File::Glob" upgraded to version 1.05
213
214 • Internal cleanup
215
216 • "File::Path" upgraded to version 1.08
217
218 • "mkpath" now preserves "errno" when "mkdir" fails
219
220 • "File::Spec" upgraded to version 3.12
221
222 • "File::Spec->rootdir()" now returns "\" on Win32, instead of
223 "/"
224
225 • $^O could sometimes become tainted. This has been fixed.
226
227 • "canonpath" on Win32 now collapses "foo/.." (or "foo\..")
228 sections correctly, rather than doing the "misguided" work it
229 was previously doing. Note that "canonpath" on Unix still does
230 not collapse these sections, as doing so would be incorrect.
231
232 • Some documentation improvements
233
234 • Some internal code cleanup
235
236 • "FileCache" upgraded to version 1.06
237
238 • POD formatting errors in the documentation fixed
239
240 • "Filter::Simple" upgraded to version 0.82
241
242 • "FindBin" upgraded to version 1.47
243
244 • Now works better with directories where access rights are more
245 restrictive than usual.
246
247 • "GDBM_File" upgraded to version 1.08
248
249 • Internal cleanup
250
251 • "Getopt::Long" upgraded to version 2.35
252
253 • "prefix_pattern" has now been complemented by a new
254 configuration option "long_prefix_pattern" that allows the user
255 to specify what prefix patterns should have long option style
256 semantics applied.
257
258 • Options can now take multiple values at once (experimental)
259
260 • Various bug fixes
261
262 • "if" upgraded to version 0.05
263
264 • Give more meaningful error messages from "if" when invoked with
265 a condition in list context.
266
267 • Restore backwards compatibility with earlier versions of perl
268
269 • "IO" upgraded to version 1.22
270
271 • Enhanced documentation
272
273 • Internal cleanup
274
275 • "IPC::Open2" upgraded to version 1.02
276
277 • Enhanced documentation
278
279 • "IPC::Open3" upgraded to version 1.02
280
281 • Enhanced documentation
282
283 • "List::Util" upgraded to version 1.18 (was 1.14)
284
285 • Fix pure-perl version of "refaddr" to avoid blessing an un-
286 blessed reference
287
288 • Use "XSLoader" for faster loading
289
290 • Fixed various memory leaks
291
292 • Internal cleanup and portability fixes
293
294 • "Math::Complex" upgraded to version 1.35
295
296 • "atan2(0, i)" now works, as do all the (computable) complex
297 argument cases
298
299 • Fixes for certain bugs in "make" and "emake"
300
301 • Support returning the kth root directly
302
303 • Support "[2,-3pi/8]" in "emake"
304
305 • Support "inf" for "make"/"emake"
306
307 • Document "make"/"emake" more visibly
308
309 • "Math::Trig" upgraded to version 1.03
310
311 • Add more great circle routines: "great_circle_waypoint" and
312 "great_circle_destination"
313
314 • "MIME::Base64" upgraded to version 3.07
315
316 • Use "XSLoader" for faster loading
317
318 • Enhanced documentation
319
320 • Internal cleanup
321
322 • "NDBM_File" upgraded to version 1.06
323
324 • Enhanced documentation
325
326 • "ODBM_File" upgraded to version 1.06
327
328 • Documentation typo fixed
329
330 • Internal cleanup
331
332 • "Opcode" upgraded to version 1.06
333
334 • Enhanced documentation
335
336 • Internal cleanup
337
338 • "open" upgraded to version 1.05
339
340 • Enhanced documentation
341
342 • "overload" upgraded to version 1.04
343
344 • Enhanced documentation
345
346 • "PerlIO" upgraded to version 1.04
347
348 • "PerlIO::via" iterate over layers properly now
349
350 • "PerlIO::scalar" understands "$/ = """ now
351
352 • encoding(utf-8-strict) with partial characters now works
353
354 • Enhanced documentation
355
356 • Internal cleanup
357
358 • "Pod::Functions" upgraded to version 1.03
359
360 • Documentation typos fixed
361
362 • "Pod::Html" upgraded to version 1.0504
363
364 • HTML output will now correctly link to "=item"s on the same
365 page, and should be valid XHTML.
366
367 • Variable names are recognized as intended
368
369 • Documentation typos fixed
370
371 • "Pod::Parser" upgraded to version 1.32
372
373 • Allow files that start with "=head" on the first line
374
375 • Win32 portability fix
376
377 • Exit status of "pod2usage" fixed
378
379 • New "-noperldoc" switch for "pod2usage"
380
381 • Arbitrary URL schemes now allowed
382
383 • Documentation typos fixed
384
385 • "POSIX" upgraded to version 1.09
386
387 • Documentation typos fixed
388
389 • Internal cleanup
390
391 • "re" upgraded to version 0.05
392
393 • Documentation typo fixed
394
395 • "Safe" upgraded to version 2.12
396
397 • Minor documentation enhancement
398
399 • "SDBM_File" upgraded to version 1.05
400
401 • Documentation typo fixed
402
403 • Internal cleanup
404
405 • "Socket" upgraded to version 1.78
406
407 • Internal cleanup
408
409 • "Storable" upgraded to version 2.15
410
411 • This includes the "STORABLE_attach" hook functionality added by
412 Adam Kennedy, and more frugal memory requirements when storing
413 under "ithreads", by using the "ithreads" cloning tracking
414 code.
415
416 • "Switch" upgraded to version 2.10_01
417
418 • Documentation typos fixed
419
420 • "Sys::Syslog" upgraded to version 0.13
421
422 • Now provides numeric macros and meaningful "Exporter" tags.
423
424 • No longer uses "Sys::Hostname" as it may provide useless values
425 in unconfigured network environments, so instead uses
426 "INADDR_LOOPBACK" directly.
427
428 • syslog() now uses local timestamp.
429
430 • setlogmask() now behaves like its C counterpart.
431
432 • setlogsock() will now croak() as documented.
433
434 • Improved error and warnings messages.
435
436 • Improved documentation.
437
438 • "Term::ANSIColor" upgraded to version 1.10
439
440 • Fixes a bug in "colored" when $EACHLINE is set that caused it
441 to not color lines consisting solely of 0 (literal zero).
442
443 • Improved tests.
444
445 • "Term::ReadLine" upgraded to version 1.02
446
447 • Documentation tweaks
448
449 • "Test::Harness" upgraded to version 2.56 (was 2.48)
450
451 • The "Test::Harness" timer is now off by default.
452
453 • Now shows elapsed time in milliseconds.
454
455 • Various bug fixes
456
457 • "Test::Simple" upgraded to version 0.62 (was 0.54)
458
459 • is_deeply() no longer fails to work for many cases
460
461 • Various minor bug fixes
462
463 • Documentation enhancements
464
465 • "Text::Tabs" upgraded to version 2005.0824
466
467 • Provides a faster implementation of "expand"
468
469 • "Text::Wrap" upgraded to version 2005.082401
470
471 • Adds $Text::Wrap::separator2, which allows you to preserve
472 existing newlines but add line-breaks with some other string.
473
474 • "threads" upgraded to version 1.07
475
476 • "threads" will now honour "no warnings 'threads'"
477
478 • A thread's interpreter is now freed after "$t->join()" rather
479 than after "undef $t", which should fix some "ithreads" memory
480 leaks. (Fixed by Dave Mitchell)
481
482 • Some documentation typo fixes.
483
484 • "threads::shared" upgraded to version 0.94
485
486 • Documentation changes only
487
488 • Note: An improved implementation of "threads::shared" is
489 available on CPAN - this will be merged into 5.8.9 if it proves
490 stable.
491
492 • "Tie::Hash" upgraded to version 1.02
493
494 • Documentation typo fixed
495
496 • "Time::HiRes" upgraded to version 1.86 (was 1.66)
497
498 • clock_nanosleep() and clock() functions added
499
500 • Support for the POSIX clock_gettime() and clock_getres() has
501 been added
502
503 • Return "undef" or an empty list if the C gettimeofday()
504 function fails
505
506 • Improved "nanosleep" detection
507
508 • Internal cleanup
509
510 • Enhanced documentation
511
512 • "Unicode::Collate" upgraded to version 0.52
513
514 • Now implements UCA Revision 14 (based on Unicode 4.1.0).
515
516 • "Unicode::Collate->new" method no longer overwrites user's $_
517
518 • Enhanced documentation
519
520 • "Unicode::UCD" upgraded to version 0.24
521
522 • Documentation typos fixed
523
524 • "User::grent" upgraded to version 1.01
525
526 • Documentation typo fixed
527
528 • "utf8" upgraded to version 1.06
529
530 • Documentation typos fixed
531
532 • "vmsish" upgraded to version 1.02
533
534 • Documentation typos fixed
535
536 • "warnings" upgraded to version 1.05
537
538 • Gentler messing with "Carp::" internals
539
540 • Internal cleanup
541
542 • Documentation update
543
544 • "Win32" upgraded to version 0.2601
545
546 • Provides Windows Vista support to "Win32::GetOSName"
547
548 • Documentation enhancements
549
550 • "XS::Typemap" upgraded to version 0.02
551
552 • Internal cleanup
553
555 "h2xs" enhancements
556 "h2xs" implements new option "--use-xsloader" to force use of
557 "XSLoader" even in backwards compatible modules.
558
559 The handling of authors' names that had apostrophes has been fixed.
560
561 Any enums with negative values are now skipped.
562
563 "perlivp" enhancements
564 "perlivp" implements new option "-a" and will not check for *.ph files
565 by default any more. Use the "-a" option to run all tests.
566
568 The perlglossary manpage is a glossary of terms used in the Perl
569 documentation, technical and otherwise, kindly provided by O'Reilly
570 Media, inc.
571
573 • Weak reference creation is now O(1) rather than O(n), courtesy of
574 Nicholas Clark. Weak reference deletion remains O(n), but if
575 deletion only happens at program exit, it may be skipped
576 completely.
577
578 • Salvador Fandiño provided improvements to reduce the memory usage
579 of "sort" and to speed up some cases.
580
581 • Jarkko Hietaniemi and Andy Lester worked to mark as much data as
582 possible in the C source files as "static", to increase the
583 proportion of the executable file that the operating system can
584 share between process, and thus reduce real memory usage on multi-
585 user systems.
586
588 Parallel makes should work properly now, although there may still be
589 problems if "make test" is instructed to run in parallel.
590
591 Building with Borland's compilers on Win32 should work more smoothly.
592 In particular Steve Hay has worked to side step many warnings emitted
593 by their compilers and at least one C compiler internal error.
594
595 "Configure" will now detect "clearenv" and "unsetenv", thanks to a
596 patch from Alan Burlison. It will also probe for "futimes" and whether
597 "sprintf" correctly returns the length of the formatted string, which
598 will both be used in perl 5.8.9.
599
600 There are improved hints for next-3.0, vmesa, IX, Darwin, Solaris,
601 Linux, DEC/OSF, HP-UX and MPE/iX
602
603 Perl extensions on Windows now can be statically built into the Perl
604 DLL, thanks to a work by Vadim Konovalov. (This improvement was
605 actually in 5.8.7, but was accidentally omitted from perl587delta).
606
608 no warnings 'category' works correctly with -w
609 Previously when running with warnings enabled globally via "-w",
610 selective disabling of specific warning categories would actually turn
611 off all warnings. This is now fixed; now "no warnings 'io';" will only
612 turn off warnings in the "io" class. Previously it would erroneously
613 turn off all warnings.
614
615 This bug fix may cause some programs to start correctly issuing
616 warnings.
617
618 Remove over-optimisation
619 Perl 5.8.4 introduced a change so that assignments of "undef" to a
620 scalar, or of an empty list to an array or a hash, were optimised away.
621 As this could cause problems when "goto" jumps were involved, this
622 change has been backed out.
623
624 sprintf() fixes
625 Using the sprintf() function with some formats could lead to a buffer
626 overflow in some specific cases. This has been fixed, along with
627 several other bugs, notably in bounds checking.
628
629 In related fixes, it was possible for badly written code that did not
630 follow the documentation of "Sys::Syslog" to have formatting
631 vulnerabilities. "Sys::Syslog" has been changed to protect people from
632 poor quality third party code.
633
634 Debugger and Unicode slowdown
635 It had been reported that running under perl's debugger when processing
636 Unicode data could cause unexpectedly large slowdowns. The most likely
637 cause of this was identified and fixed by Nicholas Clark.
638
639 Smaller fixes
640 • "FindBin" now works better with directories where access rights are
641 more restrictive than usual.
642
643 • Several memory leaks in ithreads were closed. An improved
644 implementation of "threads::shared" is available on CPAN - this
645 will be merged into 5.8.9 if it proves stable.
646
647 • Trailing spaces are now trimmed from $! and $^E.
648
649 • Operations that require perl to read a process's list of groups,
650 such as reads of $( and $), now dynamically allocate memory rather
651 than using a fixed sized array. The fixed size array could cause C
652 stack exhaustion on systems configured to use large numbers of
653 groups.
654
655 • "PerlIO::scalar" now works better with non-default $/ settings.
656
657 • You can now use the "x" operator to repeat a "qw//" list. This used
658 to raise a syntax error.
659
660 • The debugger now traces correctly execution in eval("")uated code
661 that contains #line directives.
662
663 • The value of the "open" pragma is no longer ignored for three-
664 argument opens.
665
666 • The optimisation of "for (reverse @a)" introduced in perl 5.8.6
667 could misbehave when the array had undefined elements and was used
668 in LVALUE context. Dave Mitchell provided a fix.
669
670 • Some case insensitive matches between UTF-8 encoded data and 8 bit
671 regexps, and vice versa, could give malformed character warnings.
672 These have been fixed by Dave Mitchell and Yves Orton.
673
674 • "lcfirst" and "ucfirst" could corrupt the string for certain cases
675 where the length UTF-8 encoding of the string in lower case, upper
676 case or title case differed. This was fixed by Nicholas Clark.
677
678 • Perl will now use the C library calls "unsetenv" and "clearenv" if
679 present to delete keys from %ENV and delete %ENV entirely, thanks
680 to a patch from Alan Burlison.
681
683 Attempt to set length of freed array
684 This is a new warning, produced in situations such as this:
685
686 $r = do {my @a; \$#a};
687 $$r = 503;
688
689 Non-string passed as bitmask
690 This is a new warning, produced when number has been passed as an
691 argument to select(), instead of a bitmask.
692
693 # Wrong, will now warn
694 $rin = fileno(STDIN);
695 ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout);
696
697 # Should be
698 $rin = '';
699 vec($rin,fileno(STDIN),1) = 1;
700 ($nfound,$timeleft) = select($rout=$rin, undef, undef, $timeout);
701
702 Search pattern not terminated or ternary operator parsed as search pattern
703 This syntax error indicates that the lexer couldn't find the final
704 delimiter of a "?PATTERN?" construct. Mentioning the ternary operator
705 in this error message makes it easier to diagnose syntax errors.
706
708 There has been a fair amount of refactoring of the "C" source code,
709 partly to make it tidier and more maintainable. The resulting object
710 code and the "perl" binary may well be smaller than 5.8.7, in
711 particular due to a change contributed by Dave Mitchell which reworked
712 the warnings code to be significantly smaller. Apart from being smaller
713 and possibly faster, there should be no user-detectable changes.
714
715 Andy Lester supplied many improvements to determine which function
716 parameters and local variables could actually be declared "const" to
717 the C compiler. Steve Peters provided new *_set macros and reworked the
718 core to use these rather than assigning to macros in LVALUE context.
719
720 Dave Mitchell improved the lexer debugging output under "-DT"
721
722 Nicholas Clark changed the string buffer allocation so that it is now
723 rounded up to the next multiple of 4 (or 8 on platforms with 64 bit
724 pointers). This should reduce the number of calls to "realloc" without
725 actually using any extra memory.
726
727 The "HV"'s array of "HE*"s is now allocated at the correct (minimal)
728 size, thanks to another change by Nicholas Clark. Compile with
729 "-DPERL_USE_LARGE_HV_ALLOC" to use the old, sloppier, default.
730
731 For XS or embedding debugging purposes, if perl is compiled with
732 "-DDEBUG_LEAKING_SCALARS_FORK_DUMP" in addition to
733 "-DDEBUG_LEAKING_SCALARS" then a child process is "fork"ed just before
734 global destruction, which is used to display the values of any scalars
735 found to have leaked at the end of global destruction. Without this,
736 the scalars have already been freed sufficiently at the point of
737 detection that it is impossible to produce any meaningful dump of their
738 contents. This feature was implemented by the indefatigable Nicholas
739 Clark, based on an idea by Mike Giroux.
740
742 The optimiser on HP-UX 11.23 (Itanium 2) is currently partly disabled
743 (scaled down to +O1) when using HP C-ANSI-C; the cause of problems at
744 higher optimisation levels is still unclear.
745
746 There are a handful of remaining test failures on VMS, mostly due to
747 test fixes and minor module tweaks with too many dependencies to
748 integrate into this release from the development stream, where they
749 have all been corrected. The following is a list of expected failures
750 with the patch number of the fix where that is known:
751
752 ext/Devel/PPPort/t/ppphtest.t #26913
753 ext/List/Util/t/p_tainted.t #26912
754 lib/ExtUtils/t/PL_FILES.t #26813
755 lib/ExtUtils/t/basic.t #26813
756 t/io/fs.t
757 t/op/cmp.t
758
760 If you find what you think is a bug, you might check the articles
761 recently posted to the comp.lang.perl.misc newsgroup and the perl bug
762 database at http://bugs.perl.org. There may also be information at
763 http://www.perl.org, the Perl Home Page.
764
765 If you believe you have an unreported bug, please run the perlbug
766 program included with your release. Be sure to trim your bug down to a
767 tiny but sufficient test case. Your bug report, along with the output
768 of "perl -V", will be sent off to perlbug@perl.org to be analysed by
769 the Perl porting team. You can browse and search the Perl 5 bugs at
770 http://bugs.perl.org/
771
773 The Changes file for exhaustive details on what changed.
774
775 The INSTALL file for how to build Perl.
776
777 The README file for general stuff.
778
779 The Artistic and Copying files for copyright information.
780
781
782
783perl v5.38.2 2023-11-30 PERL588DELTA(1)