xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/pod/perl583delta.pod (revision 0:68f95e015346)
1*0Sstevel@tonic-gate=head1 NAME
2*0Sstevel@tonic-gate
3*0Sstevel@tonic-gateperl583delta - what is new for perl v5.8.3
4*0Sstevel@tonic-gate
5*0Sstevel@tonic-gate=head1 DESCRIPTION
6*0Sstevel@tonic-gate
7*0Sstevel@tonic-gateThis document describes differences between the 5.8.2 release and
8*0Sstevel@tonic-gatethe 5.8.3 release.
9*0Sstevel@tonic-gate
10*0Sstevel@tonic-gateIf you are upgrading from an earlier release such as 5.6.1, first read
11*0Sstevel@tonic-gatethe L<perl58delta>, which describes differences between 5.6.0 and
12*0Sstevel@tonic-gate5.8.0, and the L<perl581delta> and L<perl582delta>, which describe differences
13*0Sstevel@tonic-gatebetween 5.8.0, 5.8.1 and 5.8.2
14*0Sstevel@tonic-gate
15*0Sstevel@tonic-gate=head1 Incompatible Changes
16*0Sstevel@tonic-gate
17*0Sstevel@tonic-gateThere are no changes incompatible with 5.8.2.
18*0Sstevel@tonic-gate
19*0Sstevel@tonic-gate=head1 Core Enhancements
20*0Sstevel@tonic-gate
21*0Sstevel@tonic-gateA C<SCALAR> method is now available for tied hashes. This is called when
22*0Sstevel@tonic-gatea tied hash is used in scalar context, such as
23*0Sstevel@tonic-gate
24*0Sstevel@tonic-gate    if (%tied_hash) {
25*0Sstevel@tonic-gate	...
26*0Sstevel@tonic-gate    }
27*0Sstevel@tonic-gate
28*0Sstevel@tonic-gate
29*0Sstevel@tonic-gateThe old behaviour was that %tied_hash would return whatever would have been
30*0Sstevel@tonic-gatereturned for that hash before the hash was tied (so usually 0). The new
31*0Sstevel@tonic-gatebehaviour in the absence of a SCALAR method is to return TRUE if in the
32*0Sstevel@tonic-gatemiddle of an C<each> iteration, and otherwise call FIRSTKEY to check if the
33*0Sstevel@tonic-gatehash is empty (making sure that a subsequent C<each> will also begin by
34*0Sstevel@tonic-gatecalling FIRSTKEY). Please see L<perltie/SCALAR> for the full details and
35*0Sstevel@tonic-gatecaveats.
36*0Sstevel@tonic-gate
37*0Sstevel@tonic-gate=head1 Modules and Pragmata
38*0Sstevel@tonic-gate
39*0Sstevel@tonic-gate=over 4
40*0Sstevel@tonic-gate
41*0Sstevel@tonic-gate=item CGI
42*0Sstevel@tonic-gate
43*0Sstevel@tonic-gate=item Cwd
44*0Sstevel@tonic-gate
45*0Sstevel@tonic-gate=item Digest
46*0Sstevel@tonic-gate
47*0Sstevel@tonic-gate=item Digest::MD5
48*0Sstevel@tonic-gate
49*0Sstevel@tonic-gate=item Encode
50*0Sstevel@tonic-gate
51*0Sstevel@tonic-gate=item File::Spec
52*0Sstevel@tonic-gate
53*0Sstevel@tonic-gate=item FindBin
54*0Sstevel@tonic-gate
55*0Sstevel@tonic-gateA function C<again> is provided to resolve problems where modules in different
56*0Sstevel@tonic-gatedirectories wish to use FindBin.
57*0Sstevel@tonic-gate
58*0Sstevel@tonic-gate=item List::Util
59*0Sstevel@tonic-gate
60*0Sstevel@tonic-gateYou can now weaken references to read only values.
61*0Sstevel@tonic-gate
62*0Sstevel@tonic-gate=item Math::BigInt
63*0Sstevel@tonic-gate
64*0Sstevel@tonic-gate=item PodParser
65*0Sstevel@tonic-gate
66*0Sstevel@tonic-gate=item Pod::Perldoc
67*0Sstevel@tonic-gate
68*0Sstevel@tonic-gate=item POSIX
69*0Sstevel@tonic-gate
70*0Sstevel@tonic-gate=item Unicode::Collate
71*0Sstevel@tonic-gate
72*0Sstevel@tonic-gate=item Unicode::Normalize
73*0Sstevel@tonic-gate
74*0Sstevel@tonic-gate=item Test::Harness
75*0Sstevel@tonic-gate
76*0Sstevel@tonic-gate=item threads::shared
77*0Sstevel@tonic-gate
78*0Sstevel@tonic-gateC<cond_wait> has a new two argument form. C<cond_timedwait> has been added.
79*0Sstevel@tonic-gate
80*0Sstevel@tonic-gate=back
81*0Sstevel@tonic-gate
82*0Sstevel@tonic-gate=head1 Utility Changes
83*0Sstevel@tonic-gate
84*0Sstevel@tonic-gateC<find2perl> now assumes C<-print> as a default action. Previously, it
85*0Sstevel@tonic-gateneeded to be specified explicitly.
86*0Sstevel@tonic-gate
87*0Sstevel@tonic-gateA new utility, C<prove>, makes it easy to run an individual regression test
88*0Sstevel@tonic-gateat the command line. C<prove> is part of Test::Harness, which users of earlier
89*0Sstevel@tonic-gatePerl versions can install from CPAN.
90*0Sstevel@tonic-gate
91*0Sstevel@tonic-gate=head1 New Documentation
92*0Sstevel@tonic-gate
93*0Sstevel@tonic-gateThe documentation has been revised in places to produce more standard manpages.
94*0Sstevel@tonic-gate
95*0Sstevel@tonic-gateThe documentation for the special code blocks (BEGIN, CHECK, INIT, END)
96*0Sstevel@tonic-gatehas been improved.
97*0Sstevel@tonic-gate
98*0Sstevel@tonic-gate=head1 Installation and Configuration Improvements
99*0Sstevel@tonic-gate
100*0Sstevel@tonic-gatePerl now builds on OpenVMS I64
101*0Sstevel@tonic-gate
102*0Sstevel@tonic-gate=head1 Selected Bug Fixes
103*0Sstevel@tonic-gate
104*0Sstevel@tonic-gateUsing substr() on a UTF8 string could cause subsequent accesses on that
105*0Sstevel@tonic-gatestring to return garbage. This was due to incorrect UTF8 offsets being
106*0Sstevel@tonic-gatecached, and is now fixed.
107*0Sstevel@tonic-gate
108*0Sstevel@tonic-gatejoin() could return garbage when the same join() statement was used to
109*0Sstevel@tonic-gateprocess 8 bit data having earlier processed UTF8 data, due to the flags
110*0Sstevel@tonic-gateon that statement's temporary workspace not being reset correctly. This
111*0Sstevel@tonic-gateis now fixed.
112*0Sstevel@tonic-gate
113*0Sstevel@tonic-gateC<$a .. $b> will now work as expected when either $a or $b is C<undef>
114*0Sstevel@tonic-gate
115*0Sstevel@tonic-gateUsing Unicode keys with tied hashes should now work correctly.
116*0Sstevel@tonic-gate
117*0Sstevel@tonic-gateReading $^E now preserves $!. Previously, the C code implementing $^E
118*0Sstevel@tonic-gatedid not preserve C<errno>, so reading $^E could cause C<errno> and therefore
119*0Sstevel@tonic-gateC<$!> to change unexpectedly.
120*0Sstevel@tonic-gate
121*0Sstevel@tonic-gateReentrant functions will (once more) work with C++. 5.8.2 introduced a bugfix
122*0Sstevel@tonic-gatewhich accidentally broke the compilation of Perl extensions written in C++
123*0Sstevel@tonic-gate
124*0Sstevel@tonic-gate=head1 New or Changed Diagnostics
125*0Sstevel@tonic-gate
126*0Sstevel@tonic-gateThe fatal error "DESTROY created new reference to dead object" is now
127*0Sstevel@tonic-gatedocumented in L<perldiag>.
128*0Sstevel@tonic-gate
129*0Sstevel@tonic-gate=head1 Changed Internals
130*0Sstevel@tonic-gate
131*0Sstevel@tonic-gateThe hash code has been refactored to reduce source duplication. The
132*0Sstevel@tonic-gateexternal interface is unchanged, and aside from the bug fixes described
133*0Sstevel@tonic-gateabove, there should be no change in behaviour.
134*0Sstevel@tonic-gate
135*0Sstevel@tonic-gateC<hv_clear_placeholders> is now part of the perl API
136*0Sstevel@tonic-gate
137*0Sstevel@tonic-gateSome C macros have been tidied. In particular macros which create temporary
138*0Sstevel@tonic-gatelocal variables now name these variables more defensively, which should
139*0Sstevel@tonic-gateavoid bugs where names clash.
140*0Sstevel@tonic-gate
141*0Sstevel@tonic-gate<signal.h> is now always included.
142*0Sstevel@tonic-gate
143*0Sstevel@tonic-gate=head1 Configuration and Building
144*0Sstevel@tonic-gate
145*0Sstevel@tonic-gateC<Configure> now invokes callbacks regardless of the value of the variable
146*0Sstevel@tonic-gatethey are called for. Previously callbacks were only invoked in the
147*0Sstevel@tonic-gateC<case $variable $define)> branch. This change should only affect platform
148*0Sstevel@tonic-gatemaintainers writing configuration hints files.
149*0Sstevel@tonic-gate
150*0Sstevel@tonic-gate=head1 Platform Specific Problems
151*0Sstevel@tonic-gate
152*0Sstevel@tonic-gateThe regression test ext/threads/shared/t/wait.t fails on early RedHat 9
153*0Sstevel@tonic-gateand HP-UX 10.20 due to bugs in their threading implementations.
154*0Sstevel@tonic-gateRedHat users should see https://rhn.redhat.com/errata/RHBA-2003-136.html
155*0Sstevel@tonic-gateand consider upgrading their glibc.
156*0Sstevel@tonic-gate
157*0Sstevel@tonic-gate=head1 Known Problems
158*0Sstevel@tonic-gate
159*0Sstevel@tonic-gateDetached threads aren't supported on Windows yet, as they may lead to
160*0Sstevel@tonic-gatememory access violation problems.
161*0Sstevel@tonic-gate
162*0Sstevel@tonic-gateThere is a known race condition opening scripts in C<suidperl>. C<suidperl>
163*0Sstevel@tonic-gateis neither built nor installed by default, and has been deprecated since
164*0Sstevel@tonic-gateperl 5.8.0. You are advised to replace use of suidperl with tools such
165*0Sstevel@tonic-gateas sudo ( http://www.courtesan.com/sudo/ )
166*0Sstevel@tonic-gate
167*0Sstevel@tonic-gateWe have a backlog of unresolved bugs. Dealing with bugs and bug reports
168*0Sstevel@tonic-gateis unglamorous work; not something ideally suited to volunteer labour,
169*0Sstevel@tonic-gatebut that is all that we have.
170*0Sstevel@tonic-gate
171*0Sstevel@tonic-gateThe perl5 development team are implementing changes to help address this
172*0Sstevel@tonic-gateproblem, which should go live in early 2004.
173*0Sstevel@tonic-gate
174*0Sstevel@tonic-gate=head1 Future Directions
175*0Sstevel@tonic-gate
176*0Sstevel@tonic-gateCode freeze for the next maintenance release (5.8.4) is on March 31st 2004,
177*0Sstevel@tonic-gatewith release expected by mid April. Similarly 5.8.5's freeze will be at
178*0Sstevel@tonic-gatethe end of June, with release by mid July.
179*0Sstevel@tonic-gate
180*0Sstevel@tonic-gate=head1 Obituary
181*0Sstevel@tonic-gate
182*0Sstevel@tonic-gateIain 'Spoon' Truskett, Perl hacker, author of L<perlreref> and
183*0Sstevel@tonic-gatecontributor to CPAN, died suddenly on 29th December 2003, aged 24.
184*0Sstevel@tonic-gateHe will be missed.
185*0Sstevel@tonic-gate
186*0Sstevel@tonic-gate=head1 Reporting Bugs
187*0Sstevel@tonic-gate
188*0Sstevel@tonic-gateIf you find what you think is a bug, you might check the articles
189*0Sstevel@tonic-gaterecently posted to the comp.lang.perl.misc newsgroup and the perl
190*0Sstevel@tonic-gatebug database at http://bugs.perl.org.  There may also be
191*0Sstevel@tonic-gateinformation at http://www.perl.org, the Perl Home Page.
192*0Sstevel@tonic-gate
193*0Sstevel@tonic-gateIf you believe you have an unreported bug, please run the B<perlbug>
194*0Sstevel@tonic-gateprogram included with your release.  Be sure to trim your bug down
195*0Sstevel@tonic-gateto a tiny but sufficient test case.  Your bug report, along with the
196*0Sstevel@tonic-gateoutput of C<perl -V>, will be sent off to perlbug@perl.org to be
197*0Sstevel@tonic-gateanalysed by the Perl porting team.  You can browse and search
198*0Sstevel@tonic-gatethe Perl 5 bugs at http://bugs.perl.org/
199*0Sstevel@tonic-gate
200*0Sstevel@tonic-gate=head1 SEE ALSO
201*0Sstevel@tonic-gate
202*0Sstevel@tonic-gateThe F<Changes> file for exhaustive details on what changed.
203*0Sstevel@tonic-gate
204*0Sstevel@tonic-gateThe F<INSTALL> file for how to build Perl.
205*0Sstevel@tonic-gate
206*0Sstevel@tonic-gateThe F<README> file for general stuff.
207*0Sstevel@tonic-gate
208*0Sstevel@tonic-gateThe F<Artistic> and F<Copying> files for copyright information.
209*0Sstevel@tonic-gate
210*0Sstevel@tonic-gate=cut
211