Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | =head1 NAME |
2 | ||
3 | perl571delta - what's new for perl v5.7.1 | |
4 | ||
5 | =head1 DESCRIPTION | |
6 | ||
7 | This document describes differences between the 5.7.0 release and the | |
8 | 5.7.1 release. | |
9 | ||
10 | (To view the differences between the 5.6.0 release and the 5.7.0 | |
11 | release, see L<perl570delta>.) | |
12 | ||
13 | =head1 Security Vulnerability Closed | |
14 | ||
15 | (This change was already made in 5.7.0 but bears repeating here.) | |
16 | ||
17 | A potential security vulnerability in the optional suidperl component | |
18 | of Perl was identified in August 2000. suidperl is neither built nor | |
19 | installed by default. As of April 2001 the only known vulnerable | |
20 | platform is Linux, most likely all Linux distributions. CERT and | |
21 | various vendors and distributors have been alerted about the vulnerability. | |
22 | See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt | |
23 | for more information. | |
24 | ||
25 | The problem was caused by Perl trying to report a suspected security | |
26 | exploit attempt using an external program, /bin/mail. On Linux | |
27 | platforms the /bin/mail program had an undocumented feature which | |
28 | when combined with suidperl gave access to a root shell, resulting in | |
29 | a serious compromise instead of reporting the exploit attempt. If you | |
30 | don't have /bin/mail, or if you have 'safe setuid scripts', or if | |
31 | suidperl is not installed, you are safe. | |
32 | ||
33 | The exploit attempt reporting feature has been completely removed from | |
34 | all the Perl 5.7 releases (and will be gone also from the maintenance | |
35 | release 5.6.1), so that particular vulnerability isn't there anymore. | |
36 | However, further security vulnerabilities are, unfortunately, always | |
37 | possible. The suidperl code is being reviewed and if deemed too risky | |
38 | to continue to be supported, it may be completely removed from future | |
39 | releases. In any case, suidperl should only be used by security | |
40 | experts who know exactly what they are doing and why they are using | |
41 | suidperl instead of some other solution such as sudo | |
42 | ( see http://www.courtesan.com/sudo/ ). | |
43 | ||
44 | =head1 Incompatible Changes | |
45 | ||
46 | =over 4 | |
47 | ||
48 | =item * | |
49 | ||
50 | Although "you shouldn't do that", it was possible to write code that | |
51 | depends on Perl's hashed key order (Data::Dumper does this). The new | |
52 | algorithm "One-at-a-Time" produces a different hashed key order. | |
53 | More details are in L</"Performance Enhancements">. | |
54 | ||
55 | =item * | |
56 | ||
57 | The list of filenames from glob() (or <...>) is now by default sorted | |
58 | alphabetically to be csh-compliant. (bsd_glob() does still sort platform | |
59 | natively, ASCII or EBCDIC, unless GLOB_ALPHASORT is specified.) | |
60 | ||
61 | =back | |
62 | ||
63 | =head1 Core Enhancements | |
64 | ||
65 | =head2 AUTOLOAD Is Now Lvaluable | |
66 | ||
67 | AUTOLOAD is now lvaluable, meaning that you can add the :lvalue attribute | |
68 | to AUTOLOAD subroutines and you can assign to the AUTOLOAD return value. | |
69 | ||
70 | =head2 PerlIO is Now The Default | |
71 | ||
72 | =over 4 | |
73 | ||
74 | =item * | |
75 | ||
76 | IO is now by default done via PerlIO rather than system's "stdio". | |
77 | PerlIO allows "layers" to be "pushed" onto a file handle to alter the | |
78 | handle's behaviour. Layers can be specified at open time via 3-arg | |
79 | form of open: | |
80 | ||
81 | open($fh,'>:crlf :utf8', $path) || ... | |
82 | ||
83 | or on already opened handles via extended C<binmode>: | |
84 | ||
85 | binmode($fh,':encoding(iso-8859-7)'); | |
86 | ||
87 | The built-in layers are: unix (low level read/write), stdio (as in | |
88 | previous Perls), perlio (re-implementation of stdio buffering in a | |
89 | portable manner), crlf (does CRLF <=> "\n" translation as on Win32, | |
90 | but available on any platform). A mmap layer may be available if | |
91 | platform supports it (mostly UNIXes). | |
92 | ||
93 | Layers to be applied by default may be specified via the 'open' pragma. | |
94 | ||
95 | See L</"Installation and Configuration Improvements"> for the effects | |
96 | of PerlIO on your architecture name. | |
97 | ||
98 | =item * | |
99 | ||
100 | File handles can be marked as accepting Perl's internal encoding of Unicode | |
101 | (UTF-8 or UTF-EBCDIC depending on platform) by a pseudo layer ":utf8" : | |
102 | ||
103 | open($fh,">:utf8","Uni.txt"); | |
104 | ||
105 | Note for EBCDIC users: the pseudo layer ":utf8" is erroneously named | |
106 | for you since it's not UTF-8 what you will be getting but instead | |
107 | UTF-EBCDIC. See L<perlunicode>, L<utf8>, and | |
108 | http://www.unicode.org/unicode/reports/tr16/ for more information. | |
109 | In future releases this naming may change. | |
110 | ||
111 | =item * | |
112 | ||
113 | File handles can translate character encodings from/to Perl's internal | |
114 | Unicode form on read/write via the ":encoding()" layer. | |
115 | ||
116 | =item * | |
117 | ||
118 | File handles can be opened to "in memory" files held in Perl scalars via: | |
119 | ||
120 | open($fh,'>', \$variable) || ... | |
121 | ||
122 | =item * | |
123 | ||
124 | Anonymous temporary files are available without need to | |
125 | 'use FileHandle' or other module via | |
126 | ||
127 | open($fh,"+>", undef) || ... | |
128 | ||
129 | That is a literal undef, not an undefined value. | |
130 | ||
131 | =item * | |
132 | ||
133 | The list form of C<open> is now implemented for pipes (at least on UNIX): | |
134 | ||
135 | open($fh,"-|", 'cat', '/etc/motd') | |
136 | ||
137 | creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in | |
138 | the child process. | |
139 | ||
140 | =item * | |
141 | ||
142 | The following builtin functions are now overridable: chop(), chomp(), | |
143 | each(), keys(), pop(), push(), shift(), splice(), unshift(). | |
144 | ||
145 | =item * | |
146 | ||
147 | Formats now support zero-padded decimal fields. | |
148 | ||
149 | =item * | |
150 | ||
151 | Perl now tries internally to use integer values in numeric conversions | |
152 | and basic arithmetics (+ - * /) if the arguments are integers, and | |
153 | tries also to keep the results stored internally as integers. | |
154 | This change leads into often slightly faster and always less lossy | |
155 | arithmetics. (Previously Perl always preferred floating point numbers | |
156 | in its math.) | |
157 | ||
158 | =item * | |
159 | ||
160 | The printf() and sprintf() now support parameter reordering using the | |
161 | C<%\d+\$> and C<*\d+\$> syntaxes. For example | |
162 | ||
163 | print "%2\$s %1\$s\n", "foo", "bar"; | |
164 | ||
165 | will print "bar foo\n"; This feature helps in writing | |
166 | internationalised software. | |
167 | ||
168 | =item * | |
169 | ||
170 | Unicode in general should be now much more usable. Unicode can be | |
171 | used in hash keys, Unicode in regular expressions should work now, | |
172 | Unicode in tr/// should work now (though tr/// seems to be a | |
173 | particularly tricky to get right, so you have been warned) | |
174 | ||
175 | =item * | |
176 | ||
177 | The Unicode Character Database coming with Perl has been upgraded | |
178 | to Unicode 3.1. For more information, see http://www.unicode.org/ , | |
179 | and http://www.unicode.org/unicode/reports/tr27/ | |
180 | ||
181 | For developers interested in enhancing Perl's Unicode capabilities: | |
182 | almost all the UCD files are included with the Perl distribution in | |
183 | the lib/unicode subdirectory. The most notable omission, for space | |
184 | considerations, is the Unihan database. | |
185 | ||
186 | =item * | |
187 | ||
188 | The Unicode character classes \p{Blank} and \p{SpacePerl} have been | |
189 | added. "Blank" is like C isblank(), that is, it contains only | |
190 | "horizontal whitespace" (the space character is, the newline isn't), | |
191 | and the "SpacePerl" is the Unicode equivalent of C<\s> (\p{Space} | |
192 | isn't, since that includes the vertical tabulator character, whereas | |
193 | C<\s> doesn't.) | |
194 | ||
195 | =back | |
196 | ||
197 | =head2 Signals Are Now Safe | |
198 | ||
199 | Perl used to be fragile in that signals arriving at inopportune moments | |
200 | could corrupt Perl's internal state. | |
201 | ||
202 | =head1 Modules and Pragmata | |
203 | ||
204 | =head2 New Modules | |
205 | ||
206 | =over 4 | |
207 | ||
208 | =item * | |
209 | ||
210 | B::Concise, by Stephen McCamant, is a new compiler backend for | |
211 | walking the Perl syntax tree, printing concise info about ops. | |
212 | The output is highly customisable. | |
213 | ||
214 | See L<B::Concise> for more information. | |
215 | ||
216 | =item * | |
217 | ||
218 | Class::ISA, by Sean Burke, for reporting the search path for a | |
219 | class's ISA tree, has been added. | |
220 | ||
221 | See L<Class::ISA> for more information. | |
222 | ||
223 | =item * | |
224 | ||
225 | Cwd has now a split personality: if possible, an extension is used, | |
226 | (this will hopefully be both faster and more secure and robust) but | |
227 | if not possible, the familiar Perl library implementation is used. | |
228 | ||
229 | =item * | |
230 | ||
231 | Digest, a frontend module for calculating digests (checksums), | |
232 | from Gisle Aas, has been added. | |
233 | ||
234 | See L<Digest> for more information. | |
235 | ||
236 | =item * | |
237 | ||
238 | Digest::MD5 for calculating MD5 digests (checksums), by Gisle Aas, | |
239 | has been added. | |
240 | ||
241 | use Digest::MD5 'md5_hex'; | |
242 | ||
243 | $digest = md5_hex("Thirsty Camel"); | |
244 | ||
245 | print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1 | |
246 | ||
247 | NOTE: the MD5 backward compatibility module is deliberately not | |
248 | included since its use is discouraged. | |
249 | ||
250 | See L<Digest::MD5> for more information. | |
251 | ||
252 | =item * | |
253 | ||
254 | Encode, by Nick Ing-Simmons, provides a mechanism to translate | |
255 | between different character encodings. Support for Unicode, | |
256 | ISO-8859-*, ASCII, CP*, KOI8-R, and three variants of EBCDIC are | |
257 | compiled in to the module. Several other encodings (like Japanese, | |
258 | Chinese, and MacIntosh encodings) are included and will be loaded at | |
259 | runtime. | |
260 | ||
261 | Any encoding supported by Encode module is also available to the | |
262 | ":encoding()" layer if PerlIO is used. | |
263 | ||
264 | See L<Encode> for more information. | |
265 | ||
266 | =item * | |
267 | ||
268 | Filter::Simple is an easy-to-use frontend to Filter::Util::Call, | |
269 | from Damian Conway. | |
270 | ||
271 | # in MyFilter.pm: | |
272 | ||
273 | package MyFilter; | |
274 | ||
275 | use Filter::Simple sub { | |
276 | while (my ($from, $to) = splice @_, 0, 2) { | |
277 | s/$from/$to/g; | |
278 | } | |
279 | }; | |
280 | ||
281 | 1; | |
282 | ||
283 | # in user's code: | |
284 | ||
285 | use MyFilter qr/red/ => 'green'; | |
286 | ||
287 | print "red\n"; # this code is filtered, will print "green\n" | |
288 | print "bored\n"; # this code is filtered, will print "bogreen\n" | |
289 | ||
290 | no MyFilter; | |
291 | ||
292 | print "red\n"; # this code is not filtered, will print "red\n" | |
293 | ||
294 | See L<Filter::Simple> for more information. | |
295 | ||
296 | =item * | |
297 | ||
298 | Filter::Util::Call, by Paul Marquess, provides you with the | |
299 | framework to write I<Source Filters> in Perl. For most uses | |
300 | the frontend Filter::Simple is to be preferred. | |
301 | See L<Filter::Util::Call> for more information. | |
302 | ||
303 | =item * | |
304 | ||
305 | Locale::Constants, Locale::Country, Locale::Currency, and Locale::Language, | |
306 | from Neil Bowers, have been added. They provide the codes for various | |
307 | locale standards, such as "fr" for France, "usd" for US Dollar, and | |
308 | "jp" for Japanese. | |
309 | ||
310 | use Locale::Country; | |
311 | ||
312 | $country = code2country('jp'); # $country gets 'Japan' | |
313 | $code = country2code('Norway'); # $code gets 'no' | |
314 | ||
315 | See L<Locale::Constants>, L<Locale::Country>, L<Locale::Currency>, | |
316 | and L<Locale::Language> for more information. | |
317 | ||
318 | =item * | |
319 | ||
320 | MIME::Base64, by Gisle Aas, allows you to encode data in base64. | |
321 | ||
322 | use MIME::Base64; | |
323 | ||
324 | $encoded = encode_base64('Aladdin:open sesame'); | |
325 | $decoded = decode_base64($encoded); | |
326 | ||
327 | print $encoded, "\n"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ==" | |
328 | ||
329 | See L<MIME::Base64> for more information. | |
330 | ||
331 | =item * | |
332 | ||
333 | MIME::QuotedPrint, by Gisle Aas, allows you to encode data in | |
334 | quoted-printable encoding. | |
335 | ||
336 | use MIME::QuotedPrint; | |
337 | ||
338 | $encoded = encode_qp("Smiley in Unicode: \x{263a}"); | |
339 | $decoded = decode_qp($encoded); | |
340 | ||
341 | print $encoded, "\n"; # "Smiley in Unicode: =263A" | |
342 | ||
343 | MIME::QuotedPrint has been enhanced to provide the basic methods | |
344 | necessary to use it with PerlIO::Via as in : | |
345 | ||
346 | use MIME::QuotedPrint; | |
347 | open($fh,">Via(MIME::QuotedPrint)",$path) | |
348 | ||
349 | See L<MIME::QuotedPrint> for more information. | |
350 | ||
351 | =item * | |
352 | ||
353 | PerlIO::Scalar, by Nick Ing-Simmons, provides the implementation of | |
354 | IO to "in memory" Perl scalars as discussed above. It also serves as | |
355 | an example of a loadable layer. Other future possibilities include | |
356 | PerlIO::Array and PerlIO::Code. See L<PerlIO::Scalar> for more | |
357 | information. | |
358 | ||
359 | =item * | |
360 | ||
361 | PerlIO::Via, by Nick Ing-Simmons, acts as a PerlIO layer and wraps | |
362 | PerlIO layer functionality provided by a class (typically implemented | |
363 | in perl code). | |
364 | ||
365 | use MIME::QuotedPrint; | |
366 | open($fh,">Via(MIME::QuotedPrint)",$path) | |
367 | ||
368 | This will automatically convert everything output to C<$fh> | |
369 | to Quoted-Printable. See L<PerlIO::Via> for more information. | |
370 | ||
371 | =item * | |
372 | ||
373 | Pod::Text::Overstrike, by Joe Smith, has been added. | |
374 | It converts POD data to formatted overstrike text. | |
375 | See L<Pod::Text::Overstrike> for more information. | |
376 | ||
377 | =item * | |
378 | ||
379 | Switch from Damian Conway has been added. Just by saying | |
380 | ||
381 | use Switch; | |
382 | ||
383 | you have C<switch> and C<case> available in Perl. | |
384 | ||
385 | use Switch; | |
386 | ||
387 | switch ($val) { | |
388 | ||
389 | case 1 { print "number 1" } | |
390 | case "a" { print "string a" } | |
391 | case [1..10,42] { print "number in list" } | |
392 | case (@array) { print "number in list" } | |
393 | case /\w+/ { print "pattern" } | |
394 | case qr/\w+/ { print "pattern" } | |
395 | case (%hash) { print "entry in hash" } | |
396 | case (\%hash) { print "entry in hash" } | |
397 | case (\&sub) { print "arg to subroutine" } | |
398 | else { print "previous case not true" } | |
399 | } | |
400 | ||
401 | See L<Switch> for more information. | |
402 | ||
403 | =item * | |
404 | ||
405 | Text::Balanced from Damian Conway has been added, for | |
406 | extracting delimited text sequences from strings. | |
407 | ||
408 | use Text::Balanced 'extract_delimited'; | |
409 | ||
410 | ($a, $b) = extract_delimited("'never say never', he never said", "'", ''); | |
411 | ||
412 | $a will be "'never say never'", $b will be ', he never said'. | |
413 | ||
414 | In addition to extract_delimited() there are also extract_bracketed(), | |
415 | extract_quotelike(), extract_codeblock(), extract_variable(), | |
416 | extract_tagged(), extract_multiple(), gen_delimited_pat(), and | |
417 | gen_extract_tagged(). With these you can implement rather advanced | |
418 | parsing algorithms. See L<Text::Balanced> for more information. | |
419 | ||
420 | =item * | |
421 | ||
422 | Tie::RefHash::Nestable, by Edward Avis, allows storing hash references | |
423 | (unlike the standard Tie::RefHash) The module is contained within | |
424 | Tie::RefHash. | |
425 | ||
426 | =item * | |
427 | ||
428 | XS::Typemap, by Tim Jenness, is a test extension that exercises XS | |
429 | typemaps. Nothing gets installed but for extension writers the code | |
430 | is worth studying. | |
431 | ||
432 | =back | |
433 | ||
434 | =head2 Updated And Improved Modules and Pragmata | |
435 | ||
436 | =over 4 | |
437 | ||
438 | =item * | |
439 | ||
440 | B::Deparse should be now more robust. It still far from providing a full | |
441 | round trip for any random piece of Perl code, though, and is under active | |
442 | development: expect more robustness in 5.7.2. | |
443 | ||
444 | =item * | |
445 | ||
446 | Class::Struct can now define the classes in compile time. | |
447 | ||
448 | =item * | |
449 | ||
450 | Math::BigFloat has undergone much fixing, and in addition the fmod() | |
451 | function now supports modulus operations. | |
452 | ||
453 | ( The fixed Math::BigFloat module is also available in CPAN for those | |
454 | who can't upgrade their Perl: http://www.cpan.org/authors/id/J/JP/JPEACOCK/ ) | |
455 | ||
456 | =item * | |
457 | ||
458 | Devel::Peek now has an interface for the Perl memory statistics | |
459 | (this works only if you are using perl's malloc, and if you have | |
460 | compiled with debugging). | |
461 | ||
462 | =item * | |
463 | ||
464 | IO::Socket has now atmark() method, which returns true if the socket | |
465 | is positioned at the out-of-band mark. The method is also exportable | |
466 | as a sockatmark() function. | |
467 | ||
468 | =item * | |
469 | ||
470 | IO::Socket::INET has support for ReusePort option (if your platform | |
471 | supports it). The Reuse option now has an alias, ReuseAddr. For clarity | |
472 | you may want to prefer ReuseAddr. | |
473 | ||
474 | =item * | |
475 | ||
476 | Net::Ping has been enhanced. There is now "external" protocol which | |
477 | uses Net::Ping::External module which runs external ping(1) and parses | |
478 | the output. An alpha version of Net::Ping::External is available in | |
479 | CPAN and in 5.7.2 the Net::Ping::External may be integrated to Perl. | |
480 | ||
481 | =item * | |
482 | ||
483 | The C<open> pragma allows layers other than ":raw" and ":crlf" when | |
484 | using PerlIO. | |
485 | ||
486 | =item * | |
487 | ||
488 | POSIX::sigaction() is now much more flexible and robust. | |
489 | You can now install coderef handlers, 'DEFAULT', and 'IGNORE' | |
490 | handlers, installing new handlers was not atomic. | |
491 | ||
492 | =item * | |
493 | ||
494 | The Test module has been significantly enhanced. Its use is | |
495 | greatly recommended for module writers. | |
496 | ||
497 | =item * | |
498 | ||
499 | The utf8:: name space (as in the pragma) provides various | |
500 | Perl-callable functions to provide low level access to Perl's | |
501 | internal Unicode representation. At the moment only length() | |
502 | has been implemented. | |
503 | ||
504 | =back | |
505 | ||
506 | The following modules have been upgraded from the versions at CPAN: | |
507 | CPAN, CGI, DB_File, File::Temp, Getopt::Long, Pod::Man, Pod::Text, | |
508 | Storable, Text-Tabs+Wrap. | |
509 | ||
510 | =head1 Performance Enhancements | |
511 | ||
512 | =over 4 | |
513 | ||
514 | =item * | |
515 | ||
516 | Hashes now use Bob Jenkins "One-at-a-Time" hashing key algorithm | |
517 | ( http://burtleburtle.net/bob/hash/doobs.html ). This algorithm is | |
518 | reasonably fast while producing a much better spread of values than | |
519 | the old hashing algorithm (originally by Chris Torek, later tweaked by | |
520 | Ilya Zakharevich). Hash values output from the algorithm on a hash of | |
521 | all 3-char printable ASCII keys comes much closer to passing the | |
522 | DIEHARD random number generation tests. According to perlbench, this | |
523 | change has not affected the overall speed of Perl. | |
524 | ||
525 | =item * | |
526 | ||
527 | unshift() should now be noticeably faster. | |
528 | ||
529 | =back | |
530 | ||
531 | =head1 Utility Changes | |
532 | ||
533 | =over 4 | |
534 | ||
535 | =item * | |
536 | ||
537 | h2xs now produces template README. | |
538 | ||
539 | =item * | |
540 | ||
541 | s2p has been completely rewritten in Perl. (It is in fact a full | |
542 | implementation of sed in Perl.) | |
543 | ||
544 | =item * | |
545 | ||
546 | xsubpp now supports OUT keyword. | |
547 | ||
548 | =back | |
549 | ||
550 | =head1 New Documentation | |
551 | ||
552 | =head2 perlclib | |
553 | ||
554 | Internal replacements for standard C library functions. | |
555 | (Interesting only for extension writers and Perl core hackers.) | |
556 | ||
557 | =head2 perliol | |
558 | ||
559 | Internals of PerlIO with layers. | |
560 | ||
561 | =head2 README.aix | |
562 | ||
563 | Documentation on compiling Perl on AIX has been added. AIX has | |
564 | several different C compilers and getting the right patch level | |
565 | is essential. On install README.aix will be installed as L<perlaix>. | |
566 | ||
567 | =head2 README.bs2000 | |
568 | ||
569 | Documentation on compiling Perl on the POSIX-BC platform (an EBCDIC | |
570 | mainframe environment) has been added. | |
571 | ||
572 | This was formerly known as README.posix-bc but the name was considered | |
573 | to be too confusing (it has nothing to do with the POSIX module or the | |
574 | POSIX standard). On install README.bs2000 will be installed as L<perlbs2000>. | |
575 | ||
576 | =head2 README.macos | |
577 | ||
578 | In perl 5.7.1 (and in the 5.6.1) the MacPerl sources have been | |
579 | synchronised with the standard Perl sources. To compile MacPerl | |
580 | some additional steps are required, and this file documents those | |
581 | steps. On install README.macos will be installed as L<perlmacos>. | |
582 | ||
583 | =head2 README.mpeix | |
584 | ||
585 | The README.mpeix has been podified, which means that this information | |
586 | about compiling and using Perl on the MPE/iX miniframe platform will | |
587 | be installed as L<perlmpeix>. | |
588 | ||
589 | =head2 README.solaris | |
590 | ||
591 | README.solaris has been created and Solaris wisdom from elsewhere | |
592 | in the Perl documentation has been collected there. On install | |
593 | README.solaris will be installed as L<perlsolaris>. | |
594 | ||
595 | =head2 README.vos | |
596 | ||
597 | The README.vos has been podified, which means that this information | |
598 | about compiling and using Perl on the Stratus VOS miniframe platform | |
599 | will be installed as L<perlvos>. | |
600 | ||
601 | =head2 Porting/repository.pod | |
602 | ||
603 | Documentation on how to use the Perl source repository has been added. | |
604 | ||
605 | =head1 Installation and Configuration Improvements | |
606 | ||
607 | =over 4 | |
608 | ||
609 | =item * | |
610 | ||
611 | Because PerlIO is now the default on most platforms, "-perlio" doesn't | |
612 | get appended to the $Config{archname} (also known as $^O) anymore. | |
613 | Instead, if you explicitly choose not to use perlio (Configure command | |
614 | line option -Uuseperlio), you will get "-stdio" appended. | |
615 | ||
616 | =item * | |
617 | ||
618 | Another change related to the architecture name is that "-64all" | |
619 | (-Duse64bitall, or "maximally 64-bit") is appended only if your | |
620 | pointers are 64 bits wide. (To be exact, the use64bitall is ignored.) | |
621 | ||
622 | =item * | |
623 | ||
624 | APPLLIB_EXP, a less-know configuration-time definition, has been | |
625 | documented. It can be used to prepend site-specific directories | |
626 | to Perl's default search path (@INC), see INSTALL for information. | |
627 | ||
628 | =item * | |
629 | ||
630 | Building Berkeley DB3 for compatibility modes for DB, NDBM, and ODBM | |
631 | has been documented in INSTALL. | |
632 | ||
633 | =item * | |
634 | ||
635 | If you are on IRIX or Tru64 platforms, new profiling/debugging options | |
636 | have been added, see L<perlhack> for more information about pixie and | |
637 | Third Degree. | |
638 | ||
639 | =back | |
640 | ||
641 | =head2 New Or Improved Platforms | |
642 | ||
643 | For the list of platforms known to support Perl, | |
644 | see L<perlport/"Supported Platforms">. | |
645 | ||
646 | =over 4 | |
647 | ||
648 | =item * | |
649 | ||
650 | AIX dynamic loading should be now better supported. | |
651 | ||
652 | =item * | |
653 | ||
654 | After a long pause, AmigaOS has been verified to be happy with Perl. | |
655 | ||
656 | =item * | |
657 | ||
658 | EBCDIC platforms (z/OS, also known as OS/390, POSIX-BC, and VM/ESA) | |
659 | have been regained. Many test suite tests still fail and the | |
660 | co-existence of Unicode and EBCDIC isn't quite settled, but the | |
661 | situation is much better than with Perl 5.6. See L<perlos390>, | |
662 | L<perlbs2000> (for POSIX-BC), and L<perlvmesa> for more information. | |
663 | ||
664 | =item * | |
665 | ||
666 | Building perl with -Duseithreads or -Duse5005threads now works under | |
667 | HP-UX 10.20 (previously it only worked under 10.30 or later). You will | |
668 | need a thread library package installed. See README.hpux. | |
669 | ||
670 | =item * | |
671 | ||
672 | Mac OS Classic (MacPerl has of course been available since | |
673 | perl 5.004 but now the source code bases of standard Perl | |
674 | and MacPerl have been synchronised) | |
675 | ||
676 | =item * | |
677 | ||
678 | NCR MP-RAS is now supported. | |
679 | ||
680 | =item * | |
681 | ||
682 | NonStop-UX is now supported. | |
683 | ||
684 | =item * | |
685 | ||
686 | Amdahl UTS is now supported. | |
687 | ||
688 | =item * | |
689 | ||
690 | z/OS (formerly known as OS/390, formerly known as MVS OE) has now | |
691 | support for dynamic loading. This is not selected by default, | |
692 | however, you must specify -Dusedl in the arguments of Configure. | |
693 | ||
694 | =back | |
695 | ||
696 | =head2 Generic Improvements | |
697 | ||
698 | =over 4 | |
699 | ||
700 | =item * | |
701 | ||
702 | Configure no longer includes the DBM libraries (dbm, gdbm, db, ndbm) | |
703 | when building the Perl binary. The only exception to this is SunOS 4.x, | |
704 | which needs them. | |
705 | ||
706 | =item * | |
707 | ||
708 | Some new Configure symbols, useful for extension writers: | |
709 | ||
710 | =over 8 | |
711 | ||
712 | =item d_cmsghdr | |
713 | ||
714 | For struct cmsghdr. | |
715 | ||
716 | =item d_fcntl_can_lock | |
717 | ||
718 | Whether fcntl() can be used for file locking. | |
719 | ||
720 | =item d_fsync | |
721 | ||
722 | =item d_getitimer | |
723 | ||
724 | =item d_getpagsz | |
725 | ||
726 | For getpagesize(), though you should prefer POSIX::sysconf(_SC_PAGE_SIZE)) | |
727 | ||
728 | =item d_msghdr_s | |
729 | ||
730 | For struct msghdr. | |
731 | ||
732 | =item need_va_copy | |
733 | ||
734 | Whether one needs to use Perl_va_copy() to copy varargs. | |
735 | ||
736 | =item d_readv | |
737 | ||
738 | =item d_recvmsg | |
739 | ||
740 | =item d_sendmsg | |
741 | ||
742 | =item sig_size | |
743 | ||
744 | The number of elements in an array needed to hold all the available signals. | |
745 | ||
746 | =item d_sockatmark | |
747 | ||
748 | =item d_strtoq | |
749 | ||
750 | =item d_u32align | |
751 | ||
752 | Whether one needs to access character data aligned by U32 sized pointers. | |
753 | ||
754 | =item d_ualarm | |
755 | ||
756 | =item d_usleep | |
757 | ||
758 | =back | |
759 | ||
760 | =item * | |
761 | ||
762 | Removed Configure symbols: the PDP-11 memory model settings: huge, | |
763 | large, medium, models. | |
764 | ||
765 | =item * | |
766 | ||
767 | SOCKS support is now much more robust. | |
768 | ||
769 | =item * | |
770 | ||
771 | If your file system supports symbolic links you can build Perl outside | |
772 | of the source directory by | |
773 | ||
774 | mkdir perl/build/directory | |
775 | cd perl/build/directory | |
776 | sh /path/to/perl/source/Configure -Dmksymlinks ... | |
777 | ||
778 | This will create in perl/build/directory a tree of symbolic links | |
779 | pointing to files in /path/to/perl/source. The original files are left | |
780 | unaffected. After Configure has finished you can just say | |
781 | ||
782 | make all test | |
783 | ||
784 | and Perl will be built and tested, all in perl/build/directory. | |
785 | ||
786 | =back | |
787 | ||
788 | =head1 Selected Bug Fixes | |
789 | ||
790 | Numerous memory leaks and uninitialized memory accesses have been hunted down. | |
791 | Most importantly anonymous subs used to leak quite a bit. | |
792 | ||
793 | =over 4 | |
794 | ||
795 | =item * | |
796 | ||
797 | chop(@list) in list context returned the characters chopped in | |
798 | reverse order. This has been reversed to be in the right order. | |
799 | ||
800 | =item * | |
801 | ||
802 | The order of DESTROYs has been made more predictable. | |
803 | ||
804 | =item * | |
805 | ||
806 | mkdir() now ignores trailing slashes in the directory name, | |
807 | as mandated by POSIX. | |
808 | ||
809 | =item * | |
810 | ||
811 | Attributes (like :shared) didn't work with our(). | |
812 | ||
813 | =item * | |
814 | ||
815 | The PERL5OPT environment variable (for passing command line arguments | |
816 | to Perl) didn't work for more than a single group of options. | |
817 | ||
818 | =item * | |
819 | ||
820 | The tainting behaviour of sprintf() has been rationalized. It does | |
821 | not taint the result of floating point formats anymore, making the | |
822 | behaviour consistent with that of string interpolation. | |
823 | ||
824 | =item * | |
825 | ||
826 | All but the first argument of the IO syswrite() method are now optional. | |
827 | ||
828 | =item * | |
829 | ||
830 | Tie::ARRAY SPLICE method was broken. | |
831 | ||
832 | =item * | |
833 | ||
834 | vec() now tries to work with characters <= 255 when possible, but it leaves | |
835 | higher character values in place. In that case, if vec() was used to modify | |
836 | the string, it is no longer considered to be utf8-encoded. | |
837 | ||
838 | =back | |
839 | ||
840 | =head2 Platform Specific Changes and Fixes | |
841 | ||
842 | =over 4 | |
843 | ||
844 | =item * | |
845 | ||
846 | Linux previously had problems related to sockaddrlen when using | |
847 | accept(), revcfrom() (in Perl: recv()), getpeername(), and getsockname(). | |
848 | ||
849 | =item * | |
850 | ||
851 | Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O. | |
852 | ||
853 | =item * | |
854 | ||
855 | Windows | |
856 | ||
857 | =over 8 | |
858 | ||
859 | =item * | |
860 | ||
861 | Borland C++ v5.5 is now a supported compiler that can build Perl. | |
862 | However, the generated binaries continue to be incompatible with those | |
863 | generated by the other supported compilers (GCC and Visual C++). | |
864 | ||
865 | =item * | |
866 | ||
867 | Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root. | |
868 | Other bugs in chdir() and Cwd::cwd() have also been fixed. | |
869 | ||
870 | =item * | |
871 | ||
872 | Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x. | |
873 | ||
874 | =item * | |
875 | ||
876 | HTML files will be installed in c:\perl\html instead of c:\perl\lib\pod\html | |
877 | ||
878 | =item * | |
879 | ||
880 | The makefiles now provide a single switch to bulk-enable all the features | |
881 | enabled in ActiveState ActivePerl (a popular binary distribution). | |
882 | ||
883 | =back | |
884 | ||
885 | =back | |
886 | ||
887 | =head1 New or Changed Diagnostics | |
888 | ||
889 | Two new debugging options have been added: if you have compiled your | |
890 | Perl with debugging, you can use the -DT and -DR options to trace | |
891 | tokenising and to add reference counts to displaying variables, | |
892 | respectively. | |
893 | ||
894 | =over 4 | |
895 | ||
896 | =item * | |
897 | ||
898 | If an attempt to use a (non-blessed) reference as an array index | |
899 | is made, a warning is given. | |
900 | ||
901 | =item * | |
902 | ||
903 | C<push @a;> and C<unshift @a;> (with no values to push or unshift) | |
904 | now give a warning. This may be a problem for generated and evaled | |
905 | code. | |
906 | ||
907 | =back | |
908 | ||
909 | =head1 Changed Internals | |
910 | ||
911 | =over 4 | |
912 | ||
913 | =item * | |
914 | ||
915 | Some new APIs: ptr_table_clear(), ptr_table_free(), sv_setref_uv(). | |
916 | For the full list of the available APIs see L<perlapi>. | |
917 | ||
918 | =item * | |
919 | ||
920 | dTHR and djSP have been obsoleted; the former removed (because it's | |
921 | a no-op) and the latter replaced with dSP. | |
922 | ||
923 | =item * | |
924 | ||
925 | Perl now uses system malloc instead of Perl malloc on all 64-bit | |
926 | platforms, and even in some not-always-64-bit platforms like AIX, | |
927 | IRIX, and Solaris. This change breaks backward compatibility but | |
928 | Perl's malloc has problems with large address spaces and also the | |
929 | speed of vendors' malloc is generally better in large address space | |
930 | machines (Perl's malloc is mostly tuned for space). | |
931 | ||
932 | =back | |
933 | ||
934 | =head1 New Tests | |
935 | ||
936 | Many new tests have been added. The most notable is probably the | |
937 | lib/1_compile: it is very notable because running it takes quite a | |
938 | long time -- it test compiles all the Perl modules in the distribution. | |
939 | Please be patient. | |
940 | ||
941 | =head1 Known Problems | |
942 | ||
943 | Note that unlike other sections in this document (which describe | |
944 | changes since 5.7.0) this section is cumulative containing known | |
945 | problems for all the 5.7 releases. | |
946 | ||
947 | =head2 AIX vac 5.0.0.0 May Produce Buggy Code For Perl | |
948 | ||
949 | The AIX C compiler vac version 5.0.0.0 may produce buggy code, | |
950 | resulting in few random tests failing, but when the failing tests | |
951 | are run by hand, they succeed. We suggest upgrading to at least | |
952 | vac version 5.0.1.0, that has been known to compile Perl correctly. | |
953 | "lslpp -L|grep vac.C" will tell you the vac version. | |
954 | ||
955 | =head2 lib/ftmp-security tests warn 'system possibly insecure' | |
956 | ||
957 | Don't panic. Read INSTALL 'make test' section instead. | |
958 | ||
959 | =head2 lib/io_multihomed Fails In LP64-Configured HP-UX | |
960 | ||
961 | The lib/io_multihomed test may hang in HP-UX if Perl has been | |
962 | configured to be 64-bit. Because other 64-bit platforms do not hang in | |
963 | this test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The | |
964 | test attempts to create and connect to "multihomed" sockets (sockets | |
965 | which have multiple IP addresses). | |
966 | ||
967 | =head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX | |
968 | ||
969 | If perl is configured with -Duse64bitall, the successful result of the | |
970 | subtest 10 of lib/posix may arrive before the successful result of the | |
971 | subtest 9, which confuses the test harness so much that it thinks the | |
972 | subtest 9 failed. | |
973 | ||
974 | =head2 lib/b test 19 | |
975 | ||
976 | The test fails on various platforms (PA64 and IA64 are known), but the | |
977 | exact cause is still being investigated. | |
978 | ||
979 | =head2 Linux With Sfio Fails op/misc Test 48 | |
980 | ||
981 | No known fix. | |
982 | ||
983 | =head2 sigaction test 13 in VMS | |
984 | ||
985 | The test is known to fail; whether it's because of VMS of because | |
986 | of faulty test is not known. | |
987 | ||
988 | =head2 sprintf tests 129 and 130 | |
989 | ||
990 | The op/sprintf tests 129 and 130 are known to fail on some platforms. | |
991 | Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX. | |
992 | The failing platforms do not comply with the ANSI C Standard, line | |
993 | 19ff on page 134 of ANSI X3.159 1989 to be exact. (They produce | |
994 | something else than "1" and "-1" when formatting 0.6 and -0.6 using | |
995 | the printf format "%.0f", most often they produce "0" and "-0".) | |
996 | ||
997 | =head2 Failure of Thread tests | |
998 | ||
999 | The subtests 19 and 20 of lib/thr5005.t test are known to fail due to | |
1000 | fundamental problems in the 5.005 threading implementation. These are | |
1001 | not new failures--Perl 5.005_0x has the same bugs, but didn't have | |
1002 | these tests. (Note that support for 5.005-style threading remains | |
1003 | experimental.) | |
1004 | ||
1005 | =head2 Localising a Tied Variable Leaks Memory | |
1006 | ||
1007 | use Tie::Hash; | |
1008 | tie my %tie_hash => 'Tie::StdHash'; | |
1009 | ||
1010 | ... | |
1011 | ||
1012 | local($tie_hash{Foo}) = 1; # leaks | |
1013 | ||
1014 | Code like the above is known to leak memory every time the local() | |
1015 | is executed. | |
1016 | ||
1017 | =head2 Self-tying of Arrays and Hashes Is Forbidden | |
1018 | ||
1019 | Self-tying of arrays and hashes is broken in rather deep and | |
1020 | hard-to-fix ways. As a stop-gap measure to avoid people from getting | |
1021 | frustrated at the mysterious results (core dumps, most often) it is | |
1022 | for now forbidden (you will get a fatal error even from an attempt). | |
1023 | ||
1024 | =head2 Building Extensions Can Fail Because Of Largefiles | |
1025 | ||
1026 | Some extensions like mod_perl are known to have issues with | |
1027 | `largefiles', a change brought by Perl 5.6.0 in which file offsets | |
1028 | default to 64 bits wide, where supported. Modules may fail to compile | |
1029 | at all or compile and work incorrectly. Currently there is no good | |
1030 | solution for the problem, but Configure now provides appropriate | |
1031 | non-largefile ccflags, ldflags, libswanted, and libs in the %Config | |
1032 | hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are | |
1033 | having problems can try configuring themselves without the | |
1034 | largefileness. This is admittedly not a clean solution, and the | |
1035 | solution may not even work at all. One potential failure is whether | |
1036 | one can (or, if one can, whether it's a good idea) link together at | |
1037 | all binaries with different ideas about file offsets, all this is | |
1038 | platform-dependent. | |
1039 | ||
1040 | =head2 The Compiler Suite Is Still Experimental | |
1041 | ||
1042 | The compiler suite is slowly getting better but is nowhere near | |
1043 | working order yet. | |
1044 | ||
1045 | =head1 Reporting Bugs | |
1046 | ||
1047 | If you find what you think is a bug, you might check the articles | |
1048 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
1049 | bug database at http://bugs.perl.org/ There may also be | |
1050 | information at http://www.perl.com/perl/ , the Perl Home Page. | |
1051 | ||
1052 | If you believe you have an unreported bug, please run the B<perlbug> | |
1053 | program included with your release. Be sure to trim your bug down | |
1054 | to a tiny but sufficient test case. Your bug report, along with the | |
1055 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
1056 | analysed by the Perl porting team. | |
1057 | ||
1058 | =head1 SEE ALSO | |
1059 | ||
1060 | The F<Changes> file for exhaustive details on what changed. | |
1061 | ||
1062 | The F<INSTALL> file for how to build Perl. | |
1063 | ||
1064 | The F<README> file for general stuff. | |
1065 | ||
1066 | The F<Artistic> and F<Copying> files for copyright information. | |
1067 | ||
1068 | =head1 HISTORY | |
1069 | ||
1070 | Written by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions | |
1071 | from The Perl Porters and Perl Users submitting feedback and patches. | |
1072 | ||
1073 | Send omissions or corrections to <F<perlbug@perl.org>>. | |
1074 | ||
1075 | =cut |