xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/pod/perl572delta.pod (revision 0:68f95e015346)
1*0Sstevel@tonic-gate=head1 NAME
2*0Sstevel@tonic-gate
3*0Sstevel@tonic-gateperl572delta - what's new for perl v5.7.2
4*0Sstevel@tonic-gate
5*0Sstevel@tonic-gate=head1 DESCRIPTION
6*0Sstevel@tonic-gate
7*0Sstevel@tonic-gateThis document describes differences between the 5.7.1 release and the
8*0Sstevel@tonic-gate5.7.2 release.
9*0Sstevel@tonic-gate
10*0Sstevel@tonic-gate(To view the differences between the 5.6.0 release and the 5.7.0
11*0Sstevel@tonic-gaterelease, see L<perl570delta>.  To view the differences between the
12*0Sstevel@tonic-gate5.7.0 release and the 5.7.1 release, see L<perl571delta>.)
13*0Sstevel@tonic-gate
14*0Sstevel@tonic-gate=head1 Security Vulnerability Closed
15*0Sstevel@tonic-gate
16*0Sstevel@tonic-gate(This change was already made in 5.7.0 but bears repeating here.)
17*0Sstevel@tonic-gate
18*0Sstevel@tonic-gateA security vulnerability affecting all Perl versions prior to 5.6.1
19*0Sstevel@tonic-gatewas found in August 2000.  The vulnerability does not affect default
20*0Sstevel@tonic-gateinstallations and as far as is known affects only the Linux platform.
21*0Sstevel@tonic-gate
22*0Sstevel@tonic-gateYou should upgrade your Perl to 5.6.1 as soon as possible.  Patches
23*0Sstevel@tonic-gatefor earlier releases exist but using the patches require full
24*0Sstevel@tonic-gaterecompilation from the source code anyway, so 5.6.1 is your best
25*0Sstevel@tonic-gatechoice.
26*0Sstevel@tonic-gate
27*0Sstevel@tonic-gateSee http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt
28*0Sstevel@tonic-gatefor more information.
29*0Sstevel@tonic-gate
30*0Sstevel@tonic-gate=head1 Incompatible Changes
31*0Sstevel@tonic-gate
32*0Sstevel@tonic-gate=head2 64-bit platforms and malloc
33*0Sstevel@tonic-gate
34*0Sstevel@tonic-gateIf your pointers are 64 bits wide, the Perl malloc is no more being
35*0Sstevel@tonic-gateused because it simply does not work with 8-byte pointers.  Also,
36*0Sstevel@tonic-gateusually the system malloc on such platforms are much better optimized
37*0Sstevel@tonic-gatefor such large memory models than the Perl malloc.
38*0Sstevel@tonic-gate
39*0Sstevel@tonic-gate=head2 AIX Dynaloading
40*0Sstevel@tonic-gate
41*0Sstevel@tonic-gateThe AIX dynaloading now uses in AIX releases 4.3 and newer the native
42*0Sstevel@tonic-gatedlopen interface of AIX instead of the old emulated interface.  This
43*0Sstevel@tonic-gatechange will probably break backward compatibility with compiled
44*0Sstevel@tonic-gatemodules.  The change was made to make Perl more compliant with other
45*0Sstevel@tonic-gateapplications like modperl which are using the AIX native interface.
46*0Sstevel@tonic-gate
47*0Sstevel@tonic-gate=head2 Socket Extension Dynamic in VMS
48*0Sstevel@tonic-gate
49*0Sstevel@tonic-gateThe Socket extension is now dynamically loaded instead of being
50*0Sstevel@tonic-gatestatically built in.  This may or may not be a problem with ancient
51*0Sstevel@tonic-gateTCP/IP stacks of VMS: we do not know since we weren't able to test
52*0Sstevel@tonic-gatePerl in such configurations.
53*0Sstevel@tonic-gate
54*0Sstevel@tonic-gate=head2 Different Definition of the Unicode Character Classes \p{In...}
55*0Sstevel@tonic-gate
56*0Sstevel@tonic-gateAs suggested by the Unicode consortium, the Unicode character classes
57*0Sstevel@tonic-gatenow prefer I<scripts> as opposed to I<blocks> (as defined by Unicode);
58*0Sstevel@tonic-gatein Perl, when the C<\p{In....}> and the C<\p{In....}> regular expression
59*0Sstevel@tonic-gateconstructs are used.  This has changed the definition of some of those
60*0Sstevel@tonic-gatecharacter classes.
61*0Sstevel@tonic-gate
62*0Sstevel@tonic-gateThe difference between scripts and blocks is that scripts are the
63*0Sstevel@tonic-gateglyphs used by a language or a group of languages, while the blocks
64*0Sstevel@tonic-gateare more artificial groupings of 256 characters based on the Unicode
65*0Sstevel@tonic-gatenumbering.
66*0Sstevel@tonic-gate
67*0Sstevel@tonic-gateIn general this change results in more inclusive Unicode character
68*0Sstevel@tonic-gateclasses, but changes to the other direction also do take place:
69*0Sstevel@tonic-gatefor example while the script C<Latin> includes all the Latin
70*0Sstevel@tonic-gatecharacters and their various diacritic-adorned versions, it
71*0Sstevel@tonic-gatedoes not include the various punctuation or digits (since they
72*0Sstevel@tonic-gateare not solely C<Latin>).
73*0Sstevel@tonic-gate
74*0Sstevel@tonic-gateChanges in the character class semantics may have happened if a script
75*0Sstevel@tonic-gateand a block happen to have the same name, for example C<Hebrew>.
76*0Sstevel@tonic-gateIn such cases the script wins and C<\p{InHebrew}> now means the script
77*0Sstevel@tonic-gatedefinition of Hebrew.  The block definition in still available,
78*0Sstevel@tonic-gatethough, by appending C<Block> to the name: C<\p{InHebrewBlock}> means
79*0Sstevel@tonic-gatewhat C<\p{InHebrew}> meant in perl 5.6.0.  For the full list
80*0Sstevel@tonic-gateof affected character classes, see L<perlunicode/Blocks>.
81*0Sstevel@tonic-gate
82*0Sstevel@tonic-gate=head2 Deprecations
83*0Sstevel@tonic-gate
84*0Sstevel@tonic-gateThe current user-visible implementation of pseudo-hashes (the weird
85*0Sstevel@tonic-gateuse of the first array element) is deprecated starting from Perl 5.8.0
86*0Sstevel@tonic-gateand will be removed in Perl 5.10.0, and the feature will be
87*0Sstevel@tonic-gateimplemented differently.  Not only is the current interface rather
88*0Sstevel@tonic-gateugly, but the current implementation slows down normal array and hash
89*0Sstevel@tonic-gateuse quite noticeably. The C<fields> pragma interface will remain
90*0Sstevel@tonic-gateavailable.
91*0Sstevel@tonic-gate
92*0Sstevel@tonic-gateThe syntaxes C<< @a->[...] >> and  C<< @h->{...} >> have now been deprecated.
93*0Sstevel@tonic-gate
94*0Sstevel@tonic-gateThe suidperl is also considered to be too much a risk to continue
95*0Sstevel@tonic-gatemaintaining and the suidperl code is likely to be removed in a future
96*0Sstevel@tonic-gaterelease.
97*0Sstevel@tonic-gate
98*0Sstevel@tonic-gateThe C<package;> syntax (C<package> without an argument has been
99*0Sstevel@tonic-gatedeprecated.  Its semantics were never that clear and its
100*0Sstevel@tonic-gateimplementation even less so.  If you have used that feature to
101*0Sstevel@tonic-gatedisallow all but fully qualified variables, C<use strict;> instead.
102*0Sstevel@tonic-gate
103*0Sstevel@tonic-gateThe chdir(undef) and chdir('') behaviors to match chdir() has been
104*0Sstevel@tonic-gatedeprecated.  In future versions, chdir(undef) and chdir('') will
105*0Sstevel@tonic-gatesimply fail.
106*0Sstevel@tonic-gate
107*0Sstevel@tonic-gate=head1 Core Enhancements
108*0Sstevel@tonic-gate
109*0Sstevel@tonic-gateIn general a lot of fixing has happened in the area of Perl's
110*0Sstevel@tonic-gateunderstanding of numbers, both integer and floating point.  Since in
111*0Sstevel@tonic-gatemany systems the standard number parsing functions like C<strtoul()>
112*0Sstevel@tonic-gateand C<atof()> seem to have bugs, Perl tries to work around their
113*0Sstevel@tonic-gatedeficiencies.  This results hopefully in more accurate numbers.
114*0Sstevel@tonic-gate
115*0Sstevel@tonic-gate=over 4
116*0Sstevel@tonic-gate
117*0Sstevel@tonic-gate=item *
118*0Sstevel@tonic-gate
119*0Sstevel@tonic-gateThe rules for allowing underscores (underbars) in numeric constants
120*0Sstevel@tonic-gatehave been relaxed and simplified: now you can have an underscore
121*0Sstevel@tonic-gateB<between digits>.
122*0Sstevel@tonic-gate
123*0Sstevel@tonic-gate=item *
124*0Sstevel@tonic-gate
125*0Sstevel@tonic-gateGMAGIC (right-hand side magic) could in many cases such as string
126*0Sstevel@tonic-gateconcatenation be invoked too many times.
127*0Sstevel@tonic-gate
128*0Sstevel@tonic-gate=item *
129*0Sstevel@tonic-gate
130*0Sstevel@tonic-gateLexicals I: lexicals outside an eval "" weren't resolved
131*0Sstevel@tonic-gatecorrectly inside a subroutine definition inside the eval "" if they
132*0Sstevel@tonic-gatewere not already referenced in the top level of the eval""ed code.
133*0Sstevel@tonic-gate
134*0Sstevel@tonic-gate=item *
135*0Sstevel@tonic-gate
136*0Sstevel@tonic-gateLexicals II: lexicals leaked at file scope into subroutines that
137*0Sstevel@tonic-gatewere declared before the lexicals.
138*0Sstevel@tonic-gate
139*0Sstevel@tonic-gate=item *
140*0Sstevel@tonic-gate
141*0Sstevel@tonic-gateLvalue subroutines can now return C<undef> in list context.
142*0Sstevel@tonic-gate
143*0Sstevel@tonic-gate=item *
144*0Sstevel@tonic-gate
145*0Sstevel@tonic-gateThe C<op_clear> and C<op_null> are now exported.
146*0Sstevel@tonic-gate
147*0Sstevel@tonic-gate=item *
148*0Sstevel@tonic-gate
149*0Sstevel@tonic-gateA new special regular expression variable has been introduced:
150*0Sstevel@tonic-gateC<$^N>, which contains the most-recently closed group (submatch).
151*0Sstevel@tonic-gate
152*0Sstevel@tonic-gate=item *
153*0Sstevel@tonic-gate
154*0Sstevel@tonic-gateL<utime> now supports C<utime undef, undef, @files> to change the
155*0Sstevel@tonic-gatefile timestamps to the current time.
156*0Sstevel@tonic-gate
157*0Sstevel@tonic-gate=item *
158*0Sstevel@tonic-gate
159*0Sstevel@tonic-gateThe Perl parser has been stress tested using both random input and
160*0Sstevel@tonic-gateMarkov chain input.
161*0Sstevel@tonic-gate
162*0Sstevel@tonic-gate=item *
163*0Sstevel@tonic-gate
164*0Sstevel@tonic-gateC<eval "v200"> now works.
165*0Sstevel@tonic-gate
166*0Sstevel@tonic-gate=item *
167*0Sstevel@tonic-gate
168*0Sstevel@tonic-gateVMS now works under PerlIO.
169*0Sstevel@tonic-gate
170*0Sstevel@tonic-gate=item *
171*0Sstevel@tonic-gate
172*0Sstevel@tonic-gateEND blocks are now run even if you exit/die in a BEGIN block.
173*0Sstevel@tonic-gateThe execution of END blocks is now controlled by
174*0Sstevel@tonic-gatePL_exit_flags & PERL_EXIT_DESTRUCT_END. This enables the new
175*0Sstevel@tonic-gatebehaviour for perl embedders. This will default in 5.10. See
176*0Sstevel@tonic-gateL<perlembed>.
177*0Sstevel@tonic-gate
178*0Sstevel@tonic-gate=back
179*0Sstevel@tonic-gate
180*0Sstevel@tonic-gate=head1 Modules and Pragmata
181*0Sstevel@tonic-gate
182*0Sstevel@tonic-gate=head2 New Modules and Distributions
183*0Sstevel@tonic-gate
184*0Sstevel@tonic-gate=over 4
185*0Sstevel@tonic-gate
186*0Sstevel@tonic-gate=item *
187*0Sstevel@tonic-gate
188*0Sstevel@tonic-gateL<Attribute::Handlers> - Simpler definition of attribute handlers
189*0Sstevel@tonic-gate
190*0Sstevel@tonic-gate=item *
191*0Sstevel@tonic-gate
192*0Sstevel@tonic-gateL<ExtUtils::Constant> - generate XS code to import C header constants
193*0Sstevel@tonic-gate
194*0Sstevel@tonic-gate=item *
195*0Sstevel@tonic-gate
196*0Sstevel@tonic-gateL<I18N::Langinfo> - query locale information
197*0Sstevel@tonic-gate
198*0Sstevel@tonic-gate=item *
199*0Sstevel@tonic-gate
200*0Sstevel@tonic-gateL<I18N::LangTags> - functions for dealing with RFC3066-style language tags
201*0Sstevel@tonic-gate
202*0Sstevel@tonic-gate=item *
203*0Sstevel@tonic-gate
204*0Sstevel@tonic-gateL<libnet> - a collection of perl5 modules related to network programming
205*0Sstevel@tonic-gate
206*0Sstevel@tonic-gatePerl installation leaves libnet unconfigured, use F<libnetcfg> to configure.
207*0Sstevel@tonic-gate
208*0Sstevel@tonic-gate=item *
209*0Sstevel@tonic-gate
210*0Sstevel@tonic-gateL<List::Util> - selection of general-utility list subroutines
211*0Sstevel@tonic-gate
212*0Sstevel@tonic-gate=item *
213*0Sstevel@tonic-gate
214*0Sstevel@tonic-gateL<Locale::Maketext> - framework for localization
215*0Sstevel@tonic-gate
216*0Sstevel@tonic-gate=item *
217*0Sstevel@tonic-gate
218*0Sstevel@tonic-gateL<Memoize> - Make your functions faster by trading space for time
219*0Sstevel@tonic-gate
220*0Sstevel@tonic-gate=item *
221*0Sstevel@tonic-gate
222*0Sstevel@tonic-gateL<NEXT> - pseudo-class for method redispatch
223*0Sstevel@tonic-gate
224*0Sstevel@tonic-gate=item *
225*0Sstevel@tonic-gate
226*0Sstevel@tonic-gateL<Scalar::Util> - selection of general-utility scalar subroutines
227*0Sstevel@tonic-gate
228*0Sstevel@tonic-gate=item *
229*0Sstevel@tonic-gate
230*0Sstevel@tonic-gateL<Test::More> - yet another framework for writing test scripts
231*0Sstevel@tonic-gate
232*0Sstevel@tonic-gate=item *
233*0Sstevel@tonic-gate
234*0Sstevel@tonic-gateL<Test::Simple> - Basic utilities for writing tests
235*0Sstevel@tonic-gate
236*0Sstevel@tonic-gate=item *
237*0Sstevel@tonic-gate
238*0Sstevel@tonic-gateL<Time::HiRes> - high resolution ualarm, usleep, and gettimeofday
239*0Sstevel@tonic-gate
240*0Sstevel@tonic-gate=item *
241*0Sstevel@tonic-gate
242*0Sstevel@tonic-gateL<Time::Piece> - Object Oriented time objects
243*0Sstevel@tonic-gate
244*0Sstevel@tonic-gate(Previously known as L<Time::Object>.)
245*0Sstevel@tonic-gate
246*0Sstevel@tonic-gate=item *
247*0Sstevel@tonic-gate
248*0Sstevel@tonic-gateL<Time::Seconds> - a simple API to convert seconds to other date values
249*0Sstevel@tonic-gate
250*0Sstevel@tonic-gate=item *
251*0Sstevel@tonic-gate
252*0Sstevel@tonic-gateL<UnicodeCD> - Unicode Character Database
253*0Sstevel@tonic-gate
254*0Sstevel@tonic-gate=back
255*0Sstevel@tonic-gate
256*0Sstevel@tonic-gate=head2 Updated And Improved Modules and Pragmata
257*0Sstevel@tonic-gate
258*0Sstevel@tonic-gate=over 4
259*0Sstevel@tonic-gate
260*0Sstevel@tonic-gate=item *
261*0Sstevel@tonic-gate
262*0Sstevel@tonic-gateL<B::Deparse> module has been significantly enhanced.  It now
263*0Sstevel@tonic-gatecan deparse almost all of the standard test suite (so that the
264*0Sstevel@tonic-gatetests still succeed).  There is a make target "test.deparse"
265*0Sstevel@tonic-gatefor trying this out.
266*0Sstevel@tonic-gate
267*0Sstevel@tonic-gate=item *
268*0Sstevel@tonic-gate
269*0Sstevel@tonic-gateL<Class::Struct> now assigns the array/hash element if the accessor
270*0Sstevel@tonic-gateis called with an array/hash element as the B<sole> argument.
271*0Sstevel@tonic-gate
272*0Sstevel@tonic-gate=item *
273*0Sstevel@tonic-gate
274*0Sstevel@tonic-gateL<Cwd> extension is now (even) faster.
275*0Sstevel@tonic-gate
276*0Sstevel@tonic-gate=item *
277*0Sstevel@tonic-gate
278*0Sstevel@tonic-gateL<DB_File> extension has been updated to version 1.77.
279*0Sstevel@tonic-gate
280*0Sstevel@tonic-gate=item *
281*0Sstevel@tonic-gate
282*0Sstevel@tonic-gateL<Fcntl>, L<Socket>, and L<Sys::Syslog> have been rewritten to use the
283*0Sstevel@tonic-gatenew-style constant dispatch section (see L<ExtUtils::Constant>).
284*0Sstevel@tonic-gate
285*0Sstevel@tonic-gate=item *
286*0Sstevel@tonic-gate
287*0Sstevel@tonic-gateL<File::Find> is now (again) reentrant.  It also has been made
288*0Sstevel@tonic-gatemore portable.
289*0Sstevel@tonic-gate
290*0Sstevel@tonic-gate=item *
291*0Sstevel@tonic-gate
292*0Sstevel@tonic-gateL<File::Glob> now supports C<GLOB_LIMIT> constant to limit the
293*0Sstevel@tonic-gatesize of the returned list of filenames.
294*0Sstevel@tonic-gate
295*0Sstevel@tonic-gate=item *
296*0Sstevel@tonic-gate
297*0Sstevel@tonic-gateL<IO::Socket::INET> now supports C<LocalPort> of zero (usually meaning
298*0Sstevel@tonic-gatethat the operating system will make one up.)
299*0Sstevel@tonic-gate
300*0Sstevel@tonic-gate=item *
301*0Sstevel@tonic-gate
302*0Sstevel@tonic-gateThe L<vars> pragma now supports declaring fully qualified variables.
303*0Sstevel@tonic-gate(Something that C<our()> does not and will not support.)
304*0Sstevel@tonic-gate
305*0Sstevel@tonic-gate=back
306*0Sstevel@tonic-gate
307*0Sstevel@tonic-gate=head1 Utility Changes
308*0Sstevel@tonic-gate
309*0Sstevel@tonic-gate=over 4
310*0Sstevel@tonic-gate
311*0Sstevel@tonic-gate=item *
312*0Sstevel@tonic-gate
313*0Sstevel@tonic-gateThe F<emacs/e2ctags.pl> is now much faster.
314*0Sstevel@tonic-gate
315*0Sstevel@tonic-gate=item *
316*0Sstevel@tonic-gate
317*0Sstevel@tonic-gateL<h2ph> now supports C trigraphs.
318*0Sstevel@tonic-gate
319*0Sstevel@tonic-gate=item *
320*0Sstevel@tonic-gate
321*0Sstevel@tonic-gateL<h2xs> uses the new L<ExtUtils::Constant> module which will affect
322*0Sstevel@tonic-gatenewly created extensions that define constants.  Since the new code is
323*0Sstevel@tonic-gatemore correct (if you have two constants where the first one is a
324*0Sstevel@tonic-gateprefix of the second one, the first constant B<never> gets defined),
325*0Sstevel@tonic-gateless lossy (it uses integers for integer constant, as opposed to the
326*0Sstevel@tonic-gateold code that used floating point numbers even for integer constants),
327*0Sstevel@tonic-gateand slightly faster, you might want to consider regenerating your
328*0Sstevel@tonic-gateextension code (the new scheme makes regenerating easy).
329*0Sstevel@tonic-gateL<h2xs> now also supports C trigraphs.
330*0Sstevel@tonic-gate
331*0Sstevel@tonic-gate=item *
332*0Sstevel@tonic-gate
333*0Sstevel@tonic-gateL<libnetcfg> has been added to configure the libnet.
334*0Sstevel@tonic-gate
335*0Sstevel@tonic-gate=item *
336*0Sstevel@tonic-gate
337*0Sstevel@tonic-gateThe F<Pod::Html> (and thusly L<pod2html>) now allows specifying
338*0Sstevel@tonic-gatea cache directory.
339*0Sstevel@tonic-gate
340*0Sstevel@tonic-gate=back
341*0Sstevel@tonic-gate
342*0Sstevel@tonic-gate=head1 New Documentation
343*0Sstevel@tonic-gate
344*0Sstevel@tonic-gate=over 4
345*0Sstevel@tonic-gate
346*0Sstevel@tonic-gate=item *
347*0Sstevel@tonic-gate
348*0Sstevel@tonic-gateL<Locale::Maketext::TPJ13> is an article about software localization,
349*0Sstevel@tonic-gateoriginally published in The Perl Journal #13, republished here with
350*0Sstevel@tonic-gatekind permission.
351*0Sstevel@tonic-gate
352*0Sstevel@tonic-gate=item *
353*0Sstevel@tonic-gate
354*0Sstevel@tonic-gateMore README.$PLATFORM files have been converted into pod, which also
355*0Sstevel@tonic-gatemeans that they also be installed as perl$PLATFORM documentation
356*0Sstevel@tonic-gatefiles.  The new files are L<perlapollo>, L<perlbeos>, L<perldgux>,
357*0Sstevel@tonic-gateL<perlhurd>, L<perlmint>, L<perlnetware>, L<perlplan9>, L<perlqnx>,
358*0Sstevel@tonic-gateand L<perltru64>.
359*0Sstevel@tonic-gate
360*0Sstevel@tonic-gate=item *
361*0Sstevel@tonic-gate
362*0Sstevel@tonic-gateThe F<Todo> and F<Todo-5.6> files have been merged into L<perltodo>.
363*0Sstevel@tonic-gate
364*0Sstevel@tonic-gate=item *
365*0Sstevel@tonic-gate
366*0Sstevel@tonic-gateUse of the F<gprof> tool to profile Perl has been documented in
367*0Sstevel@tonic-gateL<perlhack>.  There is a make target "perl.gprof" for generating a
368*0Sstevel@tonic-gategprofiled Perl executable.
369*0Sstevel@tonic-gate
370*0Sstevel@tonic-gate=back
371*0Sstevel@tonic-gate
372*0Sstevel@tonic-gate=head1 Installation and Configuration Improvements
373*0Sstevel@tonic-gate
374*0Sstevel@tonic-gate=head2 New Or Improved Platforms
375*0Sstevel@tonic-gate
376*0Sstevel@tonic-gate=over 4
377*0Sstevel@tonic-gate
378*0Sstevel@tonic-gate=item *
379*0Sstevel@tonic-gate
380*0Sstevel@tonic-gateAIX should now work better with gcc, threads, and 64-bitness.  Also the
381*0Sstevel@tonic-gatelong doubles support in AIX should be better now.  See L<perlaix>.
382*0Sstevel@tonic-gate
383*0Sstevel@tonic-gate=item *
384*0Sstevel@tonic-gate
385*0Sstevel@tonic-gateAtheOS ( http://www.atheos.cx/ ) is a new platform.
386*0Sstevel@tonic-gate
387*0Sstevel@tonic-gate=item *
388*0Sstevel@tonic-gate
389*0Sstevel@tonic-gateDG/UX platform now supports the 5.005-style threads.  See L<perldgux>.
390*0Sstevel@tonic-gate
391*0Sstevel@tonic-gate=item *
392*0Sstevel@tonic-gate
393*0Sstevel@tonic-gateDYNIX/ptx platform (a.k.a. dynixptx) is supported at or near osvers 4.5.2.
394*0Sstevel@tonic-gate
395*0Sstevel@tonic-gate=item *
396*0Sstevel@tonic-gate
397*0Sstevel@tonic-gateSeveral Mac OS (Classic) portability patches have been applied.  We
398*0Sstevel@tonic-gatehope to get a fully working port by 5.8.0.  (The remaining problems
399*0Sstevel@tonic-gaterelate to the changed IO model of Perl.)  See L<perlmacos>.
400*0Sstevel@tonic-gate
401*0Sstevel@tonic-gate=item *
402*0Sstevel@tonic-gate
403*0Sstevel@tonic-gateMac OS X (or Darwin) should now be able to build Perl even on HFS+
404*0Sstevel@tonic-gatefilesystems.  (The case-insensitivity confused the Perl build process.)
405*0Sstevel@tonic-gate
406*0Sstevel@tonic-gate=item *
407*0Sstevel@tonic-gate
408*0Sstevel@tonic-gateNetWare from Novell is now supported.  See L<perlnetware>.
409*0Sstevel@tonic-gate
410*0Sstevel@tonic-gate=item *
411*0Sstevel@tonic-gate
412*0Sstevel@tonic-gateThe Amdahl UTS UNIX mainframe platform is now supported.
413*0Sstevel@tonic-gate
414*0Sstevel@tonic-gate=back
415*0Sstevel@tonic-gate
416*0Sstevel@tonic-gate=head2 Generic Improvements
417*0Sstevel@tonic-gate
418*0Sstevel@tonic-gate=over 4
419*0Sstevel@tonic-gate
420*0Sstevel@tonic-gate=item *
421*0Sstevel@tonic-gate
422*0Sstevel@tonic-gateIn AFS installations one can configure the root of the AFS to be
423*0Sstevel@tonic-gatesomewhere else than the default F</afs> by using the Configure
424*0Sstevel@tonic-gateparameter C<-Dafsroot=/some/where/else>.
425*0Sstevel@tonic-gate
426*0Sstevel@tonic-gate=item *
427*0Sstevel@tonic-gate
428*0Sstevel@tonic-gateThe version of Berkeley DB used when the Perl (and, presumably, the
429*0Sstevel@tonic-gateDB_File extension) was built is now available as
430*0Sstevel@tonic-gateC<@Config{qw(db_version_major db_version_minor db_version_patch)}>
431*0Sstevel@tonic-gatefrom Perl and as C<DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG
432*0Sstevel@tonic-gateDB_VERSION_PATCH_CFG> from C.
433*0Sstevel@tonic-gate
434*0Sstevel@tonic-gate=item *
435*0Sstevel@tonic-gate
436*0Sstevel@tonic-gateThe Thread extension is now not built at all under ithreads
437*0Sstevel@tonic-gate(C<Configure -Duseithreads>) because it wouldn't work anyway (the
438*0Sstevel@tonic-gateThread extension requires being Configured with C<-Duse5005threads>).
439*0Sstevel@tonic-gate
440*0Sstevel@tonic-gate=item *
441*0Sstevel@tonic-gate
442*0Sstevel@tonic-gateThe C<B::Deparse> compiler backend has been so significantly improved
443*0Sstevel@tonic-gatethat almost the whole Perl test suite passes after being deparsed.  A
444*0Sstevel@tonic-gatemake target has been added to help in further testing: C<make test.deparse>.
445*0Sstevel@tonic-gate
446*0Sstevel@tonic-gate=back
447*0Sstevel@tonic-gate
448*0Sstevel@tonic-gate=head1 Selected Bug Fixes
449*0Sstevel@tonic-gate
450*0Sstevel@tonic-gate=over 5
451*0Sstevel@tonic-gate
452*0Sstevel@tonic-gate=item *
453*0Sstevel@tonic-gate
454*0Sstevel@tonic-gateThe autouse pragma didn't work for Multi::Part::Function::Names.
455*0Sstevel@tonic-gate
456*0Sstevel@tonic-gate=item *
457*0Sstevel@tonic-gate
458*0Sstevel@tonic-gateThe behaviour of non-decimal but numeric string constants such as
459*0Sstevel@tonic-gate"0x23" was platform-dependent: in some platforms that was seen as 35,
460*0Sstevel@tonic-gatein some as 0, in some as a floating point number (don't ask).  This
461*0Sstevel@tonic-gatewas caused by Perl using the operating system libraries in a situation
462*0Sstevel@tonic-gatewhere the result of the string to number conversion is undefined: now
463*0Sstevel@tonic-gatePerl consistently handles such strings as zero in numeric contexts.
464*0Sstevel@tonic-gate
465*0Sstevel@tonic-gate=item *
466*0Sstevel@tonic-gate
467*0Sstevel@tonic-gateL<dprofpp> -R didn't work.
468*0Sstevel@tonic-gate
469*0Sstevel@tonic-gate=item *
470*0Sstevel@tonic-gate
471*0Sstevel@tonic-gatePERL5OPT with embedded spaces didn't work.
472*0Sstevel@tonic-gate
473*0Sstevel@tonic-gate=item *
474*0Sstevel@tonic-gate
475*0Sstevel@tonic-gateL<Sys::Syslog> ignored the C<LOG_AUTH> constant.
476*0Sstevel@tonic-gate
477*0Sstevel@tonic-gate=back
478*0Sstevel@tonic-gate
479*0Sstevel@tonic-gate=head2 Platform Specific Changes and Fixes
480*0Sstevel@tonic-gate
481*0Sstevel@tonic-gate=over 4
482*0Sstevel@tonic-gate
483*0Sstevel@tonic-gate=item *
484*0Sstevel@tonic-gate
485*0Sstevel@tonic-gateSome versions of glibc have a broken modfl().  This affects builds
486*0Sstevel@tonic-gatewith C<-Duselongdouble>.  This version of Perl detects this brokenness
487*0Sstevel@tonic-gateand has a workaround for it.  The glibc release 2.2.2 is known to have
488*0Sstevel@tonic-gatefixed the modfl() bug.
489*0Sstevel@tonic-gate
490*0Sstevel@tonic-gate=back
491*0Sstevel@tonic-gate
492*0Sstevel@tonic-gate=head1 New or Changed Diagnostics
493*0Sstevel@tonic-gate
494*0Sstevel@tonic-gate=over 4
495*0Sstevel@tonic-gate
496*0Sstevel@tonic-gate=item *
497*0Sstevel@tonic-gate
498*0Sstevel@tonic-gateIn the regular expression diagnostics the C<E<lt>E<lt> HERE> marker
499*0Sstevel@tonic-gateintroduced in 5.7.0 has been changed to be C<E<lt>-- HERE> since too
500*0Sstevel@tonic-gatemany people found the C<E<lt>E<lt>> to be too similar to here-document
501*0Sstevel@tonic-gatestarters.
502*0Sstevel@tonic-gate
503*0Sstevel@tonic-gate=item *
504*0Sstevel@tonic-gate
505*0Sstevel@tonic-gateIf you try to L<perlfunc/pack> a number less than 0 or larger than 255
506*0Sstevel@tonic-gateusing the C<"C"> format you will get an optional warning.  Similarly
507*0Sstevel@tonic-gatefor the C<"c"> format and a number less than -128 or more than 127.
508*0Sstevel@tonic-gate
509*0Sstevel@tonic-gate=item *
510*0Sstevel@tonic-gate
511*0Sstevel@tonic-gateCertain regex modifiers such as C<(?o)> make sense only if applied to
512*0Sstevel@tonic-gatethe entire regex.  You will an optional warning if you try to do otherwise.
513*0Sstevel@tonic-gate
514*0Sstevel@tonic-gate=item *
515*0Sstevel@tonic-gate
516*0Sstevel@tonic-gateUsing arrays or hashes as references (e.g. C<< %foo->{bar} >> has been
517*0Sstevel@tonic-gatedeprecated for a while.  Now you will get an optional warning.
518*0Sstevel@tonic-gate
519*0Sstevel@tonic-gate=back
520*0Sstevel@tonic-gate
521*0Sstevel@tonic-gate=head1 Source Code Enhancements
522*0Sstevel@tonic-gate
523*0Sstevel@tonic-gate=head2 MAGIC constants
524*0Sstevel@tonic-gate
525*0Sstevel@tonic-gateThe MAGIC constants (e.g. C<'P'>) have been macrofied
526*0Sstevel@tonic-gate(e.g. C<PERL_MAGIC_TIED>) for better source code readability
527*0Sstevel@tonic-gateand maintainability.
528*0Sstevel@tonic-gate
529*0Sstevel@tonic-gate=head2 Better commented code
530*0Sstevel@tonic-gate
531*0Sstevel@tonic-gateF<perly.c>, F<sv.c>, and F<sv.h> have now been extensively commented.
532*0Sstevel@tonic-gate
533*0Sstevel@tonic-gate=head2 Regex pre-/post-compilation items matched up
534*0Sstevel@tonic-gate
535*0Sstevel@tonic-gateThe regex compiler now maintains a structure that identifies nodes in
536*0Sstevel@tonic-gatethe compiled bytecode with the corresponding syntactic features of the
537*0Sstevel@tonic-gateoriginal regex expression.  The information is attached to the new
538*0Sstevel@tonic-gateC<offsets> member of the C<struct regexp>. See L<perldebguts> for more
539*0Sstevel@tonic-gatecomplete information.
540*0Sstevel@tonic-gate
541*0Sstevel@tonic-gate=head2 gcc -Wall
542*0Sstevel@tonic-gate
543*0Sstevel@tonic-gateThe C code has been made much more C<gcc -Wall> clean.  Some warning
544*0Sstevel@tonic-gatemessages still remain, though, so if you are compiling with gcc you
545*0Sstevel@tonic-gatewill see some warnings about dubious practices.  The warnings are
546*0Sstevel@tonic-gatebeing worked on.
547*0Sstevel@tonic-gate
548*0Sstevel@tonic-gate=head1 New Tests
549*0Sstevel@tonic-gate
550*0Sstevel@tonic-gateSeveral new tests have been added, especially for the F<lib> subsection.
551*0Sstevel@tonic-gate
552*0Sstevel@tonic-gateThe tests are now reported in a different order than in earlier Perls.
553*0Sstevel@tonic-gate(This happens because the test scripts from under t/lib have been moved
554*0Sstevel@tonic-gateto be closer to the library/extension they are testing.)
555*0Sstevel@tonic-gate
556*0Sstevel@tonic-gate=head1 Known Problems
557*0Sstevel@tonic-gate
558*0Sstevel@tonic-gateNote that unlike other sections in this document (which describe
559*0Sstevel@tonic-gatechanges since 5.7.0) this section is cumulative containing known
560*0Sstevel@tonic-gateproblems for all the 5.7 releases.
561*0Sstevel@tonic-gate
562*0Sstevel@tonic-gate=head2 AIX
563*0Sstevel@tonic-gate
564*0Sstevel@tonic-gate=over 4
565*0Sstevel@tonic-gate
566*0Sstevel@tonic-gate=item *
567*0Sstevel@tonic-gate
568*0Sstevel@tonic-gateIn AIX 4.2 Perl extensions that use C++ functions that use statics
569*0Sstevel@tonic-gatemay have problems in that the statics are not getting initialized.
570*0Sstevel@tonic-gateIn newer AIX releases this has been solved by linking Perl with
571*0Sstevel@tonic-gatethe libC_r library, but unfortunately in AIX 4.2 the said library
572*0Sstevel@tonic-gatehas an obscure bug where the various functions related to time
573*0Sstevel@tonic-gate(such as time() and gettimeofday()) return broken values, and
574*0Sstevel@tonic-gatetherefore in AIX 4.2 Perl is not linked against the libC_r.
575*0Sstevel@tonic-gate
576*0Sstevel@tonic-gate=item *
577*0Sstevel@tonic-gate
578*0Sstevel@tonic-gatevac 5.0.0.0 May Produce Buggy Code For Perl
579*0Sstevel@tonic-gate
580*0Sstevel@tonic-gateThe AIX C compiler vac version 5.0.0.0 may produce buggy code,
581*0Sstevel@tonic-gateresulting in few random tests failing, but when the failing tests
582*0Sstevel@tonic-gateare run by hand, they succeed.  We suggest upgrading to at least
583*0Sstevel@tonic-gatevac version 5.0.1.0, that has been known to compile Perl correctly.
584*0Sstevel@tonic-gate"lslpp -L|grep vac.C" will tell you the vac version.
585*0Sstevel@tonic-gate
586*0Sstevel@tonic-gate=back
587*0Sstevel@tonic-gate
588*0Sstevel@tonic-gate=head2 Amiga Perl Invoking Mystery
589*0Sstevel@tonic-gate
590*0Sstevel@tonic-gateOne cannot call Perl using the C<volume:> syntax, that is, C<perl -v>
591*0Sstevel@tonic-gateworks, but for example C<bin:perl -v> doesn't.  The exact reason is
592*0Sstevel@tonic-gateknown but the current suspect is the F<ixemul> library.
593*0Sstevel@tonic-gate
594*0Sstevel@tonic-gate=head2 lib/ftmp-security tests warn 'system possibly insecure'
595*0Sstevel@tonic-gate
596*0Sstevel@tonic-gateDon't panic.  Read INSTALL 'make test' section instead.
597*0Sstevel@tonic-gate
598*0Sstevel@tonic-gate=head2 Cygwin intermittent failures of lib/Memoize/t/expire_file 11 and 12
599*0Sstevel@tonic-gate
600*0Sstevel@tonic-gateThe subtests 11 and 12 sometimes fail and sometimes work.
601*0Sstevel@tonic-gate
602*0Sstevel@tonic-gate=head2 HP-UX lib/io_multihomed Fails When LP64-Configured
603*0Sstevel@tonic-gate
604*0Sstevel@tonic-gateThe lib/io_multihomed test may hang in HP-UX if Perl has been
605*0Sstevel@tonic-gateconfigured to be 64-bit. Because other 64-bit platforms do not hang in
606*0Sstevel@tonic-gatethis test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The
607*0Sstevel@tonic-gatetest attempts to create and connect to "multihomed" sockets (sockets
608*0Sstevel@tonic-gatewhich have multiple IP addresses).
609*0Sstevel@tonic-gate
610*0Sstevel@tonic-gate=head2  HP-UX lib/posix Subtest 9 Fails When LP64-Configured
611*0Sstevel@tonic-gate
612*0Sstevel@tonic-gateIf perl is configured with -Duse64bitall, the successful result of the
613*0Sstevel@tonic-gatesubtest 10 of lib/posix may arrive before the successful result of the
614*0Sstevel@tonic-gatesubtest 9, which confuses the test harness so much that it thinks the
615*0Sstevel@tonic-gatesubtest 9 failed.
616*0Sstevel@tonic-gate
617*0Sstevel@tonic-gate=head2 Linux With Sfio Fails op/misc Test 48
618*0Sstevel@tonic-gate
619*0Sstevel@tonic-gateNo known fix.
620*0Sstevel@tonic-gate
621*0Sstevel@tonic-gate=head2 OS/390
622*0Sstevel@tonic-gate
623*0Sstevel@tonic-gateOS/390 has rather many test failures but the situation is actually
624*0Sstevel@tonic-gatebetter than it was in 5.6.0, it's just that so many new modules and
625*0Sstevel@tonic-gatetests have been added.
626*0Sstevel@tonic-gate
627*0Sstevel@tonic-gate Failed Test                     Stat Wstat Total Fail  Failed  List of Failed
628*0Sstevel@tonic-gate -----------------------------------------------------------------------------
629*0Sstevel@tonic-gate ../ext/B/Deparse.t                            14    1   7.14%  14
630*0Sstevel@tonic-gate ../ext/B/Showlex.t                             1    1 100.00%  1
631*0Sstevel@tonic-gate ../ext/Encode/Encode/Tcl.t                   610   13   2.13%  592 594 596 598
632*0Sstevel@tonic-gate                                                                600 602 604-610
633*0Sstevel@tonic-gate ../ext/IO/lib/IO/t/io_unix.t     113 28928     5    3  60.00%  3-5
634*0Sstevel@tonic-gate ../ext/POSIX/POSIX.t                          29    1   3.45%  14
635*0Sstevel@tonic-gate ../ext/Storable/t/lock.t         255 65280     5    3  60.00%  3-5
636*0Sstevel@tonic-gate ../lib/locale.t                  129 33024   117   19  16.24%  99-117
637*0Sstevel@tonic-gate ../lib/warnings.t                            434    1   0.23%  75
638*0Sstevel@tonic-gate ../lib/ExtUtils.t                             27    1   3.70%  25
639*0Sstevel@tonic-gate ../lib/Math/BigInt/t/bigintpm.t             1190    1   0.08%  1145
640*0Sstevel@tonic-gate ../lib/Unicode/UCD.t                          81   48  59.26%  1-16 49-64 66-81
641*0Sstevel@tonic-gate ../lib/User/pwent.t                            9    1  11.11%  4
642*0Sstevel@tonic-gate op/pat.t                                     660    6   0.91%  242-243 424-425
643*0Sstevel@tonic-gate                                                                626-627
644*0Sstevel@tonic-gate op/split.t                         0     9    ??   ??       %  ??
645*0Sstevel@tonic-gate op/taint.t                                   174    3   1.72%  156 162 168
646*0Sstevel@tonic-gate op/tr.t                                       70    3   4.29%  50 58-59
647*0Sstevel@tonic-gate Failed 16/422 test scripts, 96.21% okay. 105/23251 subtests failed, 99.55% okay.
648*0Sstevel@tonic-gate
649*0Sstevel@tonic-gate=head2 op/sprintf tests 129 and 130
650*0Sstevel@tonic-gate
651*0Sstevel@tonic-gateThe op/sprintf tests 129 and 130 are known to fail on some platforms.
652*0Sstevel@tonic-gateExamples include any platform using sfio, and Compaq/Tandem's NonStop-UX.
653*0Sstevel@tonic-gateThe failing platforms do not comply with the ANSI C Standard, line
654*0Sstevel@tonic-gate19ff on page 134 of ANSI X3.159 1989 to be exact.  (They produce
655*0Sstevel@tonic-gatesomething other than "1" and "-1" when formatting 0.6 and -0.6 using
656*0Sstevel@tonic-gatethe printf format "%.0f", most often they produce "0" and "-0".)
657*0Sstevel@tonic-gate
658*0Sstevel@tonic-gate=head2  Failure of Thread tests
659*0Sstevel@tonic-gate
660*0Sstevel@tonic-gateB<Note that support for 5.005-style threading remains experimental.>
661*0Sstevel@tonic-gate
662*0Sstevel@tonic-gateThe following tests are known to fail due to fundamental problems in
663*0Sstevel@tonic-gatethe 5.005 threading implementation. These are not new failures--Perl
664*0Sstevel@tonic-gate5.005_0x has the same bugs, but didn't have these tests.
665*0Sstevel@tonic-gate
666*0Sstevel@tonic-gate  lib/autouse.t                 4
667*0Sstevel@tonic-gate  t/lib/thr5005.t               19-20
668*0Sstevel@tonic-gate
669*0Sstevel@tonic-gate=head2 UNICOS
670*0Sstevel@tonic-gate
671*0Sstevel@tonic-gate=over 4
672*0Sstevel@tonic-gate
673*0Sstevel@tonic-gate=item *
674*0Sstevel@tonic-gate
675*0Sstevel@tonic-gateext/POSIX/sigaction subtests 6 and 13 may fail.
676*0Sstevel@tonic-gate
677*0Sstevel@tonic-gate=item *
678*0Sstevel@tonic-gate
679*0Sstevel@tonic-gatelib/ExtUtils may spuriously claim that subtest 28 failed,
680*0Sstevel@tonic-gatewhich is interesting since the test only has 27 tests.
681*0Sstevel@tonic-gate
682*0Sstevel@tonic-gate=item *
683*0Sstevel@tonic-gate
684*0Sstevel@tonic-gateNumerous numerical test failures
685*0Sstevel@tonic-gate
686*0Sstevel@tonic-gate  op/numconvert                 209,210,217,218
687*0Sstevel@tonic-gate  op/override                   7
688*0Sstevel@tonic-gate  ext/Time/HiRes/HiRes          9
689*0Sstevel@tonic-gate  lib/Math/BigInt/t/bigintpm    1145
690*0Sstevel@tonic-gate  lib/Math/Trig                 25
691*0Sstevel@tonic-gate
692*0Sstevel@tonic-gateThese tests fail because of yet unresolved floating point inaccuracies.
693*0Sstevel@tonic-gate
694*0Sstevel@tonic-gate=back
695*0Sstevel@tonic-gate
696*0Sstevel@tonic-gate=head2 UTS
697*0Sstevel@tonic-gate
698*0Sstevel@tonic-gateThere are a few known test failures, see L<perluts>.
699*0Sstevel@tonic-gate
700*0Sstevel@tonic-gate=head2 VMS
701*0Sstevel@tonic-gate
702*0Sstevel@tonic-gateRather many tests are failing in VMS but that actually more tests
703*0Sstevel@tonic-gatesucceed in VMS than they used to, it's just that there are many,
704*0Sstevel@tonic-gatemany more tests than there used to be.
705*0Sstevel@tonic-gate
706*0Sstevel@tonic-gateHere are the known failures from some compiler/platform combinations.
707*0Sstevel@tonic-gate
708*0Sstevel@tonic-gateDEC C V5.3-006 on OpenVMS VAX V6.2
709*0Sstevel@tonic-gate
710*0Sstevel@tonic-gate  [-.ext.list.util.t]tainted..............FAILED on test 3
711*0Sstevel@tonic-gate  [-.ext.posix]sigaction..................FAILED on test 7
712*0Sstevel@tonic-gate  [-.ext.time.hires]hires.................FAILED on test 14
713*0Sstevel@tonic-gate  [-.lib.file.find]taint..................FAILED on test 17
714*0Sstevel@tonic-gate  [-.lib.math.bigint.t]bigintpm...........FAILED on test 1183
715*0Sstevel@tonic-gate  [-.lib.test.simple.t]exit...............FAILED on test 1
716*0Sstevel@tonic-gate  [.lib]vmsish............................FAILED on test 13
717*0Sstevel@tonic-gate  [.op]sprintf............................FAILED on test 12
718*0Sstevel@tonic-gate  Failed 8/399 tests, 91.23% okay.
719*0Sstevel@tonic-gate
720*0Sstevel@tonic-gateDEC C V6.0-001 on OpenVMS Alpha V7.2-1 and
721*0Sstevel@tonic-gateCompaq C V6.2-008 on OpenVMS Alpha V7.1
722*0Sstevel@tonic-gate
723*0Sstevel@tonic-gate  [-.ext.list.util.t]tainted..............FAILED on test 3
724*0Sstevel@tonic-gate  [-.lib.file.find]taint..................FAILED on test 17
725*0Sstevel@tonic-gate  [-.lib.test.simple.t]exit...............FAILED on test 1
726*0Sstevel@tonic-gate  [.lib]vmsish............................FAILED on test 13
727*0Sstevel@tonic-gate  Failed 4/399 tests, 92.48% okay.
728*0Sstevel@tonic-gate
729*0Sstevel@tonic-gateCompaq C V6.4-005 on OpenVMS Alpha 7.2.1
730*0Sstevel@tonic-gate
731*0Sstevel@tonic-gate  [-.ext.b]showlex........................FAILED on test 1
732*0Sstevel@tonic-gate  [-.ext.list.util.t]tainted..............FAILED on test 3
733*0Sstevel@tonic-gate  [-.lib.file.find]taint..................FAILED on test 17
734*0Sstevel@tonic-gate  [-.lib.test.simple.t]exit...............FAILED on test 1
735*0Sstevel@tonic-gate  [.lib]vmsish............................FAILED on test 13
736*0Sstevel@tonic-gate  [.op]misc...............................FAILED on test 49
737*0Sstevel@tonic-gate  Failed 6/401 tests, 92.77% okay.
738*0Sstevel@tonic-gate
739*0Sstevel@tonic-gate=head2 Win32
740*0Sstevel@tonic-gate
741*0Sstevel@tonic-gateIn multi-CPU boxes there are some problems with the I/O buffering:
742*0Sstevel@tonic-gatesome output may appear twice.
743*0Sstevel@tonic-gate
744*0Sstevel@tonic-gate=head2 Localising a Tied Variable Leaks Memory
745*0Sstevel@tonic-gate
746*0Sstevel@tonic-gate    use Tie::Hash;
747*0Sstevel@tonic-gate    tie my %tie_hash => 'Tie::StdHash';
748*0Sstevel@tonic-gate
749*0Sstevel@tonic-gate    ...
750*0Sstevel@tonic-gate
751*0Sstevel@tonic-gate    local($tie_hash{Foo}) = 1; # leaks
752*0Sstevel@tonic-gate
753*0Sstevel@tonic-gateCode like the above is known to leak memory every time the local()
754*0Sstevel@tonic-gateis executed.
755*0Sstevel@tonic-gate
756*0Sstevel@tonic-gate=head2 Self-tying of Arrays and Hashes Is Forbidden
757*0Sstevel@tonic-gate
758*0Sstevel@tonic-gateSelf-tying of arrays and hashes is broken in rather deep and
759*0Sstevel@tonic-gatehard-to-fix ways.  As a stop-gap measure to avoid people from getting
760*0Sstevel@tonic-gatefrustrated at the mysterious results (core dumps, most often) it is
761*0Sstevel@tonic-gatefor now forbidden (you will get a fatal error even from an attempt).
762*0Sstevel@tonic-gate
763*0Sstevel@tonic-gate=head2 Variable Attributes are not Currently Usable for Tieing
764*0Sstevel@tonic-gate
765*0Sstevel@tonic-gateThis limitation will hopefully be fixed in future.  (Subroutine
766*0Sstevel@tonic-gateattributes work fine for tieing, see L<Attribute::Handlers>).
767*0Sstevel@tonic-gate
768*0Sstevel@tonic-gate=head2 Building Extensions Can Fail Because Of Largefiles
769*0Sstevel@tonic-gate
770*0Sstevel@tonic-gateSome extensions like mod_perl are known to have issues with
771*0Sstevel@tonic-gate`largefiles', a change brought by Perl 5.6.0 in which file offsets
772*0Sstevel@tonic-gatedefault to 64 bits wide, where supported.  Modules may fail to compile
773*0Sstevel@tonic-gateat all or compile and work incorrectly.  Currently there is no good
774*0Sstevel@tonic-gatesolution for the problem, but Configure now provides appropriate
775*0Sstevel@tonic-gatenon-largefile ccflags, ldflags, libswanted, and libs in the %Config
776*0Sstevel@tonic-gatehash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are
777*0Sstevel@tonic-gatehaving problems can try configuring themselves without the
778*0Sstevel@tonic-gatelargefileness.  This is admittedly not a clean solution, and the
779*0Sstevel@tonic-gatesolution may not even work at all.  One potential failure is whether
780*0Sstevel@tonic-gateone can (or, if one can, whether it's a good idea) link together at
781*0Sstevel@tonic-gateall binaries with different ideas about file offsets, all this is
782*0Sstevel@tonic-gateplatform-dependent.
783*0Sstevel@tonic-gate
784*0Sstevel@tonic-gate=head2 The Compiler Suite Is Still Experimental
785*0Sstevel@tonic-gate
786*0Sstevel@tonic-gateThe compiler suite is slowly getting better but is nowhere near
787*0Sstevel@tonic-gateworking order yet.
788*0Sstevel@tonic-gate
789*0Sstevel@tonic-gate=head2 The Long Double Support is Still Experimental
790*0Sstevel@tonic-gate
791*0Sstevel@tonic-gateThe ability to configure Perl's numbers to use "long doubles",
792*0Sstevel@tonic-gatefloating point numbers of hopefully better accuracy, is still
793*0Sstevel@tonic-gateexperimental.  The implementations of long doubles are not yet
794*0Sstevel@tonic-gatewidespread and the existing implementations are not quite mature
795*0Sstevel@tonic-gateor standardised, therefore trying to support them is a rare
796*0Sstevel@tonic-gateand moving target.  The gain of more precision may also be offset
797*0Sstevel@tonic-gateby slowdown in computations (more bits to move around, and the
798*0Sstevel@tonic-gateoperations are more likely to be executed by less optimised
799*0Sstevel@tonic-gatelibraries).
800*0Sstevel@tonic-gate
801*0Sstevel@tonic-gate=head1 Reporting Bugs
802*0Sstevel@tonic-gate
803*0Sstevel@tonic-gateIf you find what you think is a bug, you might check the articles
804*0Sstevel@tonic-gaterecently posted to the comp.lang.perl.misc newsgroup and the perl
805*0Sstevel@tonic-gatebug database at http://bugs.perl.org/  There may also be
806*0Sstevel@tonic-gateinformation at http://www.perl.com/perl/ , the Perl Home Page.
807*0Sstevel@tonic-gate
808*0Sstevel@tonic-gateIf you believe you have an unreported bug, please run the B<perlbug>
809*0Sstevel@tonic-gateprogram included with your release.  Be sure to trim your bug down
810*0Sstevel@tonic-gateto a tiny but sufficient test case.  Your bug report, along with the
811*0Sstevel@tonic-gateoutput of C<perl -V>, will be sent off to perlbug@perl.org to be
812*0Sstevel@tonic-gateanalysed by the Perl porting team.
813*0Sstevel@tonic-gate
814*0Sstevel@tonic-gate=head1 SEE ALSO
815*0Sstevel@tonic-gate
816*0Sstevel@tonic-gateThe F<Changes> file for exhaustive details on what changed.
817*0Sstevel@tonic-gate
818*0Sstevel@tonic-gateThe F<INSTALL> file for how to build Perl.
819*0Sstevel@tonic-gate
820*0Sstevel@tonic-gateThe F<README> file for general stuff.
821*0Sstevel@tonic-gate
822*0Sstevel@tonic-gateThe F<Artistic> and F<Copying> files for copyright information.
823*0Sstevel@tonic-gate
824*0Sstevel@tonic-gate=head1 HISTORY
825*0Sstevel@tonic-gate
826*0Sstevel@tonic-gateWritten by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions
827*0Sstevel@tonic-gatefrom The Perl Porters and Perl Users submitting feedback and patches.
828*0Sstevel@tonic-gate
829*0Sstevel@tonic-gateSend omissions or corrections to <F<perlbug@perl.org>>.
830*0Sstevel@tonic-gate
831*0Sstevel@tonic-gate=cut
832