source: trunk/essentials/dev-lang/perl/pod/perl570delta.pod@ 3184

Last change on this file since 3184 was 3181, checked in by bird, 19 years ago

perl 5.8.8

File size: 21.1 KB
Line 
1=head1 NAME
2
3perl570delta - what's new for perl v5.7.0
4
5=head1 DESCRIPTION
6
7This document describes differences between the 5.6.0 release and
8the 5.7.0 release.
9
10=head1 Security Vulnerability Closed
11
12A potential security vulnerability in the optional suidperl component
13of Perl has been identified. suidperl is neither built nor installed
14by default. As of September the 2nd, 2000, the only known vulnerable
15platform is Linux, most likely all Linux distributions. CERT and
16various vendors have been alerted about the vulnerability.
17
18The problem was caused by Perl trying to report a suspected security
19exploit attempt using an external program, /bin/mail. On Linux
20platforms the /bin/mail program had an undocumented feature which
21when combined with suidperl gave access to a root shell, resulting in
22a serious compromise instead of reporting the exploit attempt. If you
23don't have /bin/mail, or if you have 'safe setuid scripts', or if
24suidperl is not installed, you are safe.
25
26The exploit attempt reporting feature has been completely removed from
27the Perl 5.7.0 release, so that particular vulnerability isn't there
28anymore. However, further security vulnerabilities are,
29unfortunately, always possible. The suidperl code is being reviewed
30and if deemed too risky to continue to be supported, it may be
31completely removed from future releases. In any case, suidperl should
32only be used by security experts who know exactly what they are doing
33and why they are using suidperl instead of some other solution such as
34sudo ( see http://www.courtesan.com/sudo/ ).
35
36=head1 Incompatible Changes
37
38=over 4
39
40=item *
41
42Arrays now always interpolate into double-quoted strings:
43constructs like "foo@bar" now always assume C<@bar> is an array,
44whether or not the compiler has seen use of C<@bar>.
45
46=item *
47
48The semantics of bless(REF, REF) were unclear and until someone proves
49it to make some sense, it is forbidden.
50
51=item *
52
53A reference to a reference now stringify as "REF(0x81485ec)" instead
54of "SCALAR(0x81485ec)" in order to be more consistent with the return
55value of ref().
56
57=item *
58
59The very dusty examples in the eg/ directory have been removed.
60Suggestions for new shiny examples welcome but the main issue is that
61the examples need to be documented, tested and (most importantly)
62maintained.
63
64=item *
65
66The obsolete chat2 library that should never have been allowed
67to escape the laboratory has been decommissioned.
68
69=item *
70
71The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are still
72recognised but now cause fatal errors. The previous behaviour of
73ignoring them by default and warning if requested was unacceptable
74since it, in a way, falsely promised that the features could be used.
75
76=item *
77
78The (bogus) escape sequences \8 and \9 now give an optional warning
79("Unrecognized escape passed through"). There is no need to \-escape
80any C<\w> character.
81
82=item *
83
84lstat(FILEHANDLE) now gives a warning because the operation makes no sense.
85In future releases this may become a fatal error.
86
87=item *
88
89The long deprecated uppercase aliases for the string comparison
90operators (EQ, NE, LT, LE, GE, GT) have now been removed.
91
92=item *
93
94The regular expression captured submatches ($1, $2, ...) are now
95more consistently unset if the match fails, instead of leaving false
96data lying around in them.
97
98=item *
99
100The tr///C and tr///U features have been removed and will not return;
101the interface was a mistake. Sorry about that. For similar
102functionality, see pack('U0', ...) and pack('C0', ...).
103
104=back
105
106=head1 Core Enhancements
107
108=over 4
109
110=item *
111
112C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass
113in multiple arguments.)
114
115=item *
116
117my __PACKAGE__ $obj now works.
118
119=item *
120
121C<no Module;> now works even if there is no "sub unimport" in the Module.
122
123=item *
124
125The numerical comparison operators return C<undef> if either operand
126is a NaN. Previously the behaviour was unspecified.
127
128=item *
129
130C<pack('U0a*', ...)> can now be used to force a string to UTF-8.
131
132=item *
133
134prototype(\&) is now available.
135
136=item *
137
138There is now an UNTIE method.
139
140=back
141
142=head1 Modules and Pragmata
143
144=head2 New Modules
145
146=over 4
147
148=item *
149
150File::Temp allows one to create temporary files and directories in an
151easy, portable, and secure way.
152
153=item *
154
155Storable gives persistence to Perl data structures by allowing the
156storage and retrieval of Perl data to and from files in a fast and
157compact binary format.
158
159=back
160
161=head2 Updated And Improved Modules and Pragmata
162
163=over 4
164
165=item *
166
167The following independently supported modules have been updated to
168newer versions from CPAN: CGI, CPAN, DB_File, File::Spec, Getopt::Long,
169the podlators bundle, Pod::LaTeX, Pod::Parser, Term::ANSIColor, Test.
170
171=item *
172
173Bug fixes and minor enhancements have been applied to B::Deparse,
174Data::Dumper, IO::Poll, IO::Socket::INET, Math::BigFloat,
175Math::Complex, Math::Trig, Net::protoent, the re pragma, SelfLoader,
176Sys::SysLog, Test::Harness, Text::Wrap, UNIVERSAL, and the warnings
177pragma.
178
179=item *
180
181The attributes::reftype() now works on tied arguments.
182
183=item *
184
185AutoLoader can now be disabled with C<no AutoLoader;>,
186
187=item *
188
189The English module can now be used without the infamous performance
190hit by saying
191
192 use English '-no_performance_hit';
193
194(Assuming, of course, that one doesn't need the troublesome variables
195C<$`>, C<$&>, or C<$'>.) Also, introduced C<@LAST_MATCH_START> and
196C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>.
197
198=item *
199
200File::Find now has pre- and post-processing callbacks. It also
201correctly changes directories when chasing symbolic links. Callbacks
202(naughtily) exiting with "next;" instead of "return;" now work.
203
204=item *
205
206File::Glob::glob() renamed to File::Glob::bsd_glob() to avoid
207prototype mismatch with CORE::glob().
208
209=item *
210
211IPC::Open3 now allows the use of numeric file descriptors.
212
213=item *
214
215use lib now works identically to @INC. Removing directories
216with 'no lib' now works.
217
218=item *
219
220C<%INC> now localised in a Safe compartment so that use/require work.
221
222=item *
223
224The Shell module now has an OO interface.
225
226=back
227
228=head1 Utility Changes
229
230=over 4
231
232=item *
233
234The Emacs perl mode (emacs/cperl-mode.el) has been updated to version
2354.31.
236
237=item *
238
239Perlbug is now much more robust. It also sends the bug report to
240perl.org, not perl.com.
241
242=item *
243
244The perlcc utility has been rewritten and its user interface (that is,
245command line) is much more like that of the UNIX C compiler, cc.
246
247=item *
248
249The xsubpp utility for extension writers now understands POD
250documentation embedded in the *.xs files.
251
252=back
253
254=head1 New Documentation
255
256=over 4
257
258=item *
259
260perl56delta details the changes between the 5.005 release and the
2615.6.0 release.
262
263=item *
264
265perldebtut is a Perl debugging tutorial.
266
267=item *
268
269perlebcdic contains considerations for running Perl on EBCDIC platforms.
270Note that unfortunately EBCDIC platforms that used to supported back in
271Perl 5.005 are still unsupported by Perl 5.7.0; the plan, however, is to