9c176ce333a2594d29ec492b6dc75dfc2098eadd
[perl.git] / pod / perl589delta.pod
1 =head1 NAME
2
3 perldelta - what is new for perl v5.8.9
4
5 =head1 DESCRIPTION
6
7 This document describes differences between the 5.8.8 release and
8 the 5.8.9 release.
9
10 =head1 Incompatible Changes
11
12 There are no changes intentionally incompatible with 5.8.8. If any exist,
13 they are bugs and reports are welcome.
14
15 =head1 Core Enhancements
16
17 =head2 Unicode Character Database 5.1.0.
18
19 The copy of the Unicode Character Database included in Perl 5.8 has
20 been updated to 5.1.0 from 4.1.0 See
21 L<http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges> for the
22 notable changes.
23
24 =head2 stat and -X on directory handles
25
26 It is now possible to call C<stat> and the C<-X> filestat operators on
27 directory handles. As both directory and file handles are barewords, there
28 can be ambiguities over which was intended. In these situations the file
29 handle semantics are preferred. Both also treat C<*FILE{IO}> filehandles
30 like C<*FILE> filehandles.
31
32 =head2 Source filters in @INC
33
34 It's possible to enhance the mechanism of subroutine hooks in @INC by
35 adding a source filter on top of the filehandle opened and returned by the
36 hook. This feature was planned a long time ago, but wasn't quite working
37 until now. See L<perlfunc/require> for details. (Nicholas Clark)
38
39 =head2 Exceptions in constant folding
40
41 The constant folding routine is now wrapped in an exception handler, and
42 if folding throws an exception (such as attempting to evaluate 0/0), perl
43 now retains the current optree, rather than aborting the whole program.
44 Without this change, programs would not compile if they had expressions that
45 happened to generate exceptions, even though those expressions were in code
46 that could never be reached at runtime. (Nicholas Clark, Dave Mitchell)
47
48 =head2 C<no VERSION>
49
50 You can now use C<no> followed by a version number to specify that you
51 want to use a version of perl older than the specified one.
52
53 =head2 Improved internal UTF-8 caching code
54
55 The code that caches calculated UTF-8 byte offsets for character offsets for
56 a string has been re-written. Several bugs have been located and eliminated,
57 and the code now makes better use of the information it has, so should be
58 faster. In particular, it doesn't scan to the end of a string before
59 calculating an offset within the string, which should speed up some operations
60 on long strings. It is now possible to disable the caching code at run time,
61 to verify that it is not the cause of suspected problems.
62
63 =head2 Runtime relocatable installations
64
65 There is now F<Configure> support for creating a perl tree that is relocatable
66 at run time. see L</Relocatable installations>.
67
68 =head2 New internal variables
69
70 =over 4
71
72 =item C<${^CHILD_ERROR_NATIVE}>
73
74 This variable gives the native status returned by the last pipe close,
75 backtick command, successful call to C<wait> or C<waitpid>, or from the
76 C<system> operator. See L<perlvar> for details. (Contributed by Gisle Aas.)
77
78 =item ${^UTF8CACHE}
79
80 This variable controls the state of the internal UTF-8 offset caching code.
81 1 for on (the default), 0 for off, -1 to debug the caching code by checking
82 all its results against linear scans, and panicing on any discrepancy.
83
84 =back
85
86 =head2 C<readpipe> is now overridable
87
88 The built-in function C<readpipe> is now overridable. Overriding it permits
89 also to override its operator counterpart, C<qx//> (a.k.a. C<``>).
90
91 =head2 simple exception handling macros
92
93 Perl 5.8.9 (and 5.10.0 onwards) now provides a couple of macros to do very
94 basic exception handling in XS modules. You can use these macros if you call
95 code that may C<croak>, but you need to do some cleanup before giving control
96 back to Perl. See L<perlguts/Exception Handling> for more details.
97
98 =head2 -D option enhancements 
99
100 =over
101
102 =item *
103
104 C<-Dq> suppresses the I<EXECUTING...> message when running under C<-D>
105
106 =item *
107
108 C<-Dl> logs runops loop entry and exit, and jump level popping.
109
110 =item *
111
112 C<-Dv> displays the process id as part of the trace output.
113
114 =back
115
116 =head2 XS-assisted SWASHGET
117
118 Some pure-perl code that the regexp engine was using to retrieve Unicode
119 properties and transliteration mappings has been reimplemented in XS.
120 (SADAHIRO Tomoyuki)
121
122 =head2 Constant subroutines
123
124 The interpreter internals now support a far more memory efficient form of
125 inlineable constants. Storing a reference to a constant value in a symbol
126 table is equivalent to a full typeglob referencing a constant subroutine,
127 but using about 400 bytes less memory. This proxy constant subroutine is
128 automatically upgraded to a real typeglob with subroutine if necessary.
129 The approach taken is analogous to the existing space optimisation for
130 subroutine stub declarations, which are stored as plain scalars in place
131 of the full typeglob.
132
133 However, to aid backwards compatibility of existing code, which (wrongly)
134 does not expect anything other than typeglobs in symbol tables, nothing in
135 core uses this feature, other than the regression tests.
136
137 Stubs for prototyped subroutines have been stored in symbol tables as plain
138 strings, and stubs for unprototyped subroutines as the number -1, since 5.005,
139 so code which assumes that the core only places typeglobs in symbol tables
140 has been making incorrect assumptions for over 10 years.
141
142 =head1 New Platforms
143
144 Compile support added for:
145
146 =over
147
148 =item *
149
150 DragonFlyBSD
151
152 =item *
153
154 MidnightBSD
155
156 =item *
157
158 MirOS BSD
159
160 =item *
161
162 RISC OS 
163
164 =item *
165
166 Cray XT4/Catamount
167
168 =back
169
170 =head1 Modules and Pragmata
171
172 =head2 New Modules
173
174 =over
175
176 =item *
177
178 C<Module::Pluggable> is a simple framework to create modules that accept
179 pluggable sub-modules. The bundled version is 3.8
180
181 =item *
182
183 C<Module::CoreList> is a hash of hashes that is keyed on perl version as
184 indicated in C<$]>. The bundled version is 2.16
185
186 =item *
187
188 C<Win32API::File> now available in core on Microsoft Windows. The bundled
189 version is 0.1001_01
190
191 =item * 
192
193 C<Devel::InnerPackage> finds all the packages defined by a single file. It is
194 part of the C<Module::Pluggable> distribution. The bundled version is 0.3
195
196 =back
197
198 =head2 Updated Modules
199
200 =over
201
202 =item *
203
204 C<attributes> upgraded to version 0.09
205
206 =item *
207
208 C<AutoLoader> upgraded to version 5.67
209
210 =item *
211
212 C<AutoSplit> upgraded to 1.06
213
214 =item *
215
216 C<autouse> upgraded to version 1.06
217
218 =item *
219
220 C<B> upgraded from 1.09_01 to 1.19
221
222 =over
223
224 =item *
225
226 provides new PAD related abstraction macros C<B::NV::COP_SEQ_RANGE_LOW>,
227 C<B::NV::COP_SEQ_RANGE_HIGH>, C<B::NV::PARENT_PAD_INDEX>,
228 C<B::NV::PARENT_FAKELEX_FLAGS>, which hides the difference in storage in
229 5.10.0 and later.
230
231 =item *
232
233 provides C<B::sub_generation>, which exposes C<PL_sub_generation>
234
235 =item *
236
237 provides C<B::GV::isGV_with_GP>, which on pre-5.10 perls always returns true.
238
239 =item *
240
241 New type C<B::HE> added with methods C<VAL>, C<HASH> and C<SVKEY_force>
242
243 =item *
244
245 The C<B::GVf_IMPORTED_CV> flag is now set correctly when a proxy
246 constant subroutine is imported.
247
248 =item *
249
250 bugs fixed in the handling of C<PMOP>s.
251
252 =item *
253
254 C<B::BM::PREVIOUS> returns now C<U32>, not C<U16>.
255 C<B::CV::START> and C<B:CV::ROOT> return now NULL on an XSUB,
256 C<B::CV::XSUB> and C<B::CV::XSUBANY> return 0 on a non-XSUB.
257
258 =back
259
260 =item *
261
262 C<B::C> upgraded to 1.05
263
264 =item *
265
266 C<B::Concise> upgraded to 0.76
267
268 =over
269
270 =item *
271
272 new option B<-src> causes the rendering of each statement (starting with
273 the nextstate OP) to be preceded by the first line of source code that
274 generates it.
275
276 =item *
277
278 new option B<-stash="somepackage">, C<require>s "somepackage", and then renders
279 each function defined in its namespace.
280
281 =item *
282
283 now has documentation of detailed hint symbols.
284
285 =back
286
287 =item *
288
289 C<B::Debug> upgraded to version 1.05
290
291 =item *
292
293 C<B::Deparse> upgraded to version 0.87
294
295 =over 4
296
297 =item *
298
299 properly deparse C<print readpipe $x, $y>.
300
301 =item *
302
303 now handles C<''->()>, C<::()>, C<sub :: {}>, I<etc.> correctly [RT #43010].
304 All bugs in parsing these kinds of syntax are now fixed:
305
306     perl -MO=Deparse -e '"my %h = "->()'
307     perl -MO=Deparse -e '::->()'
308     perl -MO=Deparse -e 'sub :: {}'
309     perl -MO=Deparse -e 'package a; sub a::b::c {}'
310     perl -MO=Deparse -e 'sub the::main::road {}'
311
312 =item *
313
314 does B<not> deparse C<$^H{v_string}>, which is automatically set by the
315 internals.
316
317 =back
318
319 =item *
320
321 C<B::Lint> upgraded to version 1.11
322
323 =item *
324
325 C<B::Terse> upgraded to version 1.05
326
327 =item *
328
329 C<base> upgraded to version 2.13
330
331 =over 4
332
333 =item *
334
335 loading a module via base.pm would mask a global C<$SIG{__DIE__}> in that
336 module.
337
338 =item *
339
340 push all classes at once in C<@ISA>
341
342 =back
343
344 =item *
345
346 C<Benchmark> upgraded to version 1.10
347
348 =item *
349
350 C<bigint> upgraded to 0.23
351
352 =item *
353
354 C<bignum> upgraded to 0.23
355
356 =item *
357
358 C<bigrat> upgraded to 0.23
359
360 =item *
361
362 C<blib> upgraded to 0.04
363
364 =item *
365
366 C<Carp> upgraded to version 1.10
367
368 The argument backtrace code would show C<undef> as I<"undef"> - a string.
369
370 =item *
371
372 C<CGI> upgraded to version 3.42
373
374 =item *
375
376 C<charnames> upgraded to 1.06
377
378 =item *
379
380 C<constant> upgraded to version 1.17
381
382 =item *
383
384 C<CPAN> upgraded to version 1.9301
385
386 =item *
387
388 C<Cwd> upgraded to version 3.29 with some platform specific
389 improvements (including for VMS).
390
391 =item *
392
393 C<Data::Dumper> upgraded to version 2.121_17
394
395 =over
396
397 =item *
398
399 Fixes hash iterator current position with the pure Perl version [RT #40668]
400
401 =item *
402
403 Performance enhancements, which will be most evident on platforms where
404 repeated calls to C's C<realloc()> are slow, such as Win32.
405
406 =back
407
408 =item *
409
410 C<DB_File> upgraded to version 1.817
411
412 =item *
413
414 C<DB_Filter> upgraded to version 0.02
415
416 =item *
417
418 C<Devel::DProf> upgraded to version 20080331.00.
419
420 =item *
421
422 C<Devel::Peek> upgraded to version 1.04
423
424 =item *
425
426 C<Devel::PPPort> upgraded to version 3.14
427
428 =item *
429
430 C<diagnostics> upgraded to version 1.16
431
432 =item *
433
434 C<Digest> upgraded to version 1.15
435
436 =item *
437
438 C<Digest::MD5> upgraded to version 2.36_01
439
440 =item *
441
442 C<DirHandle> upgraded to version 1.02
443
444 =over
445
446 =item *
447
448 now localises C<$.>, C<$@>, C<$!>, C<$^E>, and C<$?> before closing the
449 directory handle to suppress leaking any side effects of warnings about it
450 already being closed.
451
452 =back
453
454 =item *
455
456 C<DynaLoader> upgraded to version 1.09
457
458 C<DynaLoader> can now dynamically load a loadable object from a file with a
459 non-default file extension.
460
461 =item *
462
463 C<Encode> upgraded to version 2.26
464
465 C<Encode::Alias> includes a fix for encoding "646" on Solaris (better known as
466 ASCII).
467
468 =item *
469
470 C<English> upgraded to version 1.03
471
472 =item *
473
474 C<Errno> upgraded to version 1.10
475
476 =item *
477
478 C<Exporter> upgraded to version 5.63
479
480 =item *
481
482 C<ExtUtils::Command> upgraded to version 1.15
483
484 =item *
485
486 C<ExtUtils::Constant> upgraded to version 0.21
487
488 =item *
489
490 C<ExtUtils::Embed> upgraded to version 1.28
491
492 =item *
493
494 C<ExtUtils::Install> upgraded to version 1.50_01
495
496 =item *
497
498 C<ExtUtils::Installed> upgraded to version 1.43
499
500 =item *
501
502 C<ExtUtils::MakeMaker> upgraded to version 6.48
503
504 =over
505
506 =item *
507
508 support for C<INSTALLSITESCRIPT> and C<INSTALLVENDORSCRIPT>
509 configuration.
510
511 =back
512
513 =item *
514
515 C<ExtUtils::Manifest> upgraded to version 1.55
516
517 =item *
518
519 C<ExtUtils::ParseXS> upgraded to version 2.19
520
521 =item *
522
523 C<Fatal> upgraded to version 1.06
524
525 =over
526
527 =item *
528
529 allows built-ins in C<CORE::GLOBAL> to be made fatal.
530
531 =back
532
533 =item *
534
535 C<Fcntl> upgraded to version 1.06
536
537 =item *
538
539 C<fields> upgraded to version 2.12
540
541 =item *
542
543 C<File::Basename> upgraded to version 2.77
544
545 =item *
546
547 C<FileCache> upgraded to version 1.07
548
549 =item *
550
551 C<File::Compare> upgraded to 1.1005
552
553 =item *
554
555 C<File::Copy> upgraded to 2.13
556
557 =over 4
558
559 =item *
560
561 now uses 3-arg open.
562
563 =back
564
565 =item *
566
567 C<File::DosGlob> upgraded to 1.01
568
569 =item *
570
571 C<File::Find> upgraded to version 1.13
572
573 =item *
574
575 C<File::Glob> upgraded to version 1.06
576
577 =over
578
579 =item *
580
581 fixes spurious results with brackets inside braces.
582
583 =back
584
585 =item *
586
587 C<File::Path> upgraded to version 2.07
588
589 =item *
590
591 C<File::Spec> upgraded to version 3.29
592
593 =over 4
594
595 =item *
596
597 improved handling of bad arguments.
598
599 =item *
600
601 some platform specific improvements (including for VMS and Cygwin), with
602 an optimisation on C<abs2rel> when handling both relative arguments.
603
604 =back
605
606 =item *
607
608 C<File::stat> upgraded to version 1.01
609
610 =item *
611
612 C<File::Temp> upgraded to version 0.20
613
614 =item *
615
616 C<filetest> upgraded to version 1.02
617
618 =item *
619
620 C<Filter::Util::Call> upgraded to version 1.07
621
622 =item *
623
624 C<Filter::Simple> upgraded to version 0.83
625
626 =item * 
627
628 C<FindBin> upgraded to version 1.49
629
630 =item *
631
632 C<GDBM_File> upgraded to version 1.09
633
634 =item *
635
636 C<Getopt::Long> upgraded to version 2.37
637
638 =item *
639
640 C<Getopt::Std> upgraded to version 1.06
641
642 =item *
643
644 C<Hash::Util> upgraded to version 0.06
645
646 =item *
647
648 C<if> upgraded to version 0.05
649
650 =item *
651
652 C<IO> upgraded to version 1.23
653
654 Reduced number of calls to C<getpeername> in C<IO::Socket>
655
656 =item *
657
658 C<IPC::Open> upgraded to version 1.03
659
660 =item *
661
662 C<IPC::Open3> upgraded to version 1.03
663
664 =item *
665
666 C<IPC::SysV> upgraded to version 2.00
667
668 =item *
669
670 C<lib> upgraded to version 0.61
671
672 =over
673
674 =item *
675
676 avoid warning about loading F<.par> files.
677
678 =back
679
680 =item *
681
682 C<libnet> upgraded to version 1.22
683
684 =item *
685
686 C<List::Util> upgraded to 1.19
687
688 =item *
689
690 C<Locale::Maketext> upgraded to 1.13
691
692 =item *
693
694 C<Math::BigFloat> upgraded to version 1.60
695
696 =item *
697
698 C<Math::BigInt> upgraded to version 1.89
699
700 =item *
701
702 C<Math::BigRat> upgraded to version 0.22
703
704 =over 4
705
706 =item *
707
708 implements new C<as_float> method.
709
710 =back
711
712 =item *
713
714 C<Math::Complex> upgraded to version 1.54.
715
716 =item *
717
718 C<Math::Trig> upgraded to version 1.18.
719
720 =item *
721
722 C<NDBM_File> upgraded to version 1.07
723
724 =over
725
726 =item *
727
728 improve F<g++> handling for systems using GDBM compatibility headers.
729
730 =back
731
732 =item *
733
734 C<Net::Ping> upgraded to version 2.35
735
736 =item *
737
738 C<NEXT> upgraded to version 0.61
739
740 =over
741
742 =item *
743
744 fix several bugs with C<NEXT> when working with C<AUTOLOAD>, C<eval> block, and
745 within overloaded stringification.
746
747 =back
748
749 =item *
750
751 C<ODBM_File> upgraded to 1.07
752
753 =item *
754
755 C<open> upgraded to 1.06
756
757 =item *
758
759 C<ops> upgraded to 1.02
760
761 =item *
762
763 C<PerlIO::encoding> upgraded to version 0.11
764
765 =item *
766
767 C<PerlIO::scalar> upgraded to version 0.06
768
769 =over 4
770
771 =item *
772
773 [RT #40267] C<PerlIO::scalar> doesn't respect readonly-ness.
774
775 =back
776
777 =item *
778
779 C<PerlIO::via> upgraded to version 0.05
780
781 =item *
782
783 C<Pod::Html> upgraded to version 1.09
784
785 =item *
786
787 C<Pod::Parser> upgraded to version 1.35
788
789 =item * 
790
791 C<Pod::Usage> upgraded to version 1.35
792
793 =item *
794
795 C<POSIX> upgraded to version 1.15
796
797 =over
798
799 =item *
800
801 C<POSIX> constants that duplicate those in C<Fcntl> are now imported from
802 C<Fcntl> and re-exported, rather than being duplicated by C<POSIX>
803
804 =item *
805
806 C<POSIX::remove> can remove empty directories.
807
808 =item *
809
810 C<POSIX::setlocale> safer to call multiple times.
811
812 =item *
813
814 C<POSIX::SigRt> added, which provides access to POSIX realtime signal
815 functionality on systems that support it.
816
817 =back
818
819 =item *
820
821 C<re> upgraded to version 0.06_01
822
823 =item *
824
825 C<Safe> upgraded to version 2.16
826
827 =item *
828
829 C<Scalar::Util> upgraded to 1.19
830
831 =item *
832
833 C<SDBM_File> upgraded to version 1.06
834
835 =item *
836
837 C<SelfLoader> upgraded to version 1.17
838
839 =item *
840
841 C<Shell> upgraded to version 0.72
842
843 =item *
844
845 C<sigtrap> upgraded to version 1.04
846
847 =item *
848
849 C<Socket> upgraded to version 1.81
850
851 =over
852
853 =item *
854
855 this fixes an optimistic use of C<gethostbyname>.
856
857 =back
858
859 =item *
860
861 C<Storable> upgraded to 2.19
862
863 =item *
864
865 C<Switch> upgraded to version 2.13
866
867 =item *
868
869 C<Sys::Syslog> upgraded to version 0.27
870
871 =item *
872
873 C<Term::ANSIColor> upgraded to version 1.12
874
875 =item *
876
877 C<Term::Cap> upgraded to version 1.12
878
879 =item *
880
881 C<Term::ReadLine> upgraded to version 1.03
882
883 =item *
884
885 C<Test::Builder> upgraded to version 0.80
886
887 =item *
888
889 C<Test::Harness> upgraded version to 2.64
890
891 =over
892
893 =item *
894
895 this makes it able to handle newlines.
896
897 =back
898
899 =item *
900
901 C<Test::More> upgraded to version 0.80
902
903 =item *
904
905 C<Test::Simple> upgraded to version 0.80
906
907 =item *
908
909 C<Text::Balanced> upgraded to version 1.98
910
911 =item *
912
913 C<Text::ParseWords> upgraded to version 3.27
914
915 =item *
916
917 C<Text::Soundex> upgraded to version 3.03
918
919 =item *
920
921 C<Text::Tabs> upgraded to version 2007.1117
922
923 =item *
924
925 C<Text::Wrap> upgraded to version 2006.1117
926
927 =item *
928
929 C<Thread> upgraded to version 2.01
930
931 =item *
932
933 C<Thread::Semaphore> upgraded to version 2.09
934
935 =item *
936
937 C<Thread::Queue> upgraded to version 2.11
938
939 =over
940
941 =item *
942
943 added capability to add complex structures (e.g., hash of hashes) to queues.
944
945 =item *
946
947 added capability to dequeue multiple items at once
948
949 =item *
950
951 added new methods to inspect and manipulate queues:  C<peek>, C<insert> and
952 C<extract>
953
954 =back
955
956 =item *
957
958 C<Tie::Handle> upgraded to version 4.2
959
960 =item *
961
962 C<Tie::Hash> upgraded to version 1.03
963
964 =item *
965
966 C<Tie::Memoize> upgraded to version 1.1
967
968 =over
969
970 =item *
971
972 C<Tie::Memoize::EXISTS> now correctly caches its results.
973
974 =back
975
976 =item *
977
978 C<Tie::RefHash> upgraded to version 1.38
979
980 =item *
981
982 C<Tie::Scalar> upgraded to version 1.01
983
984 =item *
985
986 C<Time::gmtime> upgraded to version 1.03
987
988 =item *
989
990 C<Time::Local> upgraded to version 1.1901
991
992 =item *
993
994 C<Time::HiRes> upgraded to version 1.9715 with various build improvements 
995 (including VMS) and minor platform-specific bug fixes (including
996 for HP-UX 11 ia64).
997
998 =item *
999
1000 C<threads> upgraded to 1.71
1001
1002 =over
1003
1004 =item *
1005
1006 new thread state information methods: C<is_running>, C<is_detached>
1007 and C<is_joinable>.  C<list> method enhanced to return running or joinable
1008 threads.
1009
1010 =item *
1011
1012 new thread signal method: C<kill>
1013
1014 =item *
1015
1016 added capability to specify thread stack size.
1017
1018 =item *
1019
1020 added capability to control thread exiting behavior.  Added a new C<exit>
1021 method.
1022
1023 =back
1024
1025 =item *
1026
1027 C<threads::shared> upgraded to version 1.26
1028
1029 =over
1030
1031 =item *
1032
1033 smaller and faster implementation that eliminates one internal structure and
1034 the consequent level of indirection.
1035
1036 =item *
1037
1038 user locks are now stored in a safer manner.
1039
1040 =item *
1041
1042 new function C<shared_clone> creates a copy of an object leaving
1043 shared elements as-is and deep-cloning non-shared elements.
1044
1045 =item *
1046
1047 added new C<is_shared> method.
1048
1049 =back
1050
1051 =item *
1052
1053 C<Unicode::Normalize> upgraded to version 1.02
1054
1055 =item *
1056
1057 C<Unicode::UCD> upgraded to version 0.25
1058
1059 =item *
1060
1061 C<warnings> upgraded to version 1.05_01
1062
1063 =item *
1064
1065 C<Win32> upgraded to version 0.38
1066
1067 =over 4
1068
1069 =item *
1070
1071 added new function C<GetCurrentProcessId> which returns the regular Window
1072 process identifier of the current process, even when called from within a fork.
1073
1074 =back
1075
1076 =item *
1077
1078 C<XSLoader> upgraded to version 0.10
1079
1080 =item *
1081
1082 C<XS::APItest> and C<XS::Typemap> are for internal use only and hence
1083 no longer installed. Many more tests have been added to C<XS::APItest>.
1084
1085 =back
1086
1087 =head1 Utility Changes
1088
1089 =head2 debugger upgraded to version 1.30
1090
1091 Andreas KE<ouml>nig contributed two functions to save and load the debugger
1092 history.
1093
1094 =head2 F<perlthanks>
1095
1096 Perl 5.8.9 adds a new utility F<perlthanks>, which is a variant of F<perlbug>,
1097 but for sending non-bug-reports to the authors and maintainers of Perl.
1098 Getting nothing but bug reports can become a bit demoralising - we'll see if
1099 this changes things.
1100
1101 =head2 F<perlbug>
1102
1103 F<perlbug> now checks if you're reporting about a non-core module and suggests
1104 you report it to the CPAN author instead.
1105
1106 =head2 F<h2xs>
1107
1108 =over
1109
1110 =item *
1111
1112 won't define an empty string as a constant [RT #25366]
1113
1114 =item *
1115
1116 has examples for C<h2xs -X>
1117
1118 =back
1119
1120 =head2 F<h2ph>
1121
1122 =over 4
1123
1124 =item *
1125
1126 now attempts to deal sensibly with the difference in path implications
1127 between C<""> and C<<E<lt>E<gt>>> quoting in C<#include> statements.
1128
1129 =item *
1130
1131 now generates correct correct code for C<#if defined A || defined B>
1132 [RT #39130]
1133
1134 =back
1135
1136 =head1 New Documentation
1137
1138 As usual, the documentation received its share of corrections, clarifications
1139 and other nitfixes. More C<< X<...> >> tags were added for indexing.
1140
1141 L<perlunitut> is a tutorial written by Juerd Waalboer on Unicode-related
1142 terminology and how to correctly handle Unicode in Perl scripts.
1143
1144 L<perlunicode> is updated in section user defined properties.
1145
1146 L<perluniintro> has been updated in the example of detecting data that is not
1147 valid in particular encoding. 
1148
1149 L<perlcommunity> provides an overview of the Perl Community along with further
1150 resources.
1151
1152 L<CORE> documents the pseudo-namespace for Perl's core routines.
1153
1154 =head1 Changes to Existing Documentation
1155
1156 L<perlglossary> adds I<deprecated modules and features> and I<to be dropped modules>.
1157
1158 L<perlhack> has been updated and added resources on smoke testing.
1159
1160 The Perl FAQs (F<perlfaq1>..F<perlfaq9>) have been updated.
1161
1162 L<perlcheat> is updated with better details on C<\w>, C<\d>, and C<\s>.
1163
1164 L<perldebug> is updated with information on how to call the debugger.
1165
1166 L<perldiag> documentation updated with I<subroutine with an ampersand> on the
1167 argument to C<exists> and C<delete> and also several terminology updates on
1168 warnings.
1169
1170 L<perlfork> documents the limitation of C<exec> inside pseudo-processes.
1171
1172 L<perlfunc>:
1173
1174 =over
1175
1176 =item *
1177
1178 Documentation is fixed in section C<caller> and C<pop>. 
1179
1180 =item *
1181
1182 Function C<alarm> now mentions C<Time::HiRes::ualarm> in preference
1183 to C<select>.
1184
1185 =item *
1186
1187 Regarding precedence in C<-X>, filetest operators are the same as unary
1188 operators, but not regarding parsing and parentheses (spotted by Eirik Berg
1189 Hanssen).
1190
1191 =item *
1192
1193 L<reverse> function documentation received scalar context examples.
1194
1195 =back
1196
1197 L<perllocale> documentation is adjusted for number localization and
1198 C<POSIX::setlocale> to fix Debian bug #379463.
1199
1200 L<perlmodlib> is updated with C<CPAN::API::HOWTO> and
1201 C<Sys::Syslog::win32::Win32> 
1202
1203 L<perlre> documentation updated to reflect the differences between
1204 C<[[:xxxxx:]]> and C<\p{IsXxxxx}> matches. Also added section on C</g> and
1205 C</c> modifiers.
1206
1207 L<perlreguts> describe the internals of the regular expressions engine. It has
1208 been contributed by Yves Orton.
1209
1210 L<perlrebackslash> describes all perl regular expression backslash and escape
1211 sequences.
1212
1213 L<perlrecharclass> describes the syntax and use of character classes in
1214 Perl Regular Expressions.
1215
1216 L<perlrun> is updated to clarify on the hash seed I<PERL_HASH_SEED>. Also more
1217 information in options B<-x> and B<-u>.
1218
1219 L<perlsub> example is updated to use a lexical variable for C<opendir> syntax.
1220
1221 L<perlvar> fixes confusion about real GID C<$(> and effective GID C<$)>. 
1222
1223 Perl thread tutorial example is fixed in section
1224 L<perlthrtut/Queues: Passing Data Around> and L<perlothrtut>.
1225
1226 L<perlhack> documentation extensively improved by Jarkko Hietaniemi and others.
1227
1228 L<perltoot> provides information on modifying C<@UNIVERSAL::ISA>.
1229
1230 L<perlport> documentation extended to include different C<kill(-9, ...)>
1231 semantics on Windows. It also clearly states C<dump> is not supported on Win32
1232 and cygwin.
1233
1234 F<INSTALL> has been updated and modernised.
1235
1236 =head1 Performance Enhancements
1237
1238 =over
1239
1240 =item *
1241
1242 The default since perl 5.000 has been for perl to create an empty scalar
1243 with every new typeglob. The increased use of lexical variables means that
1244 most are now unused. Thanks to Nicholas Clark's efforts, Perl can now be
1245 compiled with C<-DPERL_DONT_CREATE_GVSV> to avoid creating these empty scalars.
1246 This will significantly decrease the number of scalars allocated for all
1247 configurations, and the number of scalars that need to be copied for ithread
1248 creation. Whilst this option is binary compatible with existing perl
1249 installations, it does change a long-standing assumption about the
1250 internals, hence it is not enabled by default, as some third party code may
1251 rely on the old behaviour.
1252
1253 We would recommend testing with this configuration on new deployments of
1254 perl, particularly for multi-threaded servers, to see whether all third party
1255 code is compatible with it, as this configuration may give useful performance
1256 improvements. For existing installations we would not recommend changing to
1257 this configuration unless thorough testing is performed before deployment.
1258
1259 =item *
1260
1261 C<diagnostics> no longer uses C<$&>, which results in large speedups
1262 for regexp matching in all code using it.
1263
1264 =item *
1265
1266 Regular expressions classes of a single character are now treated the same as
1267 if the character had been used as a literal, meaning that code that uses
1268 char-classes as an escaping mechanism will see a speedup. (Yves Orton)
1269
1270 =item *
1271
1272 Creating anonymous array and hash references (ie. C<[]> and C<{}>) now incurs
1273 no more overhead than creating an anonymous list or hash. Nicholas Clark
1274 provided changes with a saving of two ops and one stack push, which was measured
1275 as a slightly better than 5% improvement for these operations.
1276
1277 =item *
1278
1279 Many calls to C<strlen()> have been eliminated, either because the length was
1280 already known, or by adopting or enhancing APIs that pass lengths. This has
1281 been aided by the adoption of a C<my_sprintf()> wrapper, which returns the
1282 correct C89 value - the length of the formatted string. Previously we could
1283 not rely on the return value of C<sprintf()>, because on some ancient but
1284 extant platforms it still returns C<char *>.
1285
1286 =item * 
1287
1288 C<index> is now faster if the search string is stored in UTF-8 but only contains
1289 characters in the Latin-1 range.
1290
1291 =item *
1292
1293 The Unicode swatch cache inside the regexp engine is now used. (the lookup had
1294 a key mismatch, present since the initial implementation). [RT #42839]
1295
1296 =back
1297
1298 =head1 Installation and Configuration Improvements
1299
1300 =head2 Relocatable installations
1301
1302 There is now F<Configure> support for creating a relocatable perl tree. If
1303 you F<Configure> with C<-Duserelocatableinc>, then the paths in C<@INC> (and
1304 everything else in C<%Config>) can be optionally located via the path of the
1305 F<perl> executable.
1306
1307 At start time, if any paths in C<@INC> or C<Config> that F<Configure> marked
1308 as relocatable (by starting them with C<".../">), then they are prefixed the
1309 directory of C<$^X>. This allows the relocation can be configured on a
1310 per-directory basis, although the default with C<-Duserelocatableinc> is that
1311 everything is relocated. The initial install is done to the original configured
1312 prefix.
1313
1314 =head2 Configuration improvements
1315
1316 F<Configure> is now better at removing temporary files. Tom Callaway
1317 (from RedHat) also contributed patches that complete the set of flags
1318 passed to the compiler and the linker, in particular that C<-fPIC> is now
1319 enabled on Linux. It will also croak when your F</dev/null> isn't a device.
1320
1321 A new configuration variable C<d_pseudofork> has been to F<Configure>, and is
1322 available as  C<$Config{d_pseudofork}> in the C<Config> module. This
1323 distinguishes real C<fork> support from the pseudofork emulation used on
1324 Windows platforms.
1325
1326 F<Config.pod> and F<config.sh> are now placed correctly for cross-compilation.
1327
1328 C<$Config{useshrplib}> is now 'true' rather than 'yes' when using a shared perl
1329 library.
1330
1331 =head2 Compilation improvements
1332
1333 Parallel makes should work properly now, although there may still be problems
1334 if C<make test> is instructed to run in parallel.
1335
1336 Many compilation warnings have been cleaned up. A very stubborn compiler
1337 warning in C<S_emulate_eaccess()> was killed after six attempts.
1338 F<g++> support has been tuned, especially for FreeBSD.
1339
1340 F<mkppport> has been integrated, and all F<ppport.h> files in the core will now
1341 be autogenerated at build time (and removed during cleanup).
1342
1343 =head2 Installation improvements.
1344
1345 F<installman> now works with C<-Duserelocatableinc> and C<DESTDIR>.
1346
1347 F<installperl> no longer installs:
1348
1349 =over 4
1350
1351 =item *
1352
1353 static library files of statically linked extensions when a shared perl library
1354 is being used. (They are not needed. See L</Windows> below).
1355
1356 =item *
1357
1358 F<SIGNATURE> and F<PAUSE*.pub> (CPAN files)
1359
1360 =item *
1361
1362 F<NOTES> and F<PATCHING> (ExtUtils files)
1363
1364 =item *
1365
1366 F<perlld> and F<ld2> (Cygwin files)
1367
1368 =back
1369
1370 =head2 Platform Specific Changes
1371
1372 There are improved hints for AIX, Cygwin, DEC/OSF, FreeBSD, HP/UX, Irix 6
1373 Linux, MachTen, NetBSD, OS/390, QNX, SCO, Solaris, SunOS, System V Release 5.x
1374 (UnixWare 7, OpenUNIX 8), Ultrix, UMIPS, uts and VOS.
1375
1376 =head3 FreeBSD
1377
1378 =over 4
1379
1380 =item *
1381
1382 Drop C<-std=c89> and C<-ansi> if using C<long long> as the main integral type,
1383 else in FreeBSD 6.2 (and perhaps other releases), system headers do not
1384 declare some functions required by perl.
1385
1386 =back
1387
1388 =head3 Solaris
1389
1390 =over 4
1391
1392 =item *
1393
1394 Starting with Solaris 10, we do not want versioned shared libraries, because
1395 those often indicate a private use only library. These problems could often
1396 be triggered when L<SUNWbdb> (Berkeley DB) was installed. Hence if Solaris 10
1397 is detected set C<ignore_versioned_solibs=y>.
1398
1399 =back
1400
1401 =head3 VMS
1402
1403 =over 4
1404
1405 =item *
1406
1407 Allow IEEE math to be deselected on OpenVMS I64 (but it remains the default).
1408
1409 =item *
1410
1411 Record IEEE usage in C<config.h>
1412
1413 =item *
1414
1415 Help older VMS compilers by using C<ccflags> when building C<munchconfig.exe>.
1416
1417 =item * 
1418
1419 Don't try to build old C<Thread> extension on VMS when C<-Duseithreads> has
1420 been chosen.
1421
1422 =item *
1423
1424 Passing a raw string of "NaN" to F<nawk> causes a core dump - so the string
1425 has been changed to "*NaN*"
1426
1427 =item *
1428
1429 F<t/op/stat.t> tests will now test hard links on VMS if they are supported.
1430
1431 =back
1432
1433 =head3 Windows
1434
1435 =over 4
1436
1437 =item *
1438
1439 When using a shared perl library F<installperl> no longer installs static
1440 library files, import library files and export library files (of statically
1441 linked extensions) and empty bootstrap files (of dynamically linked
1442 extensions). This fixes a problem building PAR-Packer on Win32 with a debug
1443 build of perl.
1444
1445 =item *
1446
1447 Various improvements to the win32 build process, including support for Visual
1448 C++ 2005 Express Edition (aka Visual C++ 8.x).
1449
1450 =item * 
1451
1452 F<perl.exe> will now have an icon if built with MinGW or Borland. 
1453
1454 =item *
1455
1456 Improvements to the perl-static.exe build process.
1457
1458 =item *
1459
1460 Add Win32 makefile option to link all extensions statically.
1461
1462 =item *
1463
1464 The F<WinCE> directory has been merged into the F<Win32> directory.
1465
1466 =item *
1467
1468 C<setlocale> tests have been re-enabled for Windows XP onwards.
1469
1470 =back
1471
1472 =head1 Selected Bug Fixes
1473
1474 =head2 Unicode
1475
1476 Many many bugs related to the internal Unicode implementation (UTF-8) have
1477 been fixed. In particular, long standing bugs related to returning Unicode
1478 via C<tie>, overloading or C<$@> are now gone, some of which were never
1479 reported.
1480
1481 C<unpack> will internally convert the string back from UTF-8 on numeric types.
1482 This is a compromise between the full consistency now in 5.10, and the current
1483 behaviour, which is often used as a "feature" on string types.
1484
1485 Using C<:crlf> and C<UTF-16> IO layers together will now work.
1486
1487 Fixed problems with C<split>, Unicode C</\s+/> and C</ \0/>.
1488
1489 Fixed bug RT #40641 - encoding of Unicode characters in regular expressions.
1490
1491 Fixed a bug where using certain patterns in a regexp led to a panic.
1492 [RT #45337]
1493
1494 Perl longer segfaults (due to infinite internal recursion) if the locale's
1495 character is not UTF-8 [RT #41442]:
1496
1497     use open ':locale';
1498     print STDERR "\x{201e}"; # &bdquo;
1499
1500 =head2 PerlIO
1501
1502 Inconsistencies have been fixed in the reference counting PerlIO uses to keep
1503 track of Unix file descriptors, and the API used by XS code to manage getting
1504 and releasing C<FILE *>s
1505
1506 =head2 Magic
1507
1508 Several bugs have been fixed in Magic, the internal system used to implement
1509 features such as C<tie>, tainting and threads sharing.
1510
1511 C<undef @array> on a tied array now correctly calls the C<CLEAR> method.
1512
1513 Some of the bitwise ops were not checking whether their arguments were magical
1514 before using them. [RT #24816]
1515
1516 Magic is no longer invoked twice by the expression C<\&$x>
1517
1518 A bug with assigning large numbers and tainting has been resolved.
1519 [RT #40708]
1520
1521 A new entry has been added to the MAGIC vtable - C<svt_local>. This is used
1522 when copying magic to the new value during C<local>. This allows problems
1523 with localising shared variables. 
1524
1525 For the implementation details, see L<perlguts/Magic Virtual Tables>.
1526
1527 =head2 Reblessing overloaded objects now works
1528
1529 Internally, perl object-ness is on the referent, not the reference, even
1530 though methods can only be called via a reference. However, the original
1531 implementation of overloading stored flags related to overloading on the
1532 reference, relying on the flags being copied when the reference was copied,
1533 or set at the creation of a new reference. This manifests in a bug - if you
1534 rebless an object from a class that has overloading, into one that does not,
1535 then any other existing references think that they (still) point to an
1536 overloaded object, choose these C code paths, and then throw errors.
1537 Analogously, blessing into an overloaded class when other references exist will
1538 result in them not using overloading.
1539
1540 The implementation has been fixed for 5.10, but this fix changes the semantics
1541 of flag bits, so is not binary compatible, so can't be applied to 5.8.9.
1542 However, 5.8.9 has a work-around that implements the same bug fix. If the
1543 referent has multiple references, then all the other references are located and
1544 corrected. A full search is avoided whenever possible by scanning lexicals
1545 outwards from the current subroutine, and the argument stack.
1546
1547 A certain well known Linux vendor applied incomplete versions of this bug fix
1548 to their F</usr/bin/perl> and then prematurely closed bug reports about
1549 performance issues without consulting back upstream. This not being enough,
1550 they then proceeded to ignore the necessary fixes to these unreleased changes
1551 for 11 months, until massive pressure was applied by their long-suffering
1552 paying customers, catalysed by the failings being featured on a prominent blog
1553 and Slashdot.
1554
1555 =head2 C<strict> now propagates correctly into string evals
1556
1557 Under 5.8.8 and earlier:
1558
1559     $ perl -e 'use strict; eval "use foo bar" or die $@'
1560     Can't locate foo.pm in @INC (@INC contains: ... .) at (eval 1) line 2.
1561     BEGIN failed--compilation aborted at (eval 1) line 2.
1562
1563 Under 5.8.9 and later:
1564
1565     $ ./perl -Ilib -e 'use strict; eval "use foo bar" or die $@'
1566     Bareword "bar" not allowed while "strict subs" in use at (eval 1) line 1.
1567
1568 This may cause problems with programs that parse the error message and rely
1569 on the buggy behaviour.
1570
1571 =head2 Other fixes
1572
1573 =over
1574
1575 =item *
1576
1577 The tokenizer no longer treats C<=cute> (and other words beginning
1578 with C<=cut>) as a synonym for C<=cut>.
1579
1580 =item *
1581
1582 Calling C<CORE::require>
1583
1584 C<CORE::require> and C<CORE::do> were always parsed as C<require> and C<do>
1585 when they were overridden. This is now fixed.
1586
1587 =item *
1588
1589 Stopped memory leak on long F</etc/groups> entries.
1590
1591 =item *
1592
1593 C<while (my $x ...) { ...; redo }> shouldn't C<undef $x>.
1594
1595 In the presence of C<my> in the conditional of a C<while()>, C<until()>,
1596 or C<for(;;)> loop, we now add an extra scope to the body so that C<redo>
1597 doesn't C<undef> the lexical.
1598
1599 =item *
1600
1601 The C<encoding> pragma now correctly ignores anything following an C<@> 
1602 character in the C<LC_ALL> and C<LANG> environment variables. [RT # 49646]
1603
1604 =item *
1605
1606 A segfault observed with some F<gcc> 3.3 optimisations is resolved.
1607
1608 =item *
1609
1610 A possible segfault when C<unpack> used in scalar context with C<()> groups
1611 is resolved. [RT #50256]
1612
1613 =item *
1614
1615 Resolved issue where C<$!> could be changed by a signal handler interrupting
1616 a C<system> call.
1617
1618 =item *
1619
1620 Fixed bug RT #37886, symbolic deferencing was allowed in the argument of
1621 C<defined> even under the influence of C<use strict 'refs'>.
1622
1623 =item *
1624
1625 Fixed bug RT #43207, where C<lc>/C<uc> inside C<sort> affected the return
1626 value.
1627
1628 =item *
1629
1630 Fixed bug RT #45607, where C<*{"BONK"} = \&{"BONK"}> didn't work correctly.
1631
1632 =item *
1633
1634 Fixed bug RT #35878, croaking from a XSUB called via C<goto &xsub> corrupts perl
1635 internals.
1636
1637 =item *
1638
1639 Fixed bug RT #32539, F<DynaLoader.o> is moved into F<libperl.so> to avoid the
1640 need to statically link DynaLoader into the stub perl executable. With this
1641 F<libperl.so> provides everything needed to get a functional embedded perl
1642 interpreter to run.
1643
1644 =item *
1645
1646 Fix bug RT #36267 so that assigning to a tied hash doesn't change the
1647 underlying hash.
1648
1649 =item *
1650
1651 Fix bug RT #6006, regexp replaces using large replacement variables fail some of
1652 the time, I<i.e.> when substitution contains something like C<${10}> (note the
1653 bracket) instead of just C<$10>.
1654
1655 =item *
1656
1657 Fix bug RT #45053, C<Perl_newCONSTSUB()> is now thread safe.
1658
1659 =back
1660
1661 =head2 Platform Specific Fixes
1662
1663 =head3 Darwin / MacOS X
1664
1665 =over 4
1666
1667 =item *
1668
1669 Various improvements to 64 bit builds.
1670
1671 =item *
1672
1673 Mutex protection added in C<PerlIOStdio_close()> to avoid race conditions.
1674 Hopefully this fixes failures in the threads tests F<free.t> and F<blocks.t>.
1675
1676 =item *
1677
1678 Added forked terminal support to the debugger, with the ability to update the
1679 window title.
1680
1681 =back
1682
1683 =head3 OS/2
1684
1685 =over 4
1686
1687 =item *
1688
1689 A build problem with specifying C<USE_MULTI> and C<USE_ITHREADS> but without
1690 C<USE_IMP_SYS> has been fixed.
1691
1692 =item *
1693
1694 C<OS2::REXX> upgraded to version 1.04
1695
1696 =back
1697
1698 =head3 Tru64
1699
1700 =over 4
1701
1702 =item *
1703
1704 Aligned floating point build policies for F<cc> and F<gcc>.
1705
1706 =back
1707
1708 =head3 RedHat Linux
1709
1710 =over 4
1711
1712 =item *
1713
1714 Revisited a patch from 5.6.1 for RH7.2 for Intel's F<icc> [RT #7916], added an
1715 additional check for C<$Config{gccversion}>.
1716
1717 =back
1718
1719 =head3 Solaris/i386
1720
1721 =over 4
1722
1723 =item *
1724
1725 Use C<-DPTR_IS_LONG> when using 64 bit integers
1726
1727 =back
1728
1729 =head3 VMS
1730
1731 =over 4
1732
1733 =item *
1734
1735 Fixed C<PerlIO::Scalar> in-memory file record-style reads.
1736
1737 =item *
1738
1739 pipe shutdown at process exit should now be more robust.
1740
1741 =item *
1742
1743 Bugs in VMS exit handling tickled by C<Test::Harness> 2.64 have been fixed.
1744
1745 =item *
1746
1747 Fix fcntl locking capability test in F<configure.com>.
1748
1749 =item *
1750
1751 Replaced C<shrplib='define'> with C<useshrplib='true'> on VMS.
1752
1753 =back
1754
1755 =head3 Windows
1756
1757 =over 4
1758
1759 =item *
1760
1761 C<File::Find> used to fail when the target directory is a bare drive letter and
1762 C<no_chdir> is 1 (the default is 0). [RT #41555]
1763
1764 =item *
1765
1766 A build problem with specifying C<USE_MULTI> and C<USE_ITHREADS> but without
1767 C<USE_IMP_SYS> has been fixed.
1768
1769 =item *
1770
1771 The process id is no longer truncated to 16 bits on some Windows platforms
1772 ( L<http://bugs.activestate.com/show_bug.cgi?id=72443> )
1773
1774 =item *
1775
1776 Fixed bug RT #54828 in F<perlio.c> when calling C<binmode> on Win32 and Cgywin
1777 may cause a segmentation fault.
1778
1779 =back
1780
1781 =head2 Smaller fixes
1782
1783 =over 4
1784
1785 =item *
1786
1787 It is now possible to overload C<eq> when using C<nomethod>.
1788
1789 =item *
1790
1791 Various problems using C<overload> with 64 bit integers corrected.
1792
1793 =item *
1794
1795 The reference count of C<PerlIO> file descriptors is now correctly handled.
1796
1797 =item *
1798
1799 On VMS, escaped dots will be preserved when converted to UNIX syntax.
1800
1801 =item *
1802
1803 C<keys %+> no longer throws an C<'ambiguous'> warning.
1804
1805 =item * 
1806
1807 Using C<#!perl -d> could trigger an assertion, which has been fixed.
1808
1809 =item *
1810
1811 Don't stringify tied code references in C<@INC> when calling C<require>.
1812
1813 =item *
1814
1815 Code references in C<@INC> report the correct file name when C<__FILE__> is
1816 used.
1817
1818 =item *
1819
1820 Width and precision in sprintf didn't handle characters above 255 correctly.
1821 [RT #40473]
1822
1823 =item *
1824
1825 List slices with indices out of range now work more consistently.
1826 [RT #39882]
1827
1828 =item *
1829
1830 A change introduced with perl 5.8.1 broke the parsing of arguments of the form
1831 C<-foo=bar> with the C<-s> on the <#!> line. This has been fixed. See
1832 http://bugs.activestate.com/show_bug.cgi?id=43483
1833
1834 =item *
1835
1836 C<tr///> is now threadsafe. Previously it was storing a swash inside its OP,
1837 rather than in a pad.
1838
1839 =item *
1840
1841 F<pod2html> labels anchors more consistently and handles nested definition
1842 lists better.
1843
1844 =item *
1845
1846 C<threads> cleanup veto has been extended to include C<perl_free()> and
1847 C<perl_destruct()>
1848
1849 =item *
1850
1851 On some systems, changes to C<$ENV{TZ}> would not always be
1852 respected by the underlying calls to C<localtime_r()>.  Perl now
1853 forces the inspection of the environment on these systems.
1854
1855 =item *
1856
1857 The special variable C<$^R> is now more consistently set when executing
1858 regexps using the C<(?{...})> construct.  In particular, it will still
1859 be set even if backreferences or optional sub-patterns C<(?:...)?> are
1860 used.
1861
1862 =back
1863
1864 =head1 New or Changed Diagnostics
1865
1866 =head2 panic: sv_chop %s
1867
1868 This new fatal error occurs when the C routine C<Perl_sv_chop()> was passed a
1869 position that is not within the scalar's string buffer. This is caused by
1870 buggy XS code, and at this point recovery is not possible.
1871
1872 =head2 Maximal count of pending signals (%s) exceeded
1873
1874 This new fatal error occurs when the perl process has to abort due to
1875 too many pending signals, which is bound to prevent perl from being
1876 able to handle further incoming signals safely.
1877
1878 =head2 panic: attempt to call %s in %s
1879
1880 This new fatal error occurs when the ACL version file test operator is used
1881 where it is not available on the current platform. Earlier checks mean that
1882 it should never be possible to get this.
1883
1884 =head2 FETCHSIZE returned a negative value
1885
1886 New error indicating that a tied array has claimed to have a negative
1887 number of elements.
1888
1889 =head2 Can't upgrade %s (%d) to %d
1890
1891 Previously the internal error from the SV upgrade code was the less informative
1892 I<Can't upgrade that kind of scalar>. It now reports the current internal type,
1893 and the new type requested.
1894
1895 =head2 %s argument is not a HASH or ARRAY element or a subroutine
1896
1897 This error, thrown if an invalid argument is provided to C<exists> now
1898 correctly includes "or a subroutine". [RT #38955]
1899
1900 =head2 Cannot make the non-overridable builtin %s fatal
1901
1902 This error in C<Fatal> previously did not show the name of the builtin in
1903 question (now represented by %s above).
1904
1905 =head2 Unrecognized character '%s' in column %d
1906
1907 This error previously did not state the column.
1908
1909 =head2 Offset outside string
1910
1911 This can now also be generated by a C<seek> on a file handle using
1912 C<PerlIO::scalar>.
1913
1914 =head2 Invalid escape in the specified encoding in regexp; marked by <-- HERE in m/%s/
1915
1916 New error, introduced as part of the fix to RT #40641 to handle encoding
1917 of Unicode characters in regular expression comments.
1918
1919 =head2 Your machine doesn't support dump/undump.
1920
1921 A more informative fatal error issued when calling C<dump> on Win32 and
1922 Cygwin. (Given that the purpose of C<dump> is to abort with a core dump,
1923 and core dumps can't be produced on these platforms, this is more useful than
1924 silently exiting.)
1925
1926 =head1 Changed Internals
1927
1928 C<set> magic on localizing/assigning to a magic variable will now only
1929 trigger for I<container magics>, i.e. it will for C<%ENV> or C<%SIG>
1930 but not for C<$#array>.
1931
1932 The new API macro C<newSVpvs()> can be used in place of constructions such as
1933 C<newSVpvn("ISA", 3)>. It takes a single string constant, and at C compile
1934 time determines its length.
1935
1936 The new API function C<Perl_newSV_type()> can be used as a more efficient
1937 replacement of the common idiom
1938
1939     sv = newSV(0);
1940     sv_upgrade(sv, type);
1941
1942 Similarly C<Perl_newSVpvn_flags()> can be used to combine C<Perl_newSVpv()> with
1943 C<Perl_sv_2mortal()> or the equivalent C<Perl_sv_newmortal()> with
1944 C<Perl_sv_setpvn()>
1945
1946 Two new macros C<mPUSHs()> and C<mXPUSHs()> are added, to make it easier to
1947 push mortal SVs onto the stack. They were then used to fix several bugs where
1948 values on the stack had not been mortalised.
1949
1950 A C<Perl_signbit()> function was added to test the sign of an C<NV>. It 
1951 maps to the system one when available.
1952
1953 C<Perl_av_reify()>, C<Perl_lex_end()>, C<Perl_mod()>, C<Perl_op_clear()>,
1954 C<Perl_pop_return()>, C<Perl_qerror()>, C<Perl_setdefout()>,
1955 C<Perl_vivify_defelem()> and C<Perl_yylex()> are now visible to extensions.
1956 This was required to allow C<Data::Alias> to work on Windows.
1957
1958 C<Perl_find_runcv()> is now visible to perl core extensions. This was required
1959 to allow C<Sub::Current> to work on Windows.
1960
1961 C<ptr_table*> functions are now available in unthreaded perl. C<Storable>
1962 takes advantage of this.
1963
1964 There have been many small cleanups made to the internals. In particular,
1965 C<Perl_sv_upgrade()> has been simplified considerably, with a straight-through
1966 code path that uses C<memset()> and C<memcpy()> to initialise the new body,
1967 rather than assignment via multiple temporary variables. It has also
1968 benefited from simplification and de-duplication of the arena management
1969 code.
1970
1971 A lot of small improvements in the code base were made due to reports from
1972 the Coverity static code analyzer.
1973
1974 Corrected use and documentation of C<Perl_gv_stashpv()>, C<Perl_gv_stashpvn()>,
1975 C<Perl_gv_stashsv()> functions (last parameter is a bitmask, not boolean).
1976
1977 C<PERL_SYS_INIT>, C<PERL_SYS_INIT3> and C<PERL_SYS_TERM> macros have been
1978 changed into functions.
1979
1980 C<PERLSYS_TERM> no longer requires a context. C<PerlIO_teardown()>
1981 is now called without a context, and debugging output in this function has
1982 been disabled because that required that an interpreter was present, an invalid
1983 assumption at termination time.
1984
1985 All compile time options which affect binary compatibility have been grouped
1986 together into a global variable (C<PL_bincompat_options>).
1987
1988 The values of C<PERL_REVISION>, C<PERL_VERSION> and C<PERL_SUBVERSION> are
1989 now baked into global variables (and hence into any shared perl library).
1990 Additionally under C<MULTIPLICITY>, the perl executable now records the size of
1991 the interpreter structure (total, and for this version). Coupled with
1992 C<PL_bincompat_options> this will allow 5.8.10 (and later), when compiled with a
1993 shared perl library, to perform sanity checks in C<main()> to verify that the
1994 shared library is indeed binary compatible.
1995
1996 Symbolic references can now have embedded NULs. The new public function
1997 C<Perl_get_cvn_flags()> can be used in extensions if you have to handle them.
1998
1999 =head2 Macro cleanups
2000
2001 The core code, and XS code in F<ext> that is not dual-lived on CPAN, no longer
2002 uses the macros C<PL_na>, C<NEWSV()>, C<Null()>, C<Nullav>, C<Nullcv>,
2003 C<Nullhv>, C<Nullhv> I<etc>. Their use is discouraged in new code,
2004 particularly C<PL_na>, which is a small performance hit.
2005
2006 =head1 New Tests
2007
2008 Many modules updated from CPAN incorporate new tests. Some core specific
2009 tests have been added:
2010
2011 =over 4
2012
2013 =item ext/DynaLoader/t/DynaLoader.t
2014
2015 Tests for the C<DynaLoader> module.
2016
2017 =item t/comp/fold.t
2018
2019 Tests for compile-time constant folding.
2020
2021 =item t/io/pvbm.t
2022
2023 Tests incorporated from 5.10.0 which check that there is no unexpected
2024 interaction between the internal types C<PVBM> and C<PVGV>.
2025
2026 =item t/lib/proxy_constant_subs.t
2027
2028 Tests for the new form of constant subroutines.
2029
2030 =item t/op/attrhand.t
2031
2032 Tests for C<Attribute::Handlers>.
2033
2034 =item t/op/dbm.t
2035
2036 Tests for C<dbmopen>.
2037
2038 =item t/op/inccode-tie.t
2039
2040 Calls all tests in F<t/op/inccode.t> after first tying C<@INC>.
2041
2042 =item t/op/incfilter.t
2043
2044 Tests for for source filters returned from code references in C<@INC>.
2045
2046 =item t/op/kill0.t
2047
2048 Tests for RT #30970.
2049
2050 =item t/op/qrstack.t
2051
2052 Tests for RT #41484.
2053
2054 =item t/op/qr.t
2055
2056 Tests for the C<qr//> construct.
2057
2058 =item t/op/regexp_qr_embed.t
2059
2060 Tests for the C<qr//> construct within another regexp.
2061
2062 =item t/op/regexp_qr.t
2063
2064 Tests for the C<qr//> construct.
2065
2066 =item t/op/rxcode.t
2067
2068 Tests for RT #32840.
2069
2070 =item t/op/studytied.t
2071
2072 Tests for C<study> on tied scalars.
2073
2074 =item t/op/substT.t
2075
2076 Tests for C<subst> run under C<-T> mode.
2077
2078 =item t/op/symbolcache.t
2079
2080 Tests for C<undef> and C<delete> on stash entries that are bound to subroutines or methods.
2081
2082 =item t/op/upgrade.t
2083
2084 Tests for C<Perl_sv_upgrade()>.
2085
2086 =item t/mro/package_aliases.t
2087
2088 MRO tests for C<isa> and package aliases.
2089
2090 =item t/pod/twice.t
2091
2092 Tests for calling C<Pod::Parser> twice.
2093
2094 =item t/run/cloexec.t
2095
2096 Tests for inheriting file descriptors across C<exec> (close-on-exec).
2097
2098 =item t/uni/cache.t
2099
2100 Tests for the UTF-8 caching code.
2101
2102 =item t/uni/chr.t
2103
2104 Test that strange encodings do not upset C<Perl_pp_chr()>.
2105
2106 =item t/uni/greek.t
2107
2108 Tests for RT #40641.
2109
2110 =item t/uni/latin2.t
2111
2112 Tests for RT #40641.
2113
2114 =item t/uni/overload.t
2115
2116 Tests for returning Unicode from overloaded values.
2117
2118 =item t/uni/tie.t
2119
2120 Tests for returning Unicode from tied variables.
2121
2122 =back
2123
2124 =head1 Known Problems
2125
2126 There are no known new bugs.
2127
2128 However, programs that rely on bugs that have been fixed will have problems.
2129 Also, many bug fixes present in 5.10.0 can't be back-ported to the 5.8.x
2130 branch, because they require changes that are binary incompatible, or because
2131 the code changes are too large and hence too risky to incorporate.
2132
2133 We have only limited volunteer labour, and the maintenance burden is getting
2134 increasingly complex. Hence this will be the last significant release of the
2135 5.8.x series. Any future releases of 5.8.x will likely only be to deal with
2136 security issues, and platform build failures. Hence you should look to
2137 migrating to 5.10.x, if you have not started already. Alternatively, if business
2138 requirements constrain you to continue to use 5.8.x, you may wish to consider
2139 commercial support from firms such as ActiveState.
2140
2141 =head1 Platform Specific Notes
2142
2143 =head2 Win32
2144
2145 C<readdir()>, C<cwd()>, C<$^X> and C<@INC> now use the alternate (short)
2146 filename if the long name is outside the current codepage (Jan Dubois).
2147
2148 =head3 Updated Modules
2149
2150 =over 4
2151
2152 =item *
2153
2154 C<Win32> upgraded to version 0.38. Now has a documented 'WinVista' response
2155 from C<GetOSName> and support for Vista's privilege elevation in C<IsAdminUser>.
2156 Support for Unicode characters in path names. Improved cygwin and Win64
2157 compatibility. 
2158
2159 =item *
2160
2161 C<Win32API> updated to 0.1001_01
2162
2163 =item *
2164
2165 C<killpg()> support added to C<MSWin32> (Jan Dubois).
2166
2167 =item *
2168
2169 C<File::Spec::Win32> upgraded to version 3.2701
2170
2171 =back
2172
2173 =head2 OS/2
2174
2175 =head3 Updated Modules
2176
2177 =over 4
2178
2179 =item *
2180
2181 C<OS2::Process> upgraded to 1.03
2182
2183 Ilya Zakharevich has added and documented several C<Window*> and C<Clipbrd*>
2184 functions.
2185
2186 =item *
2187
2188 C<OS2::REXX::DLL>, C<OS2::REXX> updated to version 1.03
2189
2190 =back
2191
2192 =head2 VMS
2193
2194 =head3 Updated Modules
2195
2196 =over 4
2197
2198 =item *
2199
2200 C<DCLsym> upgraded to version 1.03
2201
2202 =item *
2203
2204 C<Stdio> upgraded to version 2.4
2205
2206 =item *
2207
2208 C<VMS::XSSymSet> upgraded to 1.1.
2209
2210 =back
2211
2212 =head1 Obituary
2213
2214 Nick Ing-Simmons, long time Perl hacker, author of the C<Tk> and C<Encode>
2215 modules, F<perlio.c> in the core, and 5.003_02 pumpking, died of a heart
2216 attack on 25th September 2006. He will be missed.
2217
2218 =head1 Acknowledgements
2219
2220 Some of the work in this release was funded by a TPF grant.
2221
2222 Steve Hay worked behind the scenes working out the causes of the differences
2223 between core modules, their CPAN releases, and previous core releases, and
2224 the best way to rectify them. He doesn't want to do it again. I know this
2225 feeling, and I'm very glad he did it this time, instead of me.
2226
2227 Paul Fenwick assembled a team of 18 volunteers, who broke the back of writing
2228 this document. In particular, Bradley Dean, Eddy Tan, and Vincent Pit
2229 provided half the team's contribution.
2230
2231 Schwern verified the list of updated module versions, correcting quite a few
2232 errors that I (and everyone else) had missed, both wrongly stated module
2233 versions, and changed modules that had not been listed.
2234
2235 The crack Berlin-based QA team of Andreas KE<ouml>nig and Slaven Rezic
2236 tirelessly re-built snapshots, tested most everything CPAN against
2237 them, and then identified the changes responsible for any module regressions,
2238 ensuring that several show-stopper bugs were stomped before the first release
2239 candidate was cut.
2240
2241 The other core committers contributed most of the changes, and applied most
2242 of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
2243
2244 And obviously, Larry Wall, without whom we wouldn't have Perl.
2245
2246 =head1 Reporting Bugs
2247
2248 If you find what you think is a bug, you might check the articles
2249 recently posted to the comp.lang.perl.misc newsgroup and the perl
2250 bug database at http://bugs.perl.org.  There may also be
2251 information at http://www.perl.org, the Perl Home Page.
2252
2253 If you believe you have an unreported bug, please run the B<perlbug>
2254 program included with your release.  Be sure to trim your bug down
2255 to a tiny but sufficient test case.  Your bug report, along with the
2256 output of C<perl -V>, will be sent off to perlbug@perl.org to be
2257 analysed by the Perl porting team.  You can browse and search
2258 the Perl 5 bugs at http://bugs.perl.org/
2259
2260 =head1 SEE ALSO
2261
2262 The F<Changes> file for exhaustive details on what changed.
2263
2264 The F<INSTALL> file for how to build Perl.
2265
2266 The F<README> file for general stuff.
2267
2268 The F<Artistic> and F<Copying> files for copyright information.
2269
2270 =cut