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