1PERL5200DELTA(1) Perl Programmers Reference Guide PERL5200DELTA(1)
2
3
4
6 perl5200delta - what is new for perl v5.20.0
7
9 This document describes differences between the 5.18.0 release and the
10 5.20.0 release.
11
12 If you are upgrading from an earlier release such as 5.16.0, first read
13 perl5180delta, which describes differences between 5.16.0 and 5.18.0.
14
16 Experimental Subroutine signatures
17 Declarative syntax to unwrap argument list into lexical variables.
18 "sub foo ($a,$b) {...}" checks the number of arguments and puts the
19 arguments into lexical variables. Signatures are not equivalent to the
20 existing idiom of "sub foo { my($a,$b) = @_; ... }". Signatures are
21 only available by enabling a non-default feature, and generate warnings
22 about being experimental. The syntactic clash with prototypes is
23 managed by disabling the short prototype syntax when signatures are
24 enabled.
25
26 See "Signatures" in perlsub for details.
27
28 "sub"s now take a "prototype" attribute
29 When declaring or defining a "sub", the prototype can now be specified
30 inside of a "prototype" attribute instead of in parens following the
31 name.
32
33 For example, "sub foo($$){}" could be rewritten as "sub foo :
34 prototype($$){}".
35
36 More consistent prototype parsing
37 Multiple semicolons in subroutine prototypes have long been tolerated
38 and treated as a single semicolon. There was one case where this did
39 not happen. A subroutine whose prototype begins with "*" or ";*" can
40 affect whether a bareword is considered a method name or sub call.
41 This now applies also to ";;;*".
42
43 Whitespace has long been allowed inside subroutine prototypes, so "sub(
44 $ $ )" is equivalent to "sub($$)", but until now it was stripped when
45 the subroutine was parsed. Hence, whitespace was not allowed in
46 prototypes set by "Scalar::Util::set_prototype". Now it is permitted,
47 and the parser no longer strips whitespace. This means "prototype
48 &mysub" returns the original prototype, whitespace and all.
49
50 "rand" now uses a consistent random number generator
51 Previously perl would use a platform specific random number generator,
52 varying between the libc rand(), random() or drand48().
53
54 This meant that the quality of perl's random numbers would vary from
55 platform to platform, from the 15 bits of rand() on Windows to 48-bits
56 on POSIX platforms such as Linux with drand48().
57
58 Perl now uses its own internal drand48() implementation on all
59 platforms. This does not make perl's "rand" cryptographically secure.
60 [perl #115928]
61
62 New slice syntax
63 The new %hash{...} and %array[...] syntax returns a list of key/value
64 (or index/value) pairs. See "Key/Value Hash Slices" in perldata.
65
66 Experimental Postfix Dereferencing
67 When the "postderef" feature is in effect, the following syntactical
68 equivalencies are set up:
69
70 $sref->$*; # same as ${ $sref } # interpolates
71 $aref->@*; # same as @{ $aref } # interpolates
72 $href->%*; # same as %{ $href }
73 $cref->&*; # same as &{ $cref }
74 $gref->**; # same as *{ $gref }
75
76 $aref->$#*; # same as $#{ $aref }
77
78 $gref->*{ $slot }; # same as *{ $gref }{ $slot }
79
80 $aref->@[ ... ]; # same as @$aref[ ... ] # interpolates
81 $href->@{ ... }; # same as @$href{ ... } # interpolates
82 $aref->%[ ... ]; # same as %$aref[ ... ]
83 $href->%{ ... }; # same as %$href{ ... }
84
85 Those marked as interpolating only interpolate if the associated
86 "postderef_qq" feature is also enabled. This feature is experimental
87 and will trigger "experimental::postderef"-category warnings when used,
88 unless they are suppressed.
89
90 For more information, consult the Postfix Dereference Syntax section of
91 perlref.
92
93 Unicode 6.3 now supported
94 Perl now supports and is shipped with Unicode 6.3 (though Perl may be
95 recompiled with any previous Unicode release as well). A detailed list
96 of Unicode 6.3 changes is at
97 <http://www.unicode.org/versions/Unicode6.3.0/>.
98
99 New "\p{Unicode}" regular expression pattern property
100 This is a synonym for "\p{Any}" and matches the set of Unicode-defined
101 code points 0 - 0x10FFFF.
102
103 Better 64-bit support
104 On 64-bit platforms, the internal array functions now use 64-bit
105 offsets, allowing Perl arrays to hold more than 2**31 elements, if you
106 have the memory available.
107
108 The regular expression engine now supports strings longer than 2**31
109 characters. [perl #112790, #116907]
110
111 The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and
112 PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and
113 parameters.
114
115 "use locale" now works on UTF-8 locales
116 Until this release, only single-byte locales, such as the ISO 8859
117 series were supported. Now, the increasingly common multi-byte UTF-8
118 locales are also supported. A UTF-8 locale is one in which the
119 character set is Unicode and the encoding is UTF-8. The POSIX
120 "LC_CTYPE" category operations (case changing (like "lc()", "\U"), and
121 character classification ("\w", "\D", "qr/[[:punct:]]/")) under such a
122 locale work just as if not under locale, but instead as if under
123 "use feature 'unicode_strings'", except taint rules are followed.
124 Sorting remains by code point order in this release. [perl #56820].
125
126 "use locale" now compiles on systems without locale ability
127 Previously doing this caused the program to not compile. Within its
128 scope the program behaves as if in the "C" locale. Thus programs
129 written for platforms that support locales can run on locale-less
130 platforms without change. Attempts to change the locale away from the
131 "C" locale will, of course, fail.
132
133 More locale initialization fallback options
134 If there was an error with locales during Perl start-up, it immediately
135 gave up and tried to use the "C" locale. Now it first tries using
136 other locales given by the environment variables, as detailed in
137 "ENVIRONMENT" in perllocale. For example, if "LC_ALL" and "LANG" are
138 both set, and using the "LC_ALL" locale fails, Perl will now try the
139 "LANG" locale, and only if that fails, will it fall back to "C". On
140 Windows machines, Perl will try, ahead of using "C", the system default
141 locale if all the locales given by environment variables fail.
142
143 "-DL" runtime option now added for tracing locale setting
144 This is designed for Perl core developers to aid in field debugging
145 bugs regarding locales.
146
147 -F now implies -a and -a implies -n
148 Previously -F without -a was a no-op, and -a without -n or -p was a no-
149 op, with this change, if you supply -F then both -a and -n are implied
150 and if you supply -a then -n is implied.
151
152 You can still use -p for its extra behaviour. [perl #116190]
153
154 $a and $b warnings exemption
155 The special variables $a and $b, used in "sort", are now exempt from
156 "used once" warnings, even where "sort" is not used. This makes it
157 easier for CPAN modules to provide functions using $a and $b for
158 similar purposes. [perl #120462]
159
161 Avoid possible read of free()d memory during parsing
162 It was possible that free()d memory could be read during parsing in the
163 unusual circumstance of the Perl program ending with a heredoc and the
164 last line of the file on disk having no terminating newline character.
165 This has now been fixed.
166
168 "do" can no longer be used to call subroutines
169 The "do SUBROUTINE(LIST)" form has resulted in a deprecation warning
170 since Perl v5.0.0, and is now a syntax error.
171
172 Quote-like escape changes
173 The character after "\c" in a double-quoted string ("..." or qq(...))
174 or regular expression must now be a printable character and may not be
175 "{".
176
177 A literal "{" after "\B" or "\b" is now fatal.
178
179 These were deprecated in perl v5.14.0.
180
181 Tainting happens under more circumstances; now conforms to documentation
182 This affects regular expression matching and changing the case of a
183 string ("lc", "\U", etc.) within the scope of "use locale". The result
184 is now tainted based on the operation, no matter what the contents of
185 the string were, as the documentation (perlsec, "SECURITY" in
186 perllocale) indicates it should. Previously, for the case change
187 operation, if the string contained no characters whose case change
188 could be affected by the locale, the result would not be tainted. For
189 example, the result of "uc()" on an empty string or one containing only
190 above-Latin1 code points is now tainted, and wasn't before. This leads
191 to more consistent tainting results. Regular expression patterns taint
192 their non-binary results (like $&, $2) if and only if the pattern
193 contains elements whose matching depends on the current (potentially
194 tainted) locale. Like the case changing functions, the actual contents
195 of the string being matched now do not matter, whereas formerly it did.
196 For example, if the pattern contains a "\w", the results will be
197 tainted even if the match did not have to use that portion of the
198 pattern to succeed or fail, because what a "\w" matches depends on
199 locale. However, for example, a "." in a pattern will not enable
200 tainting, because the dot matches any single character, and what the
201 current locale is doesn't change in any way what matches and what
202 doesn't.
203
204 "\p{}", "\P{}" matching has changed for non-Unicode code points.
205 "\p{}" and "\P{}" are defined by Unicode only on Unicode-defined code
206 points ("U+0000" through "U+10FFFF"). Their behavior on matching these
207 legal Unicode code points is unchanged, but there are changes for code
208 points 0x110000 and above. Previously, Perl treated the result of
209 matching "\p{}" and "\P{}" against these as "undef", which translates
210 into "false". For "\P{}", this was then complemented into "true". A
211 warning was supposed to be raised when this happened. However, various
212 optimizations could prevent the warning, and the results were often
213 counter-intuitive, with both a match and its seeming complement being
214 false. Now all non-Unicode code points are treated as typical
215 unassigned Unicode code points. This generally is more Do-What-I-Mean.
216 A warning is raised only if the results are arguably different from a
217 strict Unicode approach, and from what Perl used to do. Code that
218 needs to be strictly Unicode compliant can make this warning fatal, and
219 then Perl always raises the warning.
220
221 Details are in "Beyond Unicode code points" in perlunicode.
222
223 "\p{All}" has been expanded to match all possible code points
224 The Perl-defined regular expression pattern element "\p{All}", unused
225 on CPAN, used to match just the Unicode code points; now it matches all
226 possible code points; that is, it is equivalent to "qr/./s". Thus
227 "\p{All}" is no longer synonymous with "\p{Any}", which continues to
228 match just the Unicode code points, as Unicode says it should.
229
230 Data::Dumper's output may change
231 Depending on the data structures dumped and the settings set for
232 Data::Dumper, the dumped output may have changed from previous
233 versions.
234
235 If you have tests that depend on the exact output of Data::Dumper, they
236 may fail.
237
238 To avoid this problem in your code, test against the data structure
239 from evaluating the dumped structure, instead of the dump itself.
240
241 Locale decimal point character no longer leaks outside of "use locale"
242 scope
243 This is actually a bug fix, but some code has come to rely on the bug
244 being present, so this change is listed here. The current locale that
245 the program is running under is not supposed to be visible to Perl code
246 except within the scope of a "use locale". However, until now under
247 certain circumstances, the character used for a decimal point (often a
248 comma) leaked outside the scope. If your code is affected by this
249 change, simply add a "use locale".
250
251 Assignments of Windows sockets error codes to $! now prefer errno.h values
252 over WSAGetLastError() values
253 In previous versions of Perl, Windows sockets error codes as returned
254 by WSAGetLastError() were assigned to $!, and some constants such as
255 ECONNABORTED, not in errno.h in VC++ (or the various Windows ports of
256 gcc) were defined to corresponding WSAE* values to allow $! to be
257 tested against the E* constants exported by Errno and POSIX.
258
259 This worked well until VC++ 2010 and later, which introduced new E*
260 constants with values > 100 into errno.h, including some being
261 (re)defined by perl to WSAE* values. That caused problems when linking
262 XS code against other libraries which used the original definitions of
263 errno.h constants.
264
265 To avoid this incompatibility, perl now maps WSAE* error codes to E*
266 values where possible, and assigns those values to $!. The E*
267 constants exported by Errno and POSIX are updated to match so that
268 testing $! against them, wherever previously possible, will continue to
269 work as expected, and all E* constants found in errno.h are now
270 exported from those modules with their original errno.h values.
271
272 In order to avoid breakage in existing Perl code which assigns WSAE*
273 values to $!, perl now intercepts the assignment and performs the same
274 mapping to E* values as it uses internally when assigning to $! itself.
275
276 However, one backwards-incompatibility remains: existing Perl code
277 which compares $! against the numeric values of the WSAE* error codes
278 that were previously assigned to $! will now be broken in those cases
279 where a corresponding E* value has been assigned instead. This is only
280 an issue for those E* values < 100, which were always exported from
281 Errno and POSIX with their original errno.h values, and therefore could
282 not be used for WSAE* error code tests (e.g. WSAEINVAL is 10022, but
283 the corresponding EINVAL is 22). (E* values > 100, if present, were
284 redefined to WSAE* values anyway, so compatibility can be achieved by
285 using the E* constants, which will work both before and after this
286 change, albeit using different numeric values under the hood.)
287
288 Functions "PerlIO_vsprintf" and "PerlIO_sprintf" have been removed
289 These two functions, undocumented, unused in CPAN, and problematic,
290 have been removed.
291
293 The "/\C/" character class
294 The "/\C/" regular expression character class is deprecated. From perl
295 5.22 onwards it will generate a warning, and from perl 5.24 onwards it
296 will be a regular expression compiler error. If you need to examine the
297 individual bytes that make up a UTF8-encoded character, then use
298 "utf8::encode()" on the string (or a copy) first.
299
300 Literal control characters in variable names
301 This deprecation affects things like $\cT, where \cT is a literal
302 control (such as a "NAK" or "NEGATIVE ACKNOWLEDGE" character) in the
303 source code. Surprisingly, it appears that originally this was
304 intended as the canonical way of accessing variables like $^T, with the
305 caret form only being added as an alternative.
306
307 The literal control form is being deprecated for two main reasons. It
308 has what are likely unfixable bugs, such as $\cI not working as an
309 alias for $^I, and their usage not being portable to non-ASCII
310 platforms: While $^T will work everywhere, \cT is whitespace in EBCDIC.
311 [perl #119123]
312
313 References to non-integers and non-positive integers in $/
314 Setting $/ to a reference to zero or a reference to a negative integer
315 is now deprecated, and will behave exactly as though it was set to
316 "undef". If you want slurp behavior set $/ to "undef" explicitly.
317
318 Setting $/ to a reference to a non integer is now forbidden and will
319 throw an error. Perl has never documented what would happen in this
320 context and while it used to behave the same as setting $/ to the
321 address of the references in future it may behave differently, so we
322 have forbidden this usage.
323
324 Character matching routines in POSIX
325 Use of any of these functions in the "POSIX" module is now deprecated:
326 "isalnum", "isalpha", "iscntrl", "isdigit", "isgraph", "islower",
327 "isprint", "ispunct", "isspace", "isupper", and "isxdigit". The
328 functions are buggy and don't work on UTF-8 encoded strings. See their
329 entries in POSIX for more information.
330
331 A warning is raised on the first call to any of them from each place in
332 the code that they are called. (Hence a repeated statement in a loop
333 will raise just the one warning.)
334
335 Interpreter-based threads are now discouraged
336 The "interpreter-based threads" provided by Perl are not the fast,
337 lightweight system for multitasking that one might expect or hope for.
338 Threads are implemented in a way that make them easy to misuse. Few
339 people know how to use them correctly or will be able to provide help.
340
341 The use of interpreter-based threads in perl is officially discouraged.
342
343 Module removals
344 The following modules will be removed from the core distribution in a
345 future release, and will at that time need to be installed from CPAN.
346 Distributions on CPAN which require these modules will need to list
347 them as prerequisites.
348
349 The core versions of these modules will now issue "deprecated"-category
350 warnings to alert you to this fact. To silence these deprecation
351 warnings, install the modules in question from CPAN.
352
353 Note that the planned removal of these modules from core does not
354 reflect a judgement about the quality of the code and should not be
355 taken as a suggestion that their use be halted. Their disinclusion
356 from core primarily hinges on their necessity to bootstrapping a fully
357 functional, CPAN-capable Perl installation, not on concerns over their
358 design.
359
360 CGI and its associated CGI:: packages
361 inc::latest
362 Package::Constants
363 Module::Build and its associated Module::Build:: packages
364
365 Utility removals
366 The following utilities will be removed from the core distribution in a
367 future release, and will at that time need to be installed from CPAN.
368
369 find2perl
370 s2p
371 a2p
372
374 · Perl has a new copy-on-write mechanism that avoids the need to copy
375 the internal string buffer when assigning from one scalar to
376 another. This makes copying large strings appear much faster.
377 Modifying one of the two (or more) strings after an assignment will
378 force a copy internally. This makes it unnecessary to pass strings
379 by reference for efficiency.
380
381 This feature was already available in 5.18.0, but wasn't enabled by
382 default. It is the default now, and so you no longer need build
383 perl with the Configure argument:
384
385 -Accflags=-DPERL_NEW_COPY_ON_WRITE
386
387 It can be disabled (for now) in a perl build with:
388
389 -Accflags=-DPERL_NO_COW
390
391 On some operating systems Perl can be compiled in such a way that
392 any attempt to modify string buffers shared by multiple SVs will
393 crash. This way XS authors can test that their modules handle
394 copy-on-write scalars correctly. See "Copy on Write" in perlguts
395 for detail.
396
397 · Perl has an optimizer for regular expression patterns. It analyzes
398 the pattern to find things such as the minimum length a string has
399 to be to match, etc. It now better handles code points that are
400 above the Latin1 range.
401
402 · Executing a regex that contains the "^" anchor (or its variant
403 under the "/m" flag) has been made much faster in several
404 situations.
405
406 · Precomputed hash values are now used in more places during method
407 lookup.
408
409 · Constant hash key lookups ($hash{key} as opposed to $hash{$key})
410 have long had the internal hash value computed at compile time, to
411 speed up lookup. This optimisation has only now been applied to
412 hash slices as well.
413
414 · Combined "and" and "or" operators in void context, like those
415 generated for "unless ($a && $b)" and "if ($a || b)" now short
416 circuit directly to the end of the statement. [perl #120128]
417
418 · In certain situations, when "return" is the last statement in a
419 subroutine's main scope, it will be optimized out. This means code
420 like:
421
422 sub baz { return $cat; }
423
424 will now behave like:
425
426 sub baz { $cat; }
427
428 which is notably faster.
429
430 [perl #120765]
431
432 · Code like:
433
434 my $x; # or @x, %x
435 my $y;
436
437 is now optimized to:
438
439 my ($x, $y);
440
441 In combination with the padrange optimization introduced in
442 v5.18.0, this means longer uninitialized my variable statements are
443 also optimized, so:
444
445 my $x; my @y; my %z;
446
447 becomes:
448
449 my ($x, @y, %z);
450
451 [perl #121077]
452
453 · The creation of certain sorts of lists, including array and hash
454 slices, is now faster.
455
456 · The optimisation for arrays indexed with a small constant integer
457 is now applied for integers in the range -128..127, rather than
458 0..255. This should speed up Perl code using expressions like
459 $x[-1], at the expense of (presumably much rarer) code using
460 expressions like $x[200].
461
462 · The first iteration over a large hash (using "keys" or "each") is
463 now faster. This is achieved by preallocating the hash's internal
464 iterator state, rather than lazily creating it when the hash is
465 first iterated. (For small hashes, the iterator is still created
466 only when first needed. The assumption is that small hashes are
467 more likely to be used as objects, and therefore never allocated.
468 For large hashes, that's less likely to be true, and the cost of
469 allocating the iterator is swamped by the cost of allocating space
470 for the hash itself.)
471
472 · When doing a global regex match on a string that came from the
473 "readline" or "<>" operator, the data is no longer copied
474 unnecessarily. [perl #121259]
475
476 · Dereferencing (as in "$obj->[0]" or "$obj->{k}") is now faster when
477 $obj is an instance of a class that has overloaded methods, but
478 doesn't overload any of the dereferencing methods "@{}", "%{}", and
479 so on.
480
481 · Perl's optimiser no longer skips optimising code that follows
482 certain "eval {}" expressions (including those with an apparent
483 infinite loop).
484
485 · The implementation now does a better job of avoiding meaningless
486 work at runtime. Internal effect-free "null" operations (created as
487 a side-effect of parsing Perl programs) are normally deleted during
488 compilation. That deletion is now applied in some situations that
489 weren't previously handled.
490
491 · Perl now does less disk I/O when dealing with Unicode properties
492 that cover up to three ranges of consecutive code points.
493
495 New Modules and Pragmata
496 · experimental 0.007 has been added to the Perl core.
497
498 · IO::Socket::IP 0.29 has been added to the Perl core.
499
500 Updated Modules and Pragmata
501 · Archive::Tar has been upgraded from version 1.90 to 1.96.
502
503 · arybase has been upgraded from version 0.06 to 0.07.
504
505 · Attribute::Handlers has been upgraded from version 0.94 to 0.96.
506
507 · attributes has been upgraded from version 0.21 to 0.22.
508
509 · autodie has been upgraded from version 2.13 to 2.23.
510
511 · AutoLoader has been upgraded from version 5.73 to 5.74.
512
513 · autouse has been upgraded from version 1.07 to 1.08.
514
515 · B has been upgraded from version 1.42 to 1.48.
516
517 · B::Concise has been upgraded from version 0.95 to 0.992.
518
519 · B::Debug has been upgraded from version 1.18 to 1.19.
520
521 · B::Deparse has been upgraded from version 1.20 to 1.26.
522
523 · base has been upgraded from version 2.18 to 2.22.
524
525 · Benchmark has been upgraded from version 1.15 to 1.18.
526
527 · bignum has been upgraded from version 0.33 to 0.37.
528
529 · Carp has been upgraded from version 1.29 to 1.3301.
530
531 · CGI has been upgraded from version 3.63 to 3.65. NOTE: CGI is
532 deprecated and may be removed from a future version of Perl.
533
534 · charnames has been upgraded from version 1.36 to 1.40.
535
536 · Class::Struct has been upgraded from version 0.64 to 0.65.
537
538 · Compress::Raw::Bzip2 has been upgraded from version 2.060 to 2.064.
539
540 · Compress::Raw::Zlib has been upgraded from version 2.060 to 2.065.
541
542 · Config::Perl::V has been upgraded from version 0.17 to 0.20.
543
544 · constant has been upgraded from version 1.27 to 1.31.
545
546 · CPAN has been upgraded from version 2.00 to 2.05.
547
548 · CPAN::Meta has been upgraded from version 2.120921 to 2.140640.
549
550 · CPAN::Meta::Requirements has been upgraded from version 2.122 to
551 2.125.
552
553 · CPAN::Meta::YAML has been upgraded from version 0.008 to 0.012.
554
555 · Data::Dumper has been upgraded from version 2.145 to 2.151.
556
557 · DB has been upgraded from version 1.04 to 1.07.
558
559 · DB_File has been upgraded from version 1.827 to 1.831.
560
561 · DBM_Filter has been upgraded from version 0.05 to 0.06.
562
563 · deprecate has been upgraded from version 0.02 to 0.03.
564
565 · Devel::Peek has been upgraded from version 1.11 to 1.16.
566
567 · Devel::PPPort has been upgraded from version 3.20 to 3.21.
568
569 · diagnostics has been upgraded from version 1.31 to 1.34.
570
571 · Digest::MD5 has been upgraded from version 2.52 to 2.53.
572
573 · Digest::SHA has been upgraded from version 5.84 to 5.88.
574
575 · DynaLoader has been upgraded from version 1.18 to 1.25.
576
577 · Encode has been upgraded from version 2.49 to 2.60.
578
579 · encoding has been upgraded from version 2.6_01 to 2.12.
580
581 · English has been upgraded from version 1.06 to 1.09.
582
583 $OLD_PERL_VERSION was added as an alias of $].
584
585 · Errno has been upgraded from version 1.18 to 1.20_03.
586
587 · Exporter has been upgraded from version 5.68 to 5.70.
588
589 · ExtUtils::CBuilder has been upgraded from version 0.280210 to
590 0.280216.
591
592 · ExtUtils::Command has been upgraded from version 1.17 to 1.18.
593
594 · ExtUtils::Embed has been upgraded from version 1.30 to 1.32.
595
596 · ExtUtils::Install has been upgraded from version 1.59 to 1.67.
597
598 · ExtUtils::MakeMaker has been upgraded from version 6.66 to 6.98.
599
600 · ExtUtils::Miniperl has been upgraded from version to 1.01.
601
602 · ExtUtils::ParseXS has been upgraded from version 3.18 to 3.24.
603
604 · ExtUtils::Typemaps has been upgraded from version 3.19 to 3.24.
605
606 · ExtUtils::XSSymSet has been upgraded from version 1.2 to 1.3.
607
608 · feature has been upgraded from version 1.32 to 1.36.
609
610 · fields has been upgraded from version 2.16 to 2.17.
611
612 · File::Basename has been upgraded from version 2.84 to 2.85.
613
614 · File::Copy has been upgraded from version 2.26 to 2.29.
615
616 · File::DosGlob has been upgraded from version 1.10 to 1.12.
617
618 · File::Fetch has been upgraded from version 0.38 to 0.48.
619
620 · File::Find has been upgraded from version 1.23 to 1.27.
621
622 · File::Glob has been upgraded from version 1.20 to 1.23.
623
624 · File::Spec has been upgraded from version 3.40 to 3.47.
625
626 · File::Temp has been upgraded from version 0.23 to 0.2304.
627
628 · FileCache has been upgraded from version 1.08 to 1.09.
629
630 · Filter::Simple has been upgraded from version 0.89 to 0.91.
631
632 · Filter::Util::Call has been upgraded from version 1.45 to 1.49.
633
634 · Getopt::Long has been upgraded from version 2.39 to 2.42.
635
636 · Getopt::Std has been upgraded from version 1.07 to 1.10.
637
638 · Hash::Util::FieldHash has been upgraded from version 1.10 to 1.15.
639
640 · HTTP::Tiny has been upgraded from version 0.025 to 0.043.
641
642 · I18N::Langinfo has been upgraded from version 0.10 to 0.11.
643
644 · I18N::LangTags has been upgraded from version 0.39 to 0.40.
645
646 · if has been upgraded from version 0.0602 to 0.0603.
647
648 · inc::latest has been upgraded from version 0.4003 to 0.4205. NOTE:
649 inc::latest is deprecated and may be removed from a future version
650 of Perl.
651
652 · integer has been upgraded from version 1.00 to 1.01.
653
654 · IO has been upgraded from version 1.28 to 1.31.
655
656 · IO::Compress::Gzip and friends have been upgraded from version
657 2.060 to 2.064.
658
659 · IPC::Cmd has been upgraded from version 0.80 to 0.92.
660
661 · IPC::Open3 has been upgraded from version 1.13 to 1.16.
662
663 · IPC::SysV has been upgraded from version 2.03 to 2.04.
664
665 · JSON::PP has been upgraded from version 2.27202 to 2.27203.
666
667 · List::Util has been upgraded from version 1.27 to 1.38.
668
669 · locale has been upgraded from version 1.02 to 1.03.
670
671 · Locale::Codes has been upgraded from version 3.25 to 3.30.
672
673 · Locale::Maketext has been upgraded from version 1.23 to 1.25.
674
675 · Math::BigInt has been upgraded from version 1.9991 to 1.9993.
676
677 · Math::BigInt::FastCalc has been upgraded from version 0.30 to 0.31.
678
679 · Math::BigRat has been upgraded from version 0.2604 to 0.2606.
680
681 · MIME::Base64 has been upgraded from version 3.13 to 3.14.
682
683 · Module::Build has been upgraded from version 0.4003 to 0.4205.
684 NOTE: Module::Build is deprecated and may be removed from a future
685 version of Perl.
686
687 · Module::CoreList has been upgraded from version 2.89 to 3.10.
688
689 · Module::Load has been upgraded from version 0.24 to 0.32.
690
691 · Module::Load::Conditional has been upgraded from version 0.54 to
692 0.62.
693
694 · Module::Metadata has been upgraded from version 1.000011 to
695 1.000019.
696
697 · mro has been upgraded from version 1.11 to 1.16.
698
699 · Net::Ping has been upgraded from version 2.41 to 2.43.
700
701 · Opcode has been upgraded from version 1.25 to 1.27.
702
703 · Package::Constants has been upgraded from version 0.02 to 0.04.
704 NOTE: Package::Constants is deprecated and may be removed from a
705 future version of Perl.
706
707 · Params::Check has been upgraded from version 0.36 to 0.38.
708
709 · parent has been upgraded from version 0.225 to 0.228.
710
711 · Parse::CPAN::Meta has been upgraded from version 1.4404 to 1.4414.
712
713 · Perl::OSType has been upgraded from version 1.003 to 1.007.
714
715 · perlfaq has been upgraded from version 5.0150042 to 5.0150044.
716
717 · PerlIO has been upgraded from version 1.07 to 1.09.
718
719 · PerlIO::encoding has been upgraded from version 0.16 to 0.18.
720
721 · PerlIO::scalar has been upgraded from version 0.16 to 0.18.
722
723 · PerlIO::via has been upgraded from version 0.12 to 0.14.
724
725 · Pod::Escapes has been upgraded from version 1.04 to 1.06.
726
727 · Pod::Functions has been upgraded from version 1.06 to 1.08.
728
729 · Pod::Html has been upgraded from version 1.18 to 1.21.
730
731 · Pod::Parser has been upgraded from version 1.60 to 1.62.
732
733 · Pod::Perldoc has been upgraded from version 3.19 to 3.23.
734
735 · Pod::Usage has been upgraded from version 1.61 to 1.63.
736
737 · POSIX has been upgraded from version 1.32 to 1.38_03.
738
739 · re has been upgraded from version 0.23 to 0.26.
740
741 · Safe has been upgraded from version 2.35 to 2.37.
742
743 · Scalar::Util has been upgraded from version 1.27 to 1.38.
744
745 · SDBM_File has been upgraded from version 1.09 to 1.11.
746
747 · Socket has been upgraded from version 2.009 to 2.013.
748
749 · Storable has been upgraded from version 2.41 to 2.49.
750
751 · strict has been upgraded from version 1.07 to 1.08.
752
753 · subs has been upgraded from version 1.01 to 1.02.
754
755 · Sys::Hostname has been upgraded from version 1.17 to 1.18.
756
757 · Sys::Syslog has been upgraded from version 0.32 to 0.33.
758
759 · Term::Cap has been upgraded from version 1.13 to 1.15.
760
761 · Term::ReadLine has been upgraded from version 1.12 to 1.14.
762
763 · Test::Harness has been upgraded from version 3.26 to 3.30.
764
765 · Test::Simple has been upgraded from version 0.98 to 1.001002.
766
767 · Text::ParseWords has been upgraded from version 3.28 to 3.29.
768
769 · Text::Tabs has been upgraded from version 2012.0818 to 2013.0523.
770
771 · Text::Wrap has been upgraded from version 2012.0818 to 2013.0523.
772
773 · Thread has been upgraded from version 3.02 to 3.04.
774
775 · Thread::Queue has been upgraded from version 3.02 to 3.05.
776
777 · threads has been upgraded from version 1.86 to 1.93.
778
779 · threads::shared has been upgraded from version 1.43 to 1.46.
780
781 · Tie::Array has been upgraded from version 1.05 to 1.06.
782
783 · Tie::File has been upgraded from version 0.99 to 1.00.
784
785 · Tie::Hash has been upgraded from version 1.04 to 1.05.
786
787 · Tie::Scalar has been upgraded from version 1.02 to 1.03.
788
789 · Tie::StdHandle has been upgraded from version 4.3 to 4.4.
790
791 · Time::HiRes has been upgraded from version 1.9725 to 1.9726.
792
793 · Time::Piece has been upgraded from version 1.20_01 to 1.27.
794
795 · Unicode::Collate has been upgraded from version 0.97 to 1.04.
796
797 · Unicode::Normalize has been upgraded from version 1.16 to 1.17.
798
799 · Unicode::UCD has been upgraded from version 0.51 to 0.57.
800
801 · utf8 has been upgraded from version 1.10 to 1.13.
802
803 · version has been upgraded from version 0.9902 to 0.9908.
804
805 · vmsish has been upgraded from version 1.03 to 1.04.
806
807 · warnings has been upgraded from version 1.18 to 1.23.
808
809 · Win32 has been upgraded from version 0.47 to 0.49.
810
811 · XS::Typemap has been upgraded from version 0.10 to 0.13.
812
813 · XSLoader has been upgraded from version 0.16 to 0.17.
814
816 New Documentation
817 perlrepository
818
819 This document was removed (actually, renamed perlgit and given a major
820 overhaul) in Perl v5.14, causing Perl documentation websites to show
821 the now out of date version in Perl v5.12 as the latest version. It
822 has now been restored in stub form, directing readers to current
823 information.
824
825 Changes to Existing Documentation
826 perldata
827
828 · New sections have been added to document the new index/value array
829 slice and key/value hash slice syntax.
830
831 perldebguts
832
833 · The "DB::goto" and "DB::lsub" debugger subroutines are now
834 documented. [perl #77680]
835
836 perlexperiment
837
838 · "\s" matching "\cK" is marked experimental.
839
840 · ithreads were accepted in v5.8.0 (but are discouraged as of
841 v5.20.0).
842
843 · Long doubles are not considered experimental.
844
845 · Code in regular expressions, regular expression backtracking verbs,
846 and lvalue subroutines are no longer listed as experimental. (This
847 also affects perlre and perlsub.)
848
849 perlfunc
850
851 · "chop" and "chomp" now note that they can reset the hash iterator.
852
853 · "exec"'s handling of arguments is now more clearly documented.
854
855 · "eval EXPR" now has caveats about expanding floating point numbers
856 in some locales.
857
858 · "goto EXPR" is now documented to handle an expression that evalutes
859 to a code reference as if it was "goto &$coderef". This behavior
860 is at least ten years old.
861
862 · Since Perl v5.10, it has been possible for subroutines in @INC to
863 return a reference to a scalar holding initial source code to
864 prepend to the file. This is now documented.
865
866 · The documentation of "ref" has been updated to recommend the use of
867 "blessed", "isa" and "reftype" when dealing with references to
868 blessed objects.
869
870 perlguts
871
872 · Numerous minor changes have been made to reflect changes made to
873 the perl internals in this release.
874
875 · New sections on Read-Only Values and Copy on Write have been added.
876
877 perlhack
878
879 · The Super Quick Patch Guide section has been updated.
880
881 perlhacktips
882
883 · The documentation has been updated to include some more examples of
884 "gdb" usage.
885
886 perllexwarn
887
888 · The perllexwarn documentation used to describe the hierarchy of
889 warning categories understood by the warnings pragma. That
890 description has now been moved to the warnings documentation
891 itself, leaving perllexwarn as a stub that points to it. This
892 change consolidates all documentation for lexical warnings in a
893 single place.
894
895 perllocale
896
897 · The documentation now mentions fc() and "\F", and includes many
898 clarifications and corrections in general.
899
900 perlop
901
902 · The language design of Perl has always called for monomorphic
903 operators. This is now mentioned explicitly.
904
905 perlopentut
906
907 · The "open" tutorial has been completely rewritten by Tom
908 Christiansen, and now focuses on covering only the basics, rather
909 than providing a comprehensive reference to all things openable.
910 This rewrite came as the result of a vigorous discussion on
911 perl5-porters kicked off by a set of improvements written by
912 Alexander Hartmaier to the existing perlopentut. A "more than you
913 ever wanted to know about "open"" document may follow in subsequent
914 versions of perl.
915
916 perlre
917
918 · The fact that the regexp engine makes no effort to call (?{}) and
919 (??{}) constructs any specified number of times (although it will
920 basically DWIM in case of a successful match) has been documented.
921
922 · The "/r" modifier (for non-destructive substitution) is now
923 documented. [perl #119151]
924
925 · The documentation for "/x" and "(?# comment)" has been expanded and
926 clarified.
927
928 perlreguts
929
930 · The documentation has been updated in the light of recent changes
931 to regcomp.c.
932
933 perlsub
934
935 · The need to predeclare recursive functions with prototypes in order
936 for the prototype to be honoured in the recursive call is now
937 documented. [perl #2726]
938
939 · A list of subroutine names used by the perl implementation is now
940 included. [perl #77680]
941
942 perltrap
943
944 · There is now a JavaScript section.
945
946 perlunicode
947
948 · The documentation has been updated to reflect "Bidi_Class" changes
949 in Unicode 6.3.
950
951 perlvar
952
953 · A new section explaining the performance issues of $`, $& and $',
954 including workarounds and changes in different versions of Perl,
955 has been added.
956
957 · Three English variable names which have long been documented but do
958 not actually exist have been removed from the documentation. These
959 were $OLD_PERL_VERSION, $OFMT, and $ARRAY_BASE.
960
961 (Actually, "OLD_PERL_VERSION" does exist, starting with this
962 revision, but remained undocumented until perl 5.22.0.)
963
964 perlxs
965
966 · Several problems in the "MY_CXT" example have been fixed.
967
969 The following additions or changes have been made to diagnostic output,
970 including warnings and fatal error messages. For the complete list of
971 diagnostic messages, see perldiag.
972
973 New Diagnostics
974 New Errors
975
976 · delete argument is index/value array slice, use array slice
977
978 (F) You used index/value array slice syntax (%array[...]) as the
979 argument to "delete". You probably meant @array[...] with an @
980 symbol instead.
981
982 · delete argument is key/value hash slice, use hash slice
983
984 (F) You used key/value hash slice syntax (%hash{...}) as the
985 argument to "delete". You probably meant @hash{...} with an @
986 symbol instead.
987
988 · Magical list constants are not supported
989
990 (F) You assigned a magical array to a stash element, and then tried
991 to use the subroutine from the same slot. You are asking Perl to
992 do something it cannot do, details subject to change between Perl
993 versions.
994
995 · Added Setting $/ to a %s reference is forbidden
996
997 New Warnings
998
999 · %s on reference is experimental:
1000
1001 The "auto-deref" feature is experimental.
1002
1003 Starting in v5.14.0, it was possible to use push, pop, keys, and
1004 other built-in functions not only on aggregate types, but on
1005 references to them. The feature was not deployed to its original
1006 intended specification, and now may become redundant to postfix
1007 dereferencing. It has always been categorized as an experimental
1008 feature, and in v5.20.0 is carries a warning as such.
1009
1010 Warnings will now be issued at compile time when these operations
1011 are detected.
1012
1013 no if $] >= 5.01908, warnings => "experimental::autoderef";
1014
1015 Consider, though, replacing the use of these features, as they may
1016 change behavior again before becoming stable.
1017
1018 · A sequence of multiple spaces in a charnames alias definition is
1019 deprecated
1020
1021 Trailing white-space in a charnames alias definition is deprecated
1022
1023 These two deprecation warnings involving "\N{...}" were incorrectly
1024 implemented. They did not warn by default (now they do) and could
1025 not be made fatal via "use warnings FATAL => 'deprecated'" (now
1026 they can).
1027
1028 · Attribute prototype(%s) discards earlier prototype attribute in
1029 same sub
1030
1031 (W misc) A sub was declared as "sub foo : prototype(A) :
1032 prototype(B) {}", for example. Since each sub can only have one
1033 prototype, the earlier declaration(s) are discarded while the last
1034 one is applied.
1035
1036 · Invalid \0 character in %s for %s: %s\0%s
1037
1038 (W syscalls) Embedded \0 characters in pathnames or other system
1039 call arguments produce a warning as of 5.20. The parts after the
1040 \0 were formerly ignored by system calls.
1041
1042 · Matched non-Unicode code point 0x%X against Unicode property; may
1043 not be portable.
1044
1045 This replaces the message "Code point 0x%X is not Unicode, all \p{}
1046 matches fail; all \P{} matches succeed".
1047
1048 · Missing ']' in prototype for %s : %s
1049
1050 (W illegalproto) A grouping was started with "[" but never closed
1051 with "]".
1052
1053 · Possible precedence issue with control flow operator
1054
1055 (W syntax) There is a possible problem with the mixing of a control
1056 flow operator (e.g. "return") and a low-precedence operator like
1057 "or". Consider:
1058
1059 sub { return $a or $b; }
1060
1061 This is parsed as:
1062
1063 sub { (return $a) or $b; }
1064
1065 Which is effectively just:
1066
1067 sub { return $a; }
1068
1069 Either use parentheses or the high-precedence variant of the
1070 operator.
1071
1072 Note this may be also triggered for constructs like:
1073
1074 sub { 1 if die; }
1075
1076 · Postfix dereference is experimental
1077
1078 (S experimental::postderef) This warning is emitted if you use the
1079 experimental postfix dereference syntax. Simply suppress the
1080 warning if you want to use the feature, but know that in doing so
1081 you are taking the risk of using an experimental feature which may
1082 change or be removed in a future Perl version:
1083
1084 no warnings "experimental::postderef";
1085 use feature "postderef", "postderef_qq";
1086 $ref->$*;
1087 $aref->@*;
1088 $aref->@[@indices];
1089 ... etc ...
1090
1091 · Prototype '%s' overridden by attribute 'prototype(%s)' in %s
1092
1093 (W prototype) A prototype was declared in both the parentheses
1094 after the sub name and via the prototype attribute. The prototype
1095 in parentheses is useless, since it will be replaced by the
1096 prototype from the attribute before it's ever used.
1097
1098 · Scalar value @%s[%s] better written as $%s[%s]
1099
1100 (W syntax) In scalar context, you've used an array index/value
1101 slice (indicated by %) to select a single element of an array.
1102 Generally it's better to ask for a scalar value (indicated by $).
1103 The difference is that $foo[&bar] always behaves like a scalar,
1104 both in the value it returns and when evaluating its argument,
1105 while %foo[&bar] provides a list context to its subscript, which
1106 can do weird things if you're expecting only one subscript. When
1107 called in list context, it also returns the index (what &bar
1108 returns) in addition to the value.
1109
1110 · Scalar value @%s{%s} better written as $%s{%s}
1111
1112 (W syntax) In scalar context, you've used a hash key/value slice
1113 (indicated by %) to select a single element of a hash. Generally
1114 it's better to ask for a scalar value (indicated by $). The
1115 difference is that $foo{&bar} always behaves like a scalar, both in
1116 the value it returns and when evaluating its argument, while
1117 @foo{&bar} and provides a list context to its subscript, which can
1118 do weird things if you're expecting only one subscript. When
1119 called in list context, it also returns the key in addition to the
1120 value.
1121
1122 · Setting $/ to a reference to %s as a form of slurp is deprecated,
1123 treating as undef
1124
1125 · Unexpected exit %u
1126
1127 (S) exit() was called or the script otherwise finished gracefully
1128 when "PERL_EXIT_WARN" was set in "PL_exit_flags".
1129
1130 · Unexpected exit failure %d
1131
1132 (S) An uncaught die() was called when "PERL_EXIT_WARN" was set in
1133 "PL_exit_flags".
1134
1135 · Use of literal control characters in variable names is deprecated
1136
1137 (D deprecated) Using literal control characters in the source to
1138 refer to the ^FOO variables, like $^X and ${^GLOBAL_PHASE} is now
1139 deprecated. This only affects code like $\cT, where \cT is a
1140 control (like a "SOH") in the source code: ${"\cT"} and $^T remain
1141 valid.
1142
1143 · Useless use of greediness modifier
1144
1145 This fixes [Perl #42957].
1146
1147 Changes to Existing Diagnostics
1148 · Warnings and errors from the regexp engine are now UTF-8 clean.
1149
1150 · The "Unknown switch condition" error message has some slight
1151 changes. This error triggers when there is an unknown condition in
1152 a "(?(foo))" conditional. The error message used to read:
1153
1154 Unknown switch condition (?(%s in regex;
1155
1156 But what %s could be was mostly up to luck. For "(?(foobar))", you
1157 might have seen "fo" or "f". For Unicode characters, you would
1158 generally get a corrupted string. The message has been changed to
1159 read:
1160
1161 Unknown switch condition (?(...)) in regex;
1162
1163 Additionally, the '<-- HERE' marker in the error will now point to
1164 the correct spot in the regex.
1165
1166 · The "%s "\x%X" does not map to Unicode" warning is now correctly
1167 listed as a severe warning rather than as a fatal error.
1168
1169 · Under rare circumstances, one could get a "Can't coerce readonly
1170 REF to string" instead of the customary "Modification of a read-
1171 only value". This alternate error message has been removed.
1172
1173 · "Ambiguous use of * resolved as operator *": This and similar
1174 warnings about "%" and "&" used to occur in some circumstances
1175 where there was no operator of the type cited, so the warning was
1176 completely wrong. This has been fixed [perl #117535, #76910].
1177
1178 · Warnings about malformed subroutine prototypes are now more
1179 consistent in how the prototypes are rendered. Some of these
1180 warnings would truncate prototypes containing nulls. In other
1181 cases one warning would suppress another. The warning about
1182 illegal characters in prototypes no longer says "after '_'" if the
1183 bad character came before the underscore.
1184
1185 · Perl folding rules are not up-to-date for 0x%X; please use the
1186 perlbug utility to report; in regex; marked by <-- HERE in m/%s/
1187
1188 This message is now only in the regexp category, and not in the
1189 deprecated category. It is still a default (i.e., severe) warning
1190 [perl #89648].
1191
1192 · %%s[%s] in scalar context better written as $%s[%s]
1193
1194 This warning now occurs for any %array[$index] or %hash{key} known
1195 to be in scalar context at compile time. Previously it was worded
1196 "Scalar value %%s[%s] better written as $%s[%s]".
1197
1198 · Switch condition not recognized in regex; marked by <-- HERE in
1199 m/%s/:
1200
1201 The description for this diagnostic has been extended to cover all
1202 cases where the warning may occur. Issues with the positioning of
1203 the arrow indicator have also been resolved.
1204
1205 · The error messages for "my($a?$b$c)" and "my(do{})" now mention
1206 "conditional expression" and "do block", respectively, instead of
1207 reading 'Can't declare null operation in "my"'.
1208
1209 · When "use re "debug"" executes a regex containing a backreference,
1210 the debugging output now shows what string is being matched.
1211
1212 · The now fatal error message "Character following "\c" must be
1213 ASCII" has been reworded as "Character following "\c" must be
1214 printable ASCII" to emphasize that in "\cX", X must be a printable
1215 (non-control) ASCII character.
1216
1218 a2p
1219
1220 · A possible crash from an off-by-one error when trying to access
1221 before the beginning of a buffer has been fixed. [perl #120244]
1222
1223 bisect.pl
1224
1225 The git bisection tool Porting/bisect.pl has had many enhancements.
1226
1227 It is provided as part of the source distribution but not installed
1228 because it is not self-contained as it relies on being run from within
1229 a git checkout. Note also that it makes no attempt to fix tests,
1230 correct runtime bugs or make something useful to install - its purpose
1231 is to make minimal changes to get any historical revision of interest
1232 to build and run as close as possible to "as-was", and thereby make
1233 "git bisect" easy to use.
1234
1235 · Can optionally run the test case with a timeout.
1236
1237 · Can now run in-place in a clean git checkout.
1238
1239 · Can run the test case under "valgrind".
1240
1241 · Can apply user supplied patches and fixes to the source checkout
1242 before building.
1243
1244 · Now has fixups to enable building several more historical ranges of
1245 bleadperl, which can be useful for pinpointing the origins of bugs
1246 or behaviour changes.
1247
1248 find2perl
1249
1250 · find2perl now handles "?" wildcards correctly. [perl #113054]
1251
1252 perlbug
1253
1254 · perlbug now has a "-p" option for attaching patches with a bug
1255 report.
1256
1257 · perlbug has been modified to supply the report template with CRLF
1258 line endings on Windows. [perl #121277
1259 <https://rt.perl.org/Public/Bug/Display.html?id=121277>]
1260
1261 · perlbug now makes as few assumptions as possible about the encoding
1262 of the report. This will likely change in the future to assume
1263 UTF-8 by default but allow a user override.
1264
1266 · The Makefile.PL for SDBM_File now generates a better Makefile,
1267 which avoids a race condition during parallel makes, which could
1268 cause the build to fail. This is the last known parallel make
1269 problem (on *nix platforms), and therefore we believe that a
1270 parallel make should now always be error free.
1271
1272 · installperl and installman's option handling has been refactored to
1273 use Getopt::Long. Both are used by the Makefile "install" targets,
1274 and are not installed, so these changes are only likely to affect
1275 custom installation scripts.
1276
1277 · Single letter options now also have long names.
1278
1279 · Invalid options are now rejected.
1280
1281 · Command line arguments that are not options are now rejected.
1282
1283 · Each now has a "--help" option to display the usage message.
1284
1285 The behaviour for all valid documented invocations is unchanged.
1286
1287 · Where possible, the build now avoids recursive invocations of make
1288 when building pure-Perl extensions, without removing any
1289 parallelism from the build. Currently around 80 extensions can be
1290 processed directly by the make_ext.pl tool, meaning that 80
1291 invocations of make and 160 invocations of miniperl are no longer
1292 made.
1293
1294 · The build system now works correctly when compiling under GCC or
1295 Clang with link-time optimization enabled (the "-flto" option).
1296 [perl #113022]
1297
1298 · Distinct library basenames with "d_libname_unique".
1299
1300 When compiling perl with this option, the library files for XS
1301 modules are named something "unique" -- for example,
1302 Hash/Util/Util.so becomes Hash/Util/PL_Hash__Util.so. This
1303 behavior is similar to what currently happens on VMS, and serves as
1304 groundwork for the Android port.
1305
1306 · "sysroot" option to indicate the logical root directory under gcc
1307 and clang.
1308
1309 When building with this option set, both Configure and the
1310 compilers search for all headers and libraries under this new
1311 sysroot, instead of /.
1312
1313 This is a huge time saver if cross-compiling, but can also help on
1314 native builds if your toolchain's files have non-standard
1315 locations.
1316
1317 · The cross-compilation model has been renovated. There's several
1318 new options, and some backwards-incompatible changes:
1319
1320 We now build binaries for miniperl and generate_uudmap to be used
1321 on the host, rather than running every miniperl call on the target;
1322 this means that, short of 'make test', we no longer need access to
1323 the target system once Configure is done. You can provide already-
1324 built binaries through the "hostperl" and "hostgenerate" options to
1325 Configure.
1326
1327 Additionally, if targeting an EBCDIC platform from an ASCII host,
1328 or viceversa, you'll need to run Configure with "-Uhostgenerate",
1329 to indicate that generate_uudmap should be run on the target.
1330
1331 Finally, there's also a way of having Configure end early, right
1332 after building the host binaries, by cross-compiling without
1333 specifying a "targethost".
1334
1335 The incompatible changes include no longer using xconfig.h, xlib,
1336 or Cross.pm, so canned config files and Makefiles will have to be
1337 updated.
1338
1339 · Related to the above, there is now a way of specifying the location
1340 of sh (or equivalent) on the target system: "targetsh".
1341
1342 For example, Android has its sh in /system/bin/sh, so if cross-
1343 compiling from a more normal Unixy system with sh in /bin/sh,
1344 "targetsh" would end up as /system/bin/sh, and "sh" as /bin/sh.
1345
1346 · By default, gcc 4.9 does some optimizations that break perl. The
1347 -fwrapv option disables those optimizations (and probably others),
1348 so for gcc 4.3 and later (since the there might be similar problems
1349 lurking on older versions too, but -fwrapv was broken before 4.3,
1350 and the optimizations probably won't go away), Configure now adds
1351 -fwrapv unless the user requests -fno-wrapv, which disables
1352 -fwrapv, or -fsanitize=undefined, which turns the overflows -fwrapv
1353 ignores into runtime errors. [perl #121505
1354 <https://rt.perl.org/Public/Bug/Display.html?id=121505>]
1355
1357 · The "test.valgrind" make target now allows tests to be run in
1358 parallel. This target allows Perl's test suite to be run under
1359 Valgrind, which detects certain sorts of C programming errors,
1360 though at significant cost in running time. On suitable hardware,
1361 allowing parallel execution claws back a lot of that additional
1362 cost. [perl #121431]
1363
1364 · Various tests in t/porting/ are no longer skipped when the perl
1365 .git directory is outside the perl tree and pointed to by $GIT_DIR.
1366 [perl #120505]
1367
1368 · The test suite no longer fails when the user's interactive shell
1369 maintains a $PWD environment variable, but the /bin/sh used for
1370 running tests doesn't.
1371
1373 New Platforms
1374 Android
1375 Perl can now be built for Android, either natively or through
1376 cross-compilation, for all three currently available architectures
1377 (ARM, MIPS, and x86), on a wide range of versions.
1378
1379 Bitrig
1380 Compile support has been added for Bitrig, a fork of OpenBSD.
1381
1382 FreeMiNT
1383 Support has been added for FreeMiNT, a free open-source OS for the
1384 Atari ST system and its successors, based on the original MiNT that
1385 was officially adopted by Atari.
1386
1387 Synology
1388 Synology ships its NAS boxes with a lean Linux distribution (DSM)
1389 on relative cheap CPU's (like the Marvell Kirkwood mv6282 -
1390 ARMv5tel or Freescale QorIQ P1022 ppc - e500v2) not meant for
1391 workstations or development. These boxes should build now. The
1392 basic problems are the non-standard location for tools.
1393
1394 Discontinued Platforms
1395 "sfio"
1396 Code related to supporting the "sfio" I/O system has been removed.
1397
1398 Perl 5.004 added support to use the native API of "sfio", AT&T's
1399 Safe/Fast I/O library. This code still built with v5.8.0, albeit
1400 with many regression tests failing, but was inadvertently broken
1401 before the v5.8.1 release, meaning that it has not worked on any
1402 version of Perl released since then. In over a decade we have
1403 received no bug reports about this, hence it is clear that no-one
1404 is using this functionality on any version of Perl that is still
1405 supported to any degree.
1406
1407 AT&T 3b1
1408 Configure support for the 3b1, also known as the AT&T Unix PC (and
1409 the similar AT&T 7300), has been removed.
1410
1411 DG/UX
1412 DG/UX was a Unix sold by Data General. The last release was in
1413 April 2001. It only runs on Data General's own hardware.
1414
1415 EBCDIC
1416 In the absence of a regular source of smoke reports, code intended
1417 to support native EBCDIC platforms will be removed from perl before
1418 5.22.0.
1419
1420 Platform-Specific Notes
1421 Cygwin
1422 · recv() on a connected handle would populate the returned sender
1423 address with whatever happened to be in the working buffer.
1424 recv() now uses a workaround similar to the Win32 recv()
1425 wrapper and returns an empty string when recvfrom(2) doesn't
1426 modify the supplied address length. [perl #118843]
1427
1428 · Fixed a build error in cygwin.c on Cygwin 1.7.28.
1429
1430 Tests now handle the errors that occur when "cygserver" isn't
1431 running.
1432
1433 GNU/Hurd
1434 The BSD compatibility library "libbsd" is no longer required for
1435 builds.
1436
1437 Linux
1438 The hints file now looks for "libgdbm_compat" only if "libgdbm"
1439 itself is also wanted. The former is never useful without the
1440 latter, and in some circumstances, including it could actually
1441 prevent building.
1442
1443 Mac OS
1444 The build system now honors an "ld" setting supplied by the user
1445 running Configure.
1446
1447 MidnightBSD
1448 "objformat" was removed from version 0.4-RELEASE of MidnightBSD and
1449 had been deprecated on earlier versions. This caused the build
1450 environment to be erroneously configured for "a.out" rather than
1451 "elf". This has been now been corrected.
1452
1453 Mixed-endian platforms
1454 The code supporting "pack" and "unpack" operations on mixed endian
1455 platforms has been removed. We believe that Perl has long been
1456 unable to build on mixed endian architectures (such as PDP-11s), so
1457 we don't think that this change will affect any platforms which
1458 were able to build v5.18.0.
1459
1460 VMS
1461 · The "PERL_ENV_TABLES" feature to control the population of %ENV
1462 at perl start-up was broken in Perl 5.16.0 but has now been
1463 fixed.
1464
1465 · Skip access checks on remotes in opendir(). [perl #121002]
1466
1467 · A check for glob metacharacters in a path returned by the
1468 "glob()" operator has been replaced with a check for VMS
1469 wildcard characters. This saves a significant number of
1470 unnecessary "lstat()" calls such that some simple glob
1471 operations become 60-80% faster.
1472
1473 Win32
1474 · "rename" and "link" on Win32 now set $! to ENOSPC and EDQUOT
1475 when appropriate. [perl #119857]
1476
1477 · The BUILD_STATIC and ALL_STATIC makefile options for linking
1478 some or (nearly) all extensions statically (into perl520.dll,
1479 and into a separate perl-static.exe too) were broken for MinGW
1480 builds. This has now been fixed.
1481
1482 The ALL_STATIC option has also been improved to include the
1483 Encode and Win32 extensions (for both VC++ and MinGW builds).
1484
1485 · Support for building with Visual C++ 2013 has been added.
1486 There are currently two possible test failures (see "Testing
1487 Perl on Windows" in perlwin32) which will hopefully be resolved
1488 soon.
1489
1490 · Experimental support for building with Intel C++ Compiler has
1491 been added. The nmake makefile (win32/Makefile) and the dmake
1492 makefile (win32/makefile.mk) can be used. A "nmake test" will
1493 not pass at this time due to cpan/CGI/t/url.t.
1494
1495 · Killing a process tree with "kill" in perlfunc and a negative
1496 signal, was broken starting in 5.18.0. In this bug, "kill"
1497 always returned 0 for a negative signal even for valid PIDs,
1498 and no processes were terminated. This has been fixed [perl
1499 #121230].
1500
1501 · The time taken to build perl on Windows has been reduced quite
1502 significantly (time savings in the region of 30-40% are
1503 typically seen) by reducing the number of, usually failing, I/O
1504 calls for each "require()" (for miniperl.exe only). [perl
1505 #121119
1506 <https://rt.perl.org/Public/Bug/Display.html?id=121119>]
1507
1508 · About 15 minutes of idle sleeping was removed from running
1509 "make test" due to a bug in which the timeout monitor used for
1510 tests could not be cancelled once the test completes, and the
1511 full timeout period elapsed before running the next test file.
1512 [perl #121395
1513 <https://rt.perl.org/Public/Bug/Display.html?id=121395>]
1514
1515 · On a perl built without pseudo-fork (pseudo-fork builds were
1516 not affected by this bug), killing a process tree with "kill()"
1517 and a negative signal resulted in "kill()" inverting the
1518 returned value. For example, if "kill()" killed 1 process tree
1519 PID then it returned 0 instead of 1, and if "kill()" was passed
1520 2 invalid PIDs then it returned 2 instead of 0. This has
1521 probably been the case since the process tree kill feature was
1522 implemented on Win32. It has now been corrected to follow the
1523 documented behaviour. [perl #121230
1524 <https://rt.perl.org/Public/Bug/Display.html?id=121230>]
1525
1526 · When building a 64-bit perl, an uninitialized memory read in
1527 miniperl.exe, used during the build process, could lead to a
1528 4GB wperl.exe being created. This has now been fixed. (Note
1529 that perl.exe itself was unaffected, but obviously wperl.exe
1530 would have been completely broken.) [perl #121471
1531 <https://rt.perl.org/Public/Bug/Display.html?id=121471>]
1532
1533 · Perl can now be built with gcc version 4.8.1 from
1534 <http://www.mingw.org>. This was previously broken due to an
1535 incorrect definition of DllMain() in one of perl's source
1536 files. Earlier gcc versions were also affected when using
1537 version 4 of the w32api package. Versions of gcc available
1538 from <http://mingw-w64.sourceforge.net/> were not affected.
1539 [perl #121643
1540 <https://rt.perl.org/Public/Bug/Display.html?id=121643>]
1541
1542 · The test harness now has no failures when perl is built on a
1543 FAT drive with the Windows OS on an NTFS drive. [perl #21442
1544 <https://rt.perl.org/Public/Bug/Display.html?id=21442>]
1545
1546 · When cloning the context stack in fork() emulation,
1547 Perl_cx_dup() would crash accessing parameter information for
1548 context stack entries that included no parameters, as with
1549 "&foo;". [perl #121721
1550 <https://rt.perl.org/Public/Bug/Display.html?id=121721>]
1551
1552 · Introduced by perl #113536
1553 <https://rt.perl.org/Public/Bug/Display.html?id=113536>, a
1554 memory leak on every call to "system" and backticks (" `` "),
1555 on most Win32 Perls starting from 5.18.0 has been fixed. The
1556 memory leak only occurred if you enabled pseudo-fork in your
1557 build of Win32 Perl, and were running that build on Server 2003
1558 R2 or newer OS. The leak does not appear on WinXP SP3. [perl
1559 #121676
1560 <https://rt.perl.org/Public/Bug/Display.html?id=121676>]
1561
1562 WinCE
1563 · The building of XS modules has largely been restored. Several
1564 still cannot (yet) be built but it is now possible to build
1565 Perl on WinCE with only a couple of further patches (to Socket
1566 and ExtUtils::MakeMaker), hopefully to be incorporated soon.
1567
1568 · Perl can now be built in one shot with no user intervention on
1569 WinCE by running "nmake -f Makefile.ce all".
1570
1571 Support for building with EVC (Embedded Visual C++) 4 has been
1572 restored. Perl can also be built using Smart Devices for
1573 Visual C++ 2005 or 2008.
1574
1576 · The internal representation has changed for the match variables $1,
1577 $2 etc., $`, $&, $', ${^PREMATCH}, ${^MATCH} and ${^POSTMATCH}. It
1578 uses slightly less memory, avoids string comparisons and numeric
1579 conversions during lookup, and uses 23 fewer lines of C. This
1580 change should not affect any external code.
1581
1582 · Arrays now use NULL internally to represent unused slots, instead
1583 of &PL_sv_undef. &PL_sv_undef is no longer treated as a special
1584 value, so av_store(av, 0, &PL_sv_undef) will cause element 0 of
1585 that array to hold a read-only undefined scalar. "$array[0] =
1586 anything" will croak and "\$array[0]" will compare equal to
1587 "\undef".
1588
1589 · The SV returned by HeSVKEY_force() now correctly reflects the
1590 UTF8ness of the underlying hash key when that key is not stored as
1591 a SV. [perl #79074]
1592
1593 · Certain rarely used functions and macros available to XS code are
1594 now deprecated. These are: "utf8_to_uvuni_buf" (use
1595 "utf8_to_uvchr_buf" instead), "valid_utf8_to_uvuni" (use
1596 "utf8_to_uvchr_buf" instead), "NATIVE_TO_NEED" (this did not work
1597 properly anyway), and "ASCII_TO_NEED" (this did not work properly
1598 anyway).
1599
1600 Starting in this release, almost never does application code need
1601 to distinguish between the platform's character set and Latin1, on
1602 which the lowest 256 characters of Unicode are based. New code
1603 should not use "utf8n_to_uvuni" (use "utf8_to_uvchr_buf" instead),
1604 nor "uvuni_to_utf8" (use "uvchr_to_utf8" instead),
1605
1606 · The Makefile shortcut targets for many rarely (or never) used
1607 testing and profiling targets have been removed, or merged into the
1608 only other Makefile target that uses them. Specifically, these
1609 targets are gone, along with documentation that referenced them or
1610 explained how to use them:
1611
1612 check.third check.utf16 check.utf8 coretest minitest.prep
1613 minitest.utf16 perl.config.dashg perl.config.dashpg
1614 perl.config.gcov perl.gcov perl.gprof perl.gprof.config
1615 perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
1616 perl.third perl.third.config perl.valgrind.config purecovperl
1617 pureperl quantperl test.deparse test.taintwarn test.third
1618 test.torture test.utf16 test.utf8 test_notty.deparse
1619 test_notty.third test_notty.valgrind test_prep.third
1620 test_prep.valgrind torturetest ucheck ucheck.third ucheck.utf16
1621 ucheck.valgrind utest utest.third utest.utf16 utest.valgrind
1622
1623 It's still possible to run the relevant commands by "hand" - no
1624 underlying functionality has been removed.
1625
1626 · It is now possible to keep Perl from initializing locale handling.
1627 For the most part, Perl doesn't pay attention to locale. (See
1628 perllocale.) Nonetheless, until now, on startup, it has always
1629 initialized locale handling to the system default, just in case the
1630 program being executed ends up using locales. (This is one of the
1631 first things a locale-aware program should do, long before Perl
1632 knows if it will actually be needed or not.) This works well
1633 except when Perl is embedded in another application which wants a
1634 locale that isn't the system default. Now, if the environment
1635 variable "PERL_SKIP_LOCALE_INIT" is set at the time Perl is
1636 started, this initialization step is skipped. Prior to this, on
1637 Windows platforms, the only workaround for this deficiency was to
1638 use a hacked-up copy of internal Perl code. Applications that need
1639 to use older Perls can discover if the embedded Perl they are using
1640 needs the workaround by testing that the C preprocessor symbol
1641 "HAS_SKIP_LOCALE_INIT" is not defined. [RT #38193]
1642
1643 · "BmRARE" and "BmPREVIOUS" have been removed. They were not used
1644 anywhere and are not part of the API. For XS modules, they are now
1645 #defined as 0.
1646
1647 · "sv_force_normal", which usually croaks on read-only values, used
1648 to allow read-only values to be modified at compile time. This has
1649 been changed to croak on read-only values regardless. This change
1650 uncovered several core bugs.
1651
1652 · Perl's new copy-on-write mechanism (which is now enabled by
1653 default), allows any "SvPOK" scalar to be automatically upgraded to
1654 a copy-on-write scalar when copied. A reference count on the string
1655 buffer is stored in the string buffer itself.
1656
1657 For example:
1658
1659 $ perl -MDevel::Peek -e'$a="abc"; $b = $a; Dump $a; Dump $b'
1660 SV = PV(0x260cd80) at 0x2620ad8
1661 REFCNT = 1
1662 FLAGS = (POK,IsCOW,pPOK)
1663 PV = 0x2619bc0 "abc"\0
1664 CUR = 3
1665 LEN = 16
1666 COW_REFCNT = 1
1667 SV = PV(0x260ce30) at 0x2620b20
1668 REFCNT = 1
1669 FLAGS = (POK,IsCOW,pPOK)
1670 PV = 0x2619bc0 "abc"\0
1671 CUR = 3
1672 LEN = 16
1673 COW_REFCNT = 1
1674
1675 Note that both scalars share the same PV buffer and have a
1676 COW_REFCNT greater than zero.
1677
1678 This means that XS code which wishes to modify the "SvPVX()" buffer
1679 of an SV should call "SvPV_force()" or similar first, to ensure a
1680 valid (and unshared) buffer, and to call "SvSETMAGIC()" afterwards.
1681 This in fact has always been the case (for example hash keys were
1682 already copy-on-write); this change just spreads the COW behaviour
1683 to a wider variety of SVs.
1684
1685 One important difference is that before 5.18.0, shared hash-key
1686 scalars used to have the "SvREADONLY" flag set; this is no longer
1687 the case.
1688
1689 This new behaviour can still be disabled by running Configure with
1690 -Accflags=-DPERL_NO_COW. This option will probably be removed in
1691 Perl 5.22.
1692
1693 · "PL_sawampersand" is now a constant. The switch this variable
1694 provided (to enable/disable the pre-match copy depending on whether
1695 $& had been seen) has been removed and replaced with copy-on-write,
1696 eliminating a few bugs.
1697
1698 The previous behaviour can still be enabled by running Configure
1699 with -Accflags=-DPERL_SAWAMPERSAND.
1700
1701 · The functions "my_swap", "my_htonl" and "my_ntohl" have been
1702 removed. It is unclear why these functions were ever marked as A,
1703 part of the API. XS code can't call them directly, as it can't rely
1704 on them being compiled. Unsurprisingly, no code on CPAN references
1705 them.
1706
1707 · The signature of the "Perl_re_intuit_start()" regex function has
1708 changed; the function pointer "intuit" in the regex engine plugin
1709 structure has also changed accordingly. A new parameter, "strbeg"
1710 has been added; this has the same meaning as the same-named
1711 parameter in "Perl_regexec_flags". Previously intuit would try to
1712 guess the start of the string from the passed SV (if any), and
1713 would sometimes get it wrong (e.g. with an overloaded SV).
1714
1715 · The signature of the "Perl_regexec_flags()" regex function has
1716 changed; the function pointer "exec" in the regex engine plugin
1717 structure has also changed to match. The "minend" parameter now
1718 has type "SSize_t" to better support 64-bit systems.
1719
1720 · XS code may use various macros to change the case of a character or
1721 code point (for example "toLOWER_utf8()"). Only a couple of these
1722 were documented until now; and now they should be used in
1723 preference to calling the underlying functions. See "Character
1724 case changing" in perlapi.
1725
1726 · The code dealt rather inconsistently with uids and gids. Some
1727 places assumed that they could be safely stored in UVs, others in
1728 IVs, others in ints. Four new macros are introduced: SvUID(),
1729 sv_setuid(), SvGID(), and sv_setgid()
1730
1731 · "sv_pos_b2u_flags" has been added to the API. It is similar to
1732 "sv_pos_b2u", but supports long strings on 64-bit platforms.
1733
1734 · "PL_exit_flags" can now be used by perl embedders or other XS code
1735 to have perl "warn" or "abort" on an attempted exit. [perl #52000]
1736
1737 · Compiling with "-Accflags=-PERL_BOOL_AS_CHAR" now allows C99 and
1738 C++ compilers to emulate the aliasing of "bool" to "char" that perl
1739 does for C89 compilers. [perl #120314]
1740
1741 · The "sv" argument in "sv_2pv_flags" in perlapi, "sv_2iv_flags" in
1742 perlapi, "sv_2uv_flags" in perlapi, and "sv_2nv_flags" in perlapi
1743 and their older wrappers sv_2pv, sv_2iv, sv_2uv, sv_2nv, is now
1744 non-NULL. Passing NULL now will crash. When the non-NULL marker
1745 was introduced en masse in 5.9.3 the functions were marked non-
1746 NULL, but since the creation of the SV API in 5.0 alpha 2, if NULL
1747 was passed, the functions returned 0 or false-type values. The code
1748 that supports "sv" argument being non-NULL dates to 5.0 alpha 2
1749 directly, and indirectly to Perl 1.0 (pre 5.0 api). The lack of
1750 documentation that the functions accepted a NULL "sv" was corrected
1751 in 5.11.0 and between 5.11.0 and 5.19.5 the functions were marked
1752 NULLOK. As an optimization the NULLOK code has now been removed,
1753 and the functions became non-NULL marked again, because core
1754 getter-type macros never pass NULL to these functions and would
1755 crash before ever passing NULL.
1756
1757 The only way a NULL "sv" can be passed to sv_2*v* functions is if
1758 XS code directly calls sv_2*v*. This is unlikely as XS code uses
1759 Sv*V* macros to get the underlying value out of the SV. One
1760 possible situation which leads to a NULL "sv" being passed to
1761 sv_2*v* functions, is if XS code defines its own getter type Sv*V*
1762 macros, which check for NULL before dereferencing and checking the
1763 SV's flags through public API Sv*OK* macros or directly using
1764 private API "SvFLAGS", and if "sv" is NULL, then calling the sv_2*v
1765 functions with a NULL litteral or passing the "sv" containing a
1766 NULL value.
1767
1768 · newATTRSUB is now a macro
1769
1770 The public API newATTRSUB was previously a macro to the private
1771 function Perl_newATTRSUB. Function Perl_newATTRSUB has been
1772 removed. newATTRSUB is now macro to a different internal function.
1773
1774 · Changes in warnings raised by "utf8n_to_uvchr()"
1775
1776 This bottom level function decodes the first character of a UTF-8
1777 string into a code point. It is accessible to "XS" level code, but
1778 it's discouraged from using it directly. There are higher level
1779 functions that call this that should be used instead, such as
1780 "utf8_to_uvchr_buf" in perlapi. For completeness though, this
1781 documents some changes to it. Now, tests for malformations are
1782 done before any tests for other potential issues. One of those
1783 issues involves code points so large that they have never appeared
1784 in any official standard (the current standard has scaled back the
1785 highest acceptable code point from earlier versions). It is
1786 possible (though not done in CPAN) to warn and/or forbid these code
1787 points, while accepting smaller code points that are still above
1788 the legal Unicode maximum. The warning message for this now
1789 includes the code point if representable on the machine.
1790 Previously it always displayed raw bytes, which is what it still
1791 does for non-representable code points.
1792
1793 · Regexp engine changes that affect the pluggable regex engine
1794 interface
1795
1796 Many flags that used to be exposed via regexp.h and used to
1797 populate the extflags member of struct regexp have been removed.
1798 These fields were technically private to Perl's own regexp engine
1799 and should not have been exposed there in the first place.
1800
1801 The affected flags are:
1802
1803 RXf_NOSCAN
1804 RXf_CANY_SEEN
1805 RXf_GPOS_SEEN
1806 RXf_GPOS_FLOAT
1807 RXf_ANCH_BOL
1808 RXf_ANCH_MBOL
1809 RXf_ANCH_SBOL
1810 RXf_ANCH_GPOS
1811
1812 As well as the follow flag masks:
1813
1814 RXf_ANCH_SINGLE
1815 RXf_ANCH
1816
1817 All have been renamed to PREGf_ equivalents and moved to regcomp.h.
1818
1819 The behavior previously achieved by setting one or more of the
1820 RXf_ANCH_ flags (via the RXf_ANCH mask) have now been replaced by a
1821 *single* flag bit in extflags:
1822
1823 RXf_IS_ANCHORED
1824
1825 pluggable regex engines which previously used to set these flags
1826 should now set this flag ALONE.
1827
1828 · The Perl core now consistently uses "av_tindex()" ("the top index
1829 of an array") as a more clearly-named synonym for "av_len()".
1830
1831 · The obscure interpreter variable "PL_timesbuf" is expected to be
1832 removed early in the 5.21.x development series, so that Perl 5.22.0
1833 will not provide it to XS authors. While the variable still exists
1834 in 5.20.0, we hope that this advance warning of the deprecation
1835 will help anyone who is using that variable.
1836
1838 Regular Expressions
1839 · Fixed a small number of regexp constructions that could either fail
1840 to match or crash perl when the string being matched against was
1841 allocated above the 2GB line on 32-bit systems. [RT #118175]
1842
1843 · Various memory leaks involving the parsing of the "(?[...])"
1844 regular expression construct have been fixed.
1845
1846 · "(?[...])" now allows interpolation of precompiled patterns
1847 consisting of "(?[...])" with bracketed character classes inside
1848 ("$pat = qr/(?[ [a] ])/; /(?[ $pat ])/"). Formerly, the brackets
1849 would confuse the regular expression parser.
1850
1851 · The "Quantifier unexpected on zero-length expression" warning
1852 message could appear twice starting in Perl v5.10 for a regular
1853 expression also containing alternations (e.g., "a|b") triggering
1854 the trie optimisation.
1855
1856 · Perl v5.18 inadvertently introduced a bug whereby interpolating
1857 mixed up- and down-graded UTF-8 strings in a regex could result in
1858 malformed UTF-8 in the pattern: specifically if a downgraded
1859 character in the range "\x80..\xff" followed a UTF-8 string, e.g.
1860
1861 utf8::upgrade( my $u = "\x{e5}");
1862 utf8::downgrade(my $d = "\x{e5}");
1863 /$u$d/
1864
1865 [RT #118297]
1866
1867 · In regular expressions containing multiple code blocks, the values
1868 of $1, $2, etc., set by nested regular expression calls would leak
1869 from one block to the next. Now these variables always refer to
1870 the outer regular expression at the start of an embedded block
1871 [perl #117917].
1872
1873 · "/$qr/p" was broken in Perl 5.18.0; the "/p" flag was ignored.
1874 This has been fixed. [perl #118213]
1875
1876 · Starting in Perl 5.18.0, a construct like "/[#](?{})/x" would have
1877 its "#" incorrectly interpreted as a comment. The code block would
1878 be skipped, unparsed. This has been corrected.
1879
1880 · Starting in Perl 5.001, a regular expression like "/[#$a]/x" or
1881 "/[#]$a/x" would have its "#" incorrectly interpreted as a comment,
1882 so the variable would not interpolate. This has been corrected.
1883 [perl #45667]
1884
1885 · Perl 5.18.0 inadvertently made dereferenced regular expressions
1886 ("${ qr// }") false as booleans. This has been fixed.
1887
1888 · The use of "\G" in regular expressions, where it's not at the start
1889 of the pattern, is now slightly less buggy (although it is still
1890 somewhat problematic).
1891
1892 · Where a regular expression included code blocks ("/(?{...})/"), and
1893 where the use of constant overloading triggered a re-compilation of
1894 the code block, the second compilation didn't see its outer lexical
1895 scope. This was a regression in Perl 5.18.0.
1896
1897 · The string position set by "pos" could shift if the string changed
1898 representation internally to or from utf8. This could happen,
1899 e.g., with references to objects with string overloading.
1900
1901 · Taking references to the return values of two "pos" calls with the
1902 same argument, and then assigning a reference to one and "undef" to
1903 the other, could result in assertion failures or memory leaks.
1904
1905 · Elements of @- and @+ now update correctly when they refer to non-
1906 existent captures. Previously, a referenced element ("$ref =
1907 \$-[1]") could refer to the wrong match after subsequent matches.
1908
1909 · The code that parses regex backrefs (or ambiguous backref/octals)
1910 such as \123 did a simple atoi(), which could wrap round to
1911 negative values on long digit strings and cause segmentation
1912 faults. This has now been fixed. [perl #119505]
1913
1914 · Assigning another typeglob to "*^R" no longer makes the regular
1915 expression engine crash.
1916
1917 · The "\N" regular expression escape, when used without the curly
1918 braces (to mean "[^\n]"), was ignoring a following "*" if followed
1919 by whitespace under /x. It had been this way since "\N" to mean
1920 "[^\n]" was introduced in 5.12.0.
1921
1922 · "s///", "tr///" and "y///" now work when a wide character is used
1923 as the delimiter. [perl #120463]
1924
1925 · Some cases of unterminated (?...) sequences in regular expressions
1926 (e.g., "/(?</") have been fixed to produce the proper error message
1927 instead of "panic: memory wrap". Other cases (e.g., "/(?(/") have
1928 yet to be fixed.
1929
1930 · When a reference to a reference to an overloaded object was
1931 returned from a regular expression "(??{...})" code block, an
1932 incorrect implicit dereference could take place if the inner
1933 reference had been returned by a code block previously.
1934
1935 · A tied variable returned from "(??{...})" sees the inner values of
1936 match variables (i.e., the $1 etc. from any matches inside the
1937 block) in its FETCH method. This was not the case if a reference
1938 to an overloaded object was the last thing assigned to the tied
1939 variable. Instead, the match variables referred to the outer
1940 pattern during the FETCH call.
1941
1942 · Fix unexpected tainting via regexp using locale. Previously, under
1943 certain conditions, the use of character classes could cause
1944 tainting when it shouldn't. Some character classes are locale-
1945 dependent, but before this patch, sometimes tainting was happening
1946 even for character classes that don't depend on the locale. [perl
1947 #120675]
1948
1949 · Under certain conditions, Perl would throw an error if in a
1950 lookbehind assertion in a regexp, the assertion referred to a named
1951 subpattern, complaining the lookbehind was variable when it wasn't.
1952 This has been fixed. [perl #120600], [perl #120618]. The current
1953 fix may be improved on in the future.
1954
1955 · $^R wasn't available outside of the regular expression that
1956 initialized it. [perl #121070]
1957
1958 · A large set of fixes and refactoring for re_intuit_start() was
1959 merged, the highlights are:
1960
1961 · Fixed a panic when compiling the regular expression
1962 "/\x{100}[xy]\x{100}{2}/".
1963
1964 · Fixed a performance regression when performing a global pattern
1965 match against a UTF-8 string. [perl #120692]
1966
1967 · Fixed another performance issue where matching a regular
1968 expression like "/ab.{1,2}x/" against a long UTF-8 string would
1969 unnecessarily calculate byte offsets for a large portion of the
1970 string. [perl #120692]
1971
1972 · Fixed an alignment error when compiling regular expressions when
1973 built with GCC on HP-UX 64-bit.
1974
1975 · On 64-bit platforms "pos" can now be set to a value higher than
1976 2**31-1. [perl #72766]
1977
1978 Perl 5 Debugger and -d
1979 · The debugger's "man" command been fixed. It was broken in the
1980 v5.18.0 release. The "man" command is aliased to the names "doc"
1981 and "perldoc" - all now work again.
1982
1983 · @_ is now correctly visible in the debugger, fixing a regression
1984 introduced in v5.18.0's debugger. [RT #118169]
1985
1986 · Under copy-on-write builds (the default as of 5.20.0)
1987 "${'_<-e'}[0]" no longer gets mangled. This is the first line of
1988 input saved for the debugger's use for one-liners [perl #118627].
1989
1990 · On non-threaded builds, setting "${"_<filename"}" to a reference or
1991 typeglob no longer causes "__FILE__" and some error messages to
1992 produce a corrupt string, and no longer prevents "#line" directives
1993 in string evals from providing the source lines to the debugger.
1994 Threaded builds were unaffected.
1995
1996 · Starting with Perl 5.12, line numbers were off by one if the -d
1997 switch was used on the #! line. Now they are correct.
1998
1999 · "*DB::DB = sub {} if 0" no longer stops Perl's debugging mode from
2000 finding "DB::DB" subs declared thereafter.
2001
2002 · "%{'_<...'}" hashes now set breakpoints on the corresponding
2003 "@{'_<...'}" rather than whichever array @DB::dbline is aliased to.
2004 [perl #119799]
2005
2006 · Call set-magic when setting $DB::sub. [perl #121255]
2007
2008 · The debugger's "n" command now respects lvalue subroutines and
2009 steps over them [perl #118839].
2010
2011 Lexical Subroutines
2012 · Lexical constants ("my sub a() { 42 }") no longer crash when
2013 inlined.
2014
2015 · Parameter prototypes attached to lexical subroutines are now
2016 respected when compiling sub calls without parentheses.
2017 Previously, the prototypes were honoured only for calls with
2018 parentheses. [RT #116735]
2019
2020 · Syntax errors in lexical subroutines in combination with calls to
2021 the same subroutines no longer cause crashes at compile time.
2022
2023 · Deep recursion warnings no longer crash lexical subroutines. [RT
2024 #118521]
2025
2026 · The dtrace sub-entry probe now works with lexical subs, instead of
2027 crashing [perl #118305].
2028
2029 · Undefining an inlinable lexical subroutine ("my sub foo() { 42 }
2030 undef &foo") would result in a crash if warnings were turned on.
2031
2032 · An undefined lexical sub used as an inherited method no longer
2033 crashes.
2034
2035 · The presence of a lexical sub named "CORE" no longer stops the
2036 CORE:: prefix from working.
2037
2038 Everything Else
2039 · The OP allocation code now returns correctly aligned memory in all
2040 cases for "struct pmop". Previously it could return memory only
2041 aligned to a 4-byte boundary, which is not correct for an ithreads
2042 build with 64 bit IVs on some 32 bit platforms. Notably, this
2043 caused the build to fail completely on sparc GNU/Linux. [RT
2044 #118055]
2045
2046 · Evaluating large hashes in scalar context is now much faster, as
2047 the number of used chains in the hash is now cached for larger
2048 hashes. Smaller hashes continue not to store it and calculate it
2049 when needed, as this saves one IV. That would be 1 IV overhead for
2050 every object built from a hash. [RT #114576]
2051
2052 · Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs
2053 that were not visible at compile time were treated as lvalues and
2054 could be assigned to, even when the subroutine was not an lvalue
2055 sub. This has been fixed. [RT #117947]
2056
2057 · In Perl v5.18.0 dualvars that had an empty string for the string
2058 part but a non-zero number for the number part starting being
2059 treated as true. In previous versions they were treated as false,
2060 the string representation taking precedeence. The old behaviour
2061 has been restored. [RT #118159]
2062
2063 · Since Perl v5.12, inlining of constants that override built-in
2064 keywords of the same name had countermanded "use subs", causing
2065 subsequent mentions of the constant to use the built-in keyword
2066 instead. This has been fixed.
2067
2068 · The warning produced by "-l $handle" now applies to IO refs and
2069 globs, not just to glob refs. That warning is also now UTF8-clean.
2070 [RT #117595]
2071
2072 · "delete local $ENV{nonexistent_env_var}" no longer leaks memory.
2073
2074 · "sort" and "require" followed by a keyword prefixed with "CORE::"
2075 now treat it as a keyword, and not as a subroutine or module name.
2076 [RT #24482]
2077
2078 · Through certain conundrums, it is possible to cause the current
2079 package to be freed. Certain operators ("bless", "reset", "open",
2080 "eval") could not cope and would crash. They have been made more
2081 resilient. [RT #117941]
2082
2083 · Aliasing filehandles through glob-to-glob assignment would not
2084 update internal method caches properly if a package of the same
2085 name as the filehandle existed, resulting in filehandle method
2086 calls going to the package instead. This has been fixed.
2087
2088 · "./Configure -de -Dusevendorprefix" didn't default. [RT #64126]
2089
2090 · The "Statement unlikely to be reached" warning was listed in
2091 perldiag as an "exec"-category warning, but was enabled and
2092 disabled by the "syntax" category. On the other hand, the "exec"
2093 category controlled its fatal-ness. It is now entirely handled by
2094 the "exec" category.
2095
2096 · The "Replacement list is longer that search list" warning for
2097 "tr///" and "y///" no longer occurs in the presence of the "/c"
2098 flag. [RT #118047]
2099
2100 · Stringification of NVs are not cached so that the lexical locale
2101 controls stringification of the decimal point. [perl #108378] [perl
2102 #115800]
2103
2104 · There have been several fixes related to Perl's handling of
2105 locales. perl #38193 was described above in "Internal Changes".
2106 Also fixed is #118197, where the radix (decimal point) character
2107 had to be an ASCII character (which doesn't work for some non-
2108 Western languages); and #115808, in which "POSIX::setlocale()" on
2109 failure returned an "undef" which didn't warn about not being
2110 defined even if those warnings were enabled.
2111
2112 · Compiling a "split" operator whose third argument is a named
2113 constant evaluating to 0 no longer causes the constant's value to
2114 change.
2115
2116 · A named constant used as the second argument to "index" no longer
2117 gets coerced to a string if it is a reference, regular expression,
2118 dualvar, etc.
2119
2120 · A named constant evaluating to the undefined value used as the
2121 second argument to "index" no longer produces "uninitialized"
2122 warnings at compile time. It will still produce them at run time.
2123
2124 · When a scalar was returned from a subroutine in @INC, the
2125 referenced scalar was magically converted into an IO thingy,
2126 possibly resulting in "Bizarre copy" errors if that scalar
2127 continued to be used elsewhere. Now Perl uses an internal copy of
2128 the scalar instead.
2129
2130 · Certain uses of the "sort" operator are optimised to modify an
2131 array in place, such as "@a = sort @a". During the sorting, the
2132 array is made read-only. If a sort block should happen to die,
2133 then the array remained read-only even outside the "sort". This
2134 has been fixed.
2135
2136 · $a and $b inside a sort block are aliased to the actual arguments
2137 to "sort", so they can be modified through those two variables.
2138 This did not always work, e.g., for lvalue subs and $#ary, and
2139 probably many other operators. It works now.
2140
2141 · The arguments to "sort" are now all in list context. If the "sort"
2142 itself were called in void or scalar context, then some, but not
2143 all, of the arguments used to be in void or scalar context.
2144
2145 · Subroutine prototypes with Unicode characters above U+00FF were
2146 getting mangled during closure cloning. This would happen with
2147 subroutines closing over lexical variables declared outside, and
2148 with lexical subs.
2149
2150 · "UNIVERSAL::can" now treats its first argument the same way that
2151 method calls do: Typeglobs and glob references with non-empty IO
2152 slots are treated as handles, and strings are treated as
2153 filehandles, rather than packages, if a handle with that name
2154 exists [perl #113932].
2155
2156 · Method calls on typeglobs (e.g., "*ARGV->getline") used to
2157 stringify the typeglob and then look it up again. Combined with
2158 changes in Perl 5.18.0, this allowed "*foo->bar" to call methods on
2159 the "foo" package (like "foo->bar"). In some cases it could cause
2160 the method to be called on the wrong handle. Now a typeglob
2161 argument is treated as a handle (just like "(\*foo)->bar"), or, if
2162 its IO slot is empty, an error is raised.
2163
2164 · Assigning a vstring to a tied variable or to a subroutine argument
2165 aliased to a nonexistent hash or array element now works, without
2166 flattening the vstring into a regular string.
2167
2168 · "pos", "tie", "tied" and "untie" did not work properly on
2169 subroutine arguments aliased to nonexistent hash and array elements
2170 [perl #77814, #27010].
2171
2172 · The "=>" fat arrow operator can now quote built-in keywords even if
2173 it occurs on the next line, making it consistent with how it treats
2174 other barewords.
2175
2176 · Autovivifying a subroutine stub via "\&$glob" started causing
2177 crashes in Perl 5.18.0 if the $glob was merely a copy of a real
2178 glob, i.e., a scalar that had had a glob assigned to it. This has
2179 been fixed. [perl #119051]
2180
2181 · Perl used to leak an implementation detail when it came to
2182 referencing the return values of certain operators. "for ($a+$b) {
2183 warn \$_; warn \$_ }" used to display two different memory
2184 addresses, because the "\" operator was copying the variable.
2185 Under threaded builds, it would also happen for constants ("for(1)
2186 { ... }"). This has been fixed. [perl #21979, #78194, #89188,
2187 #109746, #114838, #115388]
2188
2189 · The range operator ".." was returning the same modifiable scalars
2190 with each call, unless it was the only thing in a "foreach" loop
2191 header. This meant that changes to values within the list returned
2192 would be visible the next time the operator was executed. [perl
2193 #3105]
2194
2195 · Constant folding and subroutine inlining no longer cause operations
2196 that would normally return new modifiable scalars to return read-
2197 only values instead.
2198
2199 · Closures of the form "sub () { $some_variable }" are no longer
2200 inlined, causing changes to the variable to be ignored by callers
2201 of the subroutine. [perl #79908]
2202
2203 · Return values of certain operators such as "ref" would sometimes be
2204 shared between recursive calls to the same subroutine, causing the
2205 inner call to modify the value returned by "ref" in the outer call.
2206 This has been fixed.
2207
2208 · "__PACKAGE__" and constants returning a package name or hash key
2209 are now consistently read-only. In various previous Perl releases,
2210 they have become mutable under certain circumstances.
2211
2212 · Enabling "used once" warnings no longer causes crashes on stash
2213 circularities created at compile time ("*Foo::Bar::Foo:: =
2214 *Foo::").
2215
2216 · Undef constants used in hash keys ("use constant u => undef;
2217 $h{+u}") no longer produce "uninitialized" warnings at compile
2218 time.
2219
2220 · Modifying a substitution target inside the substitution replacement
2221 no longer causes crashes.
2222
2223 · The first statement inside a string eval used to use the wrong
2224 pragma setting sometimes during constant folding. "eval 'uc chr
2225 0xe0'" would randomly choose between Unicode, byte, and locale
2226 semantics. This has been fixed.
2227
2228 · The handling of return values of @INC filters (subroutines returned
2229 by subroutines in @INC) has been fixed in various ways. Previously
2230 tied variables were mishandled, and setting $_ to a reference or
2231 typeglob could result in crashes.
2232
2233 · The "SvPVbyte" XS function has been fixed to work with tied scalars
2234 returning something other than a string. It used to return utf8 in
2235 those cases where "SvPV" would.
2236
2237 · Perl 5.18.0 inadvertently made "--" and "++" crash on dereferenced
2238 regular expressions, and stopped "++" from flattening vstrings.
2239
2240 · "bless" no longer dies with "Can't bless non-reference value" if
2241 its first argument is a tied reference.
2242
2243 · "reset" with an argument no longer skips copy-on-write scalars,
2244 regular expressions, typeglob copies, and vstrings. Also, when
2245 encountering those or read-only values, it no longer skips any
2246 array or hash with the same name.
2247
2248 · "reset" with an argument now skips scalars aliased to typeglobs
2249 ("for $z (*foo) { reset "z" }"). Previously it would corrupt
2250 memory or crash.
2251
2252 · "ucfirst" and "lcfirst" were not respecting the bytes pragma. This
2253 was a regression from Perl 5.12. [perl #117355]
2254
2255 · Changes to "UNIVERSAL::DESTROY" now update DESTROY caches in all
2256 classes, instead of causing classes that have already had objects
2257 destroyed to continue using the old sub. This was a regression in
2258 Perl 5.18. [perl #114864]
2259
2260 · All known false-positive occurrences of the deprecation warning
2261 "Useless use of '\'; doesn't escape metacharacter '%c'", added in
2262 Perl 5.18.0, have been removed. [perl #119101]
2263
2264 · The value of $^E is now saved across signal handlers on Windows.
2265 [perl #85104]
2266
2267 · A lexical filehandle (as in "open my $fh...") is usually given a
2268 name based on the current package and the name of the variable,
2269 e.g. "main::$fh". Under recursion, the filehandle was losing the
2270 "$fh" part of the name. This has been fixed.
2271
2272 · Uninitialized values returned by XSUBs are no longer exempt from
2273 uninitialized warnings. [perl #118693]
2274
2275 · "elsif ("")" no longer erroneously produces a warning about void
2276 context. [perl #118753]
2277
2278 · Passing "undef" to a subroutine now causes @_ to contain the same
2279 read-only undefined scalar that "undef" returns. Furthermore,
2280 "exists $_[0]" will now return true if "undef" was the first
2281 argument. [perl #7508, #109726]
2282
2283 · Passing a non-existent array element to a subroutine does not
2284 usually autovivify it unless the subroutine modifies its argument.
2285 This did not work correctly with negative indices and with non-
2286 existent elements within the array. The element would be vivified
2287 immediately. The delayed vivification has been extended to work
2288 with those. [perl #118691]
2289
2290 · Assigning references or globs to the scalar returned by $#foo after
2291 the @foo array has been freed no longer causes assertion failures
2292 on debugging builds and memory leaks on regular builds.
2293
2294 · On 64-bit platforms, large ranges like 1..1000000000000 no longer
2295 crash, but eat up all your memory instead. [perl #119161]
2296
2297 · "__DATA__" now puts the "DATA" handle in the right package, even if
2298 the current package has been renamed through glob assignment.
2299
2300 · When "die", "last", "next", "redo", "goto" and "exit" unwind the
2301 scope, it is possible for "DESTROY" recursively to call a
2302 subroutine or format that is currently being exited. It that case,
2303 sometimes the lexical variables inside the sub would start out
2304 having values from the outer call, instead of being undefined as
2305 they should. This has been fixed. [perl #119311]
2306
2307 · ${^MPEN} is no longer treated as a synonym for ${^MATCH}.
2308
2309 · Perl now tries a little harder to return the correct line number in
2310 "(caller)[2]". [perl #115768]
2311
2312 · Line numbers inside multiline quote-like operators are now reported
2313 correctly. [perl #3643]
2314
2315 · "#line" directives inside code embedded in quote-like operators are
2316 now respected.
2317
2318 · Line numbers are now correct inside the second here-doc when two
2319 here-doc markers occur on the same line.
2320
2321 · An optimization in Perl 5.18 made incorrect assumptions causing a
2322 bad interaction with the Devel::CallParser CPAN module. If the
2323 module was loaded then lexical variables declared in separate
2324 statements following a "my(...)" list might fail to be cleared on
2325 scope exit.
2326
2327 · &xsub and "goto &xsub" calls now allow the called subroutine to
2328 autovivify elements of @_.
2329
2330 · &xsub and "goto &xsub" no longer crash if *_ has been undefined and
2331 has no ARRAY entry (i.e. @_ does not exist).
2332
2333 · &xsub and "goto &xsub" now work with tied @_.
2334
2335 · Overlong identifiers no longer cause a buffer overflow (and a
2336 crash). They started doing so in Perl 5.18.
2337
2338 · The warning "Scalar value @hash{foo} better written as $hash{foo}"
2339 now produces far fewer false positives. In particular,
2340 @hash{+function_returning_a_list} and @hash{ qw "foo bar baz" } no
2341 longer warn. The same applies to array slices. [perl #28380,
2342 #114024]
2343
2344 · "$! = EINVAL; waitpid(0, WNOHANG);" no longer goes into an internal
2345 infinite loop. [perl #85228]
2346
2347 · A possible segmentation fault in filehandle duplication has been
2348 fixed.
2349
2350 · A subroutine in @INC can return a reference to a scalar containing
2351 the initial contents of the file. However, that scalar was freed
2352 prematurely if not referenced elsewhere, giving random results.
2353
2354 · "last" no longer returns values that the same statement has
2355 accumulated so far, fixing amongst other things the long-standing
2356 bug that "push @a, last" would try to return the @a, copying it
2357 like a scalar in the process and resulting in the error, "Bizarre
2358 copy of ARRAY in last." [perl #3112]
2359
2360 · In some cases, closing file handles opened to pipe to or from a
2361 process, which had been duplicated into a standard handle, would
2362 call perl's internal waitpid wrapper with a pid of zero. With the
2363 fix for [perl #85228] this zero pid was passed to "waitpid",
2364 possibly blocking the process. This wait for process zero no
2365 longer occurs. [perl #119893]
2366
2367 · "select" used to ignore magic on the fourth (timeout) argument,
2368 leading to effects such as "select" blocking indefinitely rather
2369 than the expected sleep time. This has now been fixed. [perl
2370 #120102]
2371
2372 · The class name in "for my class $foo" is now parsed correctly. In
2373 the case of the second character of the class name being followed
2374 by a digit (e.g. 'a1b') this used to give the error "Missing $ on
2375 loop variable". [perl #120112]
2376
2377 · Perl 5.18.0 accidentally disallowed "-bareword" under "use strict"
2378 and "use integer". This has been fixed. [perl #120288]
2379
2380 · "-a" at the start of a line (or a hyphen with any single letter
2381 that is not a filetest operator) no longer produces an erroneous
2382 'Use of "-a" without parentheses is ambiguous' warning. [perl
2383 #120288]
2384
2385 · Lvalue context is now properly propagated into bare blocks and "if"
2386 and "else" blocks in lvalue subroutines. Previously, arrays and
2387 hashes would sometimes incorrectly be flattened when returned in
2388 lvalue list context, or "Bizarre copy" errors could occur. [perl
2389 #119797]
2390
2391 · Lvalue context is now propagated to the branches of "||" and "&&"
2392 (and their alphabetic equivalents, "or" and "and"). This means
2393 "foreach (pos $x || pos $y) {...}" now allows "pos" to be modified
2394 through $_.
2395
2396 · "stat" and "readline" remember the last handle used; the former for
2397 the special "_" filehandle, the latter for "${^LAST_FH}". "eval
2398 "*foo if 0"" where *foo was the last handle passed to "stat" or
2399 "readline" could cause that handle to be forgotten if the handle
2400 were not opened yet. This has been fixed.
2401
2402 · Various cases of "delete $::{a}", "delete $::{ENV}" etc. causing a
2403 crash have been fixed. [perl #54044]
2404
2405 · Setting $! to EACCESS before calling "require" could affect
2406 "require"'s behaviour. This has been fixed.
2407
2408 · The "Can't use \1 to mean $1 in expression" warning message now
2409 only occurs on the right-hand (replacement) part of a substitution.
2410 Formerly it could happen in code embedded in the left-hand side, or
2411 in any other quote-like operator.
2412
2413 · Blessing into a reference ("bless $thisref, $thatref") has long
2414 been disallowed, but magical scalars for the second like $/ and
2415 those tied were exempt. They no longer are. [perl #119809]
2416
2417 · Blessing into a reference was accidentally allowed in 5.18 if the
2418 class argument were a blessed reference with stale method caches
2419 (i.e., whose class had had subs defined since the last method
2420 call). They are disallowed once more, as in 5.16.
2421
2422 · "$x->{key}" where $x was declared as "my Class $x" no longer
2423 crashes if a Class::FIELDS subroutine stub has been declared.
2424
2425 · @$obj{'key'} and "${$obj}{key}" used to be exempt from compile-time
2426 field checking ("No such class field"; see fields) but no longer
2427 are.
2428
2429 · A nonexistent array element with a large index passed to a
2430 subroutine that ties the array and then tries to access the element
2431 no longer results in a crash.
2432
2433 · Declaring a subroutine stub named NEGATIVE_INDICES no longer makes
2434 negative array indices crash when the current package is a tied
2435 array class.
2436
2437 · Declaring a "require", "glob", or "do" subroutine stub in the
2438 CORE::GLOBAL:: package no longer makes compilation of calls to the
2439 corresponding functions crash.
2440
2441 · Aliasing CORE::GLOBAL:: functions to constants stopped working in
2442 Perl 5.10 but has now been fixed.
2443
2444 · When "`...`" or "qx/.../" calls a "readpipe" override, double-
2445 quotish interpolation now happens, as is the case when there is no
2446 override. Previously, the presence of an override would make these
2447 quote-like operators act like "q{}", suppressing interpolation.
2448 [perl #115330]
2449
2450 · "<<<`...`" here-docs (with backticks as the delimiters) now call
2451 "readpipe" overrides. [perl #119827]
2452
2453 · "&CORE::exit()" and "&CORE::die()" now respect vmsish hints.
2454
2455 · Undefining a glob that triggers a DESTROY method that undefines the
2456 same glob is now safe. It used to produce "Attempt to free
2457 unreferenced glob pointer" warnings and leak memory.
2458
2459 · If subroutine redefinition ("eval 'sub foo{}'" or "newXS" for XS
2460 code) triggers a DESTROY method on the sub that is being redefined,
2461 and that method assigns a subroutine to the same slot ("*foo = sub
2462 {}"), $_[0] is no longer left pointing to a freed scalar. Now
2463 DESTROY is delayed until the new subroutine has been installed.
2464
2465 · On Windows, perl no longer calls CloseHandle() on a socket handle.
2466 This makes debugging easier on Windows by removing certain
2467 irrelevant bad handle exceptions. It also fixes a race condition
2468 that made socket functions randomly fail in a Perl process with
2469 multiple OS threads, and possible test failures in
2470 dist/IO/t/cachepropagate-tcp.t. [perl #120091/118059]
2471
2472 · Formats involving UTF-8 encoded strings, or strange vars like ties,
2473 overloads, or stringified refs (and in recent perls, pure NOK vars)
2474 would generally do the wrong thing in formats when the var is
2475 treated as a string and repeatedly chopped, as in "^<<<~~" and
2476 similar. This has now been resolved. [perl
2477 #33832/45325/113868/119847/119849/119851]
2478
2479 · "semctl(..., SETVAL, ...)" would set the semaphore to the top
2480 32-bits of the supplied integer instead of the bottom 32-bits on
2481 64-bit big-endian systems. [perl #120635]
2482
2483 · "readdir()" now only sets $! on error. $! is no longer set to
2484 "EBADF" when then terminating "undef" is read from the directory
2485 unless the system call sets $!. [perl #118651]
2486
2487 · &CORE::glob no longer causes an intermittent crash due to perl's
2488 stack getting corrupted. [perl #119993]
2489
2490 · "open" with layers that load modules (e.g., "<:encoding(utf8)") no
2491 longer runs the risk of crashing due to stack corruption.
2492
2493 · Perl 5.18 broke autoloading via "->SUPER::foo" method calls by
2494 looking up AUTOLOAD from the current package rather than the
2495 current package's superclass. This has been fixed. [perl #120694]
2496
2497 · A longstanding bug causing "do {} until CONSTANT", where the
2498 constant holds a true value, to read unallocated memory has been
2499 resolved. This would usually happen after a syntax error. In past
2500 versions of Perl it has crashed intermittently. [perl #72406]
2501
2502 · Fix HP-UX $! failure. HP-UX strerror() returns an empty string for
2503 an unknown error code. This caused an assertion to fail under
2504 DEBUGGING builds. Now instead, the returned string for "$!"
2505 contains text indicating the code is for an unknown error.
2506
2507 · Individually-tied elements of @INC (as in "tie $INC[0]...") are now
2508 handled correctly. Formerly, whether a sub returned by such a tied
2509 element would be treated as a sub depended on whether a FETCH had
2510 occurred previously.
2511
2512 · "getc" on a byte-sized handle after the same "getc" operator had
2513 been used on a utf8 handle used to treat the bytes as utf8,
2514 resulting in erratic behavior (e.g., malformed UTF-8 warnings).
2515
2516 · An initial "{" at the beginning of a format argument line was
2517 always interpreted as the beginning of a block prior to v5.18. In
2518 Perl v5.18, it started being treated as an ambiguous token. The
2519 parser would guess whether it was supposed to be an anonymous hash
2520 constructor or a block based on the contents. Now the previous
2521 behavious has been restored. [perl #119973]
2522
2523 · In Perl v5.18 "undef *_; goto &sub" and "local *_; goto &sub"
2524 started crashing. This has been fixed. [perl #119949]
2525
2526 · Backticks (" `` " or " qx// ") combined with multiple threads on
2527 Win32 could result in output sent to stdout on one thread being
2528 captured by backticks of an external command in another thread.
2529
2530 This could occur for pseudo-forked processes too, as Win32's
2531 pseudo-fork is implemented in terms of threads. [perl #77672]
2532
2533 · "open $fh, ">+", undef" no longer leaks memory when TMPDIR is set
2534 but points to a directory a temporary file cannot be created in.
2535 [perl #120951]
2536
2537 · " for ( $h{k} || '' ) " no longer auto-vivifies $h{k}. [perl
2538 #120374]
2539
2540 · On Windows machines, Perl now emulates the POSIX use of the
2541 environment for locale initialization. Previously, the environment
2542 was ignored. See "ENVIRONMENT" in perllocale.
2543
2544 · Fixed a crash when destroying a self-referencing GLOB. [perl
2545 #121242]
2546
2548 · IO::Socket is known to fail tests on AIX 5.3. There is a patch
2549 <https://rt.perl.org/Ticket/Display.html?id=120835> in the request
2550 tracker, #120835, which may be applied to future releases.
2551
2552 · The following modules are known to have test failures with this
2553 version of Perl. Patches have been submitted, so there will
2554 hopefully be new releases soon:
2555
2556 · Data::Structure::Util version 0.15
2557
2558 · HTML::StripScripts version 1.05
2559
2560 · List::Gather version 0.08.
2561
2563 Diana Rosa, 27, of Rio de Janeiro, went to her long rest on May 10,
2564 2014, along with the plush camel she kept hanging on her computer
2565 screen all the time. She was a passionate Perl hacker who loved the
2566 language and its community, and who never missed a Rio.pm event. She
2567 was a true artist, an enthusiast about writing code, singing arias and
2568 graffiting walls. We'll never forget you.
2569
2570 Greg McCarroll died on August 28, 2013.
2571
2572 Greg was well known for many good reasons. He was one of the organisers
2573 of the first YAPC::Europe, which concluded with an unscheduled auction
2574 where he frantically tried to raise extra money to avoid the conference
2575 making a loss. It was Greg who mistakenly arrived for a london.pm
2576 meeting a week late; some years later he was the one who sold the
2577 choice of official meeting date at a YAPC::Europe auction, and
2578 eventually as glorious leader of london.pm he got to inherit the
2579 irreverent confusion that he had created.
2580
2581 Always helpful, friendly and cheerfully optimistic, you will be missed,
2582 but never forgotten.
2583
2585 Perl 5.20.0 represents approximately 12 months of development since
2586 Perl 5.18.0 and contains approximately 470,000 lines of changes across
2587 2,900 files from 124 authors.
2588
2589 Excluding auto-generated files, documentation and release tools, there
2590 were approximately 280,000 lines of changes to 1,800 .pm, .t, .c and .h
2591 files.
2592
2593 Perl continues to flourish into its third decade thanks to a vibrant
2594 community of users and developers. The following people are known to
2595 have contributed the improvements that became Perl 5.20.0:
2596
2597 Aaron Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi,
2598 Alan Hourihane, Alexander Voronov, Alexandr Ciornii, Andy Dougherty,
2599 Anno Siegel, Aristotle Pagaltzis, Arthur Axel 'fREW' Schmidt, Brad
2600 Gilbert, Brendan Byrd, Brian Childs, Brian Fraser, Brian Gottreu, Chris
2601 'BinGOs' Williams, Christian Millour, Colin Kuskie, Craig A. Berry,
2602 Dabrien 'Dabe' Murphy, Dagfinn Ilmari Mannsaaker, Daniel Dragan, Darin
2603 McBride, David Golden, David Leadbeater, David Mitchell, David Nicol,
2604 David Steinbrunner, Dennis Kaarsemaker, Dominic Hargreaves, Ed Avis,
2605 Eric Brine, Evan Zacks, Father Chrysostomos, Florian Ragwitz, Francois
2606 Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, Graham Knop,
2607 H.Merijn Brand, Hauke D, Heiko Eissfeldt, Hiroo Hayashi, Hojung Youn,
2608 James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Jess Robinson,
2609 Jesse Luehrs, Johan Vromans, John Gardiner Myers, John Goodyear, John
2610 P. Linderman, John Peacock, kafka, Kang-min Liu, Karen Etheridge, Karl
2611 Williamson, Keedi Kim, Kent Fredric, kevin dawson, Kevin Falcone, Kevin
2612 Ryde, Leon Timmermans, Lukas Mai, Marc Simpson, Marcel Gruenauer, Marco
2613 Peereboom, Marcus Holland-Moritz, Mark Jason Dominus, Martin McGrath,
2614 Matthew Horsfall, Max Maischein, Mike Doherty, Moritz Lenz, Nathan
2615 Glenn, Nathan Trapuzzano, Neil Bowers, Neil Williams, Nicholas Clark,
2616 Niels Thykier, Niko Tyni, Olivier Mengue, Owain G. Ainsworth, Paul
2617 Green, Paul Johnson, Peter John Acklam, Peter Martini, Peter Rabbitson,
2618 Petr PisaX, Philip Boulain, Philip Guenther, Piotr Roszatycki, Rafael
2619 Garcia-Suarez, Reini Urban, Reuben Thomas, Ricardo Signes, Ruslan
2620 Zakirov, Sergey Alekseev, Shirakata Kentaro, Shlomi Fish, Slaven Rezic,
2621 Smylers, Steffen Mueller, Steve Hay, Sullivan Beck, Thomas Sibley,
2622 Tobias Leich, Toby Inkster, Tokuhiro Matsuno, Tom Christiansen, Tom
2623 Hukins, Tony Cook, Victor Efimov, Viktor Turskyi, Vladimir Timofeev,
2624 YAMASHINA Hio, Yves Orton, Zefram, Zsban Ambrus, AEvar Arnfjoerd`
2625 Bjarmason.
2626
2627 The list above is almost certainly incomplete as it is automatically
2628 generated from version control history. In particular, it does not
2629 include the names of the (very much appreciated) contributors who
2630 reported issues to the Perl bug tracker.
2631
2632 Many of the changes included in this version originated in the CPAN
2633 modules included in Perl's core. We're grateful to the entire CPAN
2634 community for helping Perl to flourish.
2635
2636 For a more complete list of all of Perl's historical contributors,
2637 please see the AUTHORS file in the Perl source distribution.
2638
2640 If you find what you think is a bug, you might check the articles
2641 recently posted to the comp.lang.perl.misc newsgroup and the perl bug
2642 database at http://rt.perl.org/perlbug/ . There may also be
2643 information at http://www.perl.org/ , the Perl Home Page.
2644
2645 If you believe you have an unreported bug, please run the perlbug
2646 program included with your release. Be sure to trim your bug down to a
2647 tiny but sufficient test case. Your bug report, along with the output
2648 of "perl -V", will be sent off to perlbug@perl.org to be analysed by
2649 the Perl porting team.
2650
2651 If the bug you are reporting has security implications, which make it
2652 inappropriate to send to a publicly archived mailing list, then please
2653 send it to perl5-security-report@perl.org. This points to a closed
2654 subscription unarchived mailing list, which includes all the core
2655 committers, who will be able to help assess the impact of issues,
2656 figure out a resolution, and help co-ordinate the release of patches to
2657 mitigate or fix the problem across all platforms on which Perl is
2658 supported. Please only use this address for security issues in the
2659 Perl core, not for modules independently distributed on CPAN.
2660
2662 The Changes file for an explanation of how to view exhaustive details
2663 on what changed.
2664
2665 The INSTALL file for how to build Perl.
2666
2667 The README file for general stuff.
2668
2669 The Artistic and Copying files for copyright information.
2670
2671
2672
2673perl v5.32.1 2021-03-31 PERL5200DELTA(1)