This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Draft 0.
[perl5.git] / pod / perldelta.pod
1 =head1 NAME
2
3 perldelta - what's new for perl v5.7.0
4
5 =head1 DESCRIPTION
6
7 This document describes differences between the 5.6.0 release and
8 the 5.7.0 release.
9
10 =head1 Core Enhancements
11
12 =over 4
13
14 =item *
15
16 C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass
17 in multiple arguments.)
18
19 =item *
20
21 Infinity (in numerical context, for example as "Inf", the exact string
22 representation is platform-dependent) doesn't cause "not a number"
23 warnings.
24
25 =item *
26
27 my __PACKAGE__ now works.
28
29 =item *
30
31 no Module; now works even if there is no "sub unimport" in the Module.
32
33 =item *
34
35 The numerical comparison <=> now returns C<undef> if either operand is a NaN.
36 Previously the behaviour was unspecified.
37
38 =item *
39
40 C<pack('U0a*', ...)> can now be used to force the string to UTF8.
41
42 =item *
43
44 prototype(\&) is now available.
45
46 =item *
47
48 sort() is now re-entrant (sort() can call sort(), in other words)
49
50 =back
51
52 =head1 Modules and Pragmata
53
54 =head2 New Modules
55
56 The Storable extnesion, version 0.7.2, released the 14th of August
57 2000, has been added to the Perl distribution.  Storable gives
58 persistence to Perl data structures by allowing to store and retrieve
59 Perl data to and from files in fast and compact binary format.
60
61 =head2 Updated And Improved Modules and Pragmata
62
63 =over 4
64
65 =item *
66
67 The attributes::reftype() now works on tied arguments.
68
69 =item *
70
71 AutoLoader can now be `stopped' by
72
73         no AutoLoader; 
74
75 =item *
76
77 B::Deparse now understands sub attributes.
78
79 =item *
80
81 Data::Dumper now works on negative number on 32-bit platforms where IV
82 (the Perl's integer datatype) is greater than 32 bits.  Also, large
83 unsigned numbers are now dumped as such, not as large negative numbers.
84
85 =item *
86
87 CGI has been updated to version 2.72, released
88 the 20th of August 2000.
89
90 =item *
91
92 CPAN has been updated to version 1.57, released
93 the 16th of August 2000.
94
95 =item *
96
97 DB_File has been updated to version 1.73, released the
98 27th of April 2000.
99
100 =item *
101
102 The English module can now be used without the infamous performance
103 hit by saying
104
105         use English '-no_performance_hit';
106
107 (Assuming, of course, that one doesn't need the troublesome variables
108 C<$`>, C<$&>, or C<$'>.)  Also, introduce C<@LAST_MATCH_START> and
109 C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>.
110
111 =item *
112
113 File::Find now has pre- and postprocessing callbacks.
114 It also correctly changes directories when chasing symbolic links.
115 Callbacks doing (naughtily) "next;" instead of "return;" now work.
116
117 =item *
118
119 File::Glob::globI() rename to File::Glob::bsd_glob() to avoid
120 prototype mismatch with CORE::glob().
121
122 =item *
123
124 File::Spec has been updated to version 0.82, released the
125 1st of July 2000.
126
127 =item *
128
129 File::Temp has been updated to version 0.10 (unpublished as the 20th
130 of August 2000).
131
132 =item *
133
134 Getopt::Long has been updated to version 2.23_05, released the 2nd of
135 August 2000.
136
137 =item *
138
139 IO::Poll has been thoroughly fixed.
140
141 =item *
142
143 IO::Socket::INET now works when given an unknown service name with 
144 a port number.
145
146 =item *
147
148 IPC::Open3 now allows the use of numeric filedescriptors.
149
150 =item *
151
152 use lib now works identically to @INC.  Removing directories
153 with 'no lib' now works.
154
155 =item *
156
157 Math::BigFloat now more robust (less "uninitialized" warnings).
158
159 =item *
160
161 Math::Complex now handles extreme values (e.g. 1E20-1E30i more) more
162 gracefully.
163
164 =item *
165
166 The podlators bundle has been updated to version 1.02, released the
167 25th of April 2000.  It contains the modules Pod::Man 1.04, Pod::Text
168 2.04, and modules Pod::Text::Color and Pod::Text::Termcap (no version
169 numbers).
170
171 =item *
172
173 Pod::LaTeX has been updated to version 0.52, released the 15th
174 of May 2000.
175
176 =item *
177
178 Pod::Parser has been updated to version 1.17, released the 25th of
179 July 2000.  It contains the modules Pod::Checker 1.20, Pod::Find 0.21,
180 Pod::InputObjects 1.13, Pod::ParseUtils 0.22, Pod::Parser 1.12,
181 Pod::Select 1.13, and Pod::Usage 1.13.
182
183 =item *
184
185 The subpragma 'debug' of the 're' pragma now produces cleaner output.
186
187 =item *
188
189 C<%INC> now localized in a Safe compartment so that use/require work.
190
191 =item *
192
193 SelfLoader no more loses C<$@> in AUTOLOAD.
194
195 =item *
196
197 The Shell module now has an OO interface.
198
199 =item *
200
201 Sys::Syslog now works on domain sockets.  Also, a forked child
202 now exits correctly if it fails to open /dev/console.
203
204 =item *
205
206 Term::ANSIColor has been updated to version 1.03, released the 6th of
207 August 2000.
208
209 =item *
210
211 The Test module has been updated to version 1.14, released the 21st of June
212 1999.  This is for all practical purposes identical to the previous release
213 of Test included with the Perl distribution, 1.13, but upgrading the module
214 stops the CPAN module from suggesting an upgrade.
215
216 =item *
217
218 Test::Harness output now prettier on failed test.
219
220 =item *
221
222 Text::Wrap::wtbrap now handles multiline strings properly.
223
224 =item *
225
226 UNIVERSAL::isa no more caches methods incorrectly.
227
228 =back
229
230 =head1 Utility Changes
231
232 =head2 cperl-mode version 4.31
233
234 The Emacs perl mode (emacs/cperl-mode.el) has been updated to version 4.31.
235
236 =head2 perlbug
237
238 Perlbug is now much more robust.  It also sends the bug report to perl.org,
239 not perl.com.
240
241 =head2 perlcc now more cc-like and more robust
242
243 The perlcc utility has been rewritten and its user interface (that is,
244 command line) is much more like that of the UNIX C compiler, cc.
245
246 =head2 xsubpp now understands embedded pod
247
248 The xsubpp utility for extension writers now understands POD
249 documentation embedded in the *.xs files.
250
251 =head1 Improved Documentation
252
253 =over 4
254
255 =item *
256
257 In many places say "alphanumeric characters" instead of "word
258 characters" because that was what was meant.
259
260 =item *
261
262 Eradicate "array context" from the documentation and diagnostics.
263
264 =item *
265
266 The return values of a failing backtick (`, qx{}) are now documented
267 in perlop.
268
269 =item *
270
271 caller() return values now better documented.
272
273 =item *
274
275 SDBM_File, NDBM_File, ODBM_File, now tell about tying instead of
276 glossing over.
277
278 =item *
279
280 Document that the C<$(> special variable does not interpolate
281 in regular expressions.
282
283 =item *
284
285 Add an URL for FSF in README.
286
287 =item *
288
289 The timeout unit of IO::Select is now documented to be identical
290 to the timeout unit of the 4-arg select(), that is, (optionally
291 fractional) seconds, or an undef to wait indefinitely.
292
293 =item *
294
295 Document the C<D> and C<d> magic types.
296
297 =item *
298
299 The ordering of PODs in perl.pod is now more sensical.
300
301 =item *
302
303 perlbook now only mentions the Camel III, all other book references
304 have been moved to perlfaq2, some good known books added.
305
306 =item *
307
308 Numerous missing warning/error messages added to perldiag.
309
310 =item *
311
312 Tell what's perl6 in perlfaq1.
313
314 =item *
315
316 perlhack much extended.
317
318 =item *
319
320 perltrap cleaned up.
321
322 =item *
323
324 Add perlxstut example for passing/returning refs to arrays.
325
326 =item *
327
328 POSIX module documentation embellished.
329
330 =item *
331
332 Clarify the status of shadow password support.
333
334 =item *
335
336 Remind that preprocessors and source filters can alter
337 your code before Perl sees it and therefore debugging
338 can be somewhat surprising.  ("I didn't write *that*!")
339
340 =item *
341
342 Remove incorrect documentation about implicit split to @_
343 in list context, which never really worked in Perl 5 anyway.
344
345 =item *
346
347 Tell that split /^/ is split /^/m.
348
349 =item *
350
351 Many more sprintf() examples in perlfunc.
352
353 =item *
354
355 Document the handling of negative indices to tied arrays.
356
357 =item *
358
359 The C<$yday> in localtime()/gmtime() is 0..364, not 1..365.
360
361 =item *
362
363 Document that tr() is not tr(1): that is, do not expect regular expressions.
364
365 =item *
366
367 Warn about the vagaries of UDP.
368
369 =item *
370
371 The uninitialized variable warnings now say "concat or string" or
372 "join or string" instead of just "concat" or "join" since many users
373 found the "concat" a bit surprising when they were doing "just"
374 variable interpolation.
375
376 =item *
377
378 Document that the values() are copies, not aliases.
379
380 =back
381
382 =head2 New Documentation
383
384 =over 4
385
386 =item *
387
388 perl56delta details the changes between the 5.005 release and the
389 release 5.6.0.
390
391 =item *
392
393 perl56delta is a Perl debugging tutorial.
394
395 =item *
396
397 perlebcdic contains considerations for running Perl on EBCDIC platforms.
398 Note that unfortunately EBCDIC platforms that used to supported back in
399 Perl 5.005 are still unsupported by Perl 5.7; the plan, however, is to
400 bring them back to the fold.  
401
402 =item *
403
404 perlnewmod tells about writing and submitting a new module.
405
406 =item *
407
408 perlposix-bc explains using Perl on the POSIX-BC platform
409 (a mainframe platform).
410
411 =item *
412
413 perlretut is a regular expression tutorial.
414
415 =item *
416
417 perlrequick is regular expressions quick-start guide.
418 Yes, much quicker than perlretut.
419
420 =item *
421
422 perlutil explains the command line utilities packaged with the Perl
423 distribution.
424
425 =back
426
427 =head1 Security Vulnerability
428
429 A potential security vulnerability in the optional suidperl component
430 of Perl has been identified.  The suidperl is neither built nor
431 installed by default.  As of August the 20th 2000 the only known
432 vulnerable platform is Linux, most likely all Linux distributions.
433 The CERT and various vendors have been alerted about the vulnerability.
434
435 The problem was caused by Perl trying to report a suspected security
436 exploit attempt using an external program, /bin/mail.  In Linux
437 platforms the /bin/mail program had an undocumented feature which gave
438 access to a root shell, resulting in a serious compromise, instead of
439 reporting the exploit attempt.  If you don't have /bin/mail or if you
440 have 'safe suid scripts' or if you haven't installed the suidperl, you
441 are safe.
442
443 The exploit attempt reporting feature has been completely removed from
444 the Perl 5.7.0 release, so that particular vulnerability isn't there
445 anymore.  However, further security vulnerabilities are,
446 unfortunately, always possible.  The suidperl code is being reviewed
447 and if deemed too risky to continue being supported, in the extreme
448 case it may be completely removed in future releases.  In any case,
449 suidperl should only be used by security experts who know exactly what
450 they are doing and why are they using suidperl instead of some other solution.
451 A good tool for similar needs is sudo: http://www.courtesan.com/sudo/
452
453 =head1 Performance Enhancements
454
455 map() that changes the size of the list should now work faster.
456
457 =head1 Installation and Configuration Improvements
458
459 =head2 INSTALL now explains 64-bit configuration.
460
461 In some platforms Perl can be configured to use 64-bit integers,
462 allowing 4 billion times better...sorry, switched accidentally to
463 marketdroid mode for a moment in there.  (In platforms which are
464 natively 64-bit this makes no difference.)
465
466 =head2 Policy.sh policy change
467
468 If you are reusing a Policy.sh file (see INSTALL) and you use 
469 Configure -Dprefix=/foo/bar and in the old Policy $prefix eq
470 $siteprefix and $prefix eq $vendorprefix, all of them will now
471 be changed to the new prefix, /foo/bar.  (Previously only $prefix
472 did change.)  If you do not like this new behaviour, specify
473 prefix, siteprefix, and vendorprefix explicitly.
474
475 =head2 Additional Library Locations
476
477 A new optional location for Perl libraries, otherlibdirs, is available.
478 It can be used for example for vendor add-ons without disturbing Perl's
479 own library directories.
480
481 =head2 gcc automatically tried if 'cc' does not seem to be working
482
483 In many platforms the vendor-supplied 'cc' is too stripped-down to
484 build Perl (basically, the 'cc' doesn't do ANSI C).  If this seems
485 to be the case and the 'cc' does not seem to be the GNU C compiler
486 'gcc', an automatic attempt is made to find and use 'gcc' instead.
487
488 =head2 If gcc seems to be from from a different operating system release ...
489
490 gcc needs to closely track the operating system release because gcc
491 wants to have its own versions of the operating system header files
492 fixed to be clean enough for gcc's tastes.  Therefore using a gcc
493 compiled for a different release of the operating system is often a
494 bad idea.  If Configure can find out the operating system release that
495 was used to compile the gcc and that release is different from the one
496 being used now, gcc gives a clearly visible warning that trouble may
497 lie ahead.
498
499 =head2 If no binary compatibilty with 5.005 wanted, no 5.005 modules, either
500
501 If no binary compatibility with the 5.005 release is wanted, Configure
502 does not suggest including the 5.005 modules in the @INC.
503
504 =head2 Configuration and Installation fixes
505
506 =over 4
507
508 =item *
509
510 Configure C<-S> can now run non-interactively
511
512 =item *
513
514 configure.gnu now works with options with whitespace in them
515
516 =item *
517
518 installperl now outputs everything to STDERR
519
520 =item *
521
522 $Config{byteorder} is now computed dynamically (this is more robust
523 with "fat binaries" where an executable image contains binaries for
524 more than one binary platform.)
525
526 =back
527
528 =head1 Platform Specific Changes and Fixes
529
530 =head2 BSDI 4.*
531
532 Perl now works on post-4.0 BSD/OSes.
533
534 =head2 All BSDs
535
536 Setting the C<$0> now works (as much as possible, see perlvar for details).
537
538 =head2 Cygwin
539
540 =over 4
541
542 =item *
543
544 Numerous updates; currently synchronized with Cygwin 1.1.4.
545
546 =back
547
548 =head2 EPOC
549
550 EPOC update after Perl 5.6.0.  The EPOC port home page is at
551 http://members.linuxstart.com/~oflebbe/perl/perl5.html
552
553 =head2 FreeBSD 3.*
554
555 Perl now works on post-3.0 FreeBSDs.
556
557 =head2 HP-UX
558
559 =over 4
560
561 =item *
562
563 Document that the C<perl -P> causes problems if one uses C<s/foo//>
564 (because the HP C compiler does funny things to that // thinking it
565 to be C++), document also the workaround.
566
567 =item *
568
569 C<Configure -Duse64bitall> now almost works (one failing test).
570
571 =back
572
573 =head2 IRIX
574
575 =over 4
576
577 =item *
578
579 Numerous compilation flag and hint enhancements.
580
581 =item *
582
583 Accidental mixing of 32-bit and 64-bit libraries (a doomed attempt)
584 made much harder.
585
586 =back
587
588 =head2 Linux
589
590 =over 4
591
592 =item *
593
594 Long doubles should now work (see INSTALL).
595
596 =back
597
598 =head2 MacOS Classic
599
600 =over 4
601
602 =item *
603
604 Compilation of the standard Perl distribution in MacOS Classic should
605 now work--assuming you have the Metrowerks development environment and
606 the missing Mac-specific toolkit bits, contact the macperl mailing
607 list for details.
608
609 =back
610
611 =head2 MPE/iX
612
613 MPE/iX update after Perl 5.6.0.  The Perl/iX home page is at
614 http://www.bixby.org/mark/perlix.html 
615
616 =head2 NetBSD/sparc
617
618 Perl now works on NetBSD/sparc.
619
620 =head2 OS/2
621
622 =over 4
623
624 =item *
625
626 Now works with usethreads (see INSTALL).
627
628 =back
629
630 =head2 Solaris
631
632 =over 4
633
634 =item *
635
636 64-bitness using the Sun Workshop compiler now works.
637
638 =back
639
640 =head2 Tru64 (aka Digital UNIX, aka DEC OSF/1)
641
642 =over 4
643
644 =item *
645
646 Allow compiling with gcc (previously explicitly forbidden).  Compiling
647 with gcc still not recommended because buggy code results, even with
648 gcc 2.95.2.
649
650 =item *
651
652 The operating system version letter now recorded in $Config{osvers}.
653
654 =back
655
656 =head2 Unicos
657
658 =over 4
659
660 =item *
661
662 Fixed various alignment problems that lead into core dumps either
663 during build or later.
664
665 =item *
666
667 No more dying on math errors in runtime.
668
669 =item *
670
671 Now using full quad integers (64 bits), previously was using 
672 only 43 bit integers for speed.
673
674 =back
675
676 =head2 VMS
677
678 =over 4
679
680 =item *
681
682 chdir() now works better despite a CRT bug.
683
684 =item *
685
686 Now works with MULTIPLICITY (see INSTALL).
687
688 =item *
689
690 Now works with Perl's malloc.
691
692 =back
693
694 =head2 Windows
695
696 =over 4
697
698 =item *
699
700 accept() no more leaks memory.
701
702 =item *
703
704 Better chdir() return value for a non-existent directory.
705
706 =item *
707
708 New %ENV entries now propagate to subprocesses.
709
710 =item *
711
712 $ENV{LIB} now used to search for libs under Visual C.
713
714 =item *
715
716 A failed (pseudo)fork now returns undef and sets errno to EAGAIN.
717
718 =item *
719
720 Allow REG_EXPAND_SZ keys in the registry.
721
722 =item *
723
724 Can now send() from all threads, not just the first one.
725
726 =item *
727
728 Fake signal handling reenabled, bugs and all.
729
730 =item *
731
732 Less stack reserved per thread so that more threads can run
733 concurrently. (still 16M perl thread)
734
735 =item *
736
737 C<File::Spec->tmpdir()> now prefers C:/temp over /tmp
738 (works better when perl running as service).
739
740 =item *
741
742 Better UNC path handling under ithreads.
743
744 =item *
745
746 wait() and waitpid() now work much better.
747
748 =item *
749
750 winsock handle leak fixed.
751
752 =back
753
754 =head1 Selected Bug Fixes
755
756 The following is by no means a comprehensive list of all the
757 numerous bug fixes.
758
759 =over 4
760
761 =item *
762
763 Redefining constant subroutines using eval (again) warns.
764
765 =item *
766
767 Several debugger fixes: exit code now reflects the script exit code,
768 condition C<"0"> now treated correctly, the C<d> command now checks
769 line number, the C<$.> no more gets corrupted, all debugger output now
770 goes correctly to the socket if RemotePort is set.
771
772 =item *
773
774 C<*foo{FORMAT}> now works.
775
776 =item *
777
778 Lexical warnings now propagating correctly between scopes.
779
780 =item *
781
782 Line renumbering with eval and C<#line> now works.
783
784 =item *
785
786 Module name now mandatory after the C<-M> switch.
787
788 =item *
789
790 Fixed numerous memory leaks, especially in eval "".
791
792 =item *
793
794 Moduli of unsigned numbers now works (4063328477 % 65535 used to
795 return 27406, instead of 27047).
796
797 =item *
798
799 msgrcv() no more warns about uninitialized input scalar.
800
801 =item *
802
803 Some "not a number" warnings introduce in 5.6.0 eliminated to be
804 more compatible with 5.005.
805
806 =item *
807
808 out() variables will not cause "will not stay shared" warnings
809
810 =item *
811
812 The pack "Z" now correctly terminates the string with an "\0".
813
814 =item *
815
816 Fix password routines which in some shadow password platforms
817 (e.g. HP-UX) caused getpwent() to return every other entry.
818
819 =item *
820
821 POSIX::STDERR_FILENO (not POSIX::STRERR_FILENO).
822
823 =item *
824
825 printf() no more resets the numeric locale to "C".
826
827 =item *
828
829 C<q(a\\b)> now parses as C<'a\\b'>.
830
831 =item *
832
833 In quad (64-bit) platforms numbers now stay integers longer
834 (as opposed to converting automatically to floating point numbers).
835
836 =item *
837
838 Printing quads (64-bit integers) with printfs/sprintf works now
839 without q L ll prefixes (assuming you are on a quad-capable platform).
840
841 =item *
842
843 Regular expressions on references and overloaded scalars now work.
844
845 =item *
846
847 Multiline matching of C<"a\nxb\n" =~ /(?!\A)x/m> now works.
848
849 =item *
850
851 C</(?i)/> now works.
852
853 =item *
854
855 C</x{ab}/> now works.
856
857 =item *
858
859 scalar() now doesn't force scalar context when used in void context.
860
861 =item *
862
863 All the documented examples Shell.pm now work.
864
865 =item *
866         
867 sort() arguments are now compiled in the right wantarray context
868 (were accidentally using the context of the sort() itself).
869
870 =item *
871
872 Changed the POSIX character class C<[[:space:]]> to include the (very
873 rare) vertical tabulator character.  Added a new POSIX-ish character
874 class C<[[:blank:]] which stands for horizontal whitespace (currently,
875 the space and the tabulator).
876
877 =item *
878
879 sprintf() format specs like C<%v-*d> now work.
880
881 =item *
882
883 The (nonsensical) C<%#p> format made illegal.
884
885 =item *
886
887 C<${$1}> now works (again).
888
889 =item *
890
891 $AUTOLOAD, sort(), lock(), and spawning subprocesses
892 in multiple thread simultaneously are now thread-safe.
893
894 =item *
895
896 Allow non-variable as left-handside of non-updating tr///.
897
898 =item *
899
900 Several Unicode fixes (but still not perfect).
901
902 BOMs (byte order marks) in the beginning of Perl files
903 (scripts, modules) should now be transparently skipped.
904
905 The character tables have been updated to new Unicode 3.0 features.
906
907 chr() for values greater than 127 now create utf8 when under use
908 utf8.
909
910 Comparing with utf8 data does not magically upgrade non-utf8 data into
911 utf8.
912
913 C<IsAlnum>, C<IsAlpha>, and C<IsWord> now match titlecase.
914
915 Concatenation with the C<.> operator or via variable interpolation,
916 C<eq>, C<substr>, C<reverse>, C<quotemeta>, the C<x> operator,
917 substitution with C<s///>, single-quoted UTF8, should now work--in
918 theory.
919
920 The C<tr///> operator now works I<slightly> better but is still rather
921 broken.  Note that the C<tr///CU> functionality has been removed (but
922 see pack('U0', ...).
923
924 Zero entries were missing from the Unicode classes like C<IsDigit>.
925
926 =item *
927
928 Unsignedness could disappear from a scalar causing later numeric
929 comparisons to fail.
930
931 =item *
932
933 vec() now drops numericalness.
934
935 =back
936
937 =head1 New or Changed Diagnostics
938
939 All regular expression compilation error messages are now hopefully
940 easier to understand both because the error message now comes before
941 the failed regex and because the point of failure is now clearly
942 marked.
943
944 The various "opened only for", "on closed", "never opened" warnings
945 drop the C<main::> prefix for filehandles in the C<main> package,
946 for example C<STDIN> instead of <main::STDIN>.
947
948 =over 4
949
950 =item *
951
952 (perhaps you forgot to load "%s"?)
953
954 (F) This is an educated guess made in conjunction with the message
955 "Can't locate object method \"%s\" via package \"%s\"".  It often means
956 that a method requires a package that has not been loaded.
957
958 =item *
959
960 Ambiguous range in transliteration operator
961
962 (F) You wrote something like C<tr/a-z-0//> which doesn't mean anything at
963 all.  To include a C<-> character in a transliteration, put it either
964 first or last.  (In the past, C<tr/a-z-0//> was synonymous with
965 C<tr/a-y//>, which was probably not what you would have expected.)
966
967 =item *
968
969 The "Unrecgonized escape" warning has been extended to include C<\8>,
970 C<\9>, and C<\_>.  There is no need to espace any of the C<\w> characters.
971
972 =back
973
974 =head1 New tests
975
976 =over 4
977
978 =item *
979
980 lib/b tests the various compiler backends (see L<perlcompile>).
981
982 =item *
983
984 lib/cgi-pretty tests CGI pretty printing.
985
986 =item *
987
988 lib/ftmp-*.t test File::Temp.
989
990 =item *
991
992 lib/gol-oo tests Getopt::Long objected-oriented interface.
993
994 =item *
995
996 lib/peek tests Devel::Peek.
997
998 =item *
999
1000 lib/selfloader tests SelfLoader.
1001
1002 =item *
1003
1004 lib/syslog tests Sys::Syslog.
1005
1006 =item *
1007
1008 op/bless tests bless().
1009
1010 =item *
1011
1012 op/stash tests the "my Package ..." feature.
1013
1014 =item *
1015
1016 op/regmesg exercises all various regex errors.
1017
1018 =item *
1019
1020 pod/find tests Pod::Find.
1021
1022 =back
1023
1024 =head2 Improved Tests
1025
1026 =over 4
1027
1028 =item *
1029
1030 op/sprintf coverage is now of much more comprehensive.
1031
1032 =item *
1033
1034 op/taint now continues on failed shmget().
1035
1036 =item *
1037
1038 lib/*lfs.t now continues even if SIXFSZ happens.
1039
1040 =item *
1041
1042 lib/syslog.t now works without sockets.
1043
1044 =back
1045
1046 =head1 Incompatible Changes
1047
1048 =head2 Arrays Now Always Interpolate Into Double-Quoted Strings
1049
1050 Constructs like "foo@bar" now always assume the C<@bar> to be an array,
1051 and not dependent on whether it is known whether that is an array or not.
1052
1053 =head2 bless(REF, REF) is now a fatal error
1054
1055 The semantics of bless(REF, REF) were unclear and until someone proves
1056 it to make some sense, it is forbidden.
1057
1058 =head2 The eg/* Directory Removed
1059
1060 The very dusty examples in the eg/ directory have been removed.
1061 Suggestions for new shiny examples welcome but the main issue is that
1062 the examples need to be documented, tested, and most importantly maintained.
1063
1064 =head2 The lib/chat2.pl
1065
1066 The obsolete chat2 library that should never have been allowed
1067 to escape the laboratory has been decommissioned.
1068
1069 =head2 The Unimplemented (But Recognized) POSIX Regex Features Now Fatal
1070
1071 The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are
1072 recognized as before but now cause fatal runtime errors.  The previous
1073 behaviour of ignoring them by default and warning if requested was
1074 unacceptable since it in a way falsely promised that the features
1075 can be used.
1076
1077 =head2 lstat(FILEHANDLE) now warns
1078
1079 lstat(FILEHANDLE) now gives a warning because the operation makes no sense.
1080 In future releases this may become a fatal error.
1081
1082 =head2 Obsolete String Comparison Operators Removed
1083
1084 The long since deprecated uppercase aliases for the string comparison
1085 operators (EQ, NE, LT, LE, GE, GT) have now been removed.
1086
1087 =head2 The Regular Expression Submatches Are Now Unset When Backtracking 
1088
1089 The regular expression captured submatches ($1, $2, ...) are now
1090 consistently unset if the match fails, instead of leaving false
1091 data lying around in them.
1092
1093 =head2 tr///CU Removed, Not To Return
1094
1095 The tr///C and tr///U features have been removed and will not return,
1096 the interface was a mistake.  Sorry about that.  For similar
1097 functionality, see pack('U0', ...) and pack('C0', ...).
1098
1099 =head1 Changed Internals
1100
1101 =head2 apidoc
1102
1103 The perlapi.pod now attempts to document the internal API
1104 (a companion to perlguts).
1105
1106 =head2 microperl
1107
1108 There is now a way to build really minimal perl called microperl.
1109 Building does not require even running Configure, C<make -f Makefile.micro>
1110 should be enough.  Beware: microperl makes many assumptions, some of
1111 which may be too bold, the resulting executable may crash or
1112 otherwise misbehave in wondrous ways.  For careful hackers only.
1113
1114 =head2 Publicize More Functions
1115
1116 Added rsignal(), whichsig(), do_join() to the publicized API.
1117
1118 =head2 Propagating Exception Objects via Perl_croak() IN XS code
1119
1120 Made possible to propagate customized exceptions via croak()ing.
1121
1122 =head2 UTF8 Interfaces
1123
1124 Added is_utf8_char(), is_utf8_string(), bytes_to_utf8(), and utf8_to_bytes().
1125
1126 =head2 xsub attributes
1127
1128 Now xsubs can have attributes just like subs.
1129
1130 =head1 Known Problems
1131
1132 =head2 Unicode Support Still Far From Perfect
1133
1134 We're working on it.  Stay tuned.
1135
1136 =head2 EBCDIC Still A Lost Platform
1137
1138 The plan is to bring them back.
1139
1140 =head2 Building Extensions Can Fail Because Of Largefiles
1141
1142 Certain extensions like mod_perl and BSD::Resource are known to have
1143 issues with `largefiles', a change brought by Perl 5.6.0 in where file
1144 offsets are by default 64 bits wide (assuming the platform supports
1145 such large files).  Modules may fail to compile at all or compile and
1146 work incorrectly.  Currently there is no good solution for the problem
1147 but Configure now stores the flags and libraries that effect the
1148 largefileness to the %Config hash, the extensions that are having
1149 problems can try configuring themselves without the largefileness.
1150 This is admittedly not a clean solution.
1151
1152 =head1 Obsolete Diagnostics
1153
1154 =head1 Reporting Bugs
1155
1156 If you find what you think is a bug, you might check the
1157 articles recently posted to the comp.lang.perl.misc newsgroup.
1158 There may also be information at http://www.perl.com/perl/, the Perl
1159 Home Page.
1160
1161 If you believe you have an unreported bug, please run the B<perlbug>
1162 program included with your release.  Be sure to trim your bug down
1163 to a tiny but sufficient test case.  Your bug report, along with the
1164 output of C<perl -V>, will be sent off to perlbug@perl.com to be
1165 analysed by the Perl porting team.
1166
1167 =head1 SEE ALSO
1168
1169 The F<Changes> file for exhaustive details on what changed.
1170
1171 The F<INSTALL> file for how to build Perl.
1172
1173 The F<README> file for general stuff.
1174
1175 The F<Artistic> and F<Copying> files for copyright information.
1176
1177 =head1 HISTORY
1178
1179 Written by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions
1180 from The Perl Porters and Perl Users submitting feedback and patches.
1181
1182 Send omissions or corrections to <F<perlbug@perl.com>>.
1183
1184 =cut