11b0c1ed8Smillert=head1 NAME 21b0c1ed8Smillert 3*43890927Smillertperl583delta - what is new for perl v5.8.3 41b0c1ed8Smillert 51b0c1ed8Smillert=head1 DESCRIPTION 61b0c1ed8Smillert 71b0c1ed8SmillertThis document describes differences between the 5.8.2 release and 81b0c1ed8Smillertthe 5.8.3 release. 91b0c1ed8Smillert 101b0c1ed8SmillertIf you are upgrading from an earlier release such as 5.6.1, first read 111b0c1ed8Smillertthe L<perl58delta>, which describes differences between 5.6.0 and 121b0c1ed8Smillert5.8.0, and the L<perl581delta> and L<perl582delta>, which describe differences 131b0c1ed8Smillertbetween 5.8.0, 5.8.1 and 5.8.2 141b0c1ed8Smillert 151b0c1ed8Smillert=head1 Incompatible Changes 161b0c1ed8Smillert 171b0c1ed8SmillertThere are no changes incompatible with 5.8.2. 181b0c1ed8Smillert 191b0c1ed8Smillert=head1 Core Enhancements 201b0c1ed8Smillert 211b0c1ed8SmillertA C<SCALAR> method is now available for tied hashes. This is called when 221b0c1ed8Smillerta tied hash is used in scalar context, such as 231b0c1ed8Smillert 241b0c1ed8Smillert if (%tied_hash) { 251b0c1ed8Smillert ... 261b0c1ed8Smillert } 271b0c1ed8Smillert 281b0c1ed8Smillert 291b0c1ed8SmillertThe old behaviour was that %tied_hash would return whatever would have been 301b0c1ed8Smillertreturned for that hash before the hash was tied (so usually 0). The new 311b0c1ed8Smillertbehaviour in the absence of a SCALAR method is to return TRUE if in the 321b0c1ed8Smillertmiddle of an C<each> iteration, and otherwise call FIRSTKEY to check if the 331b0c1ed8Smillerthash is empty (making sure that a subsequent C<each> will also begin by 341b0c1ed8Smillertcalling FIRSTKEY). Please see L<perltie/SCALAR> for the full details and 351b0c1ed8Smillertcaveats. 361b0c1ed8Smillert 371b0c1ed8Smillert=head1 Modules and Pragmata 381b0c1ed8Smillert 391b0c1ed8Smillert=over 4 401b0c1ed8Smillert 411b0c1ed8Smillert=item CGI 421b0c1ed8Smillert 431b0c1ed8Smillert=item Cwd 441b0c1ed8Smillert 451b0c1ed8Smillert=item Digest 461b0c1ed8Smillert 471b0c1ed8Smillert=item Digest::MD5 481b0c1ed8Smillert 491b0c1ed8Smillert=item Encode 501b0c1ed8Smillert 511b0c1ed8Smillert=item File::Spec 521b0c1ed8Smillert 531b0c1ed8Smillert=item FindBin 541b0c1ed8Smillert 551b0c1ed8SmillertA function C<again> is provided to resolve problems where modules in different 561b0c1ed8Smillertdirectories wish to use FindBin. 571b0c1ed8Smillert 581b0c1ed8Smillert=item List::Util 591b0c1ed8Smillert 601b0c1ed8SmillertYou can now weaken references to read only values. 611b0c1ed8Smillert 621b0c1ed8Smillert=item Math::BigInt 631b0c1ed8Smillert 641b0c1ed8Smillert=item PodParser 651b0c1ed8Smillert 661b0c1ed8Smillert=item Pod::Perldoc 671b0c1ed8Smillert 681b0c1ed8Smillert=item POSIX 691b0c1ed8Smillert 701b0c1ed8Smillert=item Unicode::Collate 711b0c1ed8Smillert 721b0c1ed8Smillert=item Unicode::Normalize 731b0c1ed8Smillert 741b0c1ed8Smillert=item Test::Harness 751b0c1ed8Smillert 761b0c1ed8Smillert=item threads::shared 771b0c1ed8Smillert 781b0c1ed8SmillertC<cond_wait> has a new two argument form. C<cond_timedwait> has been added. 791b0c1ed8Smillert 801b0c1ed8Smillert=back 811b0c1ed8Smillert 821b0c1ed8Smillert=head1 Utility Changes 831b0c1ed8Smillert 841b0c1ed8SmillertC<find2perl> now assumes C<-print> as a default action. Previously, it 851b0c1ed8Smillertneeded to be specified explicitly. 861b0c1ed8Smillert 871b0c1ed8SmillertA new utility, C<prove>, makes it easy to run an individual regression test 881b0c1ed8Smillertat the command line. C<prove> is part of Test::Harness, which users of earlier 891b0c1ed8SmillertPerl versions can install from CPAN. 901b0c1ed8Smillert 911b0c1ed8Smillert=head1 New Documentation 921b0c1ed8Smillert 931b0c1ed8SmillertThe documentation has been revised in places to produce more standard manpages. 941b0c1ed8Smillert 951b0c1ed8SmillertThe documentation for the special code blocks (BEGIN, CHECK, INIT, END) 961b0c1ed8Smillerthas been improved. 971b0c1ed8Smillert 981b0c1ed8Smillert=head1 Installation and Configuration Improvements 991b0c1ed8Smillert 1001b0c1ed8SmillertPerl now builds on OpenVMS I64 1011b0c1ed8Smillert 1021b0c1ed8Smillert=head1 Selected Bug Fixes 1031b0c1ed8Smillert 1041b0c1ed8SmillertUsing substr() on a UTF8 string could cause subsequent accesses on that 1051b0c1ed8Smillertstring to return garbage. This was due to incorrect UTF8 offsets being 1061b0c1ed8Smillertcached, and is now fixed. 1071b0c1ed8Smillert 1081b0c1ed8Smillertjoin() could return garbage when the same join() statement was used to 1091b0c1ed8Smillertprocess 8 bit data having earlier processed UTF8 data, due to the flags 1101b0c1ed8Smillerton that statement's temporary workspace not being reset correctly. This 1111b0c1ed8Smillertis now fixed. 1121b0c1ed8Smillert 1131b0c1ed8SmillertC<$a .. $b> will now work as expected when either $a or $b is C<undef> 1141b0c1ed8Smillert 1151b0c1ed8SmillertUsing Unicode keys with tied hashes should now work correctly. 1161b0c1ed8Smillert 1171b0c1ed8SmillertReading $^E now preserves $!. Previously, the C code implementing $^E 1181b0c1ed8Smillertdid not preserve C<errno>, so reading $^E could cause C<errno> and therefore 1191b0c1ed8SmillertC<$!> to change unexpectedly. 1201b0c1ed8Smillert 1211b0c1ed8SmillertReentrant functions will (once more) work with C++. 5.8.2 introduced a bugfix 1221b0c1ed8Smillertwhich accidentally broke the compilation of Perl extensions written in C++ 1231b0c1ed8Smillert 1241b0c1ed8Smillert=head1 New or Changed Diagnostics 1251b0c1ed8Smillert 1261b0c1ed8SmillertThe fatal error "DESTROY created new reference to dead object" is now 1271b0c1ed8Smillertdocumented in L<perldiag>. 1281b0c1ed8Smillert 1291b0c1ed8Smillert=head1 Changed Internals 1301b0c1ed8Smillert 1311b0c1ed8SmillertThe hash code has been refactored to reduce source duplication. The 1321b0c1ed8Smillertexternal interface is unchanged, and aside from the bug fixes described 1331b0c1ed8Smillertabove, there should be no change in behaviour. 1341b0c1ed8Smillert 1351b0c1ed8SmillertC<hv_clear_placeholders> is now part of the perl API 1361b0c1ed8Smillert 1371b0c1ed8SmillertSome C macros have been tidied. In particular macros which create temporary 1381b0c1ed8Smillertlocal variables now name these variables more defensively, which should 1391b0c1ed8Smillertavoid bugs where names clash. 1401b0c1ed8Smillert 1411b0c1ed8Smillert<signal.h> is now always included. 1421b0c1ed8Smillert 1431b0c1ed8Smillert=head1 Configuration and Building 1441b0c1ed8Smillert 1451b0c1ed8SmillertC<Configure> now invokes callbacks regardless of the value of the variable 1461b0c1ed8Smillertthey are called for. Previously callbacks were only invoked in the 1471b0c1ed8SmillertC<case $variable $define)> branch. This change should only affect platform 1481b0c1ed8Smillertmaintainers writing configuration hints files. 1491b0c1ed8Smillert 1501b0c1ed8Smillert=head1 Platform Specific Problems 1511b0c1ed8Smillert 1521b0c1ed8SmillertThe regression test ext/threads/shared/t/wait.t fails on early RedHat 9 1531b0c1ed8Smillertand HP-UX 10.20 due to bugs in their threading implementations. 1541b0c1ed8SmillertRedHat users should see https://rhn.redhat.com/errata/RHBA-2003-136.html 1551b0c1ed8Smillertand consider upgrading their glibc. 1561b0c1ed8Smillert 1571b0c1ed8Smillert=head1 Known Problems 1581b0c1ed8Smillert 1591b0c1ed8SmillertDetached threads aren't supported on Windows yet, as they may lead to 1601b0c1ed8Smillertmemory access violation problems. 1611b0c1ed8Smillert 1621b0c1ed8SmillertThere is a known race condition opening scripts in C<suidperl>. C<suidperl> 1631b0c1ed8Smillertis neither built nor installed by default, and has been deprecated since 1641b0c1ed8Smillertperl 5.8.0. You are advised to replace use of suidperl with tools such 1651b0c1ed8Smillertas sudo ( http://www.courtesan.com/sudo/ ) 1661b0c1ed8Smillert 1671b0c1ed8SmillertWe have a backlog of unresolved bugs. Dealing with bugs and bug reports 1681b0c1ed8Smillertis unglamorous work; not something ideally suited to volunteer labour, 1691b0c1ed8Smillertbut that is all that we have. 1701b0c1ed8Smillert 1711b0c1ed8SmillertThe perl5 development team are implementing changes to help address this 1721b0c1ed8Smillertproblem, which should go live in early 2004. 1731b0c1ed8Smillert 1741b0c1ed8Smillert=head1 Future Directions 1751b0c1ed8Smillert 1761b0c1ed8SmillertCode freeze for the next maintenance release (5.8.4) is on March 31st 2004, 1771b0c1ed8Smillertwith release expected by mid April. Similarly 5.8.5's freeze will be at 1781b0c1ed8Smillertthe end of June, with release by mid July. 1791b0c1ed8Smillert 1801b0c1ed8Smillert=head1 Obituary 1811b0c1ed8Smillert 182*43890927SmillertIain 'Spoon' Truskett, Perl hacker, author of L<perlreref> and 1831b0c1ed8Smillertcontributor to CPAN, died suddenly on 29th December 2003, aged 24. 1841b0c1ed8SmillertHe will be missed. 1851b0c1ed8Smillert 1861b0c1ed8Smillert=head1 Reporting Bugs 1871b0c1ed8Smillert 1881b0c1ed8SmillertIf you find what you think is a bug, you might check the articles 1891b0c1ed8Smillertrecently posted to the comp.lang.perl.misc newsgroup and the perl 1901b0c1ed8Smillertbug database at http://bugs.perl.org. There may also be 1911b0c1ed8Smillertinformation at http://www.perl.org, the Perl Home Page. 1921b0c1ed8Smillert 1931b0c1ed8SmillertIf you believe you have an unreported bug, please run the B<perlbug> 1941b0c1ed8Smillertprogram included with your release. Be sure to trim your bug down 1951b0c1ed8Smillertto a tiny but sufficient test case. Your bug report, along with the 1961b0c1ed8Smillertoutput of C<perl -V>, will be sent off to perlbug@perl.org to be 1971b0c1ed8Smillertanalysed by the Perl porting team. You can browse and search 1981b0c1ed8Smillertthe Perl 5 bugs at http://bugs.perl.org/ 1991b0c1ed8Smillert 2001b0c1ed8Smillert=head1 SEE ALSO 2011b0c1ed8Smillert 2021b0c1ed8SmillertThe F<Changes> file for exhaustive details on what changed. 2031b0c1ed8Smillert 2041b0c1ed8SmillertThe F<INSTALL> file for how to build Perl. 2051b0c1ed8Smillert 2061b0c1ed8SmillertThe F<README> file for general stuff. 2071b0c1ed8Smillert 2081b0c1ed8SmillertThe F<Artistic> and F<Copying> files for copyright information. 2091b0c1ed8Smillert 2101b0c1ed8Smillert=cut 211