summaryrefslogtreecommitdiff
path: root/pod/perldelta.pod
blob: 45b2f8ede286bcaf7c36b6e96f41d3ba733b8a94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
=head1 NAME

perldelta - what's new for perl v5.8.0

=head1 DESCRIPTION

This document describes differences between the 5.6 release and this one.

=head1 Core Enhancements

=head1 Modules and Pragmata

=head1 Utility Changes

=head1 Improved Documentation

=head1 Performance enhancements

=head1 Installation and Configuration Improvements

=head2 gcc automatically tried if 'cc' does not seem to be working

In many platforms the vendor-supplied 'cc' is too stripped-down to
build Perl (basically, the 'cc' doesn't do ANSI C).  If this seems
to be the case and the 'cc' does not seem to be the GNU C compiler
'gcc', an automatic attempt is made to find and use 'gcc' instead.

=head1 Platform specific changes

=head2 printf() and sprintf() give two-digit exponent where possible

Perl's printf() and sprintf() use the standard C library sprintf()
function to implement the floating point conversions provided by the
C<%e>, C<%f> and C<%g> formats (and their upper-case counterparts).  C
library sprintf() functions vary in the number of exponent digits that
they produce in scientific notation when the modulus of the exponent
is less than one hundred: most platforms give two digits (for example,
C<1.234e-45>) while others, notably Microsoft's libraries for Windows,
give three (as in C<1.234e-045>).  Previously, Perl's functions
produced results identical to the platform's underlying library
function, resulting in script portability problems.  Now, on all
platforms, only two exponent digits are delivered unless more are
needed.

Note that this change applies only to explicit conversions made by
printf() and sprintf(); implicit conversions still show the same
behavior as the underlying library function:

    print "native: ", 1234567e89, sprintf("; standardized: %e\n", 1234567e89)

outputs

    native: 1.234567e+95; standardized: 1.234567e+95

on most platforms, and

    native: 1.234567e+095; standardized: 1.234567e+95

on the remainder.

=head1 Significant bug fixes

=head1 New or Changed Diagnostics

=over 4

=item (perhaps you forgot to load "%s"?)

(F) This is an educated guess made in conjunction with the message
"Can't locate object method \"%s\" via package \"%s\"".  It often means
that a method requires a package that has not been loaded.

=item Ambiguous range in transliteration operator

(F) You wrote something like C<tr/a-z-0//> which doesn't mean anything at
all.  To include a C<-> character in a transliteration, put it either
first or last.  (In the past, C<tr/a-z-0//> was synonymous with
C<tr/a-y//>, which was probably not what you would have expected.)

=back

=head1 New tests

=head1 Incompatible Changes

=head1 Known Problems

=head1 Obsolete Diagnostics

=head1 Reporting Bugs

If you find what you think is a bug, you might check the
articles recently posted to the comp.lang.perl.misc newsgroup.
There may also be information at http://www.perl.com/perl/, the Perl
Home Page.

If you believe you have an unreported bug, please run the B<perlbug>
program included with your release.  Be sure to trim your bug down
to a tiny but sufficient test case.  Your bug report, along with the
output of C<perl -V>, will be sent off to perlbug@perl.com to be
analysed by the Perl porting team.

=head1 SEE ALSO

The F<Changes> file for exhaustive details on what changed.

The F<INSTALL> file for how to build Perl.

The F<README> file for general stuff.

The F<Artistic> and F<Copying> files for copyright information.

=head1 HISTORY

Written by Gurusamy Sarathy <F<gsar@activestate.com>>, with many
contributions from The Perl Porters.

Send omissions or corrections to <F<perlbug@perl.com>>.

=cut