xref: /openbsd-src/gnu/usr.bin/perl/pod/perl583delta.pod (revision 43890927971b33046ea25e594cdf3603586ca0bd)
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