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