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