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