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