Commit | Line | Data |
---|---|---|
315ba985 NC |
1 | =head1 NAME |
2 | ||
70693193 | 3 | perl587delta - what is new for perl v5.8.7 |
315ba985 NC |
4 | |
5 | =head1 DESCRIPTION | |
6 | ||
7 | This document describes differences between the 5.8.6 release and | |
8 | the 5.8.7 release. | |
9 | ||
10 | =head1 Incompatible Changes | |
11 | ||
12 | There are no changes incompatible with 5.8.6. | |
13 | ||
14 | =head1 Core Enhancements | |
15 | ||
16 | =head2 Unicode Character Database 4.1.0 | |
17 | ||
18 | The copy of the Unicode Character Database included in Perl 5.8 has | |
19 | been updated to 4.1.0 from 4.0.1. See | |
20 | L<http://www.unicode.org/versions/Unicode4.1.0/#NotableChanges> for the | |
21 | notable changes. | |
22 | ||
23 | =head2 suidperl less insecure | |
24 | ||
25 | A pair of exploits in C<suidperl> involving debugging code have been closed. | |
26 | ||
27 | For new projects the core perl team strongly recommends that you use | |
28 | dedicated, single purpose security tools such as C<sudo> in preference to | |
29 | C<suidperl>. | |
30 | ||
31 | =head2 Optional site customization script | |
32 | ||
33 | The perl interpreter can be built to allow the use of a site customization | |
34 | script. By default this is not enabled, to be consistent with previous perl | |
35 | releases. To use this, add C<-Dusesitecustomize> to the command line flags | |
36 | when running the C<Configure> script. See also L<perlrun/-f>. | |
37 | ||
38 | =head2 C<Config.pm> is now much smaller. | |
39 | ||
40 | C<Config.pm> is now about 3K rather than 32K, with the infrequently used | |
41 | code and C<%Config> values loaded on demand. This is transparent to the | |
42 | programmer, but means that most code will save parsing and loading 29K of | |
43 | script (for example, code that uses C<File::Find>). | |
44 | ||
45 | =head1 Modules and Pragmata | |
46 | ||
47 | =over 4 | |
48 | ||
49 | =item * | |
50 | ||
51 | B upgraded to version 1.09 | |
52 | ||
53 | =item * | |
54 | ||
55 | base upgraded to version 2.07 | |
56 | ||
57 | =item * | |
58 | ||
59 | bignum upgraded to version 0.17 | |
60 | ||
61 | =item * | |
62 | ||
63 | bytes upgraded to version 1.02 | |
64 | ||
65 | =item * | |
66 | ||
67 | Carp upgraded to version 1.04 | |
68 | ||
69 | =item * | |
70 | ||
71 | CGI upgraded to version 3.10 | |
72 | ||
73 | =item * | |
74 | ||
75 | Class::ISA upgraded to version 0.33 | |
76 | ||
77 | =item * | |
78 | ||
79 | Data::Dumper upgraded to version 2.121_02 | |
80 | ||
81 | =item * | |
82 | ||
83 | DB_File upgraded to version 1.811 | |
84 | ||
85 | =item * | |
86 | ||
87 | Devel::PPPort upgraded to version 3.06 | |
88 | ||
89 | =item * | |
90 | ||
91 | Digest upgraded to version 1.10 | |
92 | ||
93 | =item * | |
94 | ||
95 | Encode upgraded to version 2.10 | |
96 | ||
97 | =item * | |
98 | ||
99 | FileCache upgraded to version 1.05 | |
100 | ||
101 | =item * | |
102 | ||
103 | File::Path upgraded to version 1.07 | |
104 | ||
105 | =item * | |
106 | ||
107 | File::Temp upgraded to version 0.16 | |
108 | ||
109 | =item * | |
110 | ||
111 | IO::File upgraded to version 1.11 | |
112 | ||
113 | =item * | |
114 | ||
115 | IO::Socket upgraded to version 1.28 | |
116 | ||
117 | =item * | |
118 | ||
119 | Math::BigInt upgraded to version 1.77 | |
120 | ||
121 | =item * | |
122 | ||
123 | Math::BigRat upgraded to version 0.15 | |
124 | ||
125 | =item * | |
126 | ||
127 | overload upgraded to version 1.03 | |
128 | ||
129 | =item * | |
130 | ||
131 | PathTools upgraded to version 3.05 | |
132 | ||
133 | =item * | |
134 | ||
135 | Pod::HTML upgraded to version 1.0503 | |
136 | ||
137 | =item * | |
138 | ||
139 | Pod::Perldoc upgraded to version 3.14 | |
140 | ||
141 | =item * | |
142 | ||
143 | Pod::LaTeX upgraded to version 0.58 | |
144 | ||
145 | =item * | |
146 | ||
147 | Pod::Parser upgraded to version 1.30 | |
148 | ||
149 | =item * | |
150 | ||
151 | Symbol upgraded to version 1.06 | |
152 | ||
153 | =item * | |
154 | ||
155 | Term::ANSIColor upgraded to version 1.09 | |
156 | ||
157 | =item * | |
158 | ||
159 | Test::Harness upgraded to version 2.48 | |
160 | ||
161 | =item * | |
162 | ||
163 | Test::Simple upgraded to version 0.54 | |
164 | ||
165 | =item * | |
166 | ||
167 | Text::Wrap upgraded to version 2001.09293, to fix a bug when wrap() was | |
168 | called with a non-space separator. | |
169 | ||
170 | =item * | |
171 | ||
172 | threads::shared upgraded to version 0.93 | |
173 | ||
174 | =item * | |
175 | ||
176 | Time::HiRes upgraded to version 1.66 | |
177 | ||
178 | =item * | |
179 | ||
180 | Time::Local upgraded to version 1.11 | |
181 | ||
182 | =item * | |
183 | ||
184 | Unicode::Normalize upgraded to version 0.32 | |
185 | ||
186 | =item * | |
187 | ||
188 | utf8 upgraded to version 1.05 | |
189 | ||
190 | =item * | |
191 | ||
192 | Win32 upgraded to version 0.24, which provides Win32::GetFileVersion | |
193 | ||
194 | =back | |
195 | ||
196 | =head1 Utility Changes | |
197 | ||
198 | =head2 find2perl enhancements | |
199 | ||
200 | C<find2perl> has new options C<-iname>, C<-path> and C<-ipath>. | |
201 | ||
202 | =head1 Performance Enhancements | |
203 | ||
204 | The internal pointer mapping hash used during ithreads cloning now uses an | |
205 | arena for memory allocation. In tests this reduced ithreads cloning time by | |
206 | about 10%. | |
207 | ||
208 | =head1 Installation and Configuration Improvements | |
209 | ||
210 | =over 4 | |
211 | ||
212 | =item * | |
213 | ||
214 | The Win32 "dmake" makefile.mk has been updated to make it compatible | |
215 | with the latest versions of dmake. | |
216 | ||
217 | =item * | |
218 | ||
219 | C<PERL_MALLOC>, C<DEBUG_MSTATS>, C<PERL_HASH_SEED_EXPLICIT> and C<NO_HASH_SEED> | |
220 | should now work in Win32 makefiles. | |
221 | ||
222 | =back | |
223 | ||
224 | =head1 Selected Bug Fixes | |
225 | ||
226 | =over 4 | |
227 | ||
228 | =item * | |
229 | ||
230 | The socket() function on Win32 has been fixed so that it is able to use | |
231 | transport providers which specify a protocol of 0 (meaning any protocol | |
232 | is allowed) once more. (This was broken in 5.8.6, and typically caused | |
233 | the use of ICMP sockets to fail.) | |
234 | ||
235 | =item * | |
236 | ||
237 | Another obscure bug involving C<substr> and UTF-8 caused by bad internal | |
238 | offset caching has been identified and fixed. | |
239 | ||
240 | =item * | |
241 | ||
242 | A bug involving the loading of UTF-8 tables by the regexp engine has been | |
243 | fixed - code such as C<"\x{100}" =~ /[[:print:]]/> will no longer give | |
244 | corrupt results. | |
245 | ||
246 | =item * | |
247 | ||
248 | Case conversion operations such as C<uc> on a long Unicode string could | |
249 | exhaust memory. This has been fixed. | |
250 | ||
251 | =item * | |
252 | ||
253 | C<index>/C<rindex> were buggy for some combinations of Unicode and | |
254 | non-Unicode data. This has been fixed. | |
255 | ||
256 | =item * | |
257 | ||
258 | C<read> (and presumably C<sysread>) would expose the UTF-8 internals when | |
259 | reading from a byte oriented file handle into a UTF-8 scalar. This has | |
260 | been fixed. | |
261 | ||
262 | =item * | |
263 | ||
264 | Several C<pack>/C<unpack> bug fixes: | |
265 | ||
266 | =over 4 | |
267 | ||
268 | =item * | |
269 | ||
270 | Checksums with C<b> or C<B> formats were broken. | |
271 | ||
272 | =item * | |
273 | ||
274 | C<unpack> checksums could overflow with the C<C> format. | |
275 | ||
276 | =item * | |
277 | ||
278 | C<U0> and C<C0> are now scoped to C<()> C<pack> sub-templates. | |
279 | ||
280 | =item * | |
281 | ||
282 | Counted length prefixes now don't change C<C0>/C<U0> mode. | |
283 | ||
284 | =item * | |
285 | ||
286 | C<pack> C<Z0> used to destroy the preceding character. | |
287 | ||
288 | =item * | |
289 | ||
290 | C<P>/C<p> C<pack> formats used to only recognise literal C<undef> | |
291 | ||
292 | =back | |
293 | ||
294 | =item * | |
295 | ||
296 | Using closures with ithreads could cause perl to crash. This was due to | |
297 | failure to correctly lock internal OP structures, and has been fixed. | |
298 | ||
299 | =item * | |
300 | ||
301 | The return value of C<close> now correctly reflects any file errors that | |
302 | occur while flushing the handle's data, instead of just giving failure if | |
303 | the actual underlying file close operation failed. | |
304 | ||
305 | =item * | |
306 | ||
307 | C<not() || 1> used to segfault. C<not()> now behaves like C<not(0)>, which was | |
308 | the pre 5.6.0 behaviour. | |
309 | ||
310 | =item * | |
311 | ||
312 | C<h2ph> has various enhancements to cope with constructs in header files that | |
313 | used to result in incorrect or invalid output. | |
314 | ||
315 | =back | |
316 | ||
317 | =head1 New or Changed Diagnostics | |
318 | ||
319 | There is a new taint error, "%ENV is aliased to %s". This error is thrown | |
320 | when taint checks are enabled and when C<*ENV> has been aliased, so that | |
321 | C<%ENV> has no env-magic anymore and hence the environment cannot be verified | |
322 | as taint-free. | |
323 | ||
324 | The internals of C<pack> and C<unpack> have been updated. All legitimate | |
325 | templates should work as before, but there may be some changes in the error | |
326 | reported for complex failure cases. Any behaviour changes for non-error cases | |
327 | are bugs, and should be reported. | |
328 | ||
329 | =head1 Changed Internals | |
330 | ||
331 | There has been a fair amount of refactoring of the C<C> source code, partly to | |
332 | make it tidier and more maintainable. The resulting object code and the | |
333 | C<perl> binary may well be smaller than 5.8.6, and hopefully faster in some | |
334 | cases, but apart from this there should be no user-detectable changes. | |
335 | ||
336 | C<${^UTF8LOCALE}> has been added to give perl space access to C<PL_utf8locale>. | |
337 | ||
338 | The size of the arenas used to allocate SV heads and most SV bodies can now | |
339 | be changed at compile time. The old size was 1008 bytes, the new default size | |
340 | is 4080 bytes. | |
341 | ||
342 | =head1 Known Problems | |
343 | ||
344 | Unicode strings returned from overloaded operators can be buggy. This is a | |
345 | long standing bug reported since 5.8.6 was released, but we do not yet have | |
346 | a suitable fix for it. | |
347 | ||
348 | =head1 Platform Specific Problems | |
349 | ||
350 | On UNICOS, lib/Math/BigInt/t/bigintc.t hangs burning CPU. | |
351 | ext/B/t/bytecode.t and ext/Socket/t/socketpair.t both fail tests. | |
352 | These are unlikely to be resolved, as our valiant UNICOS porter's last | |
353 | Cray is being decommissioned. | |
354 | ||
355 | =head1 Reporting Bugs | |
356 | ||
357 | If you find what you think is a bug, you might check the articles | |
358 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
359 | bug database at http://bugs.perl.org. There may also be | |
360 | information at http://www.perl.org, the Perl Home Page. | |
361 | ||
362 | If you believe you have an unreported bug, please run the B<perlbug> | |
363 | program included with your release. Be sure to trim your bug down | |
364 | to a tiny but sufficient test case. Your bug report, along with the | |
365 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
366 | analysed by the Perl porting team. You can browse and search | |
367 | the Perl 5 bugs at http://bugs.perl.org/ | |
368 | ||
369 | =head1 SEE ALSO | |
370 | ||
371 | The F<Changes> file for exhaustive details on what changed. | |
372 | ||
373 | The F<INSTALL> file for how to build Perl. | |
374 | ||
375 | The F<README> file for general stuff. | |
376 | ||
377 | The F<Artistic> and F<Copying> files for copyright information. | |
378 | ||
379 | =cut |