Add charscript() to get the UTR#24 script names of characters.
[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
699e893f 32=head2 64-bit platforms and malloc
33
267a12e6 34If your pointers are 64 bits wide, the Perl malloc is no more being
35used because it simply does not work with 8-byte pointers. Also,
36usually the system malloc on such platforms are much better optimized
37for such large memory models than the Perl malloc.
38
d7b629d9 39=head2 AIX Dynaloading
40
41The AIX dynaloading now uses the native dlopen interface of AIX,
42(given the AIX is recent enough) instead of the old emulated interface.
43This will probably break backward compatibility with compiled modules.
44
45=head2 Socket Extension Dynamic in VMS
46
47The Socket extension is now dynamically loaded instead of being
48statically built in. This may or may not be a problem with ancient
49TCP/IP stacks of VMS: we do not know since we weren't able to test
50Perl in such configurations.
51
52=head2 Deprecations
cbb3fa72 53
54The current user-visible implementation of pseudo-hashes (the weird
55use of the first array element) is deprecated starting from Perl 5.8.0
d7b629d9 56and will be removed in Perl 5.10.0, and the feature will be
57implemented differently. Not only is the current interface rather
58ugly, but the current implementation slows down normal array and hash
59use quite noticeably. The 'fields' pragma interface will remain
60available.
61
62The syntaxes C<@a->[...]> and C<@h->{...}> have now been deprecated.
cbb3fa72 63
267a12e6 64The suidperl is also considered to be too much a risk to continue
65maintaining and the suidperl code is likely to be removed in a future
66release.
67
43d4bbc8 68=head1 Core Enhancements
69
d7b629d9 70In general a lot of fixing has happened in the area of Perl's
71understanding of numbers, both integer and floating point. Since in
72many systems the standard number parsing functions like C<strtoul()>
73and C<atof()> seem to have bugs, Perl tries to work around their
74deficiencies. This results hopefully in more accurate numbers.
267a12e6 75
76=over 4
77
78=item *
79
80The rules for allowing underscores (underbars) in numeric constants
81have been relaxed and simplified: now you can have an underscore
82B<between digits>.
83
84=item *
85
9108dd47 86GMAGIC (right-hand side magic) could in many cases such as string
87concatenation be invoked too many times.
267a12e6 88
89=item *
90
d7b629d9 91Lexicals I: lexicals outside an eval "" weren't resolved
92correctly inside a subroutine definition inside the eval "" if they
93were not already referenced in the top level of the eval""ed code.
94
95=item *
96
97Lexicals II: lexicals leaked at file scope into subroutines that
98were declared before the lexicals.
99
100=item *
101
102Lvalue subroutines can now return C<undef> in list context.
267a12e6 103
104=item *
105
9108dd47 106The C<op_clear> and C<op_null> are now exported.
267a12e6 107
108=item *
109
9108dd47 110A new special regular expression variable has been introduced:
111C<$^N>, which contains the most-recently closed group (submatch).
267a12e6 112
113=item *
114
699e893f 115L<utime> now supports C<utime undef, undef, @files> to change the
d7b629d9 116file timestamps to the current time.
699e893f 117
118=item *
119
267a12e6 120The Perl parser has been stress tested using both random input and
121Markov chain input.
122
d7b629d9 123=item *
124
125C<eval "v200"> now works.
126
127=item *
128
129VMS now works under PerlIO.
130
267a12e6 131=back
132
43d4bbc8 133=head1 Modules and Pragmata
134
699e893f 135=head2 New Modules and Distribution
43d4bbc8 136
267a12e6 137=over 4
138
139=item *
140
699e893f 141L<Attribute::Handlers> - Simpler definition of attribute handlers
142
143=item *
144
145L<ExtUtils::Constant> - generate XS code to import C header constants
146
147=item *
148
149L<I18N::LangTags> - functions for dealing with RFC3066-style language tags
150
151=item *
152
153L<libnet> - a collection of perl5 modules related to network programming
267a12e6 154
d7b629d9 155Perl installation leaves libnet unconfigured, use F<libnetcfg> to configure.
156
267a12e6 157=item *
158
699e893f 159L<List::Util> - selection of general-utility list subroutines
267a12e6 160
161=item *
162
699e893f 163L<Locale::Maketext> - framework for localization
267a12e6 164
165=item *
166
699e893f 167L<Memoize> - Make your functions faster by trading space for time
267a12e6 168
169=item *
170
699e893f 171L<NEXT> - pseudo-class for method redispatch
267a12e6 172
173=item *
174
699e893f 175L<Scalar::Util> - selection of general-utility scalar subroutines
267a12e6 176
177=item *
178
7117b917 179L<Test::More> - yet another framework for writing test scripts
180
181=item *
182
183L<Test::Simple> - Basic utilities for writing tests
184
185=item *
186
699e893f 187L<Time::HiRes> - high resolution ualarm, usleep, and gettimeofday
267a12e6 188
189=item *
190
699e893f 191L<Time::Piece> - Object Oriented time objects
267a12e6 192
d7b629d9 193(Previously known as L<Time::Object>.)
194
267a12e6 195=back
196
43d4bbc8 197=head2 Updated And Improved Modules and Pragmata
198
267a12e6 199=over 4
200
201=item *
202
203L<B::Deparse> module has been significantly enhanced. It now
204can deparse almost all of the standard test suite (so that the
7ebe6671 205tests still succeed). There is a make target "test.deparse"
206for trying this out.
267a12e6 207
208=item *
209
210L<Class::Struct> now assigns the array/hash element if the accessor
211is called with an array/hash element as the B<sole> argument.
212
213=item *
214
215L<Cwd> extension is now (even) faster.
216
217=item *
218
219L<DB_File> extension has been updated to version 1.77.
220
221=item *
222
223L<Fcntl>, L<Socket>, and L<Sys::Syslog> have been rewritten to use the
224new-style constant dispatch section (see L<ExtUtils::Constant>).
225
226=item *
227
699e893f 228L<File::Find> is now (again) reentrant. It also has been made
229more portable.
230
231=item *
232
267a12e6 233L<File::Glob> now supports C<GLOB_LIMIT> constant to limit the
234size of the returned list of filenames.
235
699e893f 236=item *
267a12e6 237
d7b629d9 238L<IO::Socket::INET> now supports C<LocalPort> of zero (usually meaning
239that the operating system will make one up.)
240
241=item *
242
243The L<vars> pragma now supports declaring fully qualified variables.
244(Something that C<our()> does not and will not support.)
699e893f 245
246=back
43d4bbc8 247
248=head1 Utility Changes
249
267a12e6 250=over 4
251
252=item *
253
699e893f 254The F<emacs/e2ctags.pl> is now much faster.
255
256=item *
257
d7b629d9 258L<h2ph> now supports C trigraphs.
259
260=item *
261
267a12e6 262L<h2xs> uses the new L<ExtUtils::Constant> module which will affect
263newly created extensions that define constants. Since the new code is
264more correct (if you have two constants where the first one is a
265prefix of the second one, the first constant B<never> gets defined),
266less lossy (it uses integers for integer constant, as opposed to the
267old code that used floating point numbers even for integer constants),
268and slightly faster, you might want to consider regenerating your
269extension code (the new scheme makes regenerating easy).
270
271=item *
272
699e893f 273L<libnetcfg> has been added to configure the libnet.
267a12e6 274
275=item *
276
277The F<Pod::Html> (and thusly L<pod2html>) now allows specifying
278a cache directory.
279
280=back
281
43d4bbc8 282=head1 New Documentation
283
267a12e6 284=over 4
285
286=item *
287
288L<Locale::Maketext::TPJ13> is an article about software localization,
289originally published in The Perl Journal #13, republished here with
290kind permission.
291
292=item *
293
294More README.$PLATFORM files have been converted into pod, which also
295means that they also be installed as perl$PLATFORM documentation
296files. The new files are L<perlapollo>, L<perlbeos>, L<perldgux>,
699e893f 297L<perlhurd>, L<perlmint>, L<perlnetware>, L<perlplan9>, L<perlqnx>,
298and L<perltru64>.
267a12e6 299
300=item *
301
302The F<Todo> and F<Todo-5.6> files have been merged into L<perltodo>.
303
304=item *
305
7ebe6671 306Use of the F<gprof> tool to profile Perl has been documented in
307L<perlhack>. There is a make target "perl.gprof" for generating a
308gprofiled Perl executable.
267a12e6 309
310=back
311
43d4bbc8 312=head1 Installation and Configuration Improvements
313
314=head2 New Or Improved Platforms
315
267a12e6 316=over 4
317
318=item *
319
7ebe6671 320AIX should now work better with gcc. Also longdouble support in AIX
321should be better now. See L<perlaix>.
267a12e6 322
323=item *
324
325AtheOS (http://www.atheos.cx/) is a new platform.
326
327=item *
328
7ebe6671 329DG/UX platform now supports the 5.005-style threads. See L<perldgux>.
267a12e6 330
331=item *
332
7ebe6671 333Several MacOS (Classic) portability patches have been applied. We
334hope to get a fully working port by 5.8.0. (The remaining problems
335relate to the changed IO model of Perl.) See L<perlmacos>.
267a12e6 336
337=item *
338
699e893f 339MacOS X (or Darwin) should now be able to build Perl even on HFS+
340filesystems. (The case-insensitivity confused the Perl build process.)
267a12e6 341
342=item *
343
7ebe6671 344NetWare from Novell is now supported. See L<perlnetware>.
267a12e6 345
346=item *
347
348The Amdahl UTS UNIX mainframe platform is now supported.
349
350=back
351
43d4bbc8 352=head2 Generic Improvements
353
267a12e6 354=over 4
355
356=item *
357
267a12e6 358In AFS installations one can configure the root of the AFS to be
359somewhere else than the default F</afs> by using the Configure
360parameter C<-Dafsroot=/some/where/else>.
361
362=item *
363
364The version of Berkeley DB used when the Perl (and, presumably, the
365DB_File extension) was built is now available as
366C<@Config{qw(db_version_major db_version_minor db_version_patch)}>
367from Perl and as C<DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG
368DB_VERSION_PATCH_CFG> from C.
369
370=item *
371
699e893f 372The Thread extension is now not built at all under ithreads
373(C<Configure -Duseithreads>) because it wouldn't work anyway (the
374Thread extension requires being Configured with C<-Duse5005threads>).
267a12e6 375
376=item *
377
378The C<B::Deparse> compiler backend has been so significantly improved
379that almost the whole Perl test suite passes after being deparsed. A
380make target has been added to help in further testing: C<make test.deparse>.
381
382=back
383
43d4bbc8 384=head1 Selected Bug Fixes
385
699e893f 386=over 5
387
388=item *
389
390The autouse pragma didn't work for Multi::Part::Function::Names.
391
392=item *
393
394The behaviour of non-decimal but numeric string constants such as
395"0x23" was platform-dependent: in some platforms that was seen as 35,
396in some as 0, in some as a floating point number (don't ask). This
397was caused by Perl using the operating system libraries in a situation
398where the result of the string to number conversion is undefined: now
399Perl consistently handles such strings as zero in numeric contexts.
400
401=item *
402
403L<dprofpp> -R didn't work.
404
405=item *
406
407PERL5OPT with embedded spaces didn't work.
408
409=item *
410
411L<Sys::Syslog> ignored the C<LOG_AUTH> constant.
412
413=back
414
43d4bbc8 415=head2 Platform Specific Changes and Fixes
416
267a12e6 417=over 4
418
419=item *
420
421Some versions of glibc have a broken modfl(). This affects builds
422with C<-Duselongdouble>. This version of Perl detects this brokenness
423and has a workaround for it. The glibc release 2.2.2 is known to have
424fixed the modfl() bug.
425
426=back
427
43d4bbc8 428=head1 New or Changed Diagnostics
429
267a12e6 430=over 4
431
432=item *
433
434In the regular expression diagnostics the C<E<lt>E<lt> HERE> marker
435introduced in 5.7.0 has been changed to be C<E<lt>-- HERE> since too
436many people found the C<E<lt>E<lt>> to be too similar to here-document
437starters.
438
439=item *
440
441If you try to L<perlfunc/pack> a number less than 0 or larger than 255
442using the C<"C"> format you will get an optional warning. Similarly
443for the C<"c"> format and a number less than -128 or more than 127.
444
445=item *
446
447Certain regex modifiers such as C<(?o)> make sense only if applied to
448the entire regex. You will an optional warning if you try to do otherwise.
449
450=item *
451
452Using arrays or hashes as references (e.g. C<%foo->{bar}> has been
453deprecated for a while. Now you will get an optional warning.
454
455=back
456
9108dd47 457=head1 Source Code Enhancements
458
459=head2 MAGIC constants
460
461The MAGIC constants (e.g. C<'P'>) have been macrofied
462(e.g. C<PERL_MAGIC_TIED>) for better source code readability
463and maintainability.
464
465=head2 Better commented code
466
467F<perly.c>, F<sv.c>, and F<sv.h> have now been extensively commented.
43d4bbc8 468
469=head2 Regex pre-/post-compilation items matched up
470
471The regex compiler now maintains a structure that identifies nodes in
472the compiled bytecode with the corresponding syntactic features of the
473original regex expression. The information is attached to the new
474C<offsets> member of the C<struct regexp>. See L<perldebguts> for more
475complete information.
476
9108dd47 477=head2 gcc -Wall
478
479The C code has been made much more C<gcc -Wall> clean. Some warning
480messages still remain, though, so if you are compiling with gcc you
481will see some warnings about dubious practices. The warnings are
482being worked on.
483
43d4bbc8 484=head1 New Tests
485
267a12e6 486Several new tests have been added, especially for the F<lib> subsection.
487
699e893f 488The tests are now reported in a different order than in earlier Perls.
489(This happens because the test scripts from under t/lib have been moved
490to be closer to the library/extension they are testing.)
267a12e6 491
43d4bbc8 492=head1 Known Problems
493
494Note that unlike other sections in this document (which describe
495changes since 5.7.0) this section is cumulative containing known
496problems for all the 5.7 releases.
497
81633404 498=head2 AIX
499
500=over 4
501
502=item *
503
504If Perl is configured to use long doubles the op/int subtests 13 and
50514 and the ext/POSIX subtest 14 may fail.
506
507=item *
508
509If Perl is configured to use threads the op/magic subtest 28 may fail.
510
511=item *
512
513vac 5.0.0.0 May Produce Buggy Code For Perl
43d4bbc8 514
515The AIX C compiler vac version 5.0.0.0 may produce buggy code,
516resulting in few random tests failing, but when the failing tests
517are run by hand, they succeed. We suggest upgrading to at least
518vac version 5.0.1.0, that has been known to compile Perl correctly.
519"lslpp -L|grep vac.C" will tell you the vac version.
520
81633404 521=back
522
d7b629d9 523=head2 Amiga Perl Invoking Mystery
524
525One cannot call Perl using the C<volume:> syntax, that is, C<perl -v>
526works, but for example C<bin:perl -v> doesn't. The exact reason is
527known but the current suspect is the F<ixemul> library.
528
43d4bbc8 529=head2 lib/ftmp-security tests warn 'system possibly insecure'
530
531Don't panic. Read INSTALL 'make test' section instead.
532
19d94770 533=head2 Cygwin intermittent failures of lib/Memoize/t/expire_file 11 and 12
81633404 534
535The subtests 11 and 12 sometimes fail and sometimes work.
536
537=head2 HP-UX lib/io_multihomed Fails When LP64-Configur
43d4bbc8 538
539The lib/io_multihomed test may hang in HP-UX if Perl has been
540configured to be 64-bit. Because other 64-bit platforms do not hang in
541this test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The
542test attempts to create and connect to "multihomed" sockets (sockets
543which have multiple IP addresses).
544
81633404 545=head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured
43d4bbc8 546
547If perl is configured with -Duse64bitall, the successful result of the
548subtest 10 of lib/posix may arrive before the successful result of the
549subtest 9, which confuses the test harness so much that it thinks the
550subtest 9 failed.
551
43d4bbc8 552=head2 Linux With Sfio Fails op/misc Test 48
553
554No known fix.
555
c4b279ff 556=head2 op/sprintf tests 129 and 130
43d4bbc8 557
558The op/sprintf tests 129 and 130 are known to fail on some platforms.
559Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX.
560The failing platforms do not comply with the ANSI C Standard, line
56119ff on page 134 of ANSI X3.159 1989 to be exact. (They produce
562something else than "1" and "-1" when formatting 0.6 and -0.6 using
563the printf format "%.0f", most often they produce "0" and "-0".)
564
565=head2 Failure of Thread tests
566
45215428 567B<Note that support for 5.005-style threading remains experimental.>
568
569The following tests are known to fail due to fundamental problems in
570the 5.005 threading implementation. These are not new failures--Perl
5715.005_0x has the same bugs, but didn't have these tests.
572
c4b279ff 573 lib/autouse.t 4
574 t/lib/thr5005.t 19-20
575
81633404 576=head2 UNICOS
577
578=over 4
579
580=item *
581
582ext/POSIX/sigaction subtests 6 and 13 may fail.
583
584=item *
585
586lib/ExtUtils may spuriously claim that subtest 28 failed,
587which is interesting since the test only has 27 tests.
588
589=item *
590
591Numerous numerical test failures
c4b279ff 592
593 op/numconvert 209,210,217,218
81633404 594 op/override 7
c4b279ff 595 ext/Time/HiRes/HiRes 9
596 lib/Math/BigInt/t/bigintpm 1145
597 lib/Math/Trig 25
598
599These tests fail because of yet unresolved floating point inaccuracies.
600
81633404 601=back
602
603=head2 UNICOS/mk ext/IPC/SysV/t/sem test 8
c4b279ff 604
605No known fix.
43d4bbc8 606
81633404 607=head2 UTS
608
609Many floating point inaccuracies:
610
0aa7ccc3 611 op/numconvert 511,657,658,659,665-667,831,991,1151
612 op/pack 10,22,149,156
613 op/sprintf 8,10,13,102-107,134-135,146-153,159-162
614 lib/Math/BigInt/bigintpm 1145,1183
615 lib/Math/Complex 250,257,514,521,722-724,
616 934,935,945,949,955,956,975,976
617 ext/POSIX/POSIX 14
618
619=head2 VMS
620
621DEC C V5.3-006 on OpenVMS VAX V6.2
622
623 [-.ext.list.util.t]tainted..............FAILED on test 3
624 [-.ext.posix]sigaction..................FAILED on test 7
50bd9457 625 [-.ext.time.hires]hires.................FAILED on test 14
0aa7ccc3 626 [-.lib.file.find]taint..................FAILED on test 17
627 [-.lib.math.bigint.t]bigintpm...........FAILED on test 1183
628 [-.lib.test.simple.t]exit...............FAILED on test 1
629 [.lib]vmsish............................FAILED on test 13
630 [.op]sprintf............................FAILED on test 12
631 Failed 8/399 tests, 91.23% okay.
632
633DEC C V6.0-001 on OpenVMS Alpha V7.2-1
634
635 [-.ext.list.util.t]tainted..............FAILED on test 3
636 [-.lib.file.find]taint..................FAILED on test 17
637 [-.lib.test.simple.t]exit...............FAILED on test 1
638 [.lib]vmsish............................FAILED on test 13
639 Failed 4/399 tests, 92.48% okay.
81633404 640
20a07785 641Compac C V6.4-005 on OpenVMS Alpha 7.2.1
642
643 [-.ext.b]showlex........................FAILED on test 1
644 [-.ext.list.util.t]tainted..............FAILED on test 3
645 [-.lib.file.find]taint..................FAILED on test 17
646 [-.lib.test.simple.t]exit...............FAILED on test 1
647 [.lib]vmsish............................FAILED on test 13
648 [.op]misc...............................FAILED on test 49
649 Failed 6/401 tests, 92.77% okay.
650
43d4bbc8 651=head2 Localising a Tied Variable Leaks Memory
652
653 use Tie::Hash;
654 tie my %tie_hash => 'Tie::StdHash';
655
656 ...
657
658 local($tie_hash{Foo}) = 1; # leaks
659
660Code like the above is known to leak memory every time the local()
661is executed.
662
663=head2 Self-tying of Arrays and Hashes Is Forbidden
664
665Self-tying of arrays and hashes is broken in rather deep and
666hard-to-fix ways. As a stop-gap measure to avoid people from getting
667frustrated at the mysterious results (core dumps, most often) it is
668for now forbidden (you will get a fatal error even from an attempt).
669
699e893f 670=head2 Variable Attributes are not Currently Usable for Tieing
671
672This limitation will hopefully be fixed in future. (Subroutine
673attributes work fine for tieing, see L<Attribute::Handlers>).
674
43d4bbc8 675=head2 Building Extensions Can Fail Because Of Largefiles
676
677Some extensions like mod_perl are known to have issues with
678`largefiles', a change brought by Perl 5.6.0 in which file offsets
679default to 64 bits wide, where supported. Modules may fail to compile
680at all or compile and work incorrectly. Currently there is no good
681solution for the problem, but Configure now provides appropriate
682non-largefile ccflags, ldflags, libswanted, and libs in the %Config
683hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are
684having problems can try configuring themselves without the
685largefileness. This is admittedly not a clean solution, and the
686solution may not even work at all. One potential failure is whether
687one can (or, if one can, whether it's a good idea) link together at
688all binaries with different ideas about file offsets, all this is
689platform-dependent.
690
691=head2 The Compiler Suite Is Still Experimental
692
693The compiler suite is slowly getting better but is nowhere near
694working order yet.
695
81633404 696=head2 The Long Double Support is Still Experimental
697
698The ability to configure Perl's numbers to use "long doubles",
699floating point numbers of hopefully better accuracy, is still
700experimental. The implementations of long doubles are not yet
701widespread and the existing implementations are not quite mature
702or standardised, therefore trying to support them is a rare
703and moving target. The gain of more precision may also be offset
704by slowdown in computations (more bits to move around, and the
705operations are more likely to be executed by less optimised
706libraries).
707
43d4bbc8 708=head1 Reporting Bugs
709
710If you find what you think is a bug, you might check the articles
711recently posted to the comp.lang.perl.misc newsgroup and the perl
712bug database at http://bugs.perl.org. There may also be
713information at http://www.perl.com/perl/, the Perl Home Page.
714
715If you believe you have an unreported bug, please run the B<perlbug>
716program included with your release. Be sure to trim your bug down
717to a tiny but sufficient test case. Your bug report, along with the
718output of C<perl -V>, will be sent off to perlbug@perl.org to be
719analysed by the Perl porting team.
720
721=head1 SEE ALSO
722
723The F<Changes> file for exhaustive details on what changed.
724
725The F<INSTALL> file for how to build Perl.
726
727The F<README> file for general stuff.
728
729The F<Artistic> and F<Copying> files for copyright information.
730
731=head1 HISTORY
732
733Written by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions
734from The Perl Porters and Perl Users submitting feedback and patches.
735
736Send omissions or corrections to <F<perlbug@perl.org>>.
737
738=cut