Commit | Line | Data |
---|---|---|
cba18cd5 JH |
1 | =head1 NAME |
2 | ||
5b304f34 | 3 | perl584delta - what is new for perl v5.8.4 |
cba18cd5 JH |
4 | |
5 | =head1 DESCRIPTION | |
6 | ||
7 | This document describes differences between the 5.8.3 release and | |
8 | the 5.8.4 release. | |
9 | ||
10 | =head1 Incompatible Changes | |
11 | ||
12 | Many minor bugs have been fixed. Scripts which happen to rely on previously | |
13 | erroneous behaviour will consider these fixes as incompatible changes :-) | |
14 | You are advised to perform sufficient acceptance testing on this release | |
15 | to satisfy yourself that this does not affect you, before putting this | |
16 | release into production. | |
17 | ||
18 | The diagnostic output of Carp has been changed slightly, to add a space after | |
19 | the comma between arguments. This makes it much easier for tools such as | |
20 | web browsers to wrap it, but might confuse any automatic tools which perform | |
21 | detailed parsing of Carp output. | |
22 | ||
23 | The internal dump output has been improved, so that non-printable characters | |
24 | such as newline and backspace are output in C<\x> notation, rather than | |
25 | octal. This might just confuse non-robust tools which parse the output of | |
26 | modules such as Devel::Peek. | |
27 | ||
28 | =head1 Core Enhancements | |
29 | ||
30 | =head2 Malloc wrapping | |
31 | ||
32 | Perl can now be built to detect attempts to assign pathologically large chunks | |
33 | of memory. Previously such assignments would suffer from integer wrap-around | |
34 | during size calculations causing a misallocation, which would crash perl, and | |
35 | could theoretically be used for "stack smashing" attacks. The wrapping | |
36 | defaults to enabled on platforms where we know it works (most AIX | |
37 | configurations, BSDi, Darwin, DEC OSF/1, FreeBSD, HP/UX, GNU Linux, OpenBSD, | |
38 | Solaris, VMS and most Win32 compilers) and defaults to disabled on other | |
39 | platforms. | |
40 | ||
41 | =head2 Unicode Character Database 4.0.1 | |
42 | ||
43 | The copy of the Unicode Character Database included in Perl 5.8 has | |
44 | been updated to 4.0.1 from 4.0.0. | |
45 | ||
46 | =head2 suidperl less insecure | |
47 | ||
48 | Paul Szabo has analysed and patched C<suidperl> to remove existing known | |
49 | insecurities. Currently there are no known holes in C<suidperl>, but previous | |
50 | experience shows that we cannot be confident that these were the last. You may | |
51 | no longer invoke the set uid perl directly, so to preserve backwards | |
52 | compatibility with scripts that invoke #!/usr/bin/suidperl the only set uid | |
53 | binary is now C<sperl5.8.>I<n> (C<sperl5.8.4> for this release). C<suidperl> | |
54 | is installed as a hard link to C<perl>; both C<suidperl> and C<perl> will | |
55 | invoke C<sperl5.8.4> automatically the set uid binary, so this change should | |
56 | be completely transparent. | |
57 | ||
58 | For new projects the core perl team would strongly recommend that you use | |
59 | dedicated, single purpose security tools such as C<sudo> in preference to | |
60 | C<suidperl>. | |
61 | ||
62 | =head2 format | |
63 | ||
64 | In addition to bug fixes, C<format>'s features have been enhanced. See | |
65 | L<perlform> | |
66 | ||
67 | =head1 Modules and Pragmata | |
68 | ||
69 | The (mis)use of C</tmp> in core modules and documentation has been tidied up. | |
70 | Some modules available both within the perl core and independently from CPAN | |
71 | ("dual-life modules") have not yet had these changes applied; the changes | |
72 | will be integrated into future stable perl releases as the modules are | |
73 | updated on CPAN. | |
74 | ||
75 | =head2 Updated modules | |
76 | ||
77 | =over 4 | |
78 | ||
79 | =item Attribute::Handlers | |
80 | ||
81 | =item B | |
82 | ||
83 | =item Benchmark | |
84 | ||
85 | =item CGI | |
86 | ||
87 | =item Carp | |
88 | ||
89 | =item Cwd | |
90 | ||
91 | =item Exporter | |
92 | ||
93 | =item File::Find | |
94 | ||
95 | =item IO | |
96 | ||
97 | =item IPC::Open3 | |
98 | ||
99 | =item Local::Maketext | |
100 | ||
101 | =item Math::BigFloat | |
102 | ||
103 | =item Math::BigInt | |
104 | ||
105 | =item Math::BigRat | |
106 | ||
107 | =item MIME::Base64 | |
108 | ||
109 | =item ODBM_File | |
110 | ||
111 | =item POSIX | |
112 | ||
113 | =item Shell | |
114 | ||
115 | =item Socket | |
116 | ||
117 | There is experimental support for Linux abstract Unix domain sockets. | |
118 | ||
119 | =item Storable | |
120 | ||
121 | =item Switch | |
122 | ||
123 | Synced with its CPAN version 2.10 | |
124 | ||
125 | =item Sys::Syslog | |
126 | ||
127 | C<syslog()> can now use numeric constants for facility names and priorities, | |
128 | in addition to strings. | |
129 | ||
130 | =item Term::ANSIColor | |
131 | ||
132 | =item Time::HiRes | |
133 | ||
134 | =item Unicode::UCD | |
135 | ||
136 | =item Win32 | |
137 | ||
138 | Win32.pm/Win32.xs has moved from the libwin32 module to core Perl | |
139 | ||
140 | =item base | |
141 | ||
142 | =item open | |
143 | ||
144 | =item threads | |
145 | ||
146 | Detached threads are now also supported on Windows. | |
147 | ||
148 | =item utf8 | |
149 | ||
150 | =back | |
151 | ||
152 | =head1 Performance Enhancements | |
153 | ||
154 | =over 4 | |
155 | ||
156 | =item * | |
157 | ||
158 | Accelerated Unicode case mappings (C</i>, C<lc>, C<uc>, etc). | |
159 | ||
160 | =item * | |
161 | ||
162 | In place sort optimised (eg C<@a = sort @a>) | |
163 | ||
164 | =item * | |
165 | ||
166 | Unnecessary assignment optimised away in | |
167 | ||
168 | my $s = undef; | |
169 | my @a = (); | |
170 | my %h = (); | |
171 | ||
172 | =item * | |
173 | ||
174 | Optimised C<map> in scalar context | |
175 | ||
176 | =back | |
177 | ||
178 | =head1 Utility Changes | |
179 | ||
180 | The Perl debugger (F<lib/perl5db.pl>) can now save all debugger commands for | |
181 | sourcing later, and can display the parent inheritance tree of a given class. | |
182 | ||
183 | =head1 Installation and Configuration Improvements | |
184 | ||
185 | The build process on both VMS and Windows has had several minor improvements | |
186 | made. On Windows Borland's C compiler can now compile perl with PerlIO and/or | |
187 | USE_LARGE_FILES enabled. | |
188 | ||
189 | C<perl.exe> on Windows now has a "Camel" logo icon. The use of a camel with | |
190 | the topic of Perl is a trademark of O'Reilly and Associates Inc., and is used | |
191 | with their permission (ie distribution of the source, compiling a Windows | |
192 | executable from it, and using that executable locally). Use of the supplied | |
193 | camel for anything other than a perl executable's icon is specifically not | |
194 | covered, and anyone wishing to redistribute perl binaries I<with> the icon | |
195 | should check directly with O'Reilly beforehand. | |
196 | ||
197 | Perl should build cleanly on Stratus VOS once more. | |
198 | ||
199 | =head1 Selected Bug Fixes | |
200 | ||
201 | More utf8 bugs fixed, notably in how C<chomp>, C<chop>, C<send>, and | |
202 | C<syswrite> and interact with utf8 data. Concatenation now works correctly | |
203 | when C<use bytes;> is in scope. | |
204 | ||
205 | Pragmata are now correctly propagated into (?{...}) constructions in regexps. | |
206 | Code such as | |
207 | ||
208 | my $x = qr{ ... (??{ $x }) ... }; | |
209 | ||
210 | will now (correctly) fail under use strict. (As the inner C<$x> is and | |
211 | has always referred to C<$::x>) | |
212 | ||
213 | The "const in void context" warning has been suppressed for a constant in an | |
214 | optimised-away boolean expression such as C<5 || print;> | |
215 | ||
216 | C<perl -i> could C<fchmod(stdin)> by mistake. This is serious if stdin is | |
217 | attached to a terminal, and perl is running as root. Now fixed. | |
218 | ||
219 | =head1 New or Changed Diagnostics | |
220 | ||
221 | C<Carp> and the internal diagnostic routines used by C<Devel::Peek> have been | |
222 | made clearer, as described in L</Incompatible Changes> | |
223 | ||
224 | =head1 Changed Internals | |
225 | ||
226 | Some bugs have been fixed in the hash internals. Restricted hashes and | |
227 | their place holders are now allocated and deleted at slightly different times, | |
228 | but this should not be visible to user code. | |
229 | ||
230 | =head1 Future Directions | |
231 | ||
232 | Code freeze for the next maintenance release (5.8.5) will be on 30th June | |
233 | 2004, with release by mid July. | |
234 | ||
235 | =head1 Platform Specific Problems | |
236 | ||
237 | This release is known not to build on Windows 95. | |
238 | ||
239 | =head1 Reporting Bugs | |
240 | ||
241 | If you find what you think is a bug, you might check the articles | |
242 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
243 | bug database at http://bugs.perl.org. There may also be | |
244 | information at http://www.perl.org, the Perl Home Page. | |
245 | ||
246 | If you believe you have an unreported bug, please run the B<perlbug> | |
247 | program included with your release. Be sure to trim your bug down | |
248 | to a tiny but sufficient test case. Your bug report, along with the | |
249 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
250 | analysed by the Perl porting team. You can browse and search | |
251 | the Perl 5 bugs at http://bugs.perl.org/ | |
252 | ||
253 | =head1 SEE ALSO | |
254 | ||
255 | The F<Changes> file for exhaustive details on what changed. | |
256 | ||
257 | The F<INSTALL> file for how to build Perl. | |
258 | ||
259 | The F<README> file for general stuff. | |
260 | ||
261 | The F<Artistic> and F<Copying> files for copyright information. | |
262 | ||
263 | =cut |