Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 |
2 | .\" | |
3 | .\" Standard preamble: | |
4 | .\" ======================================================================== | |
5 | .de Sh \" Subsection heading | |
6 | .br | |
7 | .if t .Sp | |
8 | .ne 5 | |
9 | .PP | |
10 | \fB\\$1\fR | |
11 | .PP | |
12 | .. | |
13 | .de Sp \" Vertical space (when we can't use .PP) | |
14 | .if t .sp .5v | |
15 | .if n .sp | |
16 | .. | |
17 | .de Vb \" Begin verbatim text | |
18 | .ft CW | |
19 | .nf | |
20 | .ne \\$1 | |
21 | .. | |
22 | .de Ve \" End verbatim text | |
23 | .ft R | |
24 | .fi | |
25 | .. | |
26 | .\" Set up some character translations and predefined strings. \*(-- will | |
27 | .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left | |
28 | .\" double quote, and \*(R" will give a right double quote. | will give a | |
29 | .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to | |
30 | .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' | |
31 | .\" expand to `' in nroff, nothing in troff, for use with C<>. | |
32 | .tr \(*W-|\(bv\*(Tr | |
33 | .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' | |
34 | .ie n \{\ | |
35 | . ds -- \(*W- | |
36 | . ds PI pi | |
37 | . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch | |
38 | . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch | |
39 | . ds L" "" | |
40 | . ds R" "" | |
41 | . ds C` "" | |
42 | . ds C' "" | |
43 | 'br\} | |
44 | .el\{\ | |
45 | . ds -- \|\(em\| | |
46 | . ds PI \(*p | |
47 | . ds L" `` | |
48 | . ds R" '' | |
49 | 'br\} | |
50 | .\" | |
51 | .\" If the F register is turned on, we'll generate index entries on stderr for | |
52 | .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index | |
53 | .\" entries marked with X<> in POD. Of course, you'll have to process the | |
54 | .\" output yourself in some meaningful fashion. | |
55 | .if \nF \{\ | |
56 | . de IX | |
57 | . tm Index:\\$1\t\\n%\t"\\$2" | |
58 | .. | |
59 | . nr % 0 | |
60 | . rr F | |
61 | .\} | |
62 | .\" | |
63 | .\" For nroff, turn off justification. Always turn off hyphenation; it makes | |
64 | .\" way too many mistakes in technical documents. | |
65 | .hy 0 | |
66 | .if n .na | |
67 | .\" | |
68 | .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). | |
69 | .\" Fear. Run. Save yourself. No user-serviceable parts. | |
70 | . \" fudge factors for nroff and troff | |
71 | .if n \{\ | |
72 | . ds #H 0 | |
73 | . ds #V .8m | |
74 | . ds #F .3m | |
75 | . ds #[ \f1 | |
76 | . ds #] \fP | |
77 | .\} | |
78 | .if t \{\ | |
79 | . ds #H ((1u-(\\\\n(.fu%2u))*.13m) | |
80 | . ds #V .6m | |
81 | . ds #F 0 | |
82 | . ds #[ \& | |
83 | . ds #] \& | |
84 | .\} | |
85 | . \" simple accents for nroff and troff | |
86 | .if n \{\ | |
87 | . ds ' \& | |
88 | . ds ` \& | |
89 | . ds ^ \& | |
90 | . ds , \& | |
91 | . ds ~ ~ | |
92 | . ds / | |
93 | .\} | |
94 | .if t \{\ | |
95 | . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" | |
96 | . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' | |
97 | . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' | |
98 | . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' | |
99 | . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' | |
100 | . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' | |
101 | .\} | |
102 | . \" troff and (daisy-wheel) nroff accents | |
103 | .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' | |
104 | .ds 8 \h'\*(#H'\(*b\h'-\*(#H' | |
105 | .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] | |
106 | .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' | |
107 | .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' | |
108 | .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] | |
109 | .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] | |
110 | .ds ae a\h'-(\w'a'u*4/10)'e | |
111 | .ds Ae A\h'-(\w'A'u*4/10)'E | |
112 | . \" corrections for vroff | |
113 | .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' | |
114 | .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' | |
115 | . \" for low resolution devices (crt and lpr) | |
116 | .if \n(.H>23 .if \n(.V>19 \ | |
117 | \{\ | |
118 | . ds : e | |
119 | . ds 8 ss | |
120 | . ds o a | |
121 | . ds d- d\h'-1'\(ga | |
122 | . ds D- D\h'-1'\(hy | |
123 | . ds th \o'bp' | |
124 | . ds Th \o'LP' | |
125 | . ds ae ae | |
126 | . ds Ae AE | |
127 | .\} | |
128 | .rm #[ #] #H #V #F C | |
129 | .\" ======================================================================== | |
130 | .\" | |
131 | .IX Title "PERL570DELTA 1" | |
132 | .TH PERL570DELTA 1 "2006-01-07" "perl v5.8.8" "Perl Programmers Reference Guide" | |
133 | .SH "NAME" | |
134 | perl570delta \- what's new for perl v5.7.0 | |
135 | .SH "DESCRIPTION" | |
136 | .IX Header "DESCRIPTION" | |
137 | This document describes differences between the 5.6.0 release and | |
138 | the 5.7.0 release. | |
139 | .SH "Security Vulnerability Closed" | |
140 | .IX Header "Security Vulnerability Closed" | |
141 | A potential security vulnerability in the optional suidperl component | |
142 | of Perl has been identified. suidperl is neither built nor installed | |
143 | by default. As of September the 2nd, 2000, the only known vulnerable | |
144 | platform is Linux, most likely all Linux distributions. \s-1CERT\s0 and | |
145 | various vendors have been alerted about the vulnerability. | |
146 | .PP | |
147 | The problem was caused by Perl trying to report a suspected security | |
148 | exploit attempt using an external program, /bin/mail. On Linux | |
149 | platforms the /bin/mail program had an undocumented feature which | |
150 | when combined with suidperl gave access to a root shell, resulting in | |
151 | a serious compromise instead of reporting the exploit attempt. If you | |
152 | don't have /bin/mail, or if you have 'safe setuid scripts', or if | |
153 | suidperl is not installed, you are safe. | |
154 | .PP | |
155 | The exploit attempt reporting feature has been completely removed from | |
156 | the Perl 5.7.0 release, so that particular vulnerability isn't there | |
157 | anymore. However, further security vulnerabilities are, | |
158 | unfortunately, always possible. The suidperl code is being reviewed | |
159 | and if deemed too risky to continue to be supported, it may be | |
160 | completely removed from future releases. In any case, suidperl should | |
161 | only be used by security experts who know exactly what they are doing | |
162 | and why they are using suidperl instead of some other solution such as | |
163 | sudo ( see http://www.courtesan.com/sudo/ ). | |
164 | .SH "Incompatible Changes" | |
165 | .IX Header "Incompatible Changes" | |
166 | .IP "\(bu" 4 | |
167 | Arrays now always interpolate into double-quoted strings: | |
168 | constructs like \*(L"foo@bar\*(R" now always assume \f(CW@bar\fR is an array, | |
169 | whether or not the compiler has seen use of \f(CW@bar\fR. | |
170 | .IP "\(bu" 4 | |
171 | The semantics of bless(\s-1REF\s0, \s-1REF\s0) were unclear and until someone proves | |
172 | it to make some sense, it is forbidden. | |
173 | .IP "\(bu" 4 | |
174 | A reference to a reference now stringify as \*(L"\s-1REF\s0(0x81485ec)\*(R" instead | |
175 | of \*(L"\s-1SCALAR\s0(0x81485ec)\*(R" in order to be more consistent with the return | |
176 | value of \fIref()\fR. | |
177 | .IP "\(bu" 4 | |
178 | The very dusty examples in the eg/ directory have been removed. | |
179 | Suggestions for new shiny examples welcome but the main issue is that | |
180 | the examples need to be documented, tested and (most importantly) | |
181 | maintained. | |
182 | .IP "\(bu" 4 | |
183 | The obsolete chat2 library that should never have been allowed | |
184 | to escape the laboratory has been decommissioned. | |
185 | .IP "\(bu" 4 | |
186 | The unimplemented \s-1POSIX\s0 regex features [[.cc.]] and [[=c=]] are still | |
187 | recognised but now cause fatal errors. The previous behaviour of | |
188 | ignoring them by default and warning if requested was unacceptable | |
189 | since it, in a way, falsely promised that the features could be used. | |
190 | .IP "\(bu" 4 | |
191 | The (bogus) escape sequences \e8 and \e9 now give an optional warning | |
192 | (\*(L"Unrecognized escape passed through\*(R"). There is no need to \e\-escape | |
193 | any \f(CW\*(C`\ew\*(C'\fR character. | |
194 | .IP "\(bu" 4 | |
195 | lstat(\s-1FILEHANDLE\s0) now gives a warning because the operation makes no sense. | |
196 | In future releases this may become a fatal error. | |
197 | .IP "\(bu" 4 | |
198 | The long deprecated uppercase aliases for the string comparison | |
199 | operators (\s-1EQ\s0, \s-1NE\s0, \s-1LT\s0, \s-1LE\s0, \s-1GE\s0, \s-1GT\s0) have now been removed. | |
200 | .IP "\(bu" 4 | |
201 | The regular expression captured submatches ($1, \f(CW$2\fR, ...) are now | |
202 | more consistently unset if the match fails, instead of leaving false | |
203 | data lying around in them. | |
204 | .IP "\(bu" 4 | |
205 | The tr///C and tr///U features have been removed and will not return; | |
206 | the interface was a mistake. Sorry about that. For similar | |
207 | functionality, see pack('U0', ...) and pack('C0', ...). | |
208 | .SH "Core Enhancements" | |
209 | .IX Header "Core Enhancements" | |
210 | .IP "\(bu" 4 | |
211 | \&\f(CW\*(C`perl \-d:Module=arg,arg,arg\*(C'\fR now works (previously one couldn't pass | |
212 | in multiple arguments.) | |
213 | .IP "\(bu" 4 | |
214 | my _\|_PACKAGE_\|_ \f(CW$obj\fR now works. | |
215 | .IP "\(bu" 4 | |
216 | \&\f(CW\*(C`no Module;\*(C'\fR now works even if there is no \*(L"sub unimport\*(R" in the Module. | |
217 | .IP "\(bu" 4 | |
218 | The numerical comparison operators return \f(CW\*(C`undef\*(C'\fR if either operand | |
219 | is a NaN. Previously the behaviour was unspecified. | |
220 | .IP "\(bu" 4 | |
221 | \&\f(CW\*(C`pack('U0a*', ...)\*(C'\fR can now be used to force a string to \s-1UTF\-8\s0. | |
222 | .IP "\(bu" 4 | |
223 | prototype(\e&) is now available. | |
224 | .IP "\(bu" 4 | |
225 | There is now an \s-1UNTIE\s0 method. | |
226 | .SH "Modules and Pragmata" | |
227 | .IX Header "Modules and Pragmata" | |
228 | .Sh "New Modules" | |
229 | .IX Subsection "New Modules" | |
230 | .IP "\(bu" 4 | |
231 | File::Temp allows one to create temporary files and directories in an | |
232 | easy, portable, and secure way. | |
233 | .IP "\(bu" 4 | |
234 | Storable gives persistence to Perl data structures by allowing the | |
235 | storage and retrieval of Perl data to and from files in a fast and | |
236 | compact binary format. | |
237 | .Sh "Updated And Improved Modules and Pragmata" | |
238 | .IX Subsection "Updated And Improved Modules and Pragmata" | |
239 | .IP "\(bu" 4 | |
240 | The following independently supported modules have been updated to | |
241 | newer versions from \s-1CPAN:\s0 \s-1CGI\s0, \s-1CPAN\s0, DB_File, File::Spec, Getopt::Long, | |
242 | the podlators bundle, Pod::LaTeX, Pod::Parser, Term::ANSIColor, Test. | |
243 | .IP "\(bu" 4 | |
244 | Bug fixes and minor enhancements have been applied to B::Deparse, | |
245 | Data::Dumper, IO::Poll, IO::Socket::INET, Math::BigFloat, | |
246 | Math::Complex, Math::Trig, Net::protoent, the re pragma, SelfLoader, | |
247 | Sys::SysLog, Test::Harness, Text::Wrap, \s-1UNIVERSAL\s0, and the warnings | |
248 | pragma. | |
249 | .IP "\(bu" 4 | |
250 | The \fIattributes::reftype()\fR now works on tied arguments. | |
251 | .IP "\(bu" 4 | |
252 | AutoLoader can now be disabled with \f(CW\*(C`no AutoLoader;\*(C'\fR, | |
253 | .IP "\(bu" 4 | |
254 | The English module can now be used without the infamous performance | |
255 | hit by saying | |
256 | .Sp | |
257 | .Vb 1 | |
258 | \& use English '-no_performance_hit'; | |
259 | .Ve | |
260 | .Sp | |
261 | (Assuming, of course, that one doesn't need the troublesome variables | |
262 | \&\f(CW$`\fR, \f(CW$&\fR, or \f(CW$'\fR.) Also, introduced \f(CW@LAST_MATCH_START\fR and | |
263 | \&\f(CW@LAST_MATCH_END\fR English aliases for \f(CW\*(C`@\-\*(C'\fR and \f(CW\*(C`@+\*(C'\fR. | |
264 | .IP "\(bu" 4 | |
265 | File::Find now has pre\- and post-processing callbacks. It also | |
266 | correctly changes directories when chasing symbolic links. Callbacks | |
267 | (naughtily) exiting with \*(L"next;\*(R" instead of \*(L"return;\*(R" now work. | |
268 | .IP "\(bu" 4 | |
269 | \&\fIFile::Glob::glob()\fR renamed to \fIFile::Glob::bsd_glob()\fR to avoid | |
270 | prototype mismatch with \fICORE::glob()\fR. | |
271 | .IP "\(bu" 4 | |
272 | IPC::Open3 now allows the use of numeric file descriptors. | |
273 | .IP "\(bu" 4 | |
274 | use lib now works identically to \f(CW@INC\fR. Removing directories | |
275 | with 'no lib' now works. | |
276 | .IP "\(bu" 4 | |
277 | \&\f(CW%INC\fR now localised in a Safe compartment so that use/require work. | |
278 | .IP "\(bu" 4 | |
279 | The Shell module now has an \s-1OO\s0 interface. | |
280 | .SH "Utility Changes" | |
281 | .IX Header "Utility Changes" | |
282 | .IP "\(bu" 4 | |
283 | The Emacs perl mode (emacs/cperl\-mode.el) has been updated to version | |
284 | 4.31. | |
285 | .IP "\(bu" 4 | |
286 | Perlbug is now much more robust. It also sends the bug report to | |
287 | perl.org, not perl.com. | |
288 | .IP "\(bu" 4 | |
289 | The perlcc utility has been rewritten and its user interface (that is, | |
290 | command line) is much more like that of the \s-1UNIX\s0 C compiler, cc. | |
291 | .IP "\(bu" 4 | |
292 | The xsubpp utility for extension writers now understands \s-1POD\s0 | |
293 | documentation embedded in the *.xs files. | |
294 | .SH "New Documentation" | |
295 | .IX Header "New Documentation" | |
296 | .IP "\(bu" 4 | |
297 | perl56delta details the changes between the 5.005 release and the | |
298 | 5.6.0 release. | |
299 | .IP "\(bu" 4 | |
300 | perldebtut is a Perl debugging tutorial. | |
301 | .IP "\(bu" 4 | |
302 | perlebcdic contains considerations for running Perl on \s-1EBCDIC\s0 platforms. | |
303 | Note that unfortunately \s-1EBCDIC\s0 platforms that used to supported back in | |
304 | Perl 5.005 are still unsupported by Perl 5.7.0; the plan, however, is to | |
305 | bring them back to the fold. | |
306 | .IP "\(bu" 4 | |
307 | perlnewmod tells about writing and submitting a new module. | |
308 | .IP "\(bu" 4 | |
309 | perlposix-bc explains using Perl on the POSIX-BC platform | |
310 | (an \s-1EBCDIC\s0 mainframe platform). | |
311 | .IP "\(bu" 4 | |
312 | perlretut is a regular expression tutorial. | |
313 | .IP "\(bu" 4 | |
314 | perlrequick is a regular expressions quick-start guide. | |
315 | Yes, much quicker than perlretut. | |
316 | .IP "\(bu" 4 | |
317 | perlutil explains the command line utilities packaged with the Perl | |
318 | distribution. | |
319 | .SH "Performance Enhancements" | |
320 | .IX Header "Performance Enhancements" | |
321 | .IP "\(bu" 4 | |
322 | \&\fImap()\fR that changes the size of the list should now work faster. | |
323 | .IP "\(bu" 4 | |
324 | \&\fIsort()\fR has been changed to use mergesort internally as opposed to the | |
325 | earlier quicksort. For very small lists this may result in slightly | |
326 | slower sorting times, but in general the speedup should be at least | |
327 | 20%. Additional bonuses are that the worst case behaviour of \fIsort()\fR | |
328 | is now better (in computer science terms it now runs in time O(N log N), | |
329 | as opposed to quicksort's Theta(N**2) worst-case run time behaviour), | |
330 | and that \fIsort()\fR is now stable (meaning that elements with identical | |
331 | keys will stay ordered as they were before the sort). | |
332 | .SH "Installation and Configuration Improvements" | |
333 | .IX Header "Installation and Configuration Improvements" | |
334 | .Sh "Generic Improvements" | |
335 | .IX Subsection "Generic Improvements" | |
336 | .IP "\(bu" 4 | |
337 | \&\s-1INSTALL\s0 now explains how you can configure Perl to use 64\-bit | |
338 | integers even on non\-64\-bit platforms. | |
339 | .IP "\(bu" 4 | |
340 | Policy.sh policy change: if you are reusing a Policy.sh file | |
341 | (see \s-1INSTALL\s0) and you use Configure \-Dprefix=/foo/bar and in the old | |
342 | Policy \f(CW$prefix\fR eq \f(CW$siteprefix\fR and \f(CW$prefix\fR eq \f(CW$vendorprefix\fR, all of | |
343 | them will now be changed to the new prefix, /foo/bar. (Previously | |
344 | only \f(CW$prefix\fR changed.) If you do not like this new behaviour, | |
345 | specify prefix, siteprefix, and vendorprefix explicitly. | |
346 | .IP "\(bu" 4 | |
347 | A new optional location for Perl libraries, otherlibdirs, is available. | |
348 | It can be used for example for vendor add-ons without disturbing Perl's | |
349 | own library directories. | |
350 | .IP "\(bu" 4 | |
351 | In many platforms the vendor-supplied 'cc' is too stripped-down to | |
352 | build Perl (basically, 'cc' doesn't do \s-1ANSI\s0 C). If this seems | |
353 | to be the case and 'cc' does not seem to be the \s-1GNU\s0 C compiler | |
354 | \&'gcc', an automatic attempt is made to find and use 'gcc' instead. | |
355 | .IP "\(bu" 4 | |
356 | gcc needs to closely track the operating system release to avoid | |
357 | build problems. If Configure finds that gcc was built for a different | |
358 | operating system release than is running, it now gives a clearly visible | |
359 | warning that there may be trouble ahead. | |
360 | .IP "\(bu" 4 | |
361 | If binary compatibility with the 5.005 release is not wanted, Configure | |
362 | no longer suggests including the 5.005 modules in \f(CW@INC\fR. | |
363 | .IP "\(bu" 4 | |
364 | Configure \f(CW\*(C`\-S\*(C'\fR can now run non\-interactively. | |
365 | .IP "\(bu" 4 | |
366 | configure.gnu now works with options with whitespace in them. | |
367 | .IP "\(bu" 4 | |
368 | installperl now outputs everything to \s-1STDERR\s0. | |
369 | .IP "\(bu" 4 | |
370 | $Config{byteorder} is now computed dynamically (this is more robust | |
371 | with \*(L"fat binaries\*(R" where an executable image contains binaries for | |
372 | more than one binary platform.) | |
373 | .SH "Selected Bug Fixes" | |
374 | .IX Header "Selected Bug Fixes" | |
375 | .IP "\(bu" 4 | |
376 | Several debugger fixes: exit code now reflects the script exit code, | |
377 | condition \f(CW"0"\fR now treated correctly, the \f(CW\*(C`d\*(C'\fR command now checks | |
378 | line number, the \f(CW$.\fR no longer gets corrupted, all debugger output now | |
379 | goes correctly to the socket if RemotePort is set. | |
380 | .IP "\(bu" 4 | |
381 | \&\f(CW*foo{FORMAT}\fR now works. | |
382 | .IP "\(bu" 4 | |
383 | Lexical warnings now propagating correctly between scopes. | |
384 | .IP "\(bu" 4 | |
385 | Line renumbering with eval and \f(CW\*(C`#line\*(C'\fR now works. | |
386 | .IP "\(bu" 4 | |
387 | Fixed numerous memory leaks, especially in eval "". | |
388 | .IP "\(bu" 4 | |
389 | Modulus of unsigned numbers now works (4063328477 % 65535 used to | |
390 | return 27406, instead of 27047). | |
391 | .IP "\(bu" 4 | |
392 | Some \*(L"not a number\*(R" warnings introduced in 5.6.0 eliminated to be | |
393 | more compatible with 5.005. Infinity is now recognised as a number. | |
394 | .IP "\(bu" 4 | |
395 | \&\fIour()\fR variables will not cause \*(L"will not stay shared\*(R" warnings. | |
396 | .IP "\(bu" 4 | |
397 | pack \*(L"Z\*(R" now correctly terminates the string with \*(L"\e0\*(R". | |
398 | .IP "\(bu" 4 | |
399 | Fix password routines which in some shadow password platforms | |
400 | (e.g. \s-1HP\-UX\s0) caused \fIgetpwent()\fR to return every other entry. | |
401 | .IP "\(bu" 4 | |
402 | \&\fIprintf()\fR no longer resets the numeric locale to \*(L"C\*(R". | |
403 | .IP "\(bu" 4 | |
404 | \&\f(CW\*(C`q(a\e\eb)\*(C'\fR now parses correctly as \f(CW'a\e\eb'\fR. | |
405 | .IP "\(bu" 4 | |
406 | Printing quads (64\-bit integers) with printf/sprintf now works | |
407 | without the q L ll prefixes (assuming you are on a quad-capable platform). | |
408 | .IP "\(bu" 4 | |
409 | Regular expressions on references and overloaded scalars now work. | |
410 | .IP "\(bu" 4 | |
411 | \&\fIscalar()\fR now forces scalar context even when used in void context. | |
412 | .IP "\(bu" 4 | |
413 | \&\fIsort()\fR arguments are now compiled in the right wantarray context | |
414 | (they were accidentally using the context of the \fIsort()\fR itself). | |
415 | .IP "\(bu" 4 | |
416 | Changed the \s-1POSIX\s0 character class \f(CW\*(C`[[:space:]]\*(C'\fR to include the (very | |
417 | rare) vertical tab character. Added a new POSIX-ish character class | |
418 | \&\f(CW\*(C`[[:blank:]]\*(C'\fR which stands for horizontal whitespace (currently, | |
419 | the space and the tab). | |
420 | .IP "\(bu" 4 | |
421 | $AUTOLOAD, \fIsort()\fR, \fIlock()\fR, and spawning subprocesses | |
422 | in multiple threads simultaneously are now thread\-safe. | |
423 | .IP "\(bu" 4 | |
424 | Allow read-only string on left hand side of non-modifying tr///. | |
425 | .IP "\(bu" 4 | |
426 | Several Unicode fixes (but still not perfect). | |
427 | .RS 4 | |
428 | .IP "\(bu" 8 | |
429 | BOMs (byte order marks) in the beginning of Perl files | |
430 | (scripts, modules) should now be transparently skipped. | |
431 | \&\s-1UTF\-16\s0 (\s-1UCS\-2\s0) encoded Perl files should now be read correctly. | |
432 | .IP "\(bu" 8 | |
433 | The character tables have been updated to Unicode 3.0.1. | |
434 | .IP "\(bu" 8 | |
435 | \&\fIchr()\fR for values greater than 127 now create utf8 when under use | |
436 | utf8. | |
437 | .IP "\(bu" 8 | |
438 | Comparing with utf8 data does not magically upgrade non\-utf8 data into | |
439 | utf8. | |
440 | .IP "\(bu" 8 | |
441 | \&\f(CW\*(C`IsAlnum\*(C'\fR, \f(CW\*(C`IsAlpha\*(C'\fR, and \f(CW\*(C`IsWord\*(C'\fR now match titlecase. | |
442 | .IP "\(bu" 8 | |
443 | Concatenation with the \f(CW\*(C`.\*(C'\fR operator or via variable interpolation, | |
444 | \&\f(CW\*(C`eq\*(C'\fR, \f(CW\*(C`substr\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR, \f(CW\*(C`quotemeta\*(C'\fR, the \f(CW\*(C`x\*(C'\fR operator, | |
445 | substitution with \f(CW\*(C`s///\*(C'\fR, single-quoted \s-1UTF\-8\s0, should now work\*(--in | |
446 | theory. | |
447 | .IP "\(bu" 8 | |
448 | The \f(CW\*(C`tr///\*(C'\fR operator now works \fIslightly\fR better but is still rather | |
449 | broken. Note that the \f(CW\*(C`tr///CU\*(C'\fR functionality has been removed (but | |
450 | see pack('U0', ...)). | |
451 | .IP "\(bu" 8 | |
452 | \&\fIvec()\fR now refuses to deal with characters >255. | |
453 | .IP "\(bu" 8 | |
454 | Zero entries were missing from the Unicode classes like \f(CW\*(C`IsDigit\*(C'\fR. | |
455 | .RE | |
456 | .RS 4 | |
457 | .RE | |
458 | .IP "\(bu" 4 | |
459 | UNIVERSAL::isa no longer caches methods incorrectly. (This broke | |
460 | the Tk extension with 5.6.0.) | |
461 | .Sh "Platform Specific Changes and Fixes" | |
462 | .IX Subsection "Platform Specific Changes and Fixes" | |
463 | .IP "\(bu" 4 | |
464 | \&\s-1BSDI\s0 4.* | |
465 | .Sp | |
466 | Perl now works on post\-4.0 BSD/OSes. | |
467 | .IP "\(bu" 4 | |
468 | All BSDs | |
469 | .Sp | |
470 | Setting \f(CW$0\fR now works (as much as possible; see perlvar for details). | |
471 | .IP "\(bu" 4 | |
472 | Cygwin | |
473 | .Sp | |
474 | Numerous updates; currently synchronised with Cygwin 1.1.4. | |
475 | .IP "\(bu" 4 | |
476 | \&\s-1EPOC\s0 | |
477 | .Sp | |
478 | \&\s-1EPOC\s0 update after Perl 5.6.0. See \s-1README\s0.epoc. | |
479 | .IP "\(bu" 4 | |
480 | FreeBSD 3.* | |
481 | .Sp | |
482 | Perl now works on post\-3.0 FreeBSDs. | |
483 | .IP "\(bu" 4 | |
484 | HP-UX | |
485 | .Sp | |
486 | \&\s-1README\s0.hpux updated; \f(CW\*(C`Configure \-Duse64bitall\*(C'\fR now almost works. | |
487 | .IP "\(bu" 4 | |
488 | \&\s-1IRIX\s0 | |
489 | .Sp | |
490 | Numerous compilation flag and hint enhancements; accidental mixing | |
491 | of 32\-bit and 64\-bit libraries (a doomed attempt) made much harder. | |
492 | .IP "\(bu" 4 | |
493 | Linux | |
494 | .Sp | |
495 | Long doubles should now work (see \s-1INSTALL\s0). | |
496 | .IP "\(bu" 4 | |
497 | Mac \s-1OS\s0 Classic | |
498 | .Sp | |
499 | Compilation of the standard Perl distribution in Mac \s-1OS\s0 Classic should | |
500 | now work if you have the Metrowerks development environment and the | |
501 | missing Mac-specific toolkit bits. Contact the macperl mailing list | |
502 | for details. | |
503 | .IP "\(bu" 4 | |
504 | MPE/iX | |
505 | .Sp | |
506 | MPE/iX update after Perl 5.6.0. See \s-1README\s0.mpeix. | |
507 | .IP "\(bu" 4 | |
508 | NetBSD/sparc | |
509 | .Sp | |
510 | Perl now works on NetBSD/sparc. | |
511 | .IP "\(bu" 4 | |
512 | \&\s-1OS/2\s0 | |
513 | .Sp | |
514 | Now works with usethreads (see \s-1INSTALL\s0). | |
515 | .IP "\(bu" 4 | |
516 | Solaris | |
517 | .Sp | |
518 | 64\-bitness using the Sun Workshop compiler now works. | |
519 | .IP "\(bu" 4 | |
520 | Tru64 (aka Digital \s-1UNIX\s0, aka \s-1DEC\s0 \s-1OSF/1\s0) | |
521 | .Sp | |
522 | The operating system version letter now recorded in \f(CW$Config\fR{osvers}. | |
523 | Allow compiling with gcc (previously explicitly forbidden). Compiling | |
524 | with gcc still not recommended because buggy code results, even with | |
525 | gcc 2.95.2. | |
526 | .IP "\(bu" 4 | |
527 | Unicos | |
528 | .Sp | |
529 | Fixed various alignment problems that lead into core dumps either | |
530 | during build or later; no longer dies on math errors at runtime; | |
531 | now using full quad integers (64 bits), previously was using | |
532 | only 46 bit integers for speed. | |
533 | .IP "\(bu" 4 | |
534 | \&\s-1VMS\s0 | |
535 | .Sp | |
536 | \&\fIchdir()\fR now works better despite a \s-1CRT\s0 bug; now works with \s-1MULTIPLICITY\s0 | |
537 | (see \s-1INSTALL\s0); now works with Perl's malloc. | |
538 | .IP "\(bu" 4 | |
539 | Windows | |
540 | .RS 4 | |
541 | .IP "\(bu" 8 | |
542 | \&\fIaccept()\fR no longer leaks memory. | |
543 | .IP "\(bu" 8 | |
544 | Better \fIchdir()\fR return value for a non-existent directory. | |
545 | .IP "\(bu" 8 | |
546 | New \f(CW%ENV\fR entries now propagate to subprocesses. | |
547 | .IP "\(bu" 8 | |
548 | $ENV{\s-1LIB\s0} now used to search for libs under Visual C. | |
549 | .IP "\(bu" 8 | |
550 | A failed (pseudo)fork now returns undef and sets errno to \s-1EAGAIN\s0. | |
551 | .IP "\(bu" 8 | |
552 | Allow \s-1REG_EXPAND_SZ\s0 keys in the registry. | |
553 | .IP "\(bu" 8 | |
554 | Can now \fIsend()\fR from all threads, not just the first one. | |
555 | .IP "\(bu" 8 | |
556 | Fake signal handling reenabled, bugs and all. | |
557 | .IP "\(bu" 8 | |
558 | Less stack reserved per thread so that more threads can run | |
559 | concurrently. (Still 16M per thread.) | |
560 | .IP "\(bu" 8 | |
561 | \&\f(CW\*(C`File::Spec\->tmpdir()\*(C'\fR now prefers C:/temp over /tmp | |
562 | (works better when perl is running as service). | |
563 | .IP "\(bu" 8 | |
564 | Better \s-1UNC\s0 path handling under ithreads. | |
565 | .IP "\(bu" 8 | |
566 | \&\fIwait()\fR and \fIwaitpid()\fR now work much better. | |
567 | .IP "\(bu" 8 | |
568 | winsock handle leak fixed. | |
569 | .RE | |
570 | .RS 4 | |
571 | .RE | |
572 | .SH "New or Changed Diagnostics" | |
573 | .IX Header "New or Changed Diagnostics" | |
574 | All regular expression compilation error messages are now hopefully | |
575 | easier to understand both because the error message now comes before | |
576 | the failed regex and because the point of failure is now clearly | |
577 | marked. | |
578 | .PP | |
579 | The various \*(L"opened only for\*(R", \*(L"on closed\*(R", \*(L"never opened\*(R" warnings | |
580 | drop the \f(CW\*(C`main::\*(C'\fR prefix for filehandles in the \f(CW\*(C`main\*(C'\fR package, | |
581 | for example \f(CW\*(C`STDIN\*(C'\fR instead of <main::STDIN>. | |
582 | .PP | |
583 | The \*(L"Unrecognized escape\*(R" warning has been extended to include \f(CW\*(C`\e8\*(C'\fR, | |
584 | \&\f(CW\*(C`\e9\*(C'\fR, and \f(CW\*(C`\e_\*(C'\fR. There is no need to escape any of the \f(CW\*(C`\ew\*(C'\fR characters. | |
585 | .SH "Changed Internals" | |
586 | .IX Header "Changed Internals" | |
587 | .IP "\(bu" 4 | |
588 | perlapi.pod (a companion to perlguts) now attempts to document the | |
589 | internal \s-1API\s0. | |
590 | .IP "\(bu" 4 | |
591 | You can now build a really minimal perl called microperl. | |
592 | Building microperl does not require even running Configure; | |
593 | \&\f(CW\*(C`make \-f Makefile.micro\*(C'\fR should be enough. Beware: microperl makes | |
594 | many assumptions, some of which may be too bold; the resulting | |
595 | executable may crash or otherwise misbehave in wondrous ways. | |
596 | For careful hackers only. | |
597 | .IP "\(bu" 4 | |
598 | Added \fIrsignal()\fR, \fIwhichsig()\fR, \fIdo_join()\fR to the publicised \s-1API\s0. | |
599 | .IP "\(bu" 4 | |
600 | Made possible to propagate customised exceptions via \fIcroak()\fRing. | |
601 | .IP "\(bu" 4 | |
602 | Added \fIis_utf8_char()\fR, \fIis_utf8_string()\fR, \fIbytes_to_utf8()\fR, and \fIutf8_to_bytes()\fR. | |
603 | .IP "\(bu" 4 | |
604 | Now xsubs can have attributes just like subs. | |
605 | .SH "Known Problems" | |
606 | .IX Header "Known Problems" | |
607 | .Sh "Unicode Support Still Far From Perfect" | |
608 | .IX Subsection "Unicode Support Still Far From Perfect" | |
609 | We're working on it. Stay tuned. | |
610 | .Sh "\s-1EBCDIC\s0 Still A Lost Platform" | |
611 | .IX Subsection "EBCDIC Still A Lost Platform" | |
612 | The plan is to bring them back. | |
613 | .Sh "Building Extensions Can Fail Because Of Largefiles" | |
614 | .IX Subsection "Building Extensions Can Fail Because Of Largefiles" | |
615 | Certain extensions like mod_perl and BSD::Resource are known to have | |
616 | issues with `largefiles', a change brought by Perl 5.6.0 in which file | |
617 | offsets default to 64 bits wide, where supported. Modules may fail to | |
618 | compile at all or compile and work incorrectly. Currently there is no | |
619 | good solution for the problem, but Configure now provides appropriate | |
620 | non-largefile ccflags, ldflags, libswanted, and libs in the \f(CW%Config\fR | |
621 | hash (e.g., \f(CW$Config\fR{ccflags_nolargefiles}) so the extensions that are | |
622 | having problems can try configuring themselves without the | |
623 | largefileness. This is admittedly not a clean solution, and the | |
624 | solution may not even work at all. One potential failure is whether | |
625 | one can (or, if one can, whether it's a good idea) link together at | |
626 | all binaries with different ideas about file offsets, all this is | |
627 | platform\-dependent. | |
628 | .Sh "ftmp-security tests warn 'system possibly insecure'" | |
629 | .IX Subsection "ftmp-security tests warn 'system possibly insecure'" | |
630 | Don't panic. Read \s-1INSTALL\s0 'make test' section instead. | |
631 | .Sh "Test lib/posix Subtest 9 Fails In LP64\-Configured HP-UX" | |
632 | .IX Subsection "Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX" | |
633 | If perl is configured with \-Duse64bitall, the successful result of the | |
634 | subtest 10 of lib/posix may arrive before the successful result of the | |
635 | subtest 9, which confuses the test harness so much that it thinks the | |
636 | subtest 9 failed. | |
637 | .Sh "Long Doubles Still Don't Work In Solaris" | |
638 | .IX Subsection "Long Doubles Still Don't Work In Solaris" | |
639 | The experimental long double support is still very much so in Solaris. | |
640 | (Other platforms like Linux and Tru64 are beginning to solidify in | |
641 | this area.) | |
642 | .Sh "Linux With Sfio Fails op/misc Test 48" | |
643 | .IX Subsection "Linux With Sfio Fails op/misc Test 48" | |
644 | No known fix. | |
645 | .Sh "Storable tests fail in some platforms" | |
646 | .IX Subsection "Storable tests fail in some platforms" | |
647 | If any Storable tests fail the use of Storable is not advisable. | |
648 | .IP "\(bu" 4 | |
649 | Many Storable tests fail on \s-1AIX\s0 configured with 64 bit integers. | |
650 | .Sp | |
651 | So far unidentified problems break Storable in \s-1AIX\s0 if Perl is | |
652 | configured to use 64 bit integers. \s-1AIX\s0 in 32\-bit mode works and | |
653 | other 64\-bit platforms work with Storable. | |
654 | .IP "\(bu" 4 | |
655 | \&\s-1DOS\s0 \s-1DJGPP\s0 may hang when testing Storable. | |
656 | .IP "\(bu" 4 | |
657 | st\-06compat fails in \s-1UNICOS\s0 and UNICOS/mk. | |
658 | .Sp | |
659 | This means that you cannot read old (pre\-Storable\-0.7) Storable images | |
660 | made in other platforms. | |
661 | .IP "\(bu" 4 | |
662 | st\-store.t and st-retrieve may fail with Compaq C 6.2 on OpenVMS Alpha 7.2. | |
663 | .Sh "Threads Are Still Experimental" | |
664 | .IX Subsection "Threads Are Still Experimental" | |
665 | Multithreading is still an experimental feature. Some platforms | |
666 | emit the following message for lib/thr5005 | |
667 | .PP | |
668 | .Vb 5 | |
669 | \& # | |
670 | \& # This is a KNOWN FAILURE, and one of the reasons why threading | |
671 | \& # is still an experimental feature. It is here to stop people | |
672 | \& # from deploying threads in production. ;-) | |
673 | \& # | |
674 | .Ve | |
675 | .PP | |
676 | and another known thread-related warning is | |
677 | .PP | |
678 | .Vb 9 | |
679 | \& pragma/overload......Unbalanced saves: 3 more saves than restores | |
680 | \& panic: magic_mutexfree during global destruction. | |
681 | \& ok | |
682 | \& lib/selfloader.......Unbalanced saves: 3 more saves than restores | |
683 | \& panic: magic_mutexfree during global destruction. | |
684 | \& ok | |
685 | \& lib/st-dclone........Unbalanced saves: 3 more saves than restores | |
686 | \& panic: magic_mutexfree during global destruction. | |
687 | \& ok | |
688 | .Ve | |
689 | .Sh "The Compiler Suite Is Still Experimental" | |
690 | .IX Subsection "The Compiler Suite Is Still Experimental" | |
691 | The compiler suite is slowly getting better but is nowhere near | |
692 | working order yet. The backend part that has seen perhaps the most | |
693 | progress is the bytecode compiler. | |
694 | .SH "Reporting Bugs" | |
695 | .IX Header "Reporting Bugs" | |
696 | If you find what you think is a bug, you might check the articles | |
697 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
698 | bug database at http://bugs.perl.org/ There may also be | |
699 | information at http://www.perl.com/perl/ , the Perl Home Page. | |
700 | .PP | |
701 | If you believe you have an unreported bug, please run the \fBperlbug\fR | |
702 | program included with your release. Be sure to trim your bug down | |
703 | to a tiny but sufficient test case. Your bug report, along with the | |
704 | output of \f(CW\*(C`perl \-V\*(C'\fR, will be sent off to perlbug@perl.org to be | |
705 | analysed by the Perl porting team. | |
706 | .SH "SEE ALSO" | |
707 | .IX Header "SEE ALSO" | |
708 | The \fIChanges\fR file for exhaustive details on what changed. | |
709 | .PP | |
710 | The \fI\s-1INSTALL\s0\fR file for how to build Perl. | |
711 | .PP | |
712 | The \fI\s-1README\s0\fR file for general stuff. | |
713 | .PP | |
714 | The \fIArtistic\fR and \fICopying\fR files for copyright information. | |
715 | .SH "HISTORY" | |
716 | .IX Header "HISTORY" | |
717 | Written by Jarkko Hietaniemi <\fIjhi@iki.fi\fR>, with many contributions | |
718 | from The Perl Porters and Perl Users submitting feedback and patches. | |
719 | .PP | |
720 | Send omissions or corrections to <\fIperlbug@perl.org\fR>. |