VOS updates from Paul Green.
[p5sagit/p5-mst-13.2.git] / pod / perl572delta.pod
CommitLineData
43d4bbc8 1=head1 NAME
2
3perl571delta - what's new for perl v5.7.2
4
5=head1 DESCRIPTION
6
7This document describes differences between the 5.7.1 release and the
85.7.2 release.
9
10(To view the differences between the 5.6.0 release and the 5.7.0
11release, see L<perl570delta>. To view the differences between the
125.7.0 release and the 5.7.1 release, see L<perl571delta>.)
13
14=head1 Security Vulnerability Closed
15
16(This change was already made in 5.7.0 but bears repeating here.)
17
18A security vulnerability affecting all Perl versions prior to 5.6.1
19was found in August 2000. The vulnerability does not affect default
20installations and as far as is known affects only the Linux platform.
21
22You should upgrade your Perl to 5.6.1 as soon as possible. Patches
267a12e6 23for earlier releases exist but using the patches require full
24recompilation from the source code anyway, so 5.6.1 is your best
25choice.
26
43d4bbc8 27See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt
28for more information.
29
30=head1 Incompatible Changes
31
267a12e6 32If your pointers are 64 bits wide, the Perl malloc is no more being
33used because it simply does not work with 8-byte pointers. Also,
34usually the system malloc on such platforms are much better optimized
35for such large memory models than the Perl malloc.
36
cbb3fa72 37=head1 Future Deprecations
38
39The current user-visible implementation of pseudo-hashes (the weird
40use of the first array element) is deprecated starting from Perl 5.8.0
41and will be removed in Perl 5.10.0, and the feature will be implemented
42differently. Not only is the current interface rather ugly, but the
43current implementation slows down normal array and hash use quite
44noticeably. The 'fields' pragma interface will remain available.
45
267a12e6 46The suidperl is also considered to be too much a risk to continue
47maintaining and the suidperl code is likely to be removed in a future
48release.
49
43d4bbc8 50=head1 Core Enhancements
51
267a12e6 52In general a lot of fixing has happened in the area of Perl's understanding
53of numbers, both integer and floating point. Since in many systems the
54standard number parsing functions like C<strtoul()> and C<atof()> seem
55to have bugs, Perl tries to work around their deficiencies. This results
56hopefully in more accurate numbers.
57
58=over 4
59
60=item *
61
62The rules for allowing underscores (underbars) in numeric constants
63have been relaxed and simplified: now you can have an underscore
64B<between digits>.
65
66=item *
67
68VMS now works under PerlIO.
69
70=item *
71
72GMAGIC (right-hand side magic) could in many cases such as concatenation
73of string be invoked too many times.
74
75=item *
76
77The MAGIC constants (e.g. C<'P'>) have been macrofied
78(e.g. C<PERL_MAGIC_TIED>) for better source code readability
79and maintainability.
80
81=item *
82
83The C<op_clear> and C<op_null> are now exported.
84
85=item *
86
87The Perl parser has been stress tested using both random input and
88Markov chain input.
89
90=back
91
43d4bbc8 92=head1 Modules and Pragmata
93
94=head2 New Modules
95
267a12e6 96=over 4
97
98=item *
99
100Attribute::Handlers - Simpler definition of attribute handlers
101
102=item *
103
104ExtUtils::Constant - generate XS code to import C header constants
105
106=item *
107
108I18N::LangTags - functions for dealing with RFC3066-style language tags
109
110=item *
111
112List::Util - selection of general-utility list subroutines
113
114=item *
115
116Locale::Maketext - framework for localization
117
118=item *
119
120NEXT - pseudo-class for method redispatch
121
122=item *
123
124Scalar::Util - selection of general-utility scalar subroutines
125
126=item *
127
128Time::HiRes - high resolution ualarm, usleep, and gettimeofday
129
130=back
131
43d4bbc8 132=head2 Updated And Improved Modules and Pragmata
133
267a12e6 134=over 4
135
136=item *
137
138L<B::Deparse> module has been significantly enhanced. It now
139can deparse almost all of the standard test suite (so that the
140tests still succeed).
141
142=item *
143
144L<Class::Struct> now assigns the array/hash element if the accessor
145is called with an array/hash element as the B<sole> argument.
146
147=item *
148
149L<Cwd> extension is now (even) faster.
150
151=item *
152
153L<DB_File> extension has been updated to version 1.77.
154
155=item *
156
157L<Fcntl>, L<Socket>, and L<Sys::Syslog> have been rewritten to use the
158new-style constant dispatch section (see L<ExtUtils::Constant>).
159
160=item *
161
162L<File::Glob> now supports C<GLOB_LIMIT> constant to limit the
163size of the returned list of filenames.
164
165=back
166
43d4bbc8 167=head1 Performance Enhancements
168
169=head1 Utility Changes
170
267a12e6 171=over 4
172
173=item *
174
175L<h2xs> uses the new L<ExtUtils::Constant> module which will affect
176newly created extensions that define constants. Since the new code is
177more correct (if you have two constants where the first one is a
178prefix of the second one, the first constant B<never> gets defined),
179less lossy (it uses integers for integer constant, as opposed to the
180old code that used floating point numbers even for integer constants),
181and slightly faster, you might want to consider regenerating your
182extension code (the new scheme makes regenerating easy).
183
184=item *
185
186The F<emacs/e2ctags.pl> is now much faster.
187
188=item *
189
190The F<Pod::Html> (and thusly L<pod2html>) now allows specifying
191a cache directory.
192
193=back
194
43d4bbc8 195=head1 New Documentation
196
267a12e6 197=over 4
198
199=item *
200
201L<Locale::Maketext::TPJ13> is an article about software localization,
202originally published in The Perl Journal #13, republished here with
203kind permission.
204
205=item *
206
207More README.$PLATFORM files have been converted into pod, which also
208means that they also be installed as perl$PLATFORM documentation
209files. The new files are L<perlapollo>, L<perlbeos>, L<perldgux>,
210L<perlhurd>, L<perlmint>, L<perlplan9>, L<perlqnx>, and L<perltru64>.
211
212=item *
213
214The F<Todo> and F<Todo-5.6> files have been merged into L<perltodo>.
215
216=item *
217
218Use of the F<gprof> tool to profile Perl has been documented in L<perlhack>.
219
220=back
221
43d4bbc8 222=head1 Installation and Configuration Improvements
223
224=head2 New Or Improved Platforms
225
267a12e6 226=over 4
227
228=item *
229
230AIX should now work better with gcc. Also longdouble support in
231AIX should be better now.
232
233=item *
234
235AtheOS (http://www.atheos.cx/) is a new platform.
236
237=item *
238
239DG/UX platform now supports the 5.005-style threads.
240
241=item *
242
243MacOS (Classic) [HOPEFULLY]
244
245=item *
246
247MacOS X (or Darwin) should now be able to build Perl even on HFS+ filesystem.
248(The case-insensitivity confused the Perl build process.)
249
250=item *
251
252Netware [HOPEFULLY]
253
254=item *
255
256The Amdahl UTS UNIX mainframe platform is now supported.
257
258=back
259
43d4bbc8 260=head2 Generic Improvements
261
267a12e6 262=over 4
263
264=item *
265
266The C code has been made much more C<gcc -Wall> clean. Some warning
267messages still remain, though, so if you are compiling with gcc you
268will see some warnings about dubious practices. The warnings are
269being worked on.
270
271=item *
272
273In AFS installations one can configure the root of the AFS to be
274somewhere else than the default F</afs> by using the Configure
275parameter C<-Dafsroot=/some/where/else>.
276
277=item *
278
279The version of Berkeley DB used when the Perl (and, presumably, the
280DB_File extension) was built is now available as
281C<@Config{qw(db_version_major db_version_minor db_version_patch)}>
282from Perl and as C<DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG
283DB_VERSION_PATCH_CFG> from C.
284
285=item *
286
287The Thread extension is not built at all under ithreads (C<Configure
288-Duseithreads>) because it wouldn't work anyway (the Thread extension
289requires being Configured with C<-Duse5005threads>).
290
291=item *
292
293The C<B::Deparse> compiler backend has been so significantly improved
294that almost the whole Perl test suite passes after being deparsed. A
295make target has been added to help in further testing: C<make test.deparse>.
296
297=back
298
43d4bbc8 299=head1 Selected Bug Fixes
300
301=head2 Platform Specific Changes and Fixes
302
267a12e6 303=over 4
304
305=item *
306
307Some versions of glibc have a broken modfl(). This affects builds
308with C<-Duselongdouble>. This version of Perl detects this brokenness
309and has a workaround for it. The glibc release 2.2.2 is known to have
310fixed the modfl() bug.
311
312=back
313
43d4bbc8 314=head1 New or Changed Diagnostics
315
267a12e6 316=over 4
317
318=item *
319
320In the regular expression diagnostics the C<E<lt>E<lt> HERE> marker
321introduced in 5.7.0 has been changed to be C<E<lt>-- HERE> since too
322many people found the C<E<lt>E<lt>> to be too similar to here-document
323starters.
324
325=item *
326
327If you try to L<perlfunc/pack> a number less than 0 or larger than 255
328using the C<"C"> format you will get an optional warning. Similarly
329for the C<"c"> format and a number less than -128 or more than 127.
330
331=item *
332
333Certain regex modifiers such as C<(?o)> make sense only if applied to
334the entire regex. You will an optional warning if you try to do otherwise.
335
336=item *
337
338Using arrays or hashes as references (e.g. C<%foo->{bar}> has been
339deprecated for a while. Now you will get an optional warning.
340
341=back
342
43d4bbc8 343=head1 Changed Internals
344
345=head2 Regex pre-/post-compilation items matched up
346
347The regex compiler now maintains a structure that identifies nodes in
348the compiled bytecode with the corresponding syntactic features of the
349original regex expression. The information is attached to the new
350C<offsets> member of the C<struct regexp>. See L<perldebguts> for more
351complete information.
352
353=head1 New Tests
354
267a12e6 355Several new tests have been added, especially for the F<lib> subsection.
356
357=back
358
359The test F<camel-III/vstring> has been merged with F<op/ver>.
360
43d4bbc8 361=head1 Known Problems
362
363Note that unlike other sections in this document (which describe
364changes since 5.7.0) this section is cumulative containing known
365problems for all the 5.7 releases.
366
367=head2 AIX vac 5.0.0.0 May Produce Buggy Code For Perl
368
369The AIX C compiler vac version 5.0.0.0 may produce buggy code,
370resulting in few random tests failing, but when the failing tests
371are run by hand, they succeed. We suggest upgrading to at least
372vac version 5.0.1.0, that has been known to compile Perl correctly.
373"lslpp -L|grep vac.C" will tell you the vac version.
374
375=head2 lib/ftmp-security tests warn 'system possibly insecure'
376
377Don't panic. Read INSTALL 'make test' section instead.
378
379=head2 lib/io_multihomed Fails In LP64-Configured HP-UX
380
381The lib/io_multihomed test may hang in HP-UX if Perl has been
382configured to be 64-bit. Because other 64-bit platforms do not hang in
383this test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The
384test attempts to create and connect to "multihomed" sockets (sockets
385which have multiple IP addresses).
386
387=head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX
388
389If perl is configured with -Duse64bitall, the successful result of the
390subtest 10 of lib/posix may arrive before the successful result of the
391subtest 9, which confuses the test harness so much that it thinks the
392subtest 9 failed.
393
394=head2 lib/b test 19
395
396The test fails on various platforms (PA64 and IA64 are known), but the
397exact cause is still being investigated.
398
399=head2 Linux With Sfio Fails op/misc Test 48
400
401No known fix.
402
403=head2 sigaction test 13 in VMS
404
405The test is known to fail; whether it's because of VMS of because
406of faulty test is not known.
407
408=head2 sprintf tests 129 and 130
409
410The op/sprintf tests 129 and 130 are known to fail on some platforms.
411Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX.
412The failing platforms do not comply with the ANSI C Standard, line
41319ff on page 134 of ANSI X3.159 1989 to be exact. (They produce
414something else than "1" and "-1" when formatting 0.6 and -0.6 using
415the printf format "%.0f", most often they produce "0" and "-0".)
416
417=head2 Failure of Thread tests
418
45215428 419B<Note that support for 5.005-style threading remains experimental.>
420
421The following tests are known to fail due to fundamental problems in
422the 5.005 threading implementation. These are not new failures--Perl
4235.005_0x has the same bugs, but didn't have these tests.
424
425lib/Memoize/t/correctness.t 23-25
426lib/Memoize/t/unmemoize.t 2-5
427t/pragma/autouse.t 4
428t/lib/thr5005.t 19-20
43d4bbc8 429
430=head2 Localising a Tied Variable Leaks Memory
431
432 use Tie::Hash;
433 tie my %tie_hash => 'Tie::StdHash';
434
435 ...
436
437 local($tie_hash{Foo}) = 1; # leaks
438
439Code like the above is known to leak memory every time the local()
440is executed.
441
442=head2 Self-tying of Arrays and Hashes Is Forbidden
443
444Self-tying of arrays and hashes is broken in rather deep and
445hard-to-fix ways. As a stop-gap measure to avoid people from getting
446frustrated at the mysterious results (core dumps, most often) it is
447for now forbidden (you will get a fatal error even from an attempt).
448
449=head2 Building Extensions Can Fail Because Of Largefiles
450
451Some extensions like mod_perl are known to have issues with
452`largefiles', a change brought by Perl 5.6.0 in which file offsets
453default to 64 bits wide, where supported. Modules may fail to compile
454at all or compile and work incorrectly. Currently there is no good
455solution for the problem, but Configure now provides appropriate
456non-largefile ccflags, ldflags, libswanted, and libs in the %Config
457hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are
458having problems can try configuring themselves without the
459largefileness. This is admittedly not a clean solution, and the
460solution may not even work at all. One potential failure is whether
461one can (or, if one can, whether it's a good idea) link together at
462all binaries with different ideas about file offsets, all this is
463platform-dependent.
464
465=head2 The Compiler Suite Is Still Experimental
466
467The compiler suite is slowly getting better but is nowhere near
468working order yet.
469
470=head1 Reporting Bugs
471
472If you find what you think is a bug, you might check the articles
473recently posted to the comp.lang.perl.misc newsgroup and the perl
474bug database at http://bugs.perl.org. There may also be
475information at http://www.perl.com/perl/, the Perl Home Page.
476
477If you believe you have an unreported bug, please run the B<perlbug>
478program included with your release. Be sure to trim your bug down
479to a tiny but sufficient test case. Your bug report, along with the
480output of C<perl -V>, will be sent off to perlbug@perl.org to be
481analysed by the Perl porting team.
482
483=head1 SEE ALSO
484
485The F<Changes> file for exhaustive details on what changed.
486
487The F<INSTALL> file for how to build Perl.
488
489The F<README> file for general stuff.
490
491The F<Artistic> and F<Copying> files for copyright information.
492
493=head1 HISTORY
494
495Written by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions
496from The Perl Porters and Perl Users submitting feedback and patches.
497
498Send omissions or corrections to <F<perlbug@perl.org>>.
499
500=cut