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