This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document offset hack
[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 9
43b92eec 10=head1 Security Vulnerability Closed
d4ad863d
JH
11
12A potential security vulnerability in the optional suidperl component
ce72e97c 13of Perl has been identified. suidperl is neither built nor installed
8456ac52 14by default. As of September the 2nd, 2000, the only known vulnerable
ce72e97c
JH
15platform is Linux, most likely all Linux distributions. CERT and
16various vendors have been alerted about the vulnerability.
d4ad863d
JH
17
18The problem was caused by Perl trying to report a suspected security
ce72e97c 19exploit attempt using an external program, /bin/mail. On Linux
8456ac52
JH
20platforms the /bin/mail program had an undocumented feature which
21when combined with suidperl gave access to a root shell, resulting in
22a serious compromise instead of reporting the exploit attempt. If you
23don't have /bin/mail, or if you have 'safe setuid scripts', or if
24suidperl is not installed, you are safe.
d4ad863d
JH
25
26The exploit attempt reporting feature has been completely removed from
27the Perl 5.7.0 release, so that particular vulnerability isn't there
562628a3
JH
28anymore. However, further security vulnerabilities are,
29unfortunately, always possible. The suidperl code is being reviewed
30and if deemed too risky to continue to be supported, it may be
31completely removed from future releases. In any case, suidperl should
32only be used by security experts who know exactly what they are doing
33and why they are using suidperl instead of some other solution such as
34sudo (see http://www.courtesan.com/sudo/).
d4ad863d
JH
35
36=head1 Incompatible Changes
37
ce72e97c
JH
38=over 4
39
40=item *
d4ad863d 41
ce72e97c
JH
42Arrays now always interpolate into double-quoted strings:
43constructs like "foo@bar" now always assume C<@bar> is an array,
44whether or not the compiler has seen use of C<@bar>.
d4ad863d 45
ce72e97c 46=item *
d4ad863d
JH
47
48The semantics of bless(REF, REF) were unclear and until someone proves
49it to make some sense, it is forbidden.
50
ce72e97c 51=item *
d4ad863d 52
c9e9bc25
GA
53A reference to a reference now stringify as "REF(0x81485ec)" instead
54of "SCALAR(0x81485ec)" in order to be more consistent with the return
55value of ref().
56
57=item *
58
d4ad863d
JH
59The very dusty examples in the eg/ directory have been removed.
60Suggestions for new shiny examples welcome but the main issue is that
ce72e97c
JH
61the examples need to be documented, tested and (most importantly)
62maintained.
d4ad863d 63
ce72e97c 64=item *
d4ad863d
JH
65
66The obsolete chat2 library that should never have been allowed
67to escape the laboratory has been decommissioned.
68
ce72e97c 69=item *
d4ad863d
JH
70
71The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are still
43b92eec 72recognised but now cause fatal errors. The previous behaviour of
d4ad863d
JH
73ignoring them by default and warning if requested was unacceptable
74since it, in a way, falsely promised that the features could be used.
75
ce72e97c 76=item *
d4ad863d
JH
77
78lstat(FILEHANDLE) now gives a warning because the operation makes no sense.
79In future releases this may become a fatal error.
80
ce72e97c 81=item *
d4ad863d 82
ce72e97c 83The long deprecated uppercase aliases for the string comparison
d4ad863d
JH
84operators (EQ, NE, LT, LE, GE, GT) have now been removed.
85
ce72e97c 86=item *
d4ad863d
JH
87
88The regular expression captured submatches ($1, $2, ...) are now
ce72e97c 89more consistently unset if the match fails, instead of leaving false
d4ad863d
JH
90data lying around in them.
91
ce72e97c 92=item *
d4ad863d
JH
93
94The tr///C and tr///U features have been removed and will not return;
95the interface was a mistake. Sorry about that. For similar
96functionality, see pack('U0', ...) and pack('C0', ...).
97
ce72e97c
JH
98=back
99
cc0fca54
GS
100=head1 Core Enhancements
101
53080bb1
JH
102=over 4
103
104=item *
105
106C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass
107in multiple arguments.)
108
109=item *
110
53080bb1
JH
111my __PACKAGE__ now works.
112
113=item *
114
ce72e97c 115C<no Module;> now works even if there is no "sub unimport" in the Module.
53080bb1
JH
116
117=item *
118
d4ad863d
JH
119The numerical comparison operators return C<undef> if either operand
120is a NaN. Previously the behaviour was unspecified.
53080bb1
JH
121
122=item *
123
43b92eec 124C<pack('U0a*', ...)> can now be used to force a string to UTF8.
53080bb1
JH
125
126=item *
127
128prototype(\&) is now available.
129
c835e335
JH
130=item *
131
132There is now an UNTIE method.
133
53080bb1
JH
134=back
135
cc0fca54
GS
136=head1 Modules and Pragmata
137
53080bb1
JH
138=head2 New Modules
139
d4ad863d
JH
140=over 4
141
142=item *
143
ce72e97c
JH
144File::Temp allows one to create temporary files and directories in an
145easy, portable, and secure way.
d4ad863d
JH
146
147=item *
148
ce72e97c
JH
149Storable gives persistence to Perl data structures by allowing the
150storage and retrieval of Perl data to and from files in a fast and
151compact binary format.
d4ad863d
JH
152
153=back
53080bb1
JH
154
155=head2 Updated And Improved Modules and Pragmata
156
157=over 4
158
159=item *
160
ce72e97c
JH
161The following independently supported modules have been updated to
162newer versions from CPAN: CGI, CPAN, DB_File, File::Spec, Getopt::Long,
163the podlators bundle, Pod::LaTeX, Pod::Parser, Term::ANSIColor, Test.
53080bb1
JH
164
165=item *
166
ce72e97c 167Bug fixes and minor enhancements have been applied to B::Deparse,
9db5a202 168Data::Dumper, IO::Poll, IO::Socket::INET, Math::BigFloat,
a1ba9576
JH
169Math::Complex, Math::Trig, Net::protoent, the re pragma, SelfLoader,
170Sys::SysLog, Test::Harness, Text::Wrap, UNIVERSAL, and the warnings
171pragma.
53080bb1
JH
172
173=item *
174
ce72e97c 175The attributes::reftype() now works on tied arguments.
53080bb1
JH
176
177=item *
178
ce72e97c 179AutoLoader can now be disabled with C<no AutoLoader;>,
53080bb1
JH
180
181=item *
182
183The English module can now be used without the infamous performance
184hit by saying
185
186 use English '-no_performance_hit';
187
188(Assuming, of course, that one doesn't need the troublesome variables
8456ac52 189C<$`>, C<$&>, or C<$'>.) Also, introduced C<@LAST_MATCH_START> and
53080bb1
JH
190C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>.
191
192=item *
193
ce72e97c
JH
194File::Find now has pre- and post-processing callbacks. It also
195correctly changes directories when chasing symbolic links. Callbacks
196(naughtily) exiting with "next;" instead of "return;" now work.
53080bb1
JH
197
198=item *
199
d4ad863d 200File::Glob::glob() renamed to File::Glob::bsd_glob() to avoid
53080bb1
JH
201prototype mismatch with CORE::glob().
202
203=item *
204
ce72e97c 205IPC::Open3 now allows the use of numeric file descriptors.
53080bb1
JH
206
207=item *
208
ce72e97c
JH
209use lib now works identically to @INC. Removing directories
210with 'no lib' now works.
53080bb1
JH
211
212=item *
213
ce72e97c 214C<%INC> now localised in a Safe compartment so that use/require work.
53080bb1
JH
215
216=item *
217
ce72e97c 218The Shell module now has an OO interface.
53080bb1 219
a1ba9576
JH
220=item *
221
ce72e97c 222=back
53080bb1 223
ce72e97c 224=head1 Utility Changes
53080bb1 225
ce72e97c 226=over 4
53080bb1
JH
227
228=item *
229
8456ac52
JH
230The Emacs perl mode (emacs/cperl-mode.el) has been updated to version
2314.31.
53080bb1
JH
232
233=item *
234
8456ac52
JH
235Perlbug is now much more robust. It also sends the bug report to
236perl.org, not perl.com.
53080bb1
JH
237
238=item *
239
ce72e97c
JH
240The perlcc utility has been rewritten and its user interface (that is,
241command line) is much more like that of the UNIX C compiler, cc.
53080bb1
JH
242
243=item *
244
ce72e97c
JH
245The xsubpp utility for extension writers now understands POD
246documentation embedded in the *.xs files.
53080bb1 247
ce72e97c 248=back
53080bb1 249
ce72e97c 250=head1 New Documentation
53080bb1 251
ce72e97c 252=over 4
53080bb1
JH
253
254=item *
255
ce72e97c
JH
256perl56delta details the changes between the 5.005 release and the
2575.6.0 release.
53080bb1
JH
258
259=item *
260
ce72e97c 261perldebtut is a Perl debugging tutorial.
53080bb1
JH
262
263=item *
264
ce72e97c
JH
265perlebcdic contains considerations for running Perl on EBCDIC platforms.
266Note that unfortunately EBCDIC platforms that used to supported back in
267Perl 5.005 are still unsupported by Perl 5.7.0; the plan, however, is to
268bring them back to the fold.
53080bb1
JH
269
270=item *
271
ce72e97c 272perlnewmod tells about writing and submitting a new module.
53080bb1
JH
273
274=item *
275
ce72e97c 276perlposix-bc explains using Perl on the POSIX-BC platform
562628a3 277(an EBCDIC mainframe platform).
53080bb1
JH
278
279=item *
280
ce72e97c 281perlretut is a regular expression tutorial.
53080bb1
JH
282
283=item *
284
ce72e97c
JH
285perlrequick is a regular expressions quick-start guide.
286Yes, much quicker than perlretut.
53080bb1
JH
287
288=item *
289
ce72e97c
JH
290perlutil explains the command line utilities packaged with the Perl
291distribution.
53080bb1
JH
292
293=back
294
ce72e97c 295=head1 Performance Enhancements
53080bb1 296
562628a3
JH
297=over 4
298
299=item *
300
ce72e97c 301map() that changes the size of the list should now work faster.
53080bb1 302
d46b76b3
JH
303=item *
304
305sort() has been changed to use mergesort internally as opposed to the
306earlier quicksort. For very small lists this may result in slightly
8456ac52
JH
307slower sorting times, but in general the speedup should be at least
30820%. Additional bonuses are that the worst case behaviour of sort()
309is now better (in computer science terms it now runs in time O(N log N),
310as opposed to quicksort's Theta(N**2) worst-case run time behaviour),
311and that sort() is now stable (meaning that elements with identical
312keys will stay ordered as they were before the sort).
d46b76b3 313
562628a3
JH
314=back
315
ce72e97c 316=head1 Installation and Configuration Improvements
53080bb1 317
ce72e97c 318=head2 Generic Improvements
cc0fca54 319
53080bb1
JH
320=over 4
321
322=item *
323
0aa7271f 324INSTALL now explains how you can configure Perl to use 64-bit
ce72e97c 325integers even on non-64-bit platforms.
53080bb1
JH
326
327=item *
328
8456ac52
JH
329Policy.sh policy change: if you are reusing a Policy.sh file
330(see INSTALL) and you use Configure -Dprefix=/foo/bar and in the old
ce72e97c
JH
331Policy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of
332them will now be changed to the new prefix, /foo/bar. (Previously
333only $prefix changed.) If you do not like this new behaviour,
334specify prefix, siteprefix, and vendorprefix explicitly.
53080bb1
JH
335
336=item *
337
ce72e97c
JH
338A new optional location for Perl libraries, otherlibdirs, is available.
339It can be used for example for vendor add-ons without disturbing Perl's
340own library directories.
53080bb1
JH
341
342=item *
343
ce72e97c
JH
344In many platforms the vendor-supplied 'cc' is too stripped-down to
345build Perl (basically, 'cc' doesn't do ANSI C). If this seems
346to be the case and 'cc' does not seem to be the GNU C compiler
347'gcc', an automatic attempt is made to find and use 'gcc' instead.
53080bb1
JH
348
349=item *
350
ce72e97c
JH
351gcc needs to closely track the operating system release to avoid
352build problems. If Configure finds that gcc was built for a different
353operating system release than is running, it now gives a clearly visible
354warning that there may be trouble ahead.
53080bb1
JH
355
356=item *
357
ce72e97c
JH
358If binary compatibility with the 5.005 release is not wanted, Configure
359no longer suggests including the 5.005 modules in @INC.
53080bb1
JH
360
361=item *
362
ce72e97c 363Configure C<-S> can now run non-interactively.
53080bb1
JH
364
365=item *
366
ce72e97c 367configure.gnu now works with options with whitespace in them.
53080bb1
JH
368
369=item *
370
ce72e97c 371installperl now outputs everything to STDERR.
53080bb1
JH
372
373=item *
374
ce72e97c
JH
375$Config{byteorder} is now computed dynamically (this is more robust
376with "fat binaries" where an executable image contains binaries for
377more than one binary platform.)
53080bb1 378
eedaba54
PM
379=item *
380
381Configure no longer included the DBM libraries (dbm, gdbm, db, ndbm)
382when building the Perl binary. The only exception to this is SunOS 4.x,
383which needs them.
384
ce72e97c 385=back
53080bb1 386
ce72e97c 387=head1 Selected Bug Fixes
53080bb1 388
ce72e97c 389=over 4
53080bb1
JH
390
391=item *
392
ce72e97c
JH
393Several debugger fixes: exit code now reflects the script exit code,
394condition C<"0"> now treated correctly, the C<d> command now checks
395line number, the C<$.> no longer gets corrupted, all debugger output now
396goes correctly to the socket if RemotePort is set.
53080bb1
JH
397
398=item *
399
ce72e97c 400C<*foo{FORMAT}> now works.
53080bb1
JH
401
402=item *
403
ce72e97c 404Lexical warnings now propagating correctly between scopes.
53080bb1
JH
405
406=item *
407
ce72e97c 408Line renumbering with eval and C<#line> now works.
53080bb1
JH
409
410=item *
411
ce72e97c 412Fixed numerous memory leaks, especially in eval "".
53080bb1
JH
413
414=item *
415
ce72e97c
JH
416Modulus of unsigned numbers now works (4063328477 % 65535 used to
417return 27406, instead of 27047).
53080bb1
JH
418
419=item *
420
ce72e97c
JH
421Some "not a number" warnings introduced in 5.6.0 eliminated to be
422more compatible with 5.005. Infinity is now recognised as a number.
53080bb1
JH
423
424=item *
425
ce72e97c 426our() variables will not cause "will not stay shared" warnings.
53080bb1
JH
427
428=item *
429
ce72e97c 430pack "Z" now correctly terminates the string with "\0".
53080bb1
JH
431
432=item *
433
ce72e97c
JH
434Fix password routines which in some shadow password platforms
435(e.g. HP-UX) caused getpwent() to return every other entry.
53080bb1
JH
436
437=item *
438
ce72e97c 439printf() no longer resets the numeric locale to "C".
53080bb1
JH
440
441=item *
442
ce72e97c 443C<q(a\\b)> now parses correctly as C<'a\\b'>.
53080bb1
JH
444
445=item *
446
ce72e97c 447Printing quads (64-bit integers) with printf/sprintf now works
562628a3 448without the q L ll prefixes (assuming you are on a quad-capable platform).
53080bb1
JH
449
450=item *
451
ce72e97c 452Regular expressions on references and overloaded scalars now work.
53080bb1
JH
453
454=item *
455
ce72e97c 456scalar() now forces scalar context even when used in void context.
53080bb1
JH
457
458=item *
ce72e97c
JH
459
460sort() arguments are now compiled in the right wantarray context
461(they were accidentally using the context of the sort() itself).
53080bb1
JH
462
463=item *
464
ce72e97c
JH
465Changed the POSIX character class C<[[:space:]]> to include the (very
466rare) vertical tab character. Added a new POSIX-ish character class
467C<[[:blank:]]> which stands for horizontal whitespace (currently,
468the space and the tab).
53080bb1
JH
469
470=item *
471
ce72e97c
JH
472$AUTOLOAD, sort(), lock(), and spawning subprocesses
473in multiple threads simultaneously are now thread-safe.
53080bb1
JH
474
475=item *
476
ce72e97c 477Allow read-only string on left hand side of non-modifying tr///.
53080bb1
JH
478
479=item *
480
ce72e97c 481Several Unicode fixes (but still not perfect).
53080bb1 482
ce72e97c 483=over 8
53080bb1
JH
484
485=item *
486
ce72e97c
JH
487BOMs (byte order marks) in the beginning of Perl files
488(scripts, modules) should now be transparently skipped.
0aa7271f 489UTF-16 (UCS-2)encoded Perl files should now be read correctly.
53080bb1
JH
490
491=item *
492
bc723577 493The character tables have been updated to Unicode 3.0.1.
53080bb1 494
ce72e97c 495=item *
53080bb1 496
ce72e97c
JH
497chr() for values greater than 127 now create utf8 when under use
498utf8.
53080bb1 499
ce72e97c 500=item *
53080bb1 501
ce72e97c
JH
502Comparing with utf8 data does not magically upgrade non-utf8 data into
503utf8.
53080bb1
JH
504
505=item *
506
ce72e97c 507C<IsAlnum>, C<IsAlpha>, and C<IsWord> now match titlecase.
53080bb1
JH
508
509=item *
510
ce72e97c
JH
511Concatenation with the C<.> operator or via variable interpolation,
512C<eq>, C<substr>, C<reverse>, C<quotemeta>, the C<x> operator,
513substitution with C<s///>, single-quoted UTF8, should now work--in
514theory.
53080bb1
JH
515
516=item *
517
ce72e97c
JH
518The C<tr///> operator now works I<slightly> better but is still rather
519broken. Note that the C<tr///CU> functionality has been removed (but
520see pack('U0', ...)).
53080bb1
JH
521
522=item *
523
33b45480
SB
524vec() now tries to work with characters <= 255 when possible, but it leaves
525higher character values in place. In that case, if vec() was used to modify
526the string, it is no longer considered to be utf8-encoded.
bc723577
JH
527
528=item *
529
ce72e97c 530Zero entries were missing from the Unicode classes like C<IsDigit>.
53080bb1
JH
531
532=back
533
ce72e97c 534=item *
53080bb1 535
ce72e97c
JH
536UNIVERSAL::isa no longer caches methods incorrectly. (This broke
537the Tk extension with 5.6.0.)
53080bb1 538
ce72e97c 539=back
53080bb1 540
ce72e97c 541=head2 Platform Specific Changes and Fixes
53080bb1
JH
542
543=over 4
544
545=item *
546
ce72e97c 547BSDI 4.*
53080bb1 548
ce72e97c 549Perl now works on post-4.0 BSD/OSes.
53080bb1 550
ce72e97c 551=item *
53080bb1 552
ce72e97c 553All BSDs
53080bb1 554
ce72e97c 555Setting C<$0> now works (as much as possible; see perlvar for details).
53080bb1 556
ce72e97c 557=item *
53080bb1 558
ce72e97c 559Cygwin
53080bb1 560
ce72e97c 561Numerous updates; currently synchronised with Cygwin 1.1.4.
53080bb1
JH
562
563=item *
564
ce72e97c 565EPOC
53080bb1 566
ce72e97c 567EPOC update after Perl 5.6.0. See README.epoc.
53080bb1 568
ce72e97c 569=item *
53080bb1 570
ce72e97c 571FreeBSD 3.*
53080bb1 572
ce72e97c 573Perl now works on post-3.0 FreeBSDs.
53080bb1
JH
574
575=item *
576
ce72e97c 577HP-UX
53080bb1 578
ce72e97c 579README.hpux updated; C<Configure -Duse64bitall> now almost works.
53080bb1 580
ce72e97c 581=item *
53080bb1 582
ce72e97c 583IRIX
53080bb1 584
ce72e97c
JH
585Numerous compilation flag and hint enhancements; accidental mixing
586of 32-bit and 64-bit libraries (a doomed attempt) made much harder.
53080bb1
JH
587
588=item *
589
ce72e97c 590Linux
53080bb1 591
ce72e97c 592Long doubles should now work (see INSTALL).
53080bb1
JH
593
594=item *
595
ce72e97c
JH
596MacOS Classic
597
53080bb1 598Compilation of the standard Perl distribution in MacOS Classic should
ce72e97c
JH
599now work if you have the Metrowerks development environment and
600the missing Mac-specific toolkit bits. Contact the macperl mailing
53080bb1
JH
601list for details.
602
ce72e97c 603=item *
53080bb1 604
ce72e97c 605MPE/iX
53080bb1 606
ce72e97c 607MPE/iX update after Perl 5.6.0. See README.mpeix.
53080bb1 608
ce72e97c 609=item *
53080bb1 610
ce72e97c 611NetBSD/sparc
53080bb1 612
ce72e97c 613Perl now works on NetBSD/sparc.
53080bb1
JH
614
615=item *
616
ce72e97c 617OS/2
53080bb1 618
ce72e97c 619Now works with usethreads (see INSTALL).
53080bb1
JH
620
621=item *
622
ce72e97c 623Solaris
53080bb1 624
ce72e97c 62564-bitness using the Sun Workshop compiler now works.
53080bb1
JH
626
627=item *
628
ce72e97c
JH
629Tru64 (aka Digital UNIX, aka DEC OSF/1)
630
631The operating system version letter now recorded in $Config{osvers}.
53080bb1
JH
632Allow compiling with gcc (previously explicitly forbidden). Compiling
633with gcc still not recommended because buggy code results, even with
634gcc 2.95.2.
635
636=item *
637
ce72e97c 638Unicos
53080bb1
JH
639
640Fixed various alignment problems that lead into core dumps either
ce72e97c
JH
641during build or later; no longer dies on math errors at runtime;
642now using full quad integers (64 bits), previously was using
b84d4f81 643only 46 bit integers for speed.
53080bb1 644
53080bb1
JH
645=item *
646
ce72e97c 647VMS
53080bb1 648
ce72e97c
JH
649chdir() now works better despite a CRT bug; now works with MULTIPLICITY
650(see INSTALL); now works with Perl's malloc.
53080bb1
JH
651
652=item *
653
ce72e97c 654Windows
53080bb1 655
ce72e97c 656=over 8
53080bb1
JH
657
658=item *
659
d4ad863d 660accept() no longer leaks memory.
53080bb1
JH
661
662=item *
663
664Better chdir() return value for a non-existent directory.
665
666=item *
667
668New %ENV entries now propagate to subprocesses.
669
670=item *
671
672$ENV{LIB} now used to search for libs under Visual C.
673
674=item *
675
676A failed (pseudo)fork now returns undef and sets errno to EAGAIN.
677
678=item *
679
680Allow REG_EXPAND_SZ keys in the registry.
681
682=item *
683
684Can now send() from all threads, not just the first one.
685
686=item *
687
688Fake signal handling reenabled, bugs and all.
689
690=item *
691
692Less stack reserved per thread so that more threads can run
0aa7271f 693concurrently. (Still 16M per thread.)
53080bb1
JH
694
695=item *
696
697C<File::Spec->tmpdir()> now prefers C:/temp over /tmp
0aa7271f 698(works better when perl is running as service).
53080bb1
JH
699
700=item *
701
702Better UNC path handling under ithreads.
703
704=item *
705
706wait() and waitpid() now work much better.
707
708=item *
709
710winsock handle leak fixed.
711
712=back
713
cc0fca54
GS
714=head1 New or Changed Diagnostics
715
53080bb1
JH
716All regular expression compilation error messages are now hopefully
717easier to understand both because the error message now comes before
718the failed regex and because the point of failure is now clearly
719marked.
720
721The various "opened only for", "on closed", "never opened" warnings
722drop the C<main::> prefix for filehandles in the C<main> package,
562628a3 723for example C<STDIN> instead of <main::STDIN>.
53080bb1 724
d4ad863d
JH
725The "Unrecognized escape" warning has been extended to include C<\8>,
726C<\9>, and C<\_>. There is no need to escape any of the C<\w> characters.
53080bb1 727
53080bb1
JH
728=head1 Changed Internals
729
ce72e97c
JH
730=over 4
731
732=item *
53080bb1 733
d4ad863d
JH
734perlapi.pod (a companion to perlguts) now attempts to document the
735internal API.
53080bb1 736
ce72e97c 737=item *
53080bb1 738
ce72e97c 739You can now build a really minimal perl called microperl.
d4ad863d
JH
740Building microperl does not require even running Configure;
741C<make -f Makefile.micro> should be enough. Beware: microperl makes
742many assumptions, some of which may be too bold; the resulting
0aa7271f
JH
743executable may crash or otherwise misbehave in wondrous ways.
744For careful hackers only.
53080bb1 745
ce72e97c 746=item *
53080bb1 747
43b92eec 748Added rsignal(), whichsig(), do_join() to the publicised API.
53080bb1 749
ce72e97c 750=item *
53080bb1 751
43b92eec 752Made possible to propagate customised exceptions via croak()ing.
53080bb1 753
ce72e97c 754=item *
53080bb1
JH
755
756Added is_utf8_char(), is_utf8_string(), bytes_to_utf8(), and utf8_to_bytes().
757
ce72e97c 758=item *
53080bb1
JH
759
760Now xsubs can have attributes just like subs.
761
ce72e97c
JH
762=back
763
cc0fca54
GS
764=head1 Known Problems
765
53080bb1
JH
766=head2 Unicode Support Still Far From Perfect
767
768We're working on it. Stay tuned.
769
770=head2 EBCDIC Still A Lost Platform
771
772The plan is to bring them back.
773
774=head2 Building Extensions Can Fail Because Of Largefiles
775
776Certain extensions like mod_perl and BSD::Resource are known to have
ce72e97c 777issues with `largefiles', a change brought by Perl 5.6.0 in which file
4b2ec495 778offsets default to 64 bits wide, where supported. Modules may fail to
ce72e97c 779compile at all or compile and work incorrectly. Currently there is no
4b2ec495
JH
780good solution for the problem, but Configure now provides appropriate
781non-largefile ccflags, ldflags, libswanted, and libs in the %Config
782hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are
783having problems can try configuring themselves without the
784largefileness. This is admittedly not a clean solution, and the
785solution may not even work at all. One potential failure is whether
786one can (or, if one can, whether it's a good idea) link together at
787all binaries with different ideas about file offsets, all this is
788platform-dependent.
53080bb1 789
9dc46381
JH
790=head2 ftmp-security tests warn 'system possibly insecure'
791
792Don't panic. Read INSTALL 'make test' section instead.
793
446288b8
JH
794=head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX
795
796If perl is configured with -Duse64bitall, the successful result of the
797subtest 10 of lib/posix may arrive before the successful result of the
798subtest 9, which confuses the test harness so much that it thinks the
799subtest 9 failed.
800
9dc46381
JH
801=head2 Long Doubles Still Don't Work In Solaris
802
803The experimental long double support is still very much so in Solaris.
2ff7ee21
CB
804(Other platforms like Linux and Tru64 are beginning to solidify in
805this area.)
d184b07b 806
1047c2b3
JH
807=head2 Linux With Sfio Fails op/misc Test 48
808
809No known fix.
810
d184b07b
JH
811=head2 Storable tests fail in some platforms
812
2ff7ee21
CB
813If any Storable tests fail the use of Storable is not advisable.
814
d184b07b
JH
815=over 4
816
817=item *
818
819Many Storable tests fail on AIX configured with 64 bit integers.
820
821So far unidentified problems break Storable in AIX if Perl is
822configured to use 64 bit integers. AIX in 32-bit mode works and
823other 64-bit platforms work with Storable.
824
825=item *
826
827DOS DJGPP may hang when testing Storable.
828
829=item *
830
831st-06compat fails in UNICOS and UNICOS/mk.
24e657a8
JH
832
833This means that you cannot read old (pre-Storable-0.7) Storable images
834made in other platforms.
835
2ff7ee21
CB
836=item *
837
838st-store.t and st-retrieve may fail with Compaq C 6.2 on OpenVMS Alpha 7.2.
839
33a87e58
JH
840=head2 Threads Are Still Experimental
841
842Multithreading is still an experimental feature. Some platforms
843emit the following message for lib/thr5005
844
845 #
846 # This is a KNOWN FAILURE, and one of the reasons why threading
847 # is still an experimental feature. It is here to stop people
848 # from deploying threads in production. ;-)
849 #
850
0aa7271f 851and another known thread-related warning is
33a87e58
JH
852
853 pragma/overload......Unbalanced saves: 3 more saves than restores
854 panic: magic_mutexfree during global destruction.
855 ok
856 lib/selfloader.......Unbalanced saves: 3 more saves than restores
857 panic: magic_mutexfree during global destruction.
858 ok
859 lib/st-dclone........Unbalanced saves: 3 more saves than restores
860 panic: magic_mutexfree during global destruction.
861 ok
862
863=head2 The Compiler Suite Is Still Experimental
864
0aa7271f
JH
865The compiler suite is slowly getting better but is nowhere near
866working order yet. The backend part that has seen perhaps the most
867progress is the bytecode compiler.
33a87e58 868
d184b07b
JH
869=back
870
cc0fca54
GS
871=head1 Reporting Bugs
872
d4ad863d
JH
873If you find what you think is a bug, you might check the articles
874recently posted to the comp.lang.perl.misc newsgroup and the perl
875bug database at http://bugs.perl.org. There may also be
876information at http://www.perl.com/perl/, the Perl Home Page.
cc0fca54
GS
877
878If you believe you have an unreported bug, please run the B<perlbug>
879program included with your release. Be sure to trim your bug down
880to a tiny but sufficient test case. Your bug report, along with the
d4ad863d 881output of C<perl -V>, will be sent off to perlbug@perl.org to be
cc0fca54
GS
882analysed by the Perl porting team.
883
884=head1 SEE ALSO
885
886The F<Changes> file for exhaustive details on what changed.
887
888The F<INSTALL> file for how to build Perl.
889
890The F<README> file for general stuff.
891
892The F<Artistic> and F<Copying> files for copyright information.
893
894=head1 HISTORY
895
53080bb1
JH
896Written by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions
897from The Perl Porters and Perl Users submitting feedback and patches.
cc0fca54 898
d4ad863d 899Send omissions or corrections to <F<perlbug@perl.org>>.
cc0fca54
GS
900
901=cut