1PERL58DELTA(1) Perl Programmers Reference Guide PERL58DELTA(1)
2
3
4
6 perl58delta - what is new for perl v5.8.0
7
9 This document describes differences between the 5.6.0 release and the
10 5.8.0 release.
11
12 Many of the bug fixes in 5.8.0 were already seen in the 5.6.1
13 maintenance release since the two releases were kept closely
14 coordinated (while 5.8.0 was still called 5.7.something).
15
16 Changes that were integrated into the 5.6.1 release are marked "[561]".
17 Many of these changes have been further developed since 5.6.1 was
18 released, those are marked "[561+]".
19
20 You can see the list of changes in the 5.6.1 release (both from the
21 5.005_03 release and the 5.6.0 release) by reading perl561delta.
22
24 • Better Unicode support
25
26 • New IO Implementation
27
28 • New Thread Implementation
29
30 • Better Numeric Accuracy
31
32 • Safe Signals
33
34 • Many New Modules
35
36 • More Extensive Regression Testing
37
39 Binary Incompatibility
40 Perl 5.8 is not binary compatible with earlier releases of Perl.
41
42 You have to recompile your XS modules.
43
44 (Pure Perl modules should continue to work.)
45
46 The major reason for the discontinuity is the new IO architecture
47 called PerlIO. PerlIO is the default configuration because without it
48 many new features of Perl 5.8 cannot be used. In other words: you just
49 have to recompile your modules containing XS code, sorry about that.
50
51 In future releases of Perl, non-PerlIO aware XS modules may become
52 completely unsupported. This shouldn't be too difficult for module
53 authors, however: PerlIO has been designed as a drop-in replacement (at
54 the source code level) for the stdio interface.
55
56 Depending on your platform, there are also other reasons why we decided
57 to break binary compatibility, please read on.
58
59 64-bit platforms and malloc
60 If your pointers are 64 bits wide, the Perl malloc is no longer being
61 used because it does not work well with 8-byte pointers. Also, usually
62 the system mallocs on such platforms are much better optimized for such
63 large memory models than the Perl malloc. Some memory-hungry Perl
64 applications like the PDL don't work well with Perl's malloc. Finally,
65 other applications than Perl (such as mod_perl) tend to prefer the
66 system malloc. Such platforms include Alpha and 64-bit HPPA, MIPS,
67 PPC, and Sparc.
68
69 AIX Dynaloading
70 The AIX dynaloading now uses in AIX releases 4.3 and newer the native
71 dlopen interface of AIX instead of the old emulated interface. This
72 change will probably break backward compatibility with compiled
73 modules. The change was made to make Perl more compliant with other
74 applications like mod_perl which are using the AIX native interface.
75
76 Attributes for "my" variables now handled at run-time
77 The "my EXPR : ATTRS" syntax now applies variable attributes at run-
78 time. (Subroutine and "our" variables still get attributes applied at
79 compile-time.) See attributes for additional details. In particular,
80 however, this allows variable attributes to be useful for "tie"
81 interfaces, which was a deficiency of earlier releases. Note that the
82 new semantics doesn't work with the Attribute::Handlers module (as of
83 version 0.76).
84
85 Socket Extension Dynamic in VMS
86 The Socket extension is now dynamically loaded instead of being
87 statically built in. This may or may not be a problem with ancient
88 TCP/IP stacks of VMS: we do not know since we weren't able to test Perl
89 in such configurations.
90
91 IEEE-format Floating Point Default on OpenVMS Alpha
92 Perl now uses IEEE format (T_FLOAT) as the default internal floating
93 point format on OpenVMS Alpha, potentially breaking binary
94 compatibility with external libraries or existing data. G_FLOAT is
95 still available as a configuration option. The default on VAX
96 (D_FLOAT) has not changed.
97
98 New Unicode Semantics (no more "use utf8", almost)
99 Previously in Perl 5.6 to use Unicode one would say "use utf8" and then
100 the operations (like string concatenation) were Unicode-aware in that
101 lexical scope.
102
103 This was found to be an inconvenient interface, and in Perl 5.8 the
104 Unicode model has completely changed: now the "Unicodeness" is bound to
105 the data itself, and for most of the time "use utf8" is not needed at
106 all. The only remaining use of "use utf8" is when the Perl script
107 itself has been written in the UTF-8 encoding of Unicode. (UTF-8 has
108 not been made the default since there are many Perl scripts out there
109 that are using various national eight-bit character sets, which would
110 be illegal in UTF-8.)
111
112 See perluniintro for the explanation of the current model, and utf8 for
113 the current use of the utf8 pragma.
114
115 New Unicode Properties
116 Unicode scripts are now supported. Scripts are similar to (and superior
117 to) Unicode blocks. The difference between scripts and blocks is that
118 scripts are the glyphs used by a language or a group of languages,
119 while the blocks are more artificial groupings of (mostly) 256
120 characters based on the Unicode numbering.
121
122 In general, scripts are more inclusive, but not universally so. For
123 example, while the script "Latin" includes all the Latin characters and
124 their various diacritic-adorned versions, it does not include the
125 various punctuation or digits (since they are not solely "Latin").
126
127 A number of other properties are now supported, including "\p{L&}",
128 "\p{Any}" "\p{Assigned}", "\p{Unassigned}", "\p{Blank}" [561] and
129 "\p{SpacePerl}" [561] (along with their "\P{...}" versions, of course).
130 See perlunicode for details, and more additions.
131
132 The "In" or "Is" prefix to names used with the "\p{...}" and "\P{...}"
133 are now almost always optional. The only exception is that a "In"
134 prefix is required to signify a Unicode block when a block name
135 conflicts with a script name. For example, "\p{Tibetan}" refers to the
136 script, while "\p{InTibetan}" refers to the block. When there is no
137 name conflict, you can omit the "In" from the block name (e.g.
138 "\p{BraillePatterns}"), but to be safe, it's probably best to always
139 use the "In").
140
141 REF(...) Instead Of SCALAR(...)
142 A reference to a reference now stringifies as "REF(0x81485ec)" instead
143 of "SCALAR(0x81485ec)" in order to be more consistent with the return
144 value of ref().
145
146 pack/unpack D/F recycled
147 The undocumented pack/unpack template letters D/F have been recycled
148 for better use: now they stand for long double (if supported by the
149 platform) and NV (Perl internal floating point type). (They used to be
150 aliases for d/f, but you never knew that.)
151
152 glob() now returns filenames in alphabetical order
153 The list of filenames from glob() (or <...>) is now by default sorted
154 alphabetically to be csh-compliant (which is what happened before in
155 most Unix platforms). (bsd_glob() does still sort platform natively,
156 ASCII or EBCDIC, unless GLOB_ALPHASORT is specified.) [561]
157
158 Deprecations
159 • The semantics of bless(REF, REF) were unclear and until someone
160 proves it to make some sense, it is forbidden.
161
162 • The obsolete chat2 library that should never have been allowed to
163 escape the laboratory has been decommissioned.
164
165 • Using chdir("") or chdir(undef) instead of explicit chdir() is
166 doubtful. A failure (think chdir(some_function()) can lead into
167 unintended chdir() to the home directory, therefore this behaviour
168 is deprecated.
169
170 • The builtin dump() function has probably outlived most of its
171 usefulness. The core-dumping functionality will remain in future
172 available as an explicit call to CORE::dump(), but in future
173 releases the behaviour of an unqualified dump() call may change.
174
175 • The very dusty examples in the eg/ directory have been removed.
176 Suggestions for new shiny examples welcome but the main issue is
177 that the examples need to be documented, tested and (most
178 importantly) maintained.
179
180 • The (bogus) escape sequences \8 and \9 now give an optional warning
181 ("Unrecognized escape passed through"). There is no need to
182 \-escape any "\w" character.
183
184 • The *glob{FILEHANDLE} is deprecated, use *glob{IO} instead.
185
186 • The "package;" syntax ("package" without an argument) has been
187 deprecated. Its semantics were never that clear and its
188 implementation even less so. If you have used that feature to
189 disallow all but fully qualified variables, "use strict;" instead.
190
191 • The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are
192 still recognised but now cause fatal errors. The previous
193 behaviour of ignoring them by default and warning if requested was
194 unacceptable since it, in a way, falsely promised that the features
195 could be used.
196
197 • In future releases, non-PerlIO aware XS modules may become
198 completely unsupported. Since PerlIO is a drop-in replacement for
199 stdio at the source code level, this shouldn't be that drastic a
200 change.
201
202 • Previous versions of perl and some readings of some sections of
203 Camel III implied that the ":raw" "discipline" was the inverse of
204 ":crlf". Turning off "clrfness" is no longer enough to make a
205 stream truly binary. So the PerlIO ":raw" layer (or "discipline",
206 to use the Camel book's older terminology) is now formally defined
207 as being equivalent to binmode(FH) - which is in turn defined as
208 doing whatever is necessary to pass each byte as-is without any
209 translation. In particular binmode(FH) - and hence ":raw" - will
210 now turn off both CRLF and UTF-8 translation and remove other
211 layers (e.g. :encoding()) which would modify byte stream.
212
213 • The current user-visible implementation of pseudo-hashes (the weird
214 use of the first array element) is deprecated starting from Perl
215 5.8.0 and will be removed in Perl 5.10.0, and the feature will be
216 implemented differently. Not only is the current interface rather
217 ugly, but the current implementation slows down normal array and
218 hash use quite noticeably. The "fields" pragma interface will
219 remain available. The restricted hashes interface is expected to
220 be the replacement interface (see Hash::Util). If your existing
221 programs depends on the underlying implementation, consider using
222 Class::PseudoHash from CPAN.
223
224 • The syntaxes "@a->[...]" and "%h->{...}" have now been deprecated.
225
226 • After years of trying, suidperl is considered to be too complex to
227 ever be considered truly secure. The suidperl functionality is
228 likely to be removed in a future release.
229
230 • The 5.005 threads model (module "Thread") is deprecated and
231 expected to be removed in Perl 5.10. Multithreaded code should be
232 migrated to the new ithreads model (see threads, threads::shared
233 and perlthrtut).
234
235 • The long deprecated uppercase aliases for the string comparison
236 operators (EQ, NE, LT, LE, GE, GT) have now been removed.
237
238 • The tr///C and tr///U features have been removed and will not
239 return; the interface was a mistake. Sorry about that. For
240 similar functionality, see pack('U0', ...) and pack('C0', ...).
241 [561]
242
243 • Earlier Perls treated "sub foo (@bar)" as equivalent to "sub foo
244 (@)". The prototypes are now checked better at compile-time for
245 invalid syntax. An optional warning is generated ("Illegal
246 character in prototype...") but this may be upgraded to a fatal
247 error in a future release.
248
249 • The "exec LIST" and "system LIST" operations now produce warnings
250 on tainted data and in some future release they will produce fatal
251 errors.
252
253 • The existing behaviour when localising tied arrays and hashes is
254 wrong, and will be changed in a future release, so do not rely on
255 the existing behaviour. See "Localising Tied Arrays and Hashes Is
256 Broken".
257
259 Unicode Overhaul
260 Unicode in general should be now much more usable than in Perl 5.6.0
261 (or even in 5.6.1). Unicode can be used in hash keys, Unicode in
262 regular expressions should work now, Unicode in tr/// should work now,
263 Unicode in I/O should work now. See perluniintro for introduction and
264 perlunicode for details.
265
266 • The Unicode Character Database coming with Perl has been upgraded
267 to Unicode 3.2.0. For more information, see
268 http://www.unicode.org/ . [561+] (5.6.1 has UCD 3.0.1.)
269
270 • For developers interested in enhancing Perl's Unicode capabilities:
271 almost all the UCD files are included with the Perl distribution in
272 the lib/unicore subdirectory. The most notable omission, for space
273 considerations, is the Unihan database.
274
275 • The properties \p{Blank} and \p{SpacePerl} have been added. "Blank"
276 is like C isblank(), that is, it contains only "horizontal
277 whitespace" (the space character is, the newline isn't), and the
278 "SpacePerl" is the Unicode equivalent of "\s" (\p{Space} isn't,
279 since that includes the vertical tabulator character, whereas "\s"
280 doesn't.)
281
282 See "New Unicode Properties" earlier in this document for
283 additional information on changes with Unicode properties.
284
285 PerlIO is Now The Default
286 • IO is now by default done via PerlIO rather than system's "stdio".
287 PerlIO allows "layers" to be "pushed" onto a file handle to alter
288 the handle's behaviour. Layers can be specified at open time via
289 3-arg form of open:
290
291 open($fh,'>:crlf :utf8', $path) || ...
292
293 or on already opened handles via extended "binmode":
294
295 binmode($fh,':encoding(iso-8859-7)');
296
297 The built-in layers are: unix (low level read/write), stdio (as in
298 previous Perls), perlio (re-implementation of stdio buffering in a
299 portable manner), crlf (does CRLF <=> "\n" translation as on Win32,
300 but available on any platform). A mmap layer may be available if
301 platform supports it (mostly Unixes).
302
303 Layers to be applied by default may be specified via the 'open'
304 pragma.
305
306 See "Installation and Configuration Improvements" for the effects
307 of PerlIO on your architecture name.
308
309 • If your platform supports fork(), you can use the list form of
310 "open" for pipes. For example:
311
312 open KID_PS, "-|", "ps", "aux" or die $!;
313
314 forks the ps(1) command (without spawning a shell, as there are
315 more than three arguments to open()), and reads its standard output
316 via the "KID_PS" filehandle. See perlipc.
317
318 • File handles can be marked as accepting Perl's internal encoding of
319 Unicode (UTF-8 or UTF-EBCDIC depending on platform) by a pseudo
320 layer ":utf8" :
321
322 open($fh,">:utf8","Uni.txt");
323
324 Note for EBCDIC users: the pseudo layer ":utf8" is erroneously
325 named for you since it's not UTF-8 what you will be getting but
326 instead UTF-EBCDIC. See perlunicode, utf8, and
327 http://www.unicode.org/reports/tr16/ for more information. In
328 future releases this naming may change. See perluniintro for more
329 information about UTF-8.
330
331 • If your environment variables (LC_ALL, LC_CTYPE, LANG) look like
332 you want to use UTF-8 (any of the variables match "/utf-?8/i"),
333 your STDIN, STDOUT, STDERR handles and the default open layer (see
334 open) are marked as UTF-8. (This feature, like other new features
335 that combine Unicode and I/O, work only if you are using PerlIO,
336 but that's the default.)
337
338 Note that after this Perl really does assume that everything is
339 UTF-8: for example if some input handle is not, Perl will probably
340 very soon complain about the input data like this "Malformed UTF-8
341 ..." since any old eight-bit data is not legal UTF-8.
342
343 Note for code authors: if you want to enable your users to use
344 UTF-8 as their default encoding but in your code still have eight-
345 bit I/O streams (such as images or zip files), you need to
346 explicitly open() or binmode() with ":bytes" (see "open" in
347 perlfunc and "binmode" in perlfunc), or you can just use
348 binmode(FH) (nice for pre-5.8.0 backward compatibility).
349
350 • File handles can translate character encodings from/to Perl's
351 internal Unicode form on read/write via the ":encoding()" layer.
352
353 • File handles can be opened to "in memory" files held in Perl
354 scalars via:
355
356 open($fh,'>', \$variable) || ...
357
358 • Anonymous temporary files are available without need to 'use
359 FileHandle' or other module via
360
361 open($fh,"+>", undef) || ...
362
363 That is a literal undef, not an undefined value.
364
365 ithreads
366 The new interpreter threads ("ithreads" for short) implementation of
367 multithreading, by Arthur Bergman, replaces the old "5.005 threads"
368 implementation. In the ithreads model any data sharing between threads
369 must be explicit, as opposed to the model where data sharing was
370 implicit. See threads and threads::shared, and perlthrtut.
371
372 As a part of the ithreads implementation Perl will also use any
373 necessary and detectable reentrant libc interfaces.
374
375 Restricted Hashes
376 A restricted hash is restricted to a certain set of keys, no keys
377 outside the set can be added. Also individual keys can be restricted
378 so that the key cannot be deleted and the value cannot be changed. No
379 new syntax is involved: the Hash::Util module is the interface.
380
381 Safe Signals
382 Perl used to be fragile in that signals arriving at inopportune moments
383 could corrupt Perl's internal state. Now Perl postpones handling of
384 signals until it's safe (between opcodes).
385
386 This change may have surprising side effects because signals no longer
387 interrupt Perl instantly. Perl will now first finish whatever it was
388 doing, like finishing an internal operation (like sort()) or an
389 external operation (like an I/O operation), and only then look at any
390 arrived signals (and before starting the next operation). No more
391 corrupt internal state since the current operation is always finished
392 first, but the signal may take more time to get heard. Note that
393 breaking out from potentially blocking operations should still work,
394 though.
395
396 Understanding of Numbers
397 In general a lot of fixing has happened in the area of Perl's
398 understanding of numbers, both integer and floating point. Since in
399 many systems the standard number parsing functions like strtoul() and
400 atof() seem to have bugs, Perl tries to work around their deficiencies.
401 This results hopefully in more accurate numbers.
402
403 Perl now tries internally to use integer values in numeric conversions
404 and basic arithmetics (+ - * /) if the arguments are integers, and
405 tries also to keep the results stored internally as integers. This
406 change leads to often slightly faster and always less lossy
407 arithmetics. (Previously Perl always preferred floating point numbers
408 in its math.)
409
410 Arrays now always interpolate into double-quoted strings [561]
411 In double-quoted strings, arrays now interpolate, no matter what. The
412 behavior in earlier versions of perl 5 was that arrays would
413 interpolate into strings if the array had been mentioned before the
414 string was compiled, and otherwise Perl would raise a fatal compile-
415 time error. In versions 5.000 through 5.003, the error was
416
417 Literal @example now requires backslash
418
419 In versions 5.004_01 through 5.6.0, the error was
420
421 In string, @example now must be written as \@example
422
423 The idea here was to get people into the habit of writing
424 "fred\@example.com" when they wanted a literal "@" sign, just as they
425 have always written "Give me back my \$5" when they wanted a literal
426 "$" sign.
427
428 Starting with 5.6.1, when Perl now sees an "@" sign in a double-quoted
429 string, it always attempts to interpolate an array, regardless of
430 whether or not the array has been used or declared already. The fatal
431 error has been downgraded to an optional warning:
432
433 Possible unintended interpolation of @example in string
434
435 This warns you that "fred@example.com" is going to turn into "fred.com"
436 if you don't backslash the "@". See
437 http://perl.plover.com/at-error.html for more details about the history
438 here.
439
440 Miscellaneous Changes
441 • AUTOLOAD is now lvaluable, meaning that you can add the :lvalue
442 attribute to AUTOLOAD subroutines and you can assign to the
443 AUTOLOAD return value.
444
445 • The $Config{byteorder} (and corresponding BYTEORDER in config.h)
446 was previously wrong in platforms if sizeof(long) was 4, but
447 sizeof(IV) was 8. The byteorder was only sizeof(long) bytes long
448 (1234 or 4321), but now it is correctly sizeof(IV) bytes long,
449 (12345678 or 87654321). (This problem didn't affect Windows
450 platforms.)
451
452 Also, $Config{byteorder} is now computed dynamically--this is more
453 robust with "fat binaries" where an executable image contains
454 binaries for more than one binary platform, and when cross-
455 compiling.
456
457 • "perl -d:Module=arg,arg,arg" now works (previously one couldn't
458 pass in multiple arguments.)
459
460 • "do" followed by a bareword now ensures that this bareword isn't a
461 keyword (to avoid a bug where "do q(foo.pl)" tried to call a
462 subroutine called "q"). This means that for example instead of "do
463 format()" you must write "do &format()".
464
465 • The builtin dump() now gives an optional warning "dump() better
466 written as CORE::dump()", meaning that by default dump(...) is
467 resolved as the builtin dump() which dumps core and aborts, not as
468 (possibly) user-defined "sub dump". To call the latter, qualify
469 the call as &dump(...). (The whole dump() feature is to considered
470 deprecated, and possibly removed/changed in future releases.)
471
472 • chomp() and chop() are now overridable. Note, however, that their
473 prototype (as given by prototype("CORE::chomp") is undefined,
474 because it cannot be expressed and therefore one cannot really
475 write replacements to override these builtins.
476
477 • END blocks are now run even if you exit/die in a BEGIN block.
478 Internally, the execution of END blocks is now controlled by
479 PL_exit_flags & PERL_EXIT_DESTRUCT_END. This enables the new
480 behaviour for Perl embedders. This will default in 5.10. See
481 perlembed.
482
483 • Formats now support zero-padded decimal fields.
484
485 • Although "you shouldn't do that", it was possible to write code
486 that depends on Perl's hashed key order (Data::Dumper does this).
487 The new algorithm "One-at-a-Time" produces a different hashed key
488 order. More details are in "Performance Enhancements".
489
490 • lstat(FILEHANDLE) now gives a warning because the operation makes
491 no sense. In future releases this may become a fatal error.
492
493 • Spurious syntax errors generated in certain situations, when glob()
494 caused File::Glob to be loaded for the first time, have been fixed.
495 [561]
496
497 • Lvalue subroutines can now return "undef" in list context.
498 However, the lvalue subroutine feature still remains experimental.
499 [561+]
500
501 • A lost warning "Can't declare ... dereference in my" has been
502 restored (Perl had it earlier but it became lost in later
503 releases.)
504
505 • A new special regular expression variable has been introduced: $^N,
506 which contains the most-recently closed group (submatch).
507
508 • "no Module;" does not produce an error even if Module does not have
509 an unimport() method. This parallels the behavior of "use" vis-a-
510 vis "import". [561]
511
512 • The numerical comparison operators return "undef" if either operand
513 is a NaN. Previously the behaviour was unspecified.
514
515 • "our" can now have an experimental optional attribute "unique" that
516 affects how global variables are shared among multiple
517 interpreters, see "our" in perlfunc.
518
519 • The following builtin functions are now overridable: each(),
520 keys(), pop(), push(), shift(), splice(), unshift(). [561]
521
522 • "pack() / unpack()" can now group template letters with "()" and
523 then apply repetition/count modifiers on the groups.
524
525 • "pack() / unpack()" can now process the Perl internal numeric
526 types: IVs, UVs, NVs-- and also long doubles, if supported by the
527 platform. The template letters are "j", "J", "F", and "D".
528
529 • "pack('U0a*', ...)" can now be used to force a string to UTF-8.
530
531 • my __PACKAGE__ $obj now works. [561]
532
533 • POSIX::sleep() now returns the number of unslept seconds (as the
534 POSIX standard says), as opposed to CORE::sleep() which returns the
535 number of slept seconds.
536
537 • printf() and sprintf() now support parameter reordering using the
538 "%\d+\$" and "*\d+\$" syntaxes. For example
539
540 printf "%2\$s %1\$s\n", "foo", "bar";
541
542 will print "bar foo\n". This feature helps in writing
543 internationalised software, and in general when the order of the
544 parameters can vary.
545
546 • The (\&) prototype now works properly. [561]
547
548 • prototype(\[$@%&]) is now available to implicitly create references
549 (useful for example if you want to emulate the tie() interface).
550
551 • A new command-line option, "-t" is available. It is the little
552 brother of "-T": instead of dying on taint violations, lexical
553 warnings are given. This is only meant as a temporary debugging
554 aid while securing the code of old legacy applications. This is
555 not a substitute for -T.
556
557 • In other taint news, the "exec LIST" and "system LIST" have now
558 been considered too risky (think "exec @ARGV": it can start any
559 program with any arguments), and now the said forms cause a warning
560 under lexical warnings. You should carefully launder the arguments
561 to guarantee their validity. In future releases of Perl the forms
562 will become fatal errors so consider starting laundering now.
563
564 • Tied hash interfaces are now required to have the EXISTS and DELETE
565 methods (either own or inherited).
566
567 • If tr/// is just counting characters, it doesn't attempt to modify
568 its target.
569
570 • untie() will now call an UNTIE() hook if it exists. See perltie
571 for details. [561]
572
573 • "utime" in perlfunc now supports "utime undef, undef, @files" to
574 change the file timestamps to the current time.
575
576 • The rules for allowing underscores (underbars) in numeric constants
577 have been relaxed and simplified: now you can have an underscore
578 simply between digits.
579
580 • Rather than relying on C's argv[0] (which may not contain a full
581 pathname) where possible $^X is now set by asking the operating
582 system. (eg by reading /proc/self/exe on Linux, /proc/curproc/file
583 on FreeBSD)
584
585 • A new variable, "${^TAINT}", indicates whether taint mode is
586 enabled.
587
588 • You can now override the readline() builtin, and this overrides
589 also the <FILEHANDLE> angle bracket operator.
590
591 • The command-line options -s and -F are now recognized on the
592 shebang (#!) line.
593
594 • Use of the "/c" match modifier without an accompanying "/g"
595 modifier elicits a new warning: "Use of /c modifier is meaningless
596 without /g".
597
598 Use of "/c" in substitutions, even with "/g", elicits "Use of /c
599 modifier is meaningless in s///".
600
601 Use of "/g" with "split" elicits "Use of /g modifier is meaningless
602 in split".
603
604 • Support for the "CLONE" special subroutine had been added. With
605 ithreads, when a new thread is created, all Perl data is cloned,
606 however non-Perl data cannot be cloned automatically. In "CLONE"
607 you can do whatever you need to do, like for example handle the
608 cloning of non-Perl data, if necessary. "CLONE" will be executed
609 once for every package that has it defined or inherited. It will
610 be called in the context of the new thread, so all modifications
611 are made in the new area.
612
613 See perlmod
614
616 New Modules and Pragmata
617 • "Attribute::Handlers", originally by Damian Conway and now
618 maintained by Arthur Bergman, allows a class to define attribute
619 handlers.
620
621 package MyPack;
622 use Attribute::Handlers;
623 sub Wolf :ATTR(SCALAR) { print "howl!\n" }
624
625 # later, in some package using or inheriting from MyPack...
626
627 my MyPack $Fluffy : Wolf; # the attribute handler Wolf will be called
628
629 Both variables and routines can have attribute handlers. Handlers
630 can be specific to type (SCALAR, ARRAY, HASH, or CODE), or specific
631 to the exact compilation phase (BEGIN, CHECK, INIT, or END). See
632 Attribute::Handlers.
633
634 • "B::Concise", by Stephen McCamant, is a new compiler backend for
635 walking the Perl syntax tree, printing concise info about ops. The
636 output is highly customisable. See B::Concise. [561+]
637
638 • The new bignum, bigint, and bigrat pragmas, by Tels, implement
639 transparent bignum support (using the Math::BigInt, Math::BigFloat,
640 and Math::BigRat backends).
641
642 • "Class::ISA", by Sean Burke, is a module for reporting the search
643 path for a class's ISA tree. See Class::ISA.
644
645 • "Cwd" now has a split personality: if possible, an XS extension is
646 used, (this will hopefully be faster, more secure, and more robust)
647 but if not possible, the familiar Perl implementation is used.
648
649 • "Devel::PPPort", originally by Kenneth Albanowski and now
650 maintained by Paul Marquess, has been added. It is primarily used
651 by "h2xs" to enhance portability of XS modules between different
652 versions of Perl. See Devel::PPPort.
653
654 • "Digest", frontend module for calculating digests (checksums), from
655 Gisle Aas, has been added. See Digest.
656
657 • "Digest::MD5" for calculating MD5 digests (checksums) as defined in
658 RFC 1321, from Gisle Aas, has been added. See Digest::MD5.
659
660 use Digest::MD5 'md5_hex';
661
662 $digest = md5_hex("Thirsty Camel");
663
664 print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1
665
666 NOTE: the "MD5" backward compatibility module is deliberately not
667 included since its further use is discouraged.
668
669 See also PerlIO::via::QuotedPrint.
670
671 • "Encode", originally by Nick Ing-Simmons and now maintained by Dan
672 Kogai, provides a mechanism to translate between different
673 character encodings. Support for Unicode, ISO-8859-1, and ASCII
674 are compiled in to the module. Several other encodings (like the
675 rest of the ISO-8859, CP*/Win*, Mac, KOI8-R, three variants EBCDIC,
676 Chinese, Japanese, and Korean encodings) are included and can be
677 loaded at runtime. (For space considerations, the largest Chinese
678 encodings have been separated into their own CPAN module,
679 Encode::HanExtra, which Encode will use if available). See Encode.
680
681 Any encoding supported by Encode module is also available to the
682 ":encoding()" layer if PerlIO is used.
683
684 • "Hash::Util" is the interface to the new restricted hashes feature.
685 (Implemented by Jeffrey Friedl, Nick Ing-Simmons, and Michael
686 Schwern.) See Hash::Util.
687
688 • "I18N::Langinfo" can be used to query locale information. See
689 I18N::Langinfo.
690
691 • "I18N::LangTags", by Sean Burke, has functions for dealing with
692 RFC3066-style language tags. See I18N::LangTags.
693
694 • "ExtUtils::Constant", by Nicholas Clark, is a new tool for
695 extension writers for generating XS code to import C header
696 constants. See ExtUtils::Constant.
697
698 • "Filter::Simple", by Damian Conway, is an easy-to-use frontend to
699 Filter::Util::Call. See Filter::Simple.
700
701 # in MyFilter.pm:
702
703 package MyFilter;
704
705 use Filter::Simple sub {
706 while (my ($from, $to) = splice @_, 0, 2) {
707 s/$from/$to/g;
708 }
709 };
710
711 1;
712
713 # in user's code:
714
715 use MyFilter qr/red/ => 'green';
716
717 print "red\n"; # this code is filtered, will print "green\n"
718 print "bored\n"; # this code is filtered, will print "bogreen\n"
719
720 no MyFilter;
721
722 print "red\n"; # this code is not filtered, will print "red\n"
723
724 • "File::Temp", by Tim Jenness, allows one to create temporary files
725 and directories in an easy, portable, and secure way. See
726 File::Temp. [561+]
727
728 • "Filter::Util::Call", by Paul Marquess, provides you with the
729 framework to write source filters in Perl. For most uses, the
730 frontend Filter::Simple is to be preferred. See
731 Filter::Util::Call.
732
733 • "if", by Ilya Zakharevich, is a new pragma for conditional
734 inclusion of modules.
735
736 • libnet, by Graham Barr, is a collection of perl5 modules related to
737 network programming. See Net::FTP, Net::NNTP, Net::Ping (not part
738 of libnet, but related), Net::POP3, Net::SMTP, and Net::Time.
739
740 Perl installation leaves libnet unconfigured; use libnetcfg to
741 configure it.
742
743 • "List::Util", by Graham Barr, is a selection of general-utility
744 list subroutines, such as sum(), min(), first(), and shuffle().
745 See List::Util.
746
747 • "Locale::Constants", "Locale::Country", "Locale::Currency"
748 "Locale::Language", and Locale::Script, by Neil Bowers, have been
749 added. They provide the codes for various locale standards, such
750 as "fr" for France, "usd" for US Dollar, and "ja" for Japanese.
751
752 use Locale::Country;
753
754 $country = code2country('jp'); # $country gets 'Japan'
755 $code = country2code('Norway'); # $code gets 'no'
756
757 See Locale::Constants, Locale::Country, Locale::Currency, and
758 Locale::Language.
759
760 • "Locale::Maketext", by Sean Burke, is a localization framework.
761 See Locale::Maketext, and Locale::Maketext::TPJ13. The latter is
762 an article about software localization, originally published in The
763 Perl Journal #13, and republished here with kind permission.
764
765 • "Math::BigRat" for big rational numbers, to accompany Math::BigInt
766 and Math::BigFloat, from Tels. See Math::BigRat.
767
768 • "Memoize" can make your functions faster by trading space for time,
769 from Mark-Jason Dominus. See Memoize.
770
771 • "MIME::Base64", by Gisle Aas, allows you to encode data in base64,
772 as defined in RFC 2045 - MIME (Multipurpose Internet Mail
773 Extensions).
774
775 use MIME::Base64;
776
777 $encoded = encode_base64('Aladdin:open sesame');
778 $decoded = decode_base64($encoded);
779
780 print $encoded, "\n"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
781
782 See MIME::Base64.
783
784 • "MIME::QuotedPrint", by Gisle Aas, allows you to encode data in
785 quoted-printable encoding, as defined in RFC 2045 - MIME
786 (Multipurpose Internet Mail Extensions).
787
788 use MIME::QuotedPrint;
789
790 $encoded = encode_qp("\xDE\xAD\xBE\xEF");
791 $decoded = decode_qp($encoded);
792
793 print $encoded, "\n"; # "=DE=AD=BE=EF\n"
794 print $decoded, "\n"; # "\xDE\xAD\xBE\xEF\n"
795
796 See also PerlIO::via::QuotedPrint.
797
798 • "NEXT", by Damian Conway, is a pseudo-class for method redispatch.
799 See NEXT.
800
801 • "open" is a new pragma for setting the default I/O layers for
802 open().
803
804 • "PerlIO::scalar", by Nick Ing-Simmons, provides the implementation
805 of IO to "in memory" Perl scalars as discussed above. It also
806 serves as an example of a loadable PerlIO layer. Other future
807 possibilities include PerlIO::Array and PerlIO::Code. See
808 PerlIO::scalar.
809
810 • "PerlIO::via", by Nick Ing-Simmons, acts as a PerlIO layer and
811 wraps PerlIO layer functionality provided by a class (typically
812 implemented in Perl code).
813
814 • "PerlIO::via::QuotedPrint", by Elizabeth Mattijsen, is an example
815 of a "PerlIO::via" class:
816
817 use PerlIO::via::QuotedPrint;
818 open($fh,">:via(QuotedPrint)",$path);
819
820 This will automatically convert everything output to $fh to Quoted-
821 Printable. See PerlIO::via and PerlIO::via::QuotedPrint.
822
823 • "Pod::ParseLink", by Russ Allbery, has been added, to parse L<>
824 links in pods as described in the new perlpodspec.
825
826 • "Pod::Text::Overstrike", by Joe Smith, has been added. It converts
827 POD data to formatted overstrike text. See Pod::Text::Overstrike.
828 [561+]
829
830 • "Scalar::Util" is a selection of general-utility scalar
831 subroutines, such as blessed(), reftype(), and tainted(). See
832 Scalar::Util.
833
834 • "sort" is a new pragma for controlling the behaviour of sort().
835
836 • "Storable" gives persistence to Perl data structures by allowing
837 the storage and retrieval of Perl data to and from files in a fast
838 and compact binary format. Because in effect Storable does
839 serialisation of Perl data structures, with it you can also clone
840 deep, hierarchical datastructures. Storable was originally created
841 by Raphael Manfredi, but it is now maintained by Abhijit Menon-Sen.
842 Storable has been enhanced to understand the two new hash features,
843 Unicode keys and restricted hashes. See Storable.
844
845 • "Switch", by Damian Conway, has been added. Just by saying
846
847 use Switch;
848
849 you have "switch" and "case" available in Perl.
850
851 use Switch;
852
853 switch ($val) {
854
855 case 1 { print "number 1" }
856 case "a" { print "string a" }
857 case [1..10,42] { print "number in list" }
858 case (@array) { print "number in list" }
859 case /\w+/ { print "pattern" }
860 case qr/\w+/ { print "pattern" }
861 case (%hash) { print "entry in hash" }
862 case (\%hash) { print "entry in hash" }
863 case (\&sub) { print "arg to subroutine" }
864 else { print "previous case not true" }
865 }
866
867 See Switch.
868
869 • "Test::More", by Michael Schwern, is yet another framework for
870 writing test scripts, more extensive than Test::Simple. See
871 Test::More.
872
873 • "Test::Simple", by Michael Schwern, has basic utilities for writing
874 tests. See Test::Simple.
875
876 • "Text::Balanced", by Damian Conway, has been added, for extracting
877 delimited text sequences from strings.
878
879 use Text::Balanced 'extract_delimited';
880
881 ($a, $b) = extract_delimited("'never say never', he never said", "'", '');
882
883 $a will be "'never say never'", $b will be ', he never said'.
884
885 In addition to extract_delimited(), there are also
886 extract_bracketed(), extract_quotelike(), extract_codeblock(),
887 extract_variable(), extract_tagged(), extract_multiple(),
888 gen_delimited_pat(), and gen_extract_tagged(). With these, you can
889 implement rather advanced parsing algorithms. See Text::Balanced.
890
891 • "threads", by Arthur Bergman, is an interface to interpreter
892 threads. Interpreter threads (ithreads) is the new thread model
893 introduced in Perl 5.6 but only available as an internal interface
894 for extension writers (and for Win32 Perl for fork() emulation).
895 See threads, threads::shared, and perlthrtut.
896
897 • "threads::shared", by Arthur Bergman, allows data sharing for
898 interpreter threads. See threads::shared.
899
900 • "Tie::File", by Mark-Jason Dominus, associates a Perl array with
901 the lines of a file. See Tie::File.
902
903 • "Tie::Memoize", by Ilya Zakharevich, provides on-demand loaded
904 hashes. See Tie::Memoize.
905
906 • "Tie::RefHash::Nestable", by Edward Avis, allows storing hash
907 references (unlike the standard Tie::RefHash) The module is
908 contained within Tie::RefHash. See Tie::RefHash.
909
910 • "Time::HiRes", by Douglas E. Wegscheid, provides high resolution
911 timing (ualarm, usleep, and gettimeofday). See Time::HiRes.
912
913 • "Unicode::UCD" offers a querying interface to the Unicode Character
914 Database. See Unicode::UCD.
915
916 • "Unicode::Collate", by SADAHIRO Tomoyuki, implements the UCA
917 (Unicode Collation Algorithm) for sorting Unicode strings. See
918 Unicode::Collate.
919
920 • "Unicode::Normalize", by SADAHIRO Tomoyuki, implements the various
921 Unicode normalization forms. See Unicode::Normalize.
922
923 • "XS::APItest", by Tim Jenness, is a test extension that exercises
924 XS APIs. Currently only printf() is tested: how to output various
925 basic data types from XS.
926
927 • "XS::Typemap", by Tim Jenness, is a test extension that exercises
928 XS typemaps. Nothing gets installed, but the code is worth
929 studying for extension writers.
930
931 Updated And Improved Modules and Pragmata
932 • The following independently supported modules have been updated to
933 the newest versions from CPAN: CGI, CPAN, DB_File, File::Spec,
934 File::Temp, Getopt::Long, Math::BigFloat, Math::BigInt, the
935 podlators bundle (Pod::Man, Pod::Text), Pod::LaTeX [561+],
936 Pod::Parser, Storable, Term::ANSIColor, Test, Text-Tabs+Wrap.
937
938 • attributes::reftype() now works on tied arguments.
939
940 • AutoLoader can now be disabled with "no AutoLoader;".
941
942 • B::Deparse has been significantly enhanced by Robin Houston. It
943 can now deparse almost all of the standard test suite (so that the
944 tests still succeed). There is a make target "test.deparse" for
945 trying this out.
946
947 • Carp now has better interface documentation, and the @CARP_NOT
948 interface has been added to get optional control over where errors
949 are reported independently of @ISA, by Ben Tilly.
950
951 • Class::Struct can now define the classes in compile time.
952
953 • Class::Struct now assigns the array/hash element if the accessor is
954 called with an array/hash element as the sole argument.
955
956 • The return value of Cwd::fastcwd() is now tainted.
957
958 • Data::Dumper now has an option to sort hashes.
959
960 • Data::Dumper now has an option to dump code references using
961 B::Deparse.
962
963 • DB_File now supports newer Berkeley DB versions, among other
964 improvements.
965
966 • Devel::Peek now has an interface for the Perl memory statistics
967 (this works only if you are using perl's malloc, and if you have
968 compiled with debugging).
969
970 • The English module can now be used without the infamous performance
971 hit by saying
972
973 use English '-no_match_vars';
974
975 (Assuming, of course, that you don't need the troublesome variables
976 "$`", $&, or "$'".) Also, introduced @LAST_MATCH_START and
977 @LAST_MATCH_END English aliases for "@-" and "@+".
978
979 • ExtUtils::MakeMaker has been significantly cleaned up and fixed.
980 The enhanced version has also been backported to earlier releases
981 of Perl and submitted to CPAN so that the earlier releases can
982 enjoy the fixes.
983
984 • The arguments of WriteMakefile() in Makefile.PL are now checked for
985 sanity much more carefully than before. This may cause new
986 warnings when modules are being installed. See ExtUtils::MakeMaker
987 for more details.
988
989 • ExtUtils::MakeMaker now uses File::Spec internally, which hopefully
990 leads to better portability.
991
992 • Fcntl, Socket, and Sys::Syslog have been rewritten by Nicholas
993 Clark to use the new-style constant dispatch section (see
994 ExtUtils::Constant). This means that they will be more robust and
995 hopefully faster.
996
997 • File::Find now chdir()s correctly when chasing symbolic links.
998 [561]
999
1000 • File::Find now has pre- and post-processing callbacks. It also
1001 correctly changes directories when chasing symbolic links.
1002 Callbacks (naughtily) exiting with "next;" instead of "return;" now
1003 work.
1004
1005 • File::Find is now (again) reentrant. It also has been made more
1006 portable.
1007
1008 • The warnings issued by File::Find now belong to their own category.
1009 You can enable/disable them with "use/no warnings 'File::Find';".
1010
1011 • File::Glob::glob() has been renamed to File::Glob::bsd_glob()
1012 because the name clashes with the builtin glob(). The older name
1013 is still available for compatibility, but is deprecated. [561]
1014
1015 • File::Glob now supports "GLOB_LIMIT" constant to limit the size of
1016 the returned list of filenames.
1017
1018 • IPC::Open3 now allows the use of numeric file descriptors.
1019
1020 • IO::Socket now has an atmark() method, which returns true if the
1021 socket is positioned at the out-of-band mark. The method is also
1022 exportable as a sockatmark() function.
1023
1024 • IO::Socket::INET failed to open the specified port if the service
1025 name was not known. It now correctly uses the supplied port number
1026 as is. [561]
1027
1028 • IO::Socket::INET has support for the ReusePort option (if your
1029 platform supports it). The Reuse option now has an alias,
1030 ReuseAddr. For clarity, you may want to prefer ReuseAddr.
1031
1032 • IO::Socket::INET now supports a value of zero for "LocalPort"
1033 (usually meaning that the operating system will make one up.)
1034
1035 • 'use lib' now works identically to @INC. Removing directories with
1036 'no lib' now works.
1037
1038 • Math::BigFloat and Math::BigInt have undergone a full rewrite by
1039 Tels. They are now magnitudes faster, and they support various
1040 bignum libraries such as GMP and PARI as their backends.
1041
1042 • Math::Complex handles inf, NaN etc., better.
1043
1044 • Net::Ping has been considerably enhanced by Rob Brown: multihoming
1045 is now supported, Win32 functionality is better, there is now time
1046 measuring functionality (optionally high-resolution using
1047 Time::HiRes), and there is now "external" protocol which uses
1048 Net::Ping::External module which runs your external ping utility
1049 and parses the output. A version of Net::Ping::External is
1050 available in CPAN.
1051
1052 Note that some of the Net::Ping tests are disabled when running
1053 under the Perl distribution since one cannot assume one or more of
1054 the following: enabled echo port at localhost, full Internet
1055 connectivity, or sympathetic firewalls. You can set the
1056 environment variable PERL_TEST_Net_Ping to "1" (one) before running
1057 the Perl test suite to enable all the Net::Ping tests.
1058
1059 • POSIX::sigaction() is now much more flexible and robust. You can
1060 now install coderef handlers, 'DEFAULT', and 'IGNORE' handlers,
1061 installing new handlers was not atomic.
1062
1063 • In Safe, %INC is now localised in a Safe compartment so that
1064 use/require work.
1065
1066 • In SDBM_File on DOSish platforms, some keys went missing because of
1067 lack of support for files with "holes". A workaround for the
1068 problem has been added.
1069
1070 • In Search::Dict one can now have a pre-processing hook for the
1071 lines being searched.
1072
1073 • The Shell module now has an OO interface.
1074
1075 • In Sys::Syslog there is now a failover mechanism that will go
1076 through alternative connection mechanisms until the message is
1077 successfully logged.
1078
1079 • The Test module has been significantly enhanced.
1080
1081 • Time::Local::timelocal() does not handle fractional seconds
1082 anymore. The rationale is that neither does localtime(), and
1083 timelocal() and localtime() are supposed to be inverses of each
1084 other.
1085
1086 • The vars pragma now supports declaring fully qualified variables.
1087 (Something that our() does not and will not support.)
1088
1089 • The "utf8::" name space (as in the pragma) provides various Perl-
1090 callable functions to provide low level access to Perl's internal
1091 Unicode representation. At the moment only length() has been
1092 implemented.
1093
1095 • Emacs perl mode (emacs/cperl-mode.el) has been updated to version
1096 4.31.
1097
1098 • emacs/e2ctags.pl is now much faster.
1099
1100 • "enc2xs" is a tool for people adding their own encodings to the
1101 Encode module.
1102
1103 • "h2ph" now supports C trigraphs.
1104
1105 • "h2xs" now produces a template README.
1106
1107 • "h2xs" now uses "Devel::PPPort" for better portability between
1108 different versions of Perl.
1109
1110 • "h2xs" uses the new ExtUtils::Constant module which will affect
1111 newly created extensions that define constants. Since the new code
1112 is more correct (if you have two constants where the first one is a
1113 prefix of the second one, the first constant never got defined),
1114 less lossy (it uses integers for integer constant, as opposed to
1115 the old code that used floating point numbers even for integer
1116 constants), and slightly faster, you might want to consider
1117 regenerating your extension code (the new scheme makes regenerating
1118 easy). h2xs now also supports C trigraphs.
1119
1120 • "libnetcfg" has been added to configure libnet.
1121
1122 • "perlbug" is now much more robust. It also sends the bug report to
1123 perl.org, not perl.com.
1124
1125 • "perlcc" has been rewritten and its user interface (that is,
1126 command line) is much more like that of the Unix C compiler, cc.
1127 (The perlbc tools has been removed. Use "perlcc -B" instead.)
1128 Note that perlcc is still considered very experimental and
1129 unsupported. [561]
1130
1131 • "perlivp" is a new Installation Verification Procedure utility for
1132 running any time after installing Perl.
1133
1134 • "piconv" is an implementation of the character conversion utility
1135 "iconv", demonstrating the new Encode module.
1136
1137 • "pod2html" now allows specifying a cache directory.
1138
1139 • "pod2html" now produces XHTML 1.0.
1140
1141 • "pod2html" now understands POD written using different line endings
1142 (PC-like CRLF versus Unix-like LF versus MacClassic-like CR).
1143
1144 • "s2p" has been completely rewritten in Perl. (It is in fact a full
1145 implementation of sed in Perl: you can use the sed functionality by
1146 using the "psed" utility.)
1147
1148 • "xsubpp" now understands POD documentation embedded in the *.xs
1149 files. [561]
1150
1151 • "xsubpp" now supports the OUT keyword.
1152
1154 • perl56delta details the changes between the 5.005 release and the
1155 5.6.0 release.
1156
1157 • perlclib documents the internal replacements for standard C library
1158 functions. (Interesting only for extension writers and Perl core
1159 hackers.) [561+]
1160
1161 • perldebtut is a Perl debugging tutorial. [561+]
1162
1163 • perlebcdic contains considerations for running Perl on EBCDIC
1164 platforms. [561+]
1165
1166 • perlintro is a gentle introduction to Perl.
1167
1168 • perliol documents the internals of PerlIO with layers.
1169
1170 • perlmodstyle is a style guide for writing modules.
1171
1172 • perlnewmod tells about writing and submitting a new module. [561+]
1173
1174 • perlpacktut is a pack() tutorial.
1175
1176 • perlpod has been rewritten to be clearer and to record the best
1177 practices gathered over the years.
1178
1179 • perlpodspec is a more formal specification of the pod format,
1180 mainly of interest for writers of pod applications, not to people
1181 writing in pod.
1182
1183 • perlretut is a regular expression tutorial. [561+]
1184
1185 • perlrequick is a regular expressions quick-start guide. Yes, much
1186 quicker than perlretut. [561]
1187
1188 • perltodo has been updated.
1189
1190 • perltootc has been renamed as perltooc (to not to conflict with
1191 perltoot in filesystems restricted to "8.3" names).
1192
1193 • perluniintro is an introduction to using Unicode in Perl.
1194 (perlunicode is more of a detailed reference and background
1195 information)
1196
1197 • perlutil explains the command line utilities packaged with the Perl
1198 distribution. [561+]
1199
1200 The following platform-specific documents are available before the
1201 installation as README.platform, and after the installation as
1202 perlplatform:
1203
1204 perlaix perlamiga perlapollo perlbeos perlbs2000
1205 perlce perlcygwin perldgux perldos perlepoc perlfreebsd perlhpux
1206 perlhurd perlirix perlmachten perlmacos perlmint perlmpeix
1207 perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris
1208 perltru64 perluts perlvmesa perlvms perlvos perlwin32
1209
1210 These documents usually detail one or more of the following subjects:
1211 configuring, building, testing, installing, and sometimes also using
1212 Perl on the said platform.
1213
1214 Eastern Asian Perl users are now welcomed in their own languages:
1215 README.jp (Japanese), README.ko (Korean), README.cn (simplified
1216 Chinese) and README.tw (traditional Chinese), which are written in
1217 normal pod but encoded in EUC-JP, EUC-KR, EUC-CN and Big5. These will
1218 get installed as
1219
1220 perljp perlko perlcn perltw
1221
1222 • The documentation for the POSIX-BC platform is called "BS2000", to
1223 avoid confusion with the Perl POSIX module.
1224
1225 • The documentation for the WinCE platform is called perlce
1226 (README.ce in the source code kit), to avoid confusion with the
1227 perlwin32 documentation on 8.3-restricted filesystems.
1228
1230 • map() could get pathologically slow when the result list it
1231 generates is larger than the source list. The performance has been
1232 improved for common scenarios. [561]
1233
1234 • sort() is also fully reentrant, in the sense that the sort function
1235 can itself call sort(). This did not work reliably in previous
1236 releases. [561]
1237
1238 • sort() has been changed to use primarily mergesort internally as
1239 opposed to the earlier quicksort. For very small lists this may
1240 result in slightly slower sorting times, but in general the speedup
1241 should be at least 20%. Additional bonuses are that the worst case
1242 behaviour of sort() is now better (in computer science terms it now
1243 runs in time O(N log N), as opposed to quicksort's Theta(N**2)
1244 worst-case run time behaviour), and that sort() is now stable
1245 (meaning that elements with identical keys will stay ordered as
1246 they were before the sort). See the "sort" pragma for information.
1247
1248 The story in more detail: suppose you want to serve yourself a
1249 little slice of Pi.
1250
1251 @digits = ( 3,1,4,1,5,9 );
1252
1253 A numerical sort of the digits will yield (1,1,3,4,5,9), as
1254 expected. Which 1 comes first is hard to know, since one 1 looks
1255 pretty much like any other. You can regard this as totally
1256 trivial, or somewhat profound. However, if you just want to sort
1257 the even digits ahead of the odd ones, then what will
1258
1259 sort { ($a % 2) <=> ($b % 2) } @digits;
1260
1261 yield? The only even digit, 4, will come first. But how about the
1262 odd numbers, which all compare equal? With the quicksort algorithm
1263 used to implement Perl 5.6 and earlier, the order of ties is left
1264 up to the sort. So, as you add more and more digits of Pi, the
1265 order in which the sorted even and odd digits appear will change.
1266 and, for sufficiently large slices of Pi, the quicksort algorithm
1267 in Perl 5.8 won't return the same results even if reinvoked with
1268 the same input. The justification for this rests with quicksort's
1269 worst case behavior. If you run
1270
1271 sort { $a <=> $b } ( 1 .. $N , 1 .. $N );
1272
1273 (something you might approximate if you wanted to merge two sorted
1274 arrays using sort), doubling $N doesn't just double the quicksort
1275 time, it quadruples it. Quicksort has a worst case run time that
1276 can grow like N**2, so-called quadratic behaviour, and it can
1277 happen on patterns that may well arise in normal use. You won't
1278 notice this for small arrays, but you will notice it with larger
1279 arrays, and you may not live long enough for the sort to complete
1280 on arrays of a million elements. So the 5.8 quicksort scrambles
1281 large arrays before sorting them, as a statistical defence against
1282 quadratic behaviour. But that means if you sort the same large
1283 array twice, ties may be broken in different ways.
1284
1285 Because of the unpredictability of tie-breaking order, and the
1286 quadratic worst-case behaviour, quicksort was almost replaced
1287 completely with a stable mergesort. Stable means that ties are
1288 broken to preserve the original order of appearance in the input
1289 array. So
1290
1291 sort { ($a % 2) <=> ($b % 2) } (3,1,4,1,5,9);
1292
1293 will yield (4,3,1,1,5,9), guaranteed. The even and odd numbers
1294 appear in the output in the same order they appeared in the input.
1295 Mergesort has worst case O(N log N) behaviour, the best value
1296 attainable. And, ironically, this mergesort does particularly well
1297 where quicksort goes quadratic: mergesort sorts (1..$N, 1..$N) in
1298 O(N) time. But quicksort was rescued at the last moment because it
1299 is faster than mergesort on certain inputs and platforms. For
1300 example, if you really don't care about the order of even and odd
1301 digits, quicksort will run in O(N) time; it's very good at sorting
1302 many repetitions of a small number of distinct elements. The
1303 quicksort divide and conquer strategy works well on platforms with
1304 relatively small, very fast, caches. Eventually, the problem gets
1305 whittled down to one that fits in the cache, from which point it
1306 benefits from the increased memory speed.
1307
1308 Quicksort was rescued by implementing a sort pragma to control
1309 aspects of the sort. The stable subpragma forces stable behaviour,
1310 regardless of algorithm. The _quicksort and _mergesort subpragmas
1311 are heavy-handed ways to select the underlying implementation. The
1312 leading "_" is a reminder that these subpragmas may not survive
1313 beyond 5.8. More appropriate mechanisms for selecting the
1314 implementation exist, but they wouldn't have arrived in time to
1315 save quicksort.
1316
1317 • Hashes now use Bob Jenkins "One-at-a-Time" hashing key algorithm (
1318 http://burtleburtle.net/bob/hash/doobs.html ). This algorithm is
1319 reasonably fast while producing a much better spread of values than
1320 the old hashing algorithm (originally by Chris Torek, later tweaked
1321 by Ilya Zakharevich). Hash values output from the algorithm on a
1322 hash of all 3-char printable ASCII keys comes much closer to
1323 passing the DIEHARD random number generation tests. According to
1324 perlbench, this change has not affected the overall speed of Perl.
1325
1326 • unshift() should now be noticeably faster.
1327
1329 Generic Improvements
1330 • INSTALL now explains how you can configure Perl to use 64-bit
1331 integers even on non-64-bit platforms.
1332
1333 • Policy.sh policy change: if you are reusing a Policy.sh file (see
1334 INSTALL) and you use Configure -Dprefix=/foo/bar and in the old
1335 Policy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of
1336 them will now be changed to the new prefix, /foo/bar. (Previously
1337 only $prefix changed.) If you do not like this new behaviour,
1338 specify prefix, siteprefix, and vendorprefix explicitly.
1339
1340 • A new optional location for Perl libraries, otherlibdirs, is
1341 available. It can be used for example for vendor add-ons without
1342 disturbing Perl's own library directories.
1343
1344 • In many platforms, the vendor-supplied 'cc' is too stripped-down to
1345 build Perl (basically, 'cc' doesn't do ANSI C). If this seems to
1346 be the case and 'cc' does not seem to be the GNU C compiler 'gcc',
1347 an automatic attempt is made to find and use 'gcc' instead.
1348
1349 • gcc needs to closely track the operating system release to avoid
1350 build problems. If Configure finds that gcc was built for a
1351 different operating system release than is running, it now gives a
1352 clearly visible warning that there may be trouble ahead.
1353
1354 • Since Perl 5.8 is not binary-compatible with previous releases of
1355 Perl, Configure no longer suggests including the 5.005 modules in
1356 @INC.
1357
1358 • Configure "-S" can now run non-interactively. [561]
1359
1360 • Configure support for pdp11-style memory models has been removed
1361 due to obsolescence. [561]
1362
1363 • configure.gnu now works with options with whitespace in them.
1364
1365 • installperl now outputs everything to STDERR.
1366
1367 • Because PerlIO is now the default on most platforms, "-perlio"
1368 doesn't get appended to the $Config{archname} (also known as $^O)
1369 anymore. Instead, if you explicitly choose not to use perlio
1370 (Configure command line option -Uuseperlio), you will get "-stdio"
1371 appended.
1372
1373 • Another change related to the architecture name is that "-64all"
1374 (-Duse64bitall, or "maximally 64-bit") is appended only if your
1375 pointers are 64 bits wide. (To be exact, the use64bitall is
1376 ignored.)
1377
1378 • In AFS installations, one can configure the root of the AFS to be
1379 somewhere else than the default /afs by using the Configure
1380 parameter "-Dafsroot=/some/where/else".
1381
1382 • APPLLIB_EXP, a lesser-known configuration-time definition, has been
1383 documented. It can be used to prepend site-specific directories to
1384 Perl's default search path (@INC); see INSTALL for information.
1385
1386 • The version of Berkeley DB used when the Perl (and, presumably, the
1387 DB_File extension) was built is now available as
1388 @Config{qw(db_version_major db_version_minor db_version_patch)}
1389 from Perl and as "DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG
1390 DB_VERSION_PATCH_CFG" from C.
1391
1392 • Building Berkeley DB3 for compatibility modes for DB, NDBM, and
1393 ODBM has been documented in INSTALL.
1394
1395 • If you have CPAN access (either network or a local copy such as a
1396 CD-ROM) you can during specify extra modules to Configure to build
1397 and install with Perl using the -Dextras=... option. See INSTALL
1398 for more details.
1399
1400 • In addition to config.over, a new override file, config.arch, is
1401 available. This file is supposed to be used by hints file writers
1402 for architecture-wide changes (as opposed to config.over which is
1403 for site-wide changes).
1404
1405 • If your file system supports symbolic links, you can build Perl
1406 outside of the source directory by
1407
1408 mkdir perl/build/directory
1409 cd perl/build/directory
1410 sh /path/to/perl/source/Configure -Dmksymlinks ...
1411
1412 This will create in perl/build/directory a tree of symbolic links
1413 pointing to files in /path/to/perl/source. The original files are
1414 left unaffected. After Configure has finished, you can just say
1415
1416 make all test
1417
1418 and Perl will be built and tested, all in perl/build/directory.
1419 [561]
1420
1421 • For Perl developers, several new make targets for profiling and
1422 debugging have been added; see perlhack.
1423
1424 • Use of the gprof tool to profile Perl has been documented
1425 in perlhack. There is a make target called "perl.gprof"
1426 for generating a gprofiled Perl executable.
1427
1428 • If you have GCC 3, there is a make target called
1429 "perl.gcov" for creating a gcoved Perl executable for
1430 coverage analysis. See perlhack.
1431
1432 • If you are on IRIX or Tru64 platforms, new
1433 profiling/debugging options have been added; see perlhack
1434 for more information about pixie and Third Degree.
1435
1436 • Guidelines of how to construct minimal Perl installations have been
1437 added to INSTALL.
1438
1439 • The Thread extension is now not built at all under ithreads
1440 ("Configure -Duseithreads") because it wouldn't work anyway (the
1441 Thread extension requires being Configured with
1442 "-Duse5005threads").
1443
1444 Note that the 5.005 threads are unsupported and deprecated: if you
1445 have code written for the old threads you should migrate it to the
1446 new ithreads model.
1447
1448 • The Gconvert macro ($Config{d_Gconvert}) used by perl for
1449 stringifying floating-point numbers is now more picky about using
1450 sprintf %.*g rules for the conversion. Some platforms that used to
1451 use gcvt may now resort to the slower sprintf.
1452
1453 • The obsolete method of making a special (e.g., debugging) flavor of
1454 perl by saying
1455
1456 make LIBPERL=libperld.a
1457
1458 has been removed. Use -DDEBUGGING instead.
1459
1460 New Or Improved Platforms
1461 For the list of platforms known to support Perl, see "Supported
1462 Platforms" in perlport.
1463
1464 • AIX dynamic loading should be now better supported.
1465
1466 • AIX should now work better with gcc, threads, and 64-bitness. Also
1467 the long doubles support in AIX should be better now. See perlaix.
1468
1469 • AtheOS ( http://www.atheos.cx/ ) is a new platform.
1470
1471 • BeOS has been reclaimed.
1472
1473 • The DG/UX platform now supports 5.005-style threads. See perldgux.
1474
1475 • The DYNIX/ptx platform (also known as dynixptx) is supported at or
1476 near osvers 4.5.2.
1477
1478 • EBCDIC platforms (z/OS (also known as OS/390), POSIX-BC, and
1479 VM/ESA) have been regained. Many test suite tests still fail and
1480 the co-existence of Unicode and EBCDIC isn't quite settled, but the
1481 situation is much better than with Perl 5.6. See perlos390,
1482 perlbs2000 (for POSIX-BC), and perlvmesa for more information.
1483 (Note: support for VM/ESA was removed in Perl v5.18.0. The relevant
1484 information was in README.vmesa)
1485
1486 • Building perl with -Duseithreads or -Duse5005threads now works
1487 under HP-UX 10.20 (previously it only worked under 10.30 or later).
1488 You will need a thread library package installed. See README.hpux.
1489 [561]
1490
1491 • Mac OS Classic is now supported in the mainstream source package
1492 (MacPerl has of course been available since perl 5.004 but now the
1493 source code bases of standard Perl and MacPerl have been
1494 synchronised) [561]
1495
1496 • Mac OS X (or Darwin) should now be able to build Perl even on HFS+
1497 filesystems. (The case-insensitivity used to confuse the Perl
1498 build process.)
1499
1500 • NCR MP-RAS is now supported. [561]
1501
1502 • All the NetBSD specific patches (except for the installation
1503 specific ones) have been merged back to the main distribution.
1504
1505 • NetWare from Novell is now supported. See perlnetware.
1506
1507 • NonStop-UX is now supported. [561]
1508
1509 • NEC SUPER-UX is now supported.
1510
1511 • All the OpenBSD specific patches (except for the installation
1512 specific ones) have been merged back to the main distribution.
1513
1514 • Perl has been tested with the GNU pth userlevel thread package (
1515 http://www.gnu.org/software/pth/pth.html ). All thread tests of
1516 Perl now work, but not without adding some yield()s to the tests,
1517 so while pth (and other userlevel thread implementations) can be
1518 considered to be "working" with Perl ithreads, keep in mind the
1519 possible non-preemptability of the underlying thread
1520 implementation.
1521
1522 • Stratus VOS is now supported using Perl's native build method
1523 (Configure). This is the recommended method to build Perl on VOS.
1524 The older methods, which build miniperl, are still available. See
1525 perlvos. [561+]
1526
1527 • The Amdahl UTS Unix mainframe platform is now supported. [561]
1528
1529 • WinCE is now supported. See perlce.
1530
1531 • z/OS (formerly known as OS/390, formerly known as MVS OE) now has
1532 support for dynamic loading. This is not selected by default,
1533 however, you must specify -Dusedl in the arguments of Configure.
1534 [561]
1535
1537 Numerous memory leaks and uninitialized memory accesses have been
1538 hunted down. Most importantly, anonymous subs used to leak quite a
1539 bit. [561]
1540
1541 • The autouse pragma didn't work for Multi::Part::Function::Names.
1542
1543 • caller() could cause core dumps in certain situations. Carp was
1544 sometimes affected by this problem. In particular, caller() now
1545 returns a subroutine name of "(unknown)" for subroutines that have
1546 been removed from the symbol table.
1547
1548 • chop(@list) in list context returned the characters chopped in
1549 reverse order. This has been reversed to be in the right order.
1550 [561]
1551
1552 • Configure no longer includes the DBM libraries (dbm, gdbm, db,
1553 ndbm) when building the Perl binary. The only exception to this is
1554 SunOS 4.x, which needs them. [561]
1555
1556 • The behaviour of non-decimal but numeric string constants such as
1557 "0x23" was platform-dependent: in some platforms that was seen as
1558 35, in some as 0, in some as a floating point number (don't ask).
1559 This was caused by Perl's using the operating system libraries in a
1560 situation where the result of the string to number conversion is
1561 undefined: now Perl consistently handles such strings as zero in
1562 numeric contexts.
1563
1564 • Several debugger fixes: exit code now reflects the script exit
1565 code, condition "0" now treated correctly, the "d" command now
1566 checks line number, $. no longer gets corrupted, and all debugger
1567 output now goes correctly to the socket if RemotePort is set. [561]
1568
1569 • The debugger (perl5db.pl) has been modified to present a more
1570 consistent commands interface, via (CommandSet=580). perl5db.t was
1571 also added to test the changes, and as a placeholder for further
1572 tests.
1573
1574 See perldebug.
1575
1576 • The debugger has a new "dumpDepth" option to control the maximum
1577 depth to which nested structures are dumped. The "x" command has
1578 been extended so that "x N EXPR" dumps out the value of EXPR to a
1579 depth of at most N levels.
1580
1581 • The debugger can now show lexical variables if you have the CPAN
1582 module PadWalker installed.
1583
1584 • The order of DESTROYs has been made more predictable.
1585
1586 • Perl 5.6.0 could emit spurious warnings about redefinition of
1587 dl_error() when statically building extensions into perl. This has
1588 been corrected. [561]
1589
1590 • dprofpp -R didn't work.
1591
1592 • *foo{FORMAT} now works.
1593
1594 • Infinity is now recognized as a number.
1595
1596 • UNIVERSAL::isa no longer caches methods incorrectly. (This broke
1597 the Tk extension with 5.6.0.) [561]
1598
1599 • Lexicals I: lexicals outside an eval "" weren't resolved correctly
1600 inside a subroutine definition inside the eval "" if they were not
1601 already referenced in the top level of the eval""ed code.
1602
1603 • Lexicals II: lexicals leaked at file scope into subroutines that
1604 were declared before the lexicals.
1605
1606 • Lexical warnings now propagating correctly between scopes and into
1607 "eval "..."".
1608
1609 • "use warnings qw(FATAL all)" did not work as intended. This has
1610 been corrected. [561]
1611
1612 • warnings::enabled() now reports the state of $^W correctly if the
1613 caller isn't using lexical warnings. [561]
1614
1615 • Line renumbering with eval and "#line" now works. [561]
1616
1617 • Fixed numerous memory leaks, especially in eval "".
1618
1619 • Localised tied variables no longer leak memory
1620
1621 use Tie::Hash;
1622 tie my %tied_hash => 'Tie::StdHash';
1623
1624 ...
1625
1626 # Used to leak memory every time local() was called;
1627 # in a loop, this added up.
1628 local($tied_hash{Foo}) = 1;
1629
1630 • Localised hash elements (and %ENV) are correctly unlocalised to not
1631 exist, if they didn't before they were localised.
1632
1633 use Tie::Hash;
1634 tie my %tied_hash => 'Tie::StdHash';
1635
1636 ...
1637
1638 # Nothing has set the FOO element so far
1639
1640 { local $tied_hash{FOO} = 'Bar' }
1641
1642 # This used to print, but not now.
1643 print "exists!\n" if exists $tied_hash{FOO};
1644
1645 As a side effect of this fix, tied hash interfaces must define the
1646 EXISTS and DELETE methods.
1647
1648 • mkdir() now ignores trailing slashes in the directory name, as
1649 mandated by POSIX.
1650
1651 • Some versions of glibc have a broken modfl(). This affects builds
1652 with "-Duselongdouble". This version of Perl detects this
1653 brokenness and has a workaround for it. The glibc release 2.2.2 is
1654 known to have fixed the modfl() bug.
1655
1656 • Modulus of unsigned numbers now works (4063328477 % 65535 used to
1657 return 27406, instead of 27047). [561]
1658
1659 • Some "not a number" warnings introduced in 5.6.0 eliminated to be
1660 more compatible with 5.005. Infinity is now recognised as a
1661 number. [561]
1662
1663 • Numeric conversions did not recognize changes in the string value
1664 properly in certain circumstances. [561]
1665
1666 • Attributes (such as :shared) didn't work with our().
1667
1668 • our() variables will not cause bogus "Variable will not stay
1669 shared" warnings. [561]
1670
1671 • "our" variables of the same name declared in two sibling blocks
1672 resulted in bogus warnings about "redeclaration" of the variables.
1673 The problem has been corrected. [561]
1674
1675 • pack "Z" now correctly terminates the string with "\0".
1676
1677 • Fix password routines which in some shadow password platforms (e.g.
1678 HP-UX) caused getpwent() to return every other entry.
1679
1680 • The PERL5OPT environment variable (for passing command line
1681 arguments to Perl) didn't work for more than a single group of
1682 options. [561]
1683
1684 • PERL5OPT with embedded spaces didn't work.
1685
1686 • printf() no longer resets the numeric locale to "C".
1687
1688 • qw(a\\b) now parses correctly as 'a\\b': that is, as three
1689 characters, not four. [561]
1690
1691 • pos() did not return the correct value within s///ge in earlier
1692 versions. This is now handled correctly. [561]
1693
1694 • Printing quads (64-bit integers) with printf/sprintf now works
1695 without the q L ll prefixes (assuming you are on a quad-capable
1696 platform).
1697
1698 • Regular expressions on references and overloaded scalars now work.
1699 [561+]
1700
1701 • Right-hand side magic (GMAGIC) could in many cases such as string
1702 concatenation be invoked too many times.
1703
1704 • scalar() now forces scalar context even when used in void context.
1705
1706 • SOCKS support is now much more robust.
1707
1708 • sort() arguments are now compiled in the right wantarray context
1709 (they were accidentally using the context of the sort() itself).
1710 The comparison block is now run in scalar context, and the
1711 arguments to be sorted are always provided list context. [561]
1712
1713 • Changed the POSIX character class "[[:space:]]" to include the
1714 (very rarely used) vertical tab character. Added a new POSIX-ish
1715 character class "[[:blank:]]" which stands for horizontal
1716 whitespace (currently, the space and the tab).
1717
1718 • The tainting behaviour of sprintf() has been rationalized. It does
1719 not taint the result of floating point formats anymore, making the
1720 behaviour consistent with that of string interpolation. [561]
1721
1722 • Some cases of inconsistent taint propagation (such as within hash
1723 values) have been fixed.
1724
1725 • The RE engine found in Perl 5.6.0 accidentally pessimised certain
1726 kinds of simple pattern matches. These are now handled better.
1727 [561]
1728
1729 • Regular expression debug output (whether through "use re 'debug'"
1730 or via "-Dr") now looks better. [561]
1731
1732 • Multi-line matches like ""a\nxb\n" =~ /(?!\A)x/m" were flawed. The
1733 bug has been fixed. [561]
1734
1735 • Use of $& could trigger a core dump under some situations. This is
1736 now avoided. [561]
1737
1738 • The regular expression captured submatches ($1, $2, ...) are now
1739 more consistently unset if the match fails, instead of leaving
1740 false data lying around in them. [561]
1741
1742 • readline() on files opened in "slurp" mode could return an extra ""
1743 (blank line) at the end in certain situations. This has been
1744 corrected. [561]
1745
1746 • Autovivification of symbolic references of special variables
1747 described in perlvar (as in "${$num}") was accidentally disabled.
1748 This works again now. [561]
1749
1750 • Sys::Syslog ignored the "LOG_AUTH" constant.
1751
1752 • $AUTOLOAD, sort(), lock(), and spawning subprocesses in multiple
1753 threads simultaneously are now thread-safe.
1754
1755 • Tie::Array's SPLICE method was broken.
1756
1757 • Allow a read-only string on the left-hand side of a non-modifying
1758 tr///.
1759
1760 • If "STDERR" is tied, warnings caused by "warn" and "die" now
1761 correctly pass to it.
1762
1763 • Several Unicode fixes.
1764
1765 • BOMs (byte order marks) at the beginning of Perl files
1766 (scripts, modules) should now be transparently skipped.
1767 UTF-16 and UCS-2 encoded Perl files should now be read
1768 correctly.
1769
1770 • The character tables have been updated to Unicode 3.2.0.
1771
1772 • Comparing with utf8 data does not magically upgrade
1773 non-utf8 data into utf8. (This was a problem for example
1774 if you were mixing data from I/O and Unicode data: your
1775 output might have got magically encoded as UTF-8.)
1776
1777 • Generating illegal Unicode code points such as U+FFFE, or
1778 the UTF-16 surrogates, now also generates an optional
1779 warning.
1780
1781 • "IsAlnum", "IsAlpha", and "IsWord" now match titlecase.
1782
1783 • Concatenation with the "." operator or via variable
1784 interpolation, "eq", "substr", "reverse", "quotemeta", the
1785 "x" operator, substitution with "s///", single-quoted
1786 UTF-8, should now work.
1787
1788 • The "tr///" operator now works. Note that the "tr///CU"
1789 functionality has been removed (but see pack('U0', ...)).
1790
1791 • "eval "v200"" now works.
1792
1793 • Perl 5.6.0 parsed m/\x{ab}/ incorrectly, leading to
1794 spurious warnings. This has been corrected. [561]
1795
1796 • Zero entries were missing from the Unicode classes such as
1797 "IsDigit".
1798
1799 • Large unsigned numbers (those above 2**31) could sometimes lose
1800 their unsignedness, causing bogus results in arithmetic operations.
1801 [561]
1802
1803 • The Perl parser has been stress tested using both random input and
1804 Markov chain input and the few found crashes and lockups have been
1805 fixed.
1806
1807 Platform Specific Changes and Fixes
1808 • BSDI 4.*
1809
1810 Perl now works on post-4.0 BSD/OSes.
1811
1812 • All BSDs
1813
1814 Setting $0 now works (as much as possible; see perlvar for
1815 details).
1816
1817 • Cygwin
1818
1819 Numerous updates; currently synchronised with Cygwin 1.3.10.
1820
1821 • Previously DYNIX/ptx had problems in its Configure probe for non-
1822 blocking I/O.
1823
1824 • EPOC
1825
1826 EPOC now better supported. See README.epoc. [561]
1827
1828 • FreeBSD 3.*
1829
1830 Perl now works on post-3.0 FreeBSDs.
1831
1832 • HP-UX
1833
1834 README.hpux updated; "Configure -Duse64bitall" now works; now uses
1835 HP-UX malloc instead of Perl malloc.
1836
1837 • IRIX
1838
1839 Numerous compilation flag and hint enhancements; accidental mixing
1840 of 32-bit and 64-bit libraries (a doomed attempt) made much harder.
1841
1842 • Linux
1843
1844 • Long doubles should now work (see INSTALL). [561]
1845
1846 • Linux previously had problems related to sockaddrlen when
1847 using accept(), recvfrom() (in Perl: recv()),
1848 getpeername(), and getsockname().
1849
1850 • Mac OS Classic
1851
1852 Compilation of the standard Perl distribution in Mac OS Classic
1853 should now work if you have the Metrowerks development environment
1854 and the missing Mac-specific toolkit bits. Contact the macperl
1855 mailing list for details.
1856
1857 • MPE/iX
1858
1859 MPE/iX update after Perl 5.6.0. See README.mpeix. [561]
1860
1861 • NetBSD/threads: try installing the GNU pth (should be in the
1862 packages collection, or http://www.gnu.org/software/pth/), and
1863 Configure with -Duseithreads.
1864
1865 • NetBSD/sparc
1866
1867 Perl now works on NetBSD/sparc.
1868
1869 • OS/2
1870
1871 Now works with usethreads (see INSTALL). [561]
1872
1873 • Solaris
1874
1875 64-bitness using the Sun Workshop compiler now works.
1876
1877 • Stratus VOS
1878
1879 The native build method requires at least VOS Release 14.5.0 and
1880 GNU C++/GNU Tools 2.0.1 or later. The Perl pack function now maps
1881 overflowed values to +infinity and underflowed values to -infinity.
1882
1883 • Tru64 (aka Digital UNIX, aka DEC OSF/1)
1884
1885 The operating system version letter now recorded in
1886 $Config{osvers}. Allow compiling with gcc (previously explicitly
1887 forbidden). Compiling with gcc still not recommended because buggy
1888 code results, even with gcc 2.95.2.
1889
1890 • Unicos
1891
1892 Fixed various alignment problems that lead into core dumps either
1893 during build or later; no longer dies on math errors at runtime;
1894 now using full quad integers (64 bits), previously was using only
1895 46 bit integers for speed.
1896
1897 • VMS
1898
1899 See "Socket Extension Dynamic in VMS" and "IEEE-format Floating
1900 Point Default on OpenVMS Alpha" for important changes not otherwise
1901 listed here.
1902
1903 chdir() now works better despite a CRT bug; now works with
1904 MULTIPLICITY (see INSTALL); now works with Perl's malloc.
1905
1906 The tainting of %ENV elements via "keys" or "values" was previously
1907 unimplemented. It now works as documented.
1908
1909 The "waitpid" emulation has been improved. The worst bug (now
1910 fixed) was that a pid of -1 would cause a wildcard search of all
1911 processes on the system.
1912
1913 POSIX-style signals are now emulated much better on VMS versions
1914 prior to 7.0.
1915
1916 The "system" function and backticks operator have improved
1917 functionality and better error handling. [561]
1918
1919 File access tests now use current process privileges rather than
1920 the user's default privileges, which could sometimes result in a
1921 mismatch between reported access and actual access. This
1922 improvement is only available on VMS v6.0 and later.
1923
1924 There is a new "kill" implementation based on "sys$sigprc" that
1925 allows older VMS systems (pre-7.0) to use "kill" to send signals
1926 rather than simply force exit. This implementation also allows
1927 later systems to call "kill" from within a signal handler.
1928
1929 Iterative logical name translations are now limited to 10
1930 iterations in imitation of SHOW LOGICAL and other OpenVMS
1931 facilities.
1932
1933 • Windows
1934
1935 • Signal handling now works better than it used to. It is
1936 now implemented using a Windows message loop, and is
1937 therefore less prone to random crashes.
1938
1939 • fork() emulation is now more robust, but still continues to
1940 have a few esoteric bugs and caveats. See perlfork for
1941 details. [561+]
1942
1943 • A failed (pseudo)fork now returns undef and sets errno to
1944 EAGAIN. [561]
1945
1946 • The following modules now work on Windows:
1947
1948 ExtUtils::Embed [561]
1949 IO::Pipe
1950 IO::Poll
1951 Net::Ping
1952
1953 • IO::File::new_tmpfile() is no longer limited to 32767
1954 invocations per-process.
1955
1956 • Better chdir() return value for a non-existent directory.
1957
1958 • Compiling perl using the 64-bit Platform SDK tools is now
1959 supported.
1960
1961 • The Win32::SetChildShowWindow() builtin can be used to
1962 control the visibility of windows created by child
1963 processes. See Win32 for details.
1964
1965 • Non-blocking waits for child processes (or pseudo-
1966 processes) are supported via "waitpid($pid,
1967 &POSIX::WNOHANG)".
1968
1969 • The behavior of system() with multiple arguments has been
1970 rationalized. Each unquoted argument will be automatically
1971 quoted to protect whitespace, and any existing whitespace
1972 in the arguments will be preserved. This improves the
1973 portability of system(@args) by avoiding the need for
1974 Windows "cmd" shell specific quoting in perl programs.
1975
1976 Note that this means that some scripts that may have relied
1977 on earlier buggy behavior may no longer work correctly.
1978 For example, "system("nmake /nologo", @args)" will now
1979 attempt to run the file "nmake /nologo" and will fail when
1980 such a file isn't found. On the other hand, perl will now
1981 execute code such as "system("c:/Program
1982 Files/MyApp/foo.exe", @args)" correctly.
1983
1984 • The perl header files no longer suppress common warnings
1985 from the Microsoft Visual C++ compiler. This means that
1986 additional warnings may now show up when compiling XS code.
1987
1988 • Borland C++ v5.5 is now a supported compiler that can build
1989 Perl. However, the generated binaries continue to be
1990 incompatible with those generated by the other supported
1991 compilers (GCC and Visual C++). [561]
1992
1993 • Duping socket handles with open(F, ">&MYSOCK") now works
1994 under Windows 9x. [561]
1995
1996 • Current directory entries in %ENV are now correctly
1997 propagated to child processes. [561]
1998
1999 • New %ENV entries now propagate to subprocesses. [561]
2000
2001 • Win32::GetCwd() correctly returns C:\ instead of C: when at
2002 the drive root. Other bugs in chdir() and Cwd::cwd() have
2003 also been fixed. [561]
2004
2005 • The makefiles now default to the features enabled in
2006 ActiveState ActivePerl (a popular Win32 binary
2007 distribution). [561]
2008
2009 • HTML files will now be installed in c:\perl\html instead of
2010 c:\perl\lib\pod\html
2011
2012 • REG_EXPAND_SZ keys are now allowed in registry settings
2013 used by perl. [561]
2014
2015 • Can now send() from all threads, not just the first one.
2016 [561]
2017
2018 • ExtUtils::MakeMaker now uses $ENV{LIB} to search for
2019 libraries. [561]
2020
2021 • Less stack reserved per thread so that more threads can run
2022 concurrently. (Still 16M per thread.) [561]
2023
2024 • "File::Spec->tmpdir()" now prefers C:/temp over /tmp (works
2025 better when perl is running as service).
2026
2027 • Better UNC path handling under ithreads. [561]
2028
2029 • wait(), waitpid(), and backticks now return the correct
2030 exit status under Windows 9x. [561]
2031
2032 • A socket handle leak in accept() has been fixed. [561]
2033
2035 Please see perldiag for more details.
2036
2037 • Ambiguous range in the transliteration operator (like a-z-9) now
2038 gives a warning.
2039
2040 • chdir("") and chdir(undef) now give a deprecation warning because
2041 they cause a possible unintentional chdir to the home directory.
2042 Say chdir() if you really mean that.
2043
2044 • Two new debugging options have been added: if you have compiled
2045 your Perl with debugging, you can use the -DT [561] and -DR options
2046 to trace tokenising and to add reference counts to displaying
2047 variables, respectively.
2048
2049 • The lexical warnings category "deprecated" is no longer a sub-
2050 category of the "syntax" category. It is now a top-level category
2051 in its own right.
2052
2053 • Unadorned dump() will now give a warning suggesting to use explicit
2054 CORE::dump() if that's what really is meant.
2055
2056 • The "Unrecognized escape" warning has been extended to include
2057 "\8", "\9", and "\_". There is no need to escape any of the "\w"
2058 characters.
2059
2060 • All regular expression compilation error messages are now hopefully
2061 easier to understand both because the error message now comes
2062 before the failed regex and because the point of failure is now
2063 clearly marked by a "<-- HERE" marker.
2064
2065 • Various I/O (and socket) functions like binmode(), close(), and so
2066 forth now more consistently warn if they are used illogically
2067 either on a yet unopened or on an already closed filehandle (or
2068 socket).
2069
2070 • Using lstat() on a filehandle now gives a warning. (It's a non-
2071 sensical thing to do.)
2072
2073 • The "-M" and "-m" options now warn if you didn't supply the module
2074 name.
2075
2076 • If you in "use" specify a required minimum version, modules
2077 matching the name and but not defining a $VERSION will cause a
2078 fatal failure.
2079
2080 • Using negative offset for vec() in lvalue context is now a warnable
2081 offense.
2082
2083 • Odd number of arguments to overload::constant now elicits a
2084 warning.
2085
2086 • Odd number of elements in anonymous hash now elicits a warning.
2087
2088 • The various "opened only for", "on closed", "never opened" warnings
2089 drop the "main::" prefix for filehandles in the "main" package, for
2090 example "STDIN" instead of "main::STDIN".
2091
2092 • Subroutine prototypes are now checked more carefully, you may get
2093 warnings for example if you have used non-prototype characters.
2094
2095 • If an attempt to use a (non-blessed) reference as an array index is
2096 made, a warning is given.
2097
2098 • "push @a;" and "unshift @a;" (with no values to push or unshift)
2099 now give a warning. This may be a problem for generated and
2100 eval'ed code.
2101
2102 • If you try to "pack" in perlfunc a number less than 0 or larger
2103 than 255 using the "C" format you will get an optional warning.
2104 Similarly for the "c" format and a number less than -128 or more
2105 than 127.
2106
2107 • pack "P" format now demands an explicit size.
2108
2109 • unpack "w" now warns of unterminated compressed integers.
2110
2111 • Warnings relating to the use of PerlIO have been added.
2112
2113 • Certain regex modifiers such as "(?o)" make sense only if applied
2114 to the entire regex. You will get an optional warning if you try
2115 to do otherwise.
2116
2117 • Variable length lookbehind has not yet been implemented, trying to
2118 use it will tell that.
2119
2120 • Using arrays or hashes as references (e.g. "%foo->{bar}" has been
2121 deprecated for a while. Now you will get an optional warning.
2122
2123 • Warnings relating to the use of the new restricted hashes feature
2124 have been added.
2125
2126 • Self-ties of arrays and hashes are not supported and fatal errors
2127 will happen even at an attempt to do so.
2128
2129 • Using "sort" in scalar context now issues an optional warning.
2130 This didn't do anything useful, as the sort was not performed.
2131
2132 • Using the /g modifier in split() is meaningless and will cause a
2133 warning.
2134
2135 • Using splice() past the end of an array now causes a warning.
2136
2137 • Malformed Unicode encodings (UTF-8 and UTF-16) cause a lot of
2138 warnings, as does trying to use UTF-16 surrogates (which are
2139 unimplemented).
2140
2141 • Trying to use Unicode characters on an I/O stream without marking
2142 the stream's encoding (using open() or binmode()) will cause "Wide
2143 character" warnings.
2144
2145 • Use of v-strings in use/require causes a (backward) portability
2146 warning.
2147
2148 • Warnings relating to the use interpreter threads and their shared
2149 data have been added.
2150
2152 • PerlIO is now the default.
2153
2154 • perlapi.pod (a companion to perlguts) now attempts to document the
2155 internal API.
2156
2157 • You can now build a really minimal perl called microperl. Building
2158 microperl does not require even running Configure; "make -f
2159 Makefile.micro" should be enough. Beware: microperl makes many
2160 assumptions, some of which may be too bold; the resulting
2161 executable may crash or otherwise misbehave in wondrous ways. For
2162 careful hackers only.
2163
2164 • Added rsignal(), whichsig(), do_join(), op_clear, op_null,
2165 ptr_table_clear(), ptr_table_free(), sv_setref_uv(), and several
2166 UTF-8 interfaces to the publicised API. For the full list of the
2167 available APIs see perlapi.
2168
2169 • Made possible to propagate customised exceptions via croak()ing.
2170
2171 • Now xsubs can have attributes just like subs. (Well, at least the
2172 built-in attributes.)
2173
2174 • dTHR and djSP have been obsoleted; the former removed (because it's
2175 a no-op) and the latter replaced with dSP.
2176
2177 • PERL_OBJECT has been completely removed.
2178
2179 • The MAGIC constants (e.g. 'P') have been macrofied (e.g.
2180 "PERL_MAGIC_TIED") for better source code readability and
2181 maintainability.
2182
2183 • The regex compiler now maintains a structure that identifies nodes
2184 in the compiled bytecode with the corresponding syntactic features
2185 of the original regex expression. The information is attached to
2186 the new "offsets" member of the "struct regexp". See perldebguts
2187 for more complete information.
2188
2189 • The C code has been made much more "gcc -Wall" clean. Some warning
2190 messages still remain in some platforms, so if you are compiling
2191 with gcc you may see some warnings about dubious practices. The
2192 warnings are being worked on.
2193
2194 • perly.c, sv.c, and sv.h have now been extensively commented.
2195
2196 • Documentation on how to use the Perl source repository has been
2197 added to Porting/repository.pod.
2198
2199 • There are now several profiling make targets.
2200
2202 (This change was already made in 5.7.0 but bears repeating here.)
2203 (5.7.0 came out before 5.6.1: the development branch 5.7 released
2204 earlier than the maintenance branch 5.6)
2205
2206 A potential security vulnerability in the optional suidperl component
2207 of Perl was identified in August 2000. suidperl is neither built nor
2208 installed by default. As of November 2001 the only known vulnerable
2209 platform is Linux, most likely all Linux distributions. CERT and
2210 various vendors and distributors have been alerted about the
2211 vulnerability. See
2212 http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt for
2213 more information.
2214
2215 The problem was caused by Perl trying to report a suspected security
2216 exploit attempt using an external program, /bin/mail. On Linux
2217 platforms the /bin/mail program had an undocumented feature which when
2218 combined with suidperl gave access to a root shell, resulting in a
2219 serious compromise instead of reporting the exploit attempt. If you
2220 don't have /bin/mail, or if you have 'safe setuid scripts', or if
2221 suidperl is not installed, you are safe.
2222
2223 The exploit attempt reporting feature has been completely removed from
2224 Perl 5.8.0 (and the maintenance release 5.6.1, and it was removed also
2225 from all the Perl 5.7 releases), so that particular vulnerability isn't
2226 there anymore. However, further security vulnerabilities are,
2227 unfortunately, always possible. The suidperl functionality is most
2228 probably going to be removed in Perl 5.10. In any case, suidperl
2229 should only be used by security experts who know exactly what they are
2230 doing and why they are using suidperl instead of some other solution
2231 such as sudo ( see http://www.courtesan.com/sudo/ ).
2232
2234 Several new tests have been added, especially for the lib and ext
2235 subsections. There are now about 69 000 individual tests (spread over
2236 about 700 test scripts), in the regression suite (5.6.1 has about 11
2237 700 tests, in 258 test scripts) The exact numbers depend on the
2238 platform and Perl configuration used. Many of the new tests are of
2239 course introduced by the new modules, but still in general Perl is now
2240 more thoroughly tested.
2241
2242 Because of the large number of tests, running the regression suite will
2243 take considerably longer time than it used to: expect the suite to take
2244 up to 4-5 times longer to run than in perl 5.6. On a really fast
2245 machine you can hope to finish the suite in about 6-8 minutes
2246 (wallclock time).
2247
2248 The tests are now reported in a different order than in earlier Perls.
2249 (This happens because the test scripts from under t/lib have been moved
2250 to be closer to the library/extension they are testing.)
2251
2253 The Compiler Suite Is Still Very Experimental
2254 The compiler suite is slowly getting better but it continues to be
2255 highly experimental. Use in production environments is discouraged.
2256
2257 Localising Tied Arrays and Hashes Is Broken
2258 local %tied_array;
2259
2260 doesn't work as one would expect: the old value is restored
2261 incorrectly. This will be changed in a future release, but we don't
2262 know yet what the new semantics will exactly be. In any case, the
2263 change will break existing code that relies on the current (ill-
2264 defined) semantics, so just avoid doing this in general.
2265
2266 Building Extensions Can Fail Because Of Largefiles
2267 Some extensions like mod_perl are known to have issues with
2268 `largefiles', a change brought by Perl 5.6.0 in which file offsets
2269 default to 64 bits wide, where supported. Modules may fail to compile
2270 at all, or they may compile and work incorrectly. Currently, there is
2271 no good solution for the problem, but Configure now provides
2272 appropriate non-largefile ccflags, ldflags, libswanted, and libs in the
2273 %Config hash (e.g., $Config{ccflags_nolargefiles}) so the extensions
2274 that are having problems can try configuring themselves without the
2275 largefileness. This is admittedly not a clean solution, and the
2276 solution may not even work at all. One potential failure is whether
2277 one can (or, if one can, whether it's a good idea to) link together at
2278 all binaries with different ideas about file offsets; all this is
2279 platform-dependent.
2280
2281 Modifying $_ Inside for(..)
2282 for (1..5) { $_++ }
2283
2284 works without complaint. It shouldn't. (You should be able to modify
2285 only lvalue elements inside the loops.) You can see the correct
2286 behaviour by replacing the 1..5 with 1, 2, 3, 4, 5.
2287
2288 mod_perl 1.26 Doesn't Build With Threaded Perl
2289 Use mod_perl 1.27 or higher.
2290
2291 lib/ftmp-security tests warn 'system possibly insecure'
2292 Don't panic. Read the 'make test' section of INSTALL instead.
2293
2294 libwww-perl (LWP) fails base/date #51
2295 Use libwww-perl 5.65 or later.
2296
2297 PDL failing some tests
2298 Use PDL 2.3.4 or later.
2299
2300 Perl_get_sv
2301 You may get errors like 'Undefined symbol "Perl_get_sv"' or "can't
2302 resolve symbol 'Perl_get_sv'", or the symbol may be "Perl_sv_2pv".
2303 This probably means that you are trying to use an older shared Perl
2304 library (or extensions linked with such) with Perl 5.8.0 executable.
2305 Perl used to have such a subroutine, but that is no more the case.
2306 Check your shared library path, and any shared Perl libraries in those
2307 directories.
2308
2309 Sometimes this problem may also indicate a partial Perl 5.8.0
2310 installation, see "Mac OS X dyld undefined symbols" for an example and
2311 how to deal with it.
2312
2313 Self-tying Problems
2314 Self-tying of arrays and hashes is broken in rather deep and hard-to-
2315 fix ways. As a stop-gap measure to avoid people from getting
2316 frustrated at the mysterious results (core dumps, most often), it is
2317 forbidden for now (you will get a fatal error even from an attempt).
2318
2319 A change to self-tying of globs has caused them to be recursively
2320 referenced (see: "Two-Phased Garbage Collection" in perlobj). You will
2321 now need an explicit untie to destroy a self-tied glob. This behaviour
2322 may be fixed at a later date.
2323
2324 Self-tying of scalars and IO thingies works.
2325
2326 ext/threads/t/libc
2327 If this test fails, it indicates that your libc (C library) is not
2328 threadsafe. This particular test stress tests the localtime() call to
2329 find out whether it is threadsafe. See perlthrtut for more
2330 information.
2331
2332 Failure of Thread (5.005-style) tests
2333 Note that support for 5.005-style threading is deprecated, experimental
2334 and practically unsupported. In 5.10, it is expected to be removed.
2335 You should migrate your code to ithreads.
2336
2337 The following tests are known to fail due to fundamental problems in
2338 the 5.005 threading implementation. These are not new failures--Perl
2339 5.005_0x has the same bugs, but didn't have these tests.
2340
2341 ../ext/B/t/xref.t 255 65280 14 12 85.71% 3-14
2342 ../ext/List/Util/t/first.t 255 65280 7 4 57.14% 2 5-7
2343 ../lib/English.t 2 512 54 2 3.70% 2-3
2344 ../lib/FileCache.t 5 1 20.00% 5
2345 ../lib/Filter/Simple/t/data.t 6 3 50.00% 1-3
2346 ../lib/Filter/Simple/t/filter_only. 9 3 33.33% 1-2 5
2347 ../lib/Math/BigInt/t/bare_mbf.t 1627 4 0.25% 8 11 1626-1627
2348 ../lib/Math/BigInt/t/bigfltpm.t 1629 4 0.25% 10 13 1628-
2349 1629
2350 ../lib/Math/BigInt/t/sub_mbf.t 1633 4 0.24% 8 11 1632-1633
2351 ../lib/Math/BigInt/t/with_sub.t 1628 4 0.25% 9 12 1627-1628
2352 ../lib/Tie/File/t/31_autodefer.t 255 65280 65 32 49.23% 34-65
2353 ../lib/autouse.t 10 1 10.00% 4
2354 op/flip.t 15 1 6.67% 15
2355
2356 These failures are unlikely to get fixed as 5.005-style threads are
2357 considered fundamentally broken. (Basically what happens is that
2358 competing threads can corrupt shared global state, one good example
2359 being regular expression engine's state.)
2360
2361 Timing problems
2362 The following tests may fail intermittently because of timing problems,
2363 for example if the system is heavily loaded.
2364
2365 t/op/alarm.t
2366 ext/Time/HiRes/HiRes.t
2367 lib/Benchmark.t
2368 lib/Memoize/t/expmod_t.t
2369 lib/Memoize/t/speed.t
2370
2371 In case of failure please try running them manually, for example
2372
2373 ./perl -Ilib ext/Time/HiRes/HiRes.t
2374
2375 Tied/Magical Array/Hash Elements Do Not Autovivify
2376 For normal arrays "$foo = \$bar[1]" will assign "undef" to $bar[1]
2377 (assuming that it didn't exist before), but for tied/magical arrays and
2378 hashes such autovivification does not happen because there is currently
2379 no way to catch the reference creation. The same problem affects
2380 slicing over non-existent indices/keys of a tied/magical array/hash.
2381
2382 Unicode in package/class and subroutine names does not work
2383 One can have Unicode in identifier names, but not in package/class or
2384 subroutine names. While some limited functionality towards this does
2385 exist as of Perl 5.8.0, that is more accidental than designed; use of
2386 Unicode for the said purposes is unsupported.
2387
2388 One reason of this unfinishedness is its (currently) inherent
2389 unportability: since both package names and subroutine names may need
2390 to be mapped to file and directory names, the Unicode capability of the
2391 filesystem becomes important-- and there unfortunately aren't portable
2392 answers.
2393
2395 AIX
2396 • If using the AIX native make command, instead of just "make" issue
2397 "make all". In some setups the former has been known to spuriously
2398 also try to run "make install". Alternatively, you may want to use
2399 GNU make.
2400
2401 • In AIX 4.2, Perl extensions that use C++ functions that use statics
2402 may have problems in that the statics are not getting initialized.
2403 In newer AIX releases, this has been solved by linking Perl with
2404 the libC_r library, but unfortunately in AIX 4.2 the said library
2405 has an obscure bug where the various functions related to time
2406 (such as time() and gettimeofday()) return broken values, and
2407 therefore in AIX 4.2 Perl is not linked against libC_r.
2408
2409 • vac 5.0.0.0 May Produce Buggy Code For Perl
2410
2411 The AIX C compiler vac version 5.0.0.0 may produce buggy code,
2412 resulting in a few random tests failing when run as part of "make
2413 test", but when the failing tests are run by hand, they succeed.
2414 We suggest upgrading to at least vac version 5.0.1.0, that has been
2415 known to compile Perl correctly. "lslpp -L|grep vac.C" will tell
2416 you the vac version. See README.aix.
2417
2418 • If building threaded Perl, you may get compilation warning from
2419 pp_sys.c:
2420
2421 "pp_sys.c", line 4651.39: 1506-280 (W) Function argument assignment between types "unsigned char*" and "const void*" is not allowed.
2422
2423 This is harmless; it is caused by the getnetbyaddr() and
2424 getnetbyaddr_r() having slightly different types for their first
2425 argument.
2426
2427 Alpha systems with old gccs fail several tests
2428 If you see op/pack, op/pat, op/regexp, or ext/Storable tests failing in
2429 a Linux/alpha or *BSD/Alpha, it's probably time to upgrade your gcc.
2430 gccs prior to 2.95.3 are definitely not good enough, and gcc 3.1 may be
2431 even better. (RedHat Linux/alpha with gcc 3.1 reported no problems, as
2432 did Linux 2.4.18 with gcc 2.95.4.) (In Tru64, it is preferable to use
2433 the bundled C compiler.)
2434
2435 AmigaOS
2436 Perl 5.8.0 doesn't build in AmigaOS. It broke at some point during the
2437 ithreads work and we could not find Amiga experts to unbreak the
2438 problems. Perl 5.6.1 still works for AmigaOS (as does the 5.7.2
2439 development release).
2440
2441 BeOS
2442 The following tests fail on 5.8.0 Perl in BeOS Personal 5.03:
2443
2444 t/op/lfs............................FAILED at test 17
2445 t/op/magic..........................FAILED at test 24
2446 ext/Fcntl/t/syslfs..................FAILED at test 17
2447 ext/File/Glob/t/basic...............FAILED at test 3
2448 ext/POSIX/t/sigaction...............FAILED at test 13
2449 ext/POSIX/t/waitpid.................FAILED at test 1
2450
2451 (Note: more information was available in README.beos until support for
2452 BeOS was removed in Perl v5.18.0)
2453
2454 Cygwin "unable to remap"
2455 For example when building the Tk extension for Cygwin, you may get an
2456 error message saying "unable to remap". This is known problem with
2457 Cygwin, and a workaround is detailed in here:
2458 http://sources.redhat.com/ml/cygwin/2001-12/msg00894.html
2459
2460 Cygwin ndbm tests fail on FAT
2461 One can build but not install (or test the build of) the NDBM_File on
2462 FAT filesystems. Installation (or build) on NTFS works fine. If one
2463 attempts the test on a FAT install (or build) the following failures
2464 are expected:
2465
2466 ../ext/NDBM_File/ndbm.t 13 3328 71 59 83.10% 1-2 4 16-71
2467 ../ext/ODBM_File/odbm.t 255 65280 ?? ?? % ??
2468 ../lib/AnyDBM_File.t 2 512 12 2 16.67% 1 4
2469 ../lib/Memoize/t/errors.t 0 139 11 5 45.45% 7-11
2470 ../lib/Memoize/t/tie_ndbm.t 13 3328 4 4 100.00% 1-4
2471 run/fresh_perl.t 97 1 1.03% 91
2472
2473 NDBM_File fails and ODBM_File just coredumps.
2474
2475 If you intend to run only on FAT (or if using AnyDBM_File on FAT), run
2476 Configure with the -Ui_ndbm and -Ui_dbm options to prevent NDBM_File
2477 and ODBM_File being built.
2478
2479 DJGPP Failures
2480 t/op/stat............................FAILED at test 29
2481 lib/File/Find/t/find.................FAILED at test 1
2482 lib/File/Find/t/taint................FAILED at test 1
2483 lib/h2xs.............................FAILED at test 15
2484 lib/Pod/t/eol........................FAILED at test 1
2485 lib/Test/Harness/t/strap-analyze.....FAILED at test 8
2486 lib/Test/Harness/t/test-harness......FAILED at test 23
2487 lib/Test/Simple/t/exit...............FAILED at test 1
2488
2489 The above failures are known as of 5.8.0 with native builds with long
2490 filenames, but there are a few more if running under dosemu because of
2491 limitations (and maybe bugs) of dosemu:
2492
2493 t/comp/cpp...........................FAILED at test 3
2494 t/op/inccode.........................(crash)
2495
2496 and a few lib/ExtUtils tests, and several hundred Encode/t/Aliases.t
2497 failures that work fine with long filenames. So you really might
2498 prefer native builds and long filenames.
2499
2500 FreeBSD built with ithreads coredumps reading large directories
2501 This is a known bug in FreeBSD 4.5's readdir_r(), it has been fixed in
2502 FreeBSD 4.6 (see perlfreebsd (README.freebsd)).
2503
2504 FreeBSD Failing locale Test 117 For ISO 8859-15 Locales
2505 The ISO 8859-15 locales may fail the locale test 117 in FreeBSD. This
2506 is caused by the characters \xFF (y with diaeresis) and \xBE (Y with
2507 diaeresis) not behaving correctly when being matched case-
2508 insensitively. Apparently this problem has been fixed in the latest
2509 FreeBSD releases. ( http://www.freebsd.org/cgi/query-pr.cgi?pr=34308 )
2510
2511 IRIX fails ext/List/Util/t/shuffle.t or Digest::MD5
2512 IRIX with MIPSpro 7.3.1.2m or 7.3.1.3m compiler may fail the List::Util
2513 test ext/List/Util/t/shuffle.t by dumping core. This seems to be a
2514 compiler error since if compiled with gcc no core dump ensues, and no
2515 failures have been seen on the said test on any other platform.
2516
2517 Similarly, building the Digest::MD5 extension has been known to fail
2518 with "*** Termination code 139 (bu21)".
2519
2520 The cure is to drop optimization level (Configure -Doptimize=-O2).
2521
2522 HP-UX lib/posix Subtest 9 Fails When LP64-Configured
2523 If perl is configured with -Duse64bitall, the successful result of the
2524 subtest 10 of lib/posix may arrive before the successful result of the
2525 subtest 9, which confuses the test harness so much that it thinks the
2526 subtest 9 failed.
2527
2528 Linux with glibc 2.2.5 fails t/op/int subtest #6 with -Duse64bitint
2529 This is a known bug in the glibc 2.2.5 with long long integers. (
2530 http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=65612 )
2531
2532 Linux With Sfio Fails op/misc Test 48
2533 No known fix.
2534
2535 Mac OS X
2536 Please remember to set your environment variable LC_ALL to "C" (setenv
2537 LC_ALL C) before running "make test" to avoid a lot of warnings about
2538 the broken locales of Mac OS X.
2539
2540 The following tests are known to fail in Mac OS X 10.1.5 because of
2541 buggy (old) implementations of Berkeley DB included in Mac OS X:
2542
2543 Failed Test Stat Wstat Total Fail Failed List of Failed
2544 -------------------------------------------------------------------------
2545 ../ext/DB_File/t/db-btree.t 0 11 ?? ?? % ??
2546 ../ext/DB_File/t/db-recno.t 149 3 2.01% 61 63 65
2547
2548 If you are building on a UFS partition, you will also probably see
2549 t/op/stat.t subtest #9 fail. This is caused by Darwin's UFS not
2550 supporting inode change time.
2551
2552 Also the ext/POSIX/t/posix.t subtest #10 fails but it is skipped for
2553 now because the failure is Apple's fault, not Perl's (blocked signals
2554 are lost).
2555
2556 If you Configure with ithreads, ext/threads/t/libc.t will fail. Again,
2557 this is not Perl's fault-- the libc of Mac OS X is not threadsafe (in
2558 this particular test, the localtime() call is found to be
2559 threadunsafe.)
2560
2561 Mac OS X dyld undefined symbols
2562 If after installing Perl 5.8.0 you are getting warnings about missing
2563 symbols, for example
2564
2565 dyld: perl Undefined symbols
2566 _perl_sv_2pv
2567 _perl_get_sv
2568
2569 you probably have an old pre-Perl-5.8.0 installation (or parts of one)
2570 in /Library/Perl (the undefined symbols used to exist in pre-5.8.0
2571 Perls). It seems that for some reason "make install" doesn't always
2572 completely overwrite the files in /Library/Perl. You can move the old
2573 Perl shared library out of the way like this:
2574
2575 cd /Library/Perl/darwin/CORE
2576 mv libperl.dylib libperlold.dylib
2577
2578 and then reissue "make install". Note that the above of course is
2579 extremely disruptive for anything using the /usr/local/bin/perl. If
2580 that doesn't help, you may have to try removing all the .bundle files
2581 from beneath /Library/Perl, and again "make install"-ing.
2582
2583 OS/2 Test Failures
2584 The following tests are known to fail on OS/2 (for clarity only the
2585 failures are shown, not the full error messages):
2586
2587 ../lib/ExtUtils/t/Mkbootstrap.t 1 256 18 1 5.56% 8
2588 ../lib/ExtUtils/t/Packlist.t 1 256 34 1 2.94% 17
2589 ../lib/ExtUtils/t/basic.t 1 256 17 1 5.88% 14
2590 lib/os2_process.t 2 512 227 2 0.88% 174 209
2591 lib/os2_process_kid.t 227 2 0.88% 174 209
2592 lib/rx_cmprt.t 255 65280 18 3 16.67% 16-18
2593
2594 op/sprintf tests 91, 129, and 130
2595 The op/sprintf tests 91, 129, and 130 are known to fail on some
2596 platforms. Examples include any platform using sfio, and
2597 Compaq/Tandem's NonStop-UX.
2598
2599 Test 91 is known to fail on QNX6 (nto), because "sprintf '%e',0"
2600 incorrectly produces 0.000000e+0 instead of 0.000000e+00.
2601
2602 For tests 129 and 130, the failing platforms do not comply with the
2603 ANSI C Standard: lines 19ff on page 134 of ANSI X3.159 1989, to be
2604 exact. (They produce something other than "1" and "-1" when formatting
2605 0.6 and -0.6 using the printf format "%.0f"; most often, they produce
2606 "0" and "-0".)
2607
2608 SCO
2609 The socketpair tests are known to be unhappy in SCO 3.2v5.0.4:
2610
2611 ext/Socket/socketpair.t...............FAILED tests 15-45
2612
2613 Solaris 2.5
2614 In case you are still using Solaris 2.5 (aka SunOS 5.5), you may
2615 experience failures (the test core dumping) in lib/locale.t. The
2616 suggested cure is to upgrade your Solaris.
2617
2618 Solaris x86 Fails Tests With -Duse64bitint
2619 The following tests are known to fail in Solaris x86 with Perl
2620 configured to use 64 bit integers:
2621
2622 ext/Data/Dumper/t/dumper.............FAILED at test 268
2623 ext/Devel/Peek/Peek..................FAILED at test 7
2624
2625 SUPER-UX (NEC SX)
2626 The following tests are known to fail on SUPER-UX:
2627
2628 op/64bitint...........................FAILED tests 29-30, 32-33, 35-36
2629 op/arith..............................FAILED tests 128-130
2630 op/pack...............................FAILED tests 25-5625
2631 op/pow................................
2632 op/taint..............................# msgsnd failed
2633 ../ext/IO/lib/IO/t/io_poll............FAILED tests 3-4
2634 ../ext/IPC/SysV/ipcsysv...............FAILED tests 2, 5-6
2635 ../ext/IPC/SysV/t/msg.................FAILED tests 2, 4-6
2636 ../ext/Socket/socketpair..............FAILED tests 12
2637 ../lib/IPC/SysV.......................FAILED tests 2, 5-6
2638 ../lib/warnings.......................FAILED tests 115-116, 118-119
2639
2640 The op/pack failure ("Cannot compress negative numbers at op/pack.t
2641 line 126") is serious but as of yet unsolved. It points at some
2642 problems with the signedness handling of the C compiler, as do the
2643 64bitint, arith, and pow failures. Most of the rest point at problems
2644 with SysV IPC.
2645
2646 Term::ReadKey not working on Win32
2647 Use Term::ReadKey 2.20 or later.
2648
2649 UNICOS/mk
2650 • During Configure, the test
2651
2652 Guessing which symbols your C compiler and preprocessor define...
2653
2654 will probably fail with error messages like
2655
2656 CC-20 cc: ERROR File = try.c, Line = 3
2657 The identifier "bad" is undefined.
2658
2659 bad switch yylook 79bad switch yylook 79bad switch yylook 79bad switch yylook 79#ifdef A29K
2660 ^
2661
2662 CC-65 cc: ERROR File = try.c, Line = 3
2663 A semicolon is expected at this point.
2664
2665 This is caused by a bug in the awk utility of UNICOS/mk. You can
2666 ignore the error, but it does cause a slight problem: you cannot
2667 fully benefit from the h2ph utility (see h2ph) that can be used to
2668 convert C headers to Perl libraries, mainly used to be able to
2669 access from Perl the constants defined using C preprocessor, cpp.
2670 Because of the above error, parts of the converted headers will be
2671 invisible. Luckily, these days the need for h2ph is rare.
2672
2673 • If building Perl with interpreter threads (ithreads), the
2674 getgrent(), getgrnam(), and getgrgid() functions cannot return the
2675 list of the group members due to a bug in the multithreaded support
2676 of UNICOS/mk. What this means is that in list context the
2677 functions will return only three values, not four.
2678
2679 UTS
2680 There are a few known test failures. (Note: the relevant information
2681 was available in README.uts until support for UTS was removed in Perl
2682 v5.18.0)
2683
2684 VOS (Stratus)
2685 When Perl is built using the native build process on VOS Release 14.5.0
2686 and GNU C++/GNU Tools 2.0.1, all attempted tests either pass or result
2687 in TODO (ignored) failures.
2688
2689 VMS
2690 There should be no reported test failures with a default configuration,
2691 though there are a number of tests marked TODO that point to areas
2692 needing further debugging and/or porting work.
2693
2694 Win32
2695 In multi-CPU boxes, there are some problems with the I/O buffering:
2696 some output may appear twice.
2697
2698 XML::Parser not working
2699 Use XML::Parser 2.31 or later.
2700
2701 z/OS (OS/390)
2702 z/OS has rather many test failures but the situation is actually much
2703 better than it was in 5.6.0; it's just that so many new modules and
2704 tests have been added.
2705
2706 Failed Test Stat Wstat Total Fail Failed List of Failed
2707 ---------------------------------------------------------------------------
2708 ../ext/Data/Dumper/t/dumper.t 357 8 2.24% 311 314 325 327
2709 331 333 337 339
2710 ../ext/IO/lib/IO/t/io_unix.t 5 4 80.00% 2-5
2711 ../ext/Storable/t/downgrade.t 12 3072 169 12 7.10% 14-15 46-47 78-79
2712 110-111 150 161
2713 ../lib/ExtUtils/t/Constant.t 121 30976 48 48 100.00% 1-48
2714 ../lib/ExtUtils/t/Embed.t 9 9 100.00% 1-9
2715 op/pat.t 922 7 0.76% 665 776 785 832-
2716 834 845
2717 op/sprintf.t 224 3 1.34% 98 100 136
2718 op/tr.t 97 5 5.15% 63 71-74
2719 uni/fold.t 780 6 0.77% 61 169 196 661
2720 710-711
2721
2722 The failures in dumper.t and downgrade.t are problems in the tests,
2723 those in io_unix and sprintf are problems in the USS (UDP sockets and
2724 printf formats). The pat, tr, and fold failures are genuine Perl
2725 problems caused by EBCDIC (and in the pat and fold cases, combining
2726 that with Unicode). The Constant and Embed are probably problems in
2727 the tests (since they test Perl's ability to build extensions, and that
2728 seems to be working reasonably well.)
2729
2730 Unicode Support on EBCDIC Still Spotty
2731 Though mostly working, Unicode support still has problem spots on
2732 EBCDIC platforms. One such known spot are the "\p{}" and "\P{}"
2733 regular expression constructs for code points less than 256: the "pP"
2734 are testing for Unicode code points, not knowing about EBCDIC.
2735
2736 Seen In Perl 5.7 But Gone Now
2737 "Time::Piece" (previously known as "Time::Object") was removed because
2738 it was felt that it didn't have enough value in it to be a core module.
2739 It is still a useful module, though, and is available from the CPAN.
2740
2741 Perl 5.8 unfortunately does not build anymore on AmigaOS; this broke
2742 accidentally at some point. Since there are not that many Amiga
2743 developers available, we could not get this fixed and tested in time
2744 for 5.8.0. Perl 5.6.1 still works for AmigaOS (as does the 5.7.2
2745 development release).
2746
2747 The "PerlIO::Scalar" and "PerlIO::Via" (capitalised) were renamed as
2748 "PerlIO::scalar" and "PerlIO::via" (all lowercase) just before 5.8.0.
2749 The main rationale was to have all core PerlIO layers to have all
2750 lowercase names. The "plugins" are named as usual, for example
2751 "PerlIO::via::QuotedPrint".
2752
2753 The "threads::shared::queue" and "threads::shared::semaphore" were
2754 renamed as "Thread::Queue" and "Thread::Semaphore" just before 5.8.0.
2755 The main rationale was to have thread modules to obey normal naming,
2756 "Thread::" (the "threads" and "threads::shared" themselves are more
2757 pragma-like, they affect compile-time, so they stay lowercase).
2758
2760 If you find what you think is a bug, you might check the articles
2761 recently posted to the comp.lang.perl.misc newsgroup and the perl bug
2762 database at http://bugs.perl.org/ . There may also be information at
2763 http://www.perl.com/ , the Perl Home Page.
2764
2765 If you believe you have an unreported bug, please run the perlbug
2766 program included with your release. Be sure to trim your bug down to a
2767 tiny but sufficient test case. Your bug report, along with the output
2768 of "perl -V", will be sent off to perlbug@perl.org to be analysed by
2769 the Perl porting team.
2770
2772 The Changes file for exhaustive details on what changed.
2773
2774 The INSTALL file for how to build Perl.
2775
2776 The README file for general stuff.
2777
2778 The Artistic and Copying files for copyright information.
2779
2781 Written by Jarkko Hietaniemi <jhi@iki.fi>.
2782
2783
2784
2785perl v5.38.2 2023-11-30 PERL58DELTA(1)