1PERL5140DELTA(1) Perl Programmers Reference Guide PERL5140DELTA(1)
2
3
4
6 perl5140delta - what is new for perl v5.14.0
7
9 This document describes differences between the 5.12.0 release and the
10 5.14.0 release.
11
12 If you are upgrading from an earlier release such as 5.10.0, first read
13 perl5120delta, which describes differences between 5.10.0 and 5.12.0.
14
15 Some of the bug fixes in this release have been backported to
16 subsequent releases of 5.12.x. Those are indicated with the 5.12.x
17 version in parentheses.
18
20 As described in perlpolicy, the release of Perl 5.14.0 marks the
21 official end of support for Perl 5.10. Users of Perl 5.10 or earlier
22 should consider upgrading to a more recent release of Perl.
23
25 Unicode
26 Unicode Version 6.0 is now supported (mostly)
27
28 Perl comes with the Unicode 6.0 data base updated with Corrigendum #8
29 <http://www.unicode.org/versions/corrigendum8.html>, with one exception
30 noted below. See <http://unicode.org/versions/Unicode6.0.0/> for
31 details on the new release. Perl does not support any Unicode
32 provisional properties, including the new ones for this release.
33
34 Unicode 6.0 has chosen to use the name "BELL" for the character at
35 U+1F514, which is a symbol that looks like a bell, and is used in
36 Japanese cell phones. This conflicts with the long-standing Perl usage
37 of having "BELL" mean the ASCII "BEL" character, U+0007. In Perl 5.14,
38 "\N{BELL}" continues to mean U+0007, but its use generates a
39 deprecation warning message unless such warnings are turned off. The
40 new name for U+0007 in Perl is "ALERT", which corresponds nicely with
41 the existing shorthand sequence for it, "\a". "\N{BEL}" means U+0007,
42 with no warning given. The character at U+1F514 has no name in 5.14,
43 but can be referred to by "\N{U+1F514}". In Perl 5.16, "\N{BELL}" will
44 refer to U+1F514; all code that uses "\N{BELL}" should be converted to
45 use "\N{ALERT}", "\N{BEL}", or "\a" before upgrading.
46
47 Full functionality for "use feature 'unicode_strings'"
48
49 This release provides full functionality for use feature
50 'unicode_strings'. Under its scope, all string operations executed and
51 regular expressions compiled (even if executed outside its scope) have
52 Unicode semantics. See "the 'unicode_strings' feature" in feature.
53 However, see "Inverted bracketed character classes and multi-character
54 folds", below.
55
56 This feature avoids most forms of the "Unicode Bug" (see "The "Unicode
57 Bug"" in perlunicode for details). If there is any possibility that
58 your code will process Unicode strings, you are strongly encouraged to
59 use this subpragma to avoid nasty surprises.
60
61 "\N{NAME}" and "charnames" enhancements
62
63 • "\N{NAME}" and "charnames::vianame" now know about the abbreviated
64 character names listed by Unicode, such as NBSP, SHY, LRO, ZWJ,
65 etc.; all customary abbreviations for the C0 and C1 control
66 characters (such as ACK, BEL, CAN, etc.); and a few new variants of
67 some C1 full names that are in common usage.
68
69 • Unicode has several named character sequences, in which particular
70 sequences of code points are given names. "\N{NAME}" now
71 recognizes these.
72
73 • "\N{NAME}", "charnames::vianame", and "charnames::viacode" now know
74 about every character in Unicode. In earlier releases of Perl,
75 they didn't know about the Hangul syllables nor several CJK
76 (Chinese/Japanese/Korean) characters.
77
78 • It is now possible to override Perl's abbreviations with your own
79 custom aliases.
80
81 • You can now create a custom alias of the ordinal of a character,
82 known by "\N{NAME}", charnames::vianame(), and
83 charnames::viacode(). Previously, aliases had to be to official
84 Unicode character names. This made it impossible to create an
85 alias for unnamed code points, such as those reserved for private
86 use.
87
88 • The new function charnames::string_vianame() is a run-time version
89 of "\N{NAME}}", returning the string of characters whose Unicode
90 name is its parameter. It can handle Unicode named character
91 sequences, whereas the pre-existing charnames::vianame() cannot, as
92 the latter returns a single code point.
93
94 See charnames for details on all these changes.
95
96 New warnings categories for problematic (non-)Unicode code points.
97
98 Three new warnings subcategories of "utf8" have been added. These
99 allow you to turn off some "utf8" warnings, while allowing other
100 warnings to remain on. The three categories are: "surrogate" when
101 UTF-16 surrogates are encountered; "nonchar" when Unicode non-character
102 code points are encountered; and "non_unicode" when code points above
103 the legal Unicode maximum of 0x10FFFF are encountered.
104
105 Any unsigned value can be encoded as a character
106
107 With this release, Perl is adopting a model that any unsigned value can
108 be treated as a code point and encoded internally (as utf8) without
109 warnings, not just the code points that are legal in Unicode. However,
110 unless utf8 or the corresponding sub-category (see previous item) of
111 lexical warnings have been explicitly turned off, outputting or
112 executing a Unicode-defined operation such as upper-casing on such a
113 code point generates a warning. Attempting to input these using strict
114 rules (such as with the :encoding(UTF-8) layer) will continue to fail.
115 Prior to this release, handling was inconsistent and in places,
116 incorrect.
117
118 Unicode non-characters, some of which previously were erroneously
119 considered illegal in places by Perl, contrary to the Unicode Standard,
120 are now always legal internally. Inputting or outputting them works
121 the same as with the non-legal Unicode code points, because the Unicode
122 Standard says they are (only) illegal for "open interchange".
123
124 Unicode database files not installed
125
126 The Unicode database files are no longer installed with Perl. This
127 doesn't affect any functionality in Perl and saves significant disk
128 space. If you need these files, you can download them from
129 <http://www.unicode.org/Public/zipped/6.0.0/>.
130
131 Regular Expressions
132 "(?^...)" construct signifies default modifiers
133
134 An ASCII caret "^" immediately following a "(?" in a regular expression
135 now means that the subexpression does not inherit surrounding modifiers
136 such as "/i", but reverts to the Perl defaults. Any modifiers
137 following the caret override the defaults.
138
139 Stringification of regular expressions now uses this notation. For
140 example, "qr/hlagh/i" would previously be stringified as
141 "(?i-xsm:hlagh)", but now it's stringified as "(?^i:hlagh)".
142
143 The main purpose of this change is to allow tests that rely on the
144 stringification not to have to change whenever new modifiers are added.
145 See "Extended Patterns" in perlre.
146
147 This change is likely to break code that compares stringified regular
148 expressions with fixed strings containing "?-xism".
149
150 "/d", "/l", "/u", and "/a" modifiers
151
152 Four new regular expression modifiers have been added. These are
153 mutually exclusive: one only can be turned on at a time.
154
155 • The "/l" modifier says to compile the regular expression as if it
156 were in the scope of "use locale", even if it is not.
157
158 • The "/u" modifier says to compile the regular expression as if it
159 were in the scope of a "use feature 'unicode_strings'" pragma.
160
161 • The "/d" (default) modifier is used to override any "use locale"
162 and "use feature 'unicode_strings'" pragmas in effect at the time
163 of compiling the regular expression.
164
165 • The "/a" regular expression modifier restricts "\s", "\d" and "\w"
166 and the POSIX ("[[:posix:]]") character classes to the ASCII range.
167 Their complements and "\b" and "\B" are correspondingly affected.
168 Otherwise, "/a" behaves like the "/u" modifier, in that case-
169 insensitive matching uses Unicode semantics.
170
171 If the "/a" modifier is repeated, then additionally in case-
172 insensitive matching, no ASCII character can match a non-ASCII
173 character. For example,
174
175 "k" =~ /\N{KELVIN SIGN}/ai
176 "\xDF" =~ /ss/ai
177
178 match but
179
180 "k" =~ /\N{KELVIN SIGN}/aai
181 "\xDF" =~ /ss/aai
182
183 do not match.
184
185 See "Modifiers" in perlre for more detail.
186
187 Non-destructive substitution
188
189 The substitution ("s///") and transliteration ("y///") operators now
190 support an "/r" option that copies the input variable, carries out the
191 substitution on the copy, and returns the result. The original remains
192 unmodified.
193
194 my $old = "cat";
195 my $new = $old =~ s/cat/dog/r;
196 # $old is "cat" and $new is "dog"
197
198 This is particularly useful with "map". See perlop for more examples.
199
200 Re-entrant regular expression engine
201
202 It is now safe to use regular expressions within "(?{...})" and
203 "(??{...})" code blocks inside regular expressions.
204
205 These blocks are still experimental, however, and still have problems
206 with lexical ("my") variables and abnormal exiting.
207
208 "use re '/flags'"
209
210 The "re" pragma now has the ability to turn on regular expression flags
211 till the end of the lexical scope:
212
213 use re "/x";
214 "foo" =~ / (.+) /; # /x implied
215
216 See "'/flags' mode" in re for details.
217
218 \o{...} for octals
219
220 There is a new octal escape sequence, "\o", in doublequote-like
221 contexts. This construct allows large octal ordinals beyond the
222 current max of 0777 to be represented. It also allows you to specify a
223 character in octal which can safely be concatenated with other regex
224 snippets and which won't be confused with being a backreference to a
225 regex capture group. See "Capture groups" in perlre.
226
227 Add "\p{Titlecase}" as a synonym for "\p{Title}"
228
229 This synonym is added for symmetry with the Unicode property names
230 "\p{Uppercase}" and "\p{Lowercase}".
231
232 Regular expression debugging output improvement
233
234 Regular expression debugging output (turned on by "use re 'debug'") now
235 uses hexadecimal when escaping non-ASCII characters, instead of octal.
236
237 Return value of "delete $+{...}"
238
239 Custom regular expression engines can now determine the return value of
240 "delete" on an entry of "%+" or "%-".
241
242 Syntactical Enhancements
243 Array and hash container functions accept references
244
245 Warning: This feature is considered experimental, as the exact
246 behaviour may change in a future version of Perl.
247
248 All builtin functions that operate directly on array or hash containers
249 now also accept unblessed hard references to arrays or hashes:
250
251 |----------------------------+---------------------------|
252 | Traditional syntax | Terse syntax |
253 |----------------------------+---------------------------|
254 | push @$arrayref, @stuff | push $arrayref, @stuff |
255 | unshift @$arrayref, @stuff | unshift $arrayref, @stuff |
256 | pop @$arrayref | pop $arrayref |
257 | shift @$arrayref | shift $arrayref |
258 | splice @$arrayref, 0, 2 | splice $arrayref, 0, 2 |
259 | keys %$hashref | keys $hashref |
260 | keys @$arrayref | keys $arrayref |
261 | values %$hashref | values $hashref |
262 | values @$arrayref | values $arrayref |
263 | ($k,$v) = each %$hashref | ($k,$v) = each $hashref |
264 | ($k,$v) = each @$arrayref | ($k,$v) = each $arrayref |
265 |----------------------------+---------------------------|
266
267 This allows these builtin functions to act on long dereferencing chains
268 or on the return value of subroutines without needing to wrap them in
269 "@{}" or "%{}":
270
271 push @{$obj->tags}, $new_tag; # old way
272 push $obj->tags, $new_tag; # new way
273
274 for ( keys %{$hoh->{genres}{artists}} ) {...} # old way
275 for ( keys $hoh->{genres}{artists} ) {...} # new way
276
277 Single term prototype
278
279 The "+" prototype is a special alternative to "$" that acts like
280 "\[@%]" when given a literal array or hash variable, but will otherwise
281 force scalar context on the argument. See "Prototypes" in perlsub.
282
283 "package" block syntax
284
285 A package declaration can now contain a code block, in which case the
286 declaration is in scope inside that block only. So "package Foo { ...
287 }" is precisely equivalent to "{ package Foo; ... }". It also works
288 with a version number in the declaration, as in "package Foo 1.2 { ...
289 }", which is its most attractive feature. See perlfunc.
290
291 Statement labels can appear in more places
292
293 Statement labels can now occur before any type of statement or
294 declaration, such as "package".
295
296 Stacked labels
297
298 Multiple statement labels can now appear before a single statement.
299
300 Uppercase X/B allowed in hexadecimal/binary literals
301
302 Literals may now use either upper case "0X..." or "0B..." prefixes, in
303 addition to the already supported "0x..." and "0b..." syntax [perl
304 #76296].
305
306 C, Ruby, Python, and PHP already support this syntax, and it makes Perl
307 more internally consistent: a round-trip with "eval sprintf "%#X",
308 0x10" now returns 16, just like "eval sprintf "%#x", 0x10".
309
310 Overridable tie functions
311
312 "tie", "tied" and "untie" can now be overridden [perl #75902].
313
314 Exception Handling
315 To make them more reliable and consistent, several changes have been
316 made to how "die", "warn", and $@ behave.
317
318 • When an exception is thrown inside an "eval", the exception is no
319 longer at risk of being clobbered by destructor code running during
320 unwinding. Previously, the exception was written into $@ early in
321 the throwing process, and would be overwritten if "eval" was used
322 internally in the destructor for an object that had to be freed
323 while exiting from the outer "eval". Now the exception is written
324 into $@ last thing before exiting the outer "eval", so the code
325 running immediately thereafter can rely on the value in $@
326 correctly corresponding to that "eval". ($@ is still also set
327 before exiting the "eval", for the sake of destructors that rely on
328 this.)
329
330 Likewise, a "local $@" inside an "eval" no longer clobbers any
331 exception thrown in its scope. Previously, the restoration of $@
332 upon unwinding would overwrite any exception being thrown. Now the
333 exception gets to the "eval" anyway. So "local $@" is safe before
334 a "die".
335
336 Exceptions thrown from object destructors no longer modify the $@
337 of the surrounding context. (If the surrounding context was
338 exception unwinding, this used to be another way to clobber the
339 exception being thrown.) Previously such an exception was
340 sometimes emitted as a warning, and then either was string-appended
341 to the surrounding $@ or completely replaced the surrounding $@,
342 depending on whether that exception and the surrounding $@ were
343 strings or objects. Now, an exception in this situation is always
344 emitted as a warning, leaving the surrounding $@ untouched. In
345 addition to object destructors, this also affects any function call
346 run by XS code using the "G_KEEPERR" flag.
347
348 • Warnings for "warn" can now be objects in the same way as
349 exceptions for "die". If an object-based warning gets the default
350 handling of writing to standard error, it is stringified as before
351 with the filename and line number appended. But a $SIG{__WARN__}
352 handler now receives an object-based warning as an object, where
353 previously it was passed the result of stringifying the object.
354
355 Other Enhancements
356 Assignment to $0 sets the legacy process name with prctl() on Linux
357
358 On Linux the legacy process name is now set with prctl(2), in addition
359 to altering the POSIX name via "argv[0]", as Perl has done since
360 version 4.000. Now system utilities that read the legacy process name
361 such as ps, top, and killall recognize the name you set when assigning
362 to $0. The string you supply is truncated at 16 bytes; this limitation
363 is imposed by Linux.
364
365 srand() now returns the seed
366
367 This allows programs that need to have repeatable results not to have
368 to come up with their own seed-generating mechanism. Instead, they can
369 use srand() and stash the return value for future use. One example is
370 a test program with too many combinations to test comprehensively in
371 the time available for each run. It can test a random subset each time
372 and, should there be a failure, log the seed used for that run so this
373 can later be used to produce the same results.
374
375 printf-like functions understand post-1980 size modifiers
376
377 Perl's printf and sprintf operators, and Perl's internal printf
378 replacement function, now understand the C90 size modifiers "hh"
379 ("char"), "z" ("size_t"), and "t" ("ptrdiff_t"). Also, when compiled
380 with a C99 compiler, Perl now understands the size modifier "j"
381 ("intmax_t") (but this is not portable).
382
383 So, for example, on any modern machine, "sprintf("%hhd", 257)" returns
384 "1".
385
386 New global variable "${^GLOBAL_PHASE}"
387
388 A new global variable, "${^GLOBAL_PHASE}", has been added to allow
389 introspection of the current phase of the Perl interpreter. It's
390 explained in detail in "${^GLOBAL_PHASE}" in perlvar and in "BEGIN,
391 UNITCHECK, CHECK, INIT and END" in perlmod.
392
393 "-d:-foo" calls "Devel::foo::unimport"
394
395 The syntax -d:foo was extended in 5.6.1 to make -d:foo=bar equivalent
396 to -MDevel::foo=bar, which expands internally to "use Devel::foo
397 'bar'". Perl now allows prefixing the module name with -, with the
398 same semantics as -M; that is:
399
400 "-d:-foo"
401 Equivalent to -M-Devel::foo: expands to "no Devel::foo" and calls
402 "Devel::foo->unimport()" if that method exists.
403
404 "-d:-foo=bar"
405 Equivalent to -M-Devel::foo=bar: expands to "no Devel::foo 'bar'",
406 and calls "Devel::foo->unimport("bar")" if that method exists.
407
408 This is particularly useful for suppressing the default actions of a
409 "Devel::*" module's "import" method whilst still loading it for
410 debugging.
411
412 Filehandle method calls load IO::File on demand
413
414 When a method call on a filehandle would die because the method cannot
415 be resolved and IO::File has not been loaded, Perl now loads IO::File
416 via "require" and attempts method resolution again:
417
418 open my $fh, ">", $file;
419 $fh->binmode(":raw"); # loads IO::File and succeeds
420
421 This also works for globs like "STDOUT", "STDERR", and "STDIN":
422
423 STDOUT->autoflush(1);
424
425 Because this on-demand load happens only if method resolution fails,
426 the legacy approach of manually loading an IO::File parent class for
427 partial method support still works as expected:
428
429 use IO::Handle;
430 open my $fh, ">", $file;
431 $fh->autoflush(1); # IO::File not loaded
432
433 Improved IPv6 support
434
435 The "Socket" module provides new affordances for IPv6, including
436 implementations of the Socket::getaddrinfo() and Socket::getnameinfo()
437 functions, along with related constants and a handful of new functions.
438 See Socket.
439
440 DTrace probes now include package name
441
442 The "DTrace" probes now include an additional argument, "arg3", which
443 contains the package the subroutine being entered or left was compiled
444 in.
445
446 For example, using the following DTrace script:
447
448 perl$target:::sub-entry
449 {
450 printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3));
451 }
452
453 and then running:
454
455 $ perl -e 'sub test { }; test'
456
457 "DTrace" will print:
458
459 main::test
460
461 New C APIs
462 See "Internal Changes".
463
465 User-defined regular expression properties
466 "User-Defined Character Properties" in perlunicode documented that you
467 can create custom properties by defining subroutines whose names begin
468 with "In" or "Is". However, Perl did not actually enforce that naming
469 restriction, so "\p{foo::bar}" could call foo::bar() if it existed.
470 The documented convention is now enforced.
471
472 Also, Perl no longer allows tainted regular expressions to invoke a
473 user-defined property. It simply dies instead [perl #82616].
474
476 Perl 5.14.0 is not binary-compatible with any previous stable release.
477
478 In addition to the sections that follow, see "C API Changes".
479
480 Regular Expressions and String Escapes
481 Inverted bracketed character classes and multi-character folds
482
483 Some characters match a sequence of two or three characters in "/i"
484 regular expression matching under Unicode rules. One example is "LATIN
485 SMALL LETTER SHARP S" which matches the sequence "ss".
486
487 'ss' =~ /\A[\N{LATIN SMALL LETTER SHARP S}]\z/i # Matches
488
489 This, however, can lead to very counter-intuitive results, especially
490 when inverted. Because of this, Perl 5.14 does not use multi-character
491 "/i" matching in inverted character classes.
492
493 'ss' =~ /\A[^\N{LATIN SMALL LETTER SHARP S}]+\z/i # ???
494
495 This should match any sequences of characters that aren't the "SHARP S"
496 nor what "SHARP S" matches under "/i". "s" isn't "SHARP S", but
497 Unicode says that "ss" is what "SHARP S" matches under "/i". So which
498 one "wins"? Do you fail the match because the string has "ss" or accept
499 it because it has an "s" followed by another "s"?
500
501 Earlier releases of Perl did allow this multi-character matching, but
502 due to bugs, it mostly did not work.
503
504 \400-\777
505
506 In certain circumstances, "\400"-"\777" in regexes have behaved
507 differently than they behave in all other doublequote-like contexts.
508 Since 5.10.1, Perl has issued a deprecation warning when this happens.
509 Now, these literals behave the same in all doublequote-like contexts,
510 namely to be equivalent to "\x{100}"-"\x{1FF}", with no deprecation
511 warning.
512
513 Use of "\400"-"\777" in the command-line option -0 retain their
514 conventional meaning. They slurp whole input files; previously, this
515 was documented only for -0777.
516
517 Because of various ambiguities, you should use the new "\o{...}"
518 construct to represent characters in octal instead.
519
520 Most "\p{}" properties are now immune to case-insensitive matching
521
522 For most Unicode properties, it doesn't make sense to have them match
523 differently under "/i" case-insensitive matching. Doing so can lead to
524 unexpected results and potential security holes. For example
525
526 m/\p{ASCII_Hex_Digit}+/i
527
528 could previously match non-ASCII characters because of the Unicode
529 matching rules (although there were several bugs with this). Now
530 matching under "/i" gives the same results as non-"/i" matching except
531 for those few properties where people have come to expect differences,
532 namely the ones where casing is an integral part of their meaning, such
533 as "m/\p{Uppercase}/i" and "m/\p{Lowercase}/i", both of which match the
534 same code points as matched by "m/\p{Cased}/i". Details are in
535 "Unicode Properties" in perlrecharclass.
536
537 User-defined property handlers that need to match differently under
538 "/i" must be changed to read the new boolean parameter passed to them,
539 which is non-zero if case-insensitive matching is in effect and 0
540 otherwise. See "User-Defined Character Properties" in perlunicode.
541
542 \p{} implies Unicode semantics
543
544 Specifying a Unicode property in the pattern indicates that the pattern
545 is meant for matching according to Unicode rules, the way "\N{NAME}"
546 does.
547
548 Regular expressions retain their localeness when interpolated
549
550 Regular expressions compiled under "use locale" now retain this when
551 interpolated into a new regular expression compiled outside a "use
552 locale", and vice-versa.
553
554 Previously, one regular expression interpolated into another inherited
555 the localeness of the surrounding regex, losing whatever state it
556 originally had. This is considered a bug fix, but may trip up code
557 that has come to rely on the incorrect behaviour.
558
559 Stringification of regexes has changed
560
561 Default regular expression modifiers are now notated using "(?^...)".
562 Code relying on the old stringification will fail. This is so that
563 when new modifiers are added, such code won't have to keep changing
564 each time this happens, because the stringification will automatically
565 incorporate the new modifiers.
566
567 Code that needs to work properly with both old- and new-style regexes
568 can avoid the whole issue by using (for perls since 5.9.5; see re):
569
570 use re qw(regexp_pattern);
571 my ($pat, $mods) = regexp_pattern($re_ref);
572
573 If the actual stringification is important or older Perls need to be
574 supported, you can use something like the following:
575
576 # Accept both old and new-style stringification
577 my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? "^" : "-xism";
578
579 And then use $modifiers instead of "-xism".
580
581 Run-time code blocks in regular expressions inherit pragmata
582
583 Code blocks in regular expressions ("(?{...})" and "(??{...})")
584 previously did not inherit pragmata (strict, warnings, etc.) if the
585 regular expression was compiled at run time as happens in cases like
586 these two:
587
588 use re "eval";
589 $foo =~ $bar; # when $bar contains (?{...})
590 $foo =~ /$bar(?{ $finished = 1 })/;
591
592 This bug has now been fixed, but code that relied on the buggy
593 behaviour may need to be fixed to account for the correct behaviour.
594
595 Stashes and Package Variables
596 Localised tied hashes and arrays are no longed tied
597
598 In the following:
599
600 tie @a, ...;
601 {
602 local @a;
603 # here, @a is a now a new, untied array
604 }
605 # here, @a refers again to the old, tied array
606
607 Earlier versions of Perl incorrectly tied the new local array. This
608 has now been fixed. This fix could however potentially cause a change
609 in behaviour of some code.
610
611 Stashes are now always defined
612
613 "defined %Foo::" now always returns true, even when no symbols have yet
614 been defined in that package.
615
616 This is a side-effect of removing a special-case kludge in the
617 tokeniser, added for 5.10.0, to hide side-effects of changes to the
618 internal storage of hashes. The fix drastically reduces hashes' memory
619 overhead.
620
621 Calling defined on a stash has been deprecated since 5.6.0, warned on
622 lexicals since 5.6.0, and warned for stashes and other package
623 variables since 5.12.0. "defined %hash" has always exposed an
624 implementation detail: emptying a hash by deleting all entries from it
625 does not make "defined %hash" false. Hence "defined %hash" is not
626 valid code to determine whether an arbitrary hash is empty. Instead,
627 use the behaviour of an empty %hash always returning false in scalar
628 context.
629
630 Clearing stashes
631
632 Stash list assignment "%foo:: = ()" used to make the stash temporarily
633 anonymous while it was being emptied. Consequently, any of its
634 subroutines referenced elsewhere would become anonymous, showing up as
635 "(unknown)" in "caller". They now retain their package names such that
636 "caller" returns the original sub name if there is still a reference to
637 its typeglob and "foo::__ANON__" otherwise [perl #79208].
638
639 Dereferencing typeglobs
640
641 If you assign a typeglob to a scalar variable:
642
643 $glob = *foo;
644
645 the glob that is copied to $glob is marked with a special flag
646 indicating that the glob is just a copy. This allows subsequent
647 assignments to $glob to overwrite the glob. The original glob,
648 however, is immutable.
649
650 Some Perl operators did not distinguish between these two types of
651 globs. This would result in strange behaviour in edge cases: "untie
652 $scalar" would not untie the scalar if the last thing assigned to it
653 was a glob (because it treated it as "untie *$scalar", which unties a
654 handle). Assignment to a glob slot (such as "*$glob = \@some_array")
655 would simply assign "\@some_array" to $glob.
656
657 To fix this, the "*{}" operator (including its *foo and *$foo forms)
658 has been modified to make a new immutable glob if its operand is a glob
659 copy. This allows operators that make a distinction between globs and
660 scalars to be modified to treat only immutable globs as globs. ("tie",
661 "tied" and "untie" have been left as they are for compatibility's sake,
662 but will warn. See "Deprecations".)
663
664 This causes an incompatible change in code that assigns a glob to the
665 return value of "*{}" when that operator was passed a glob copy. Take
666 the following code, for instance:
667
668 $glob = *foo;
669 *$glob = *bar;
670
671 The *$glob on the second line returns a new immutable glob. That new
672 glob is made an alias to *bar. Then it is discarded. So the second
673 assignment has no effect.
674
675 See <https://github.com/Perl/perl5/issues/10625> for more detail.
676
677 Magic variables outside the main package
678
679 In previous versions of Perl, magic variables like $!, %SIG, etc. would
680 "leak" into other packages. So %foo::SIG could be used to access
681 signals, "${"foo::!"}" (with strict mode off) to access C's "errno",
682 etc.
683
684 This was a bug, or an "unintentional" feature, which caused various ill
685 effects, such as signal handlers being wiped when modules were loaded,
686 etc.
687
688 This has been fixed (or the feature has been removed, depending on how
689 you see it).
690
691 local($_) strips all magic from $_
692
693 local() on scalar variables gives them a new value but keeps all their
694 magic intact. This has proven problematic for the default scalar
695 variable $_, where perlsub recommends that any subroutine that assigns
696 to $_ should first localize it. This would throw an exception if $_ is
697 aliased to a read-only variable, and could in general have various
698 unintentional side-effects.
699
700 Therefore, as an exception to the general rule, local($_) will not only
701 assign a new value to $_, but also remove all existing magic from it as
702 well.
703
704 Parsing of package and variable names
705
706 Parsing the names of packages and package variables has changed:
707 multiple adjacent pairs of colons, as in "foo::::bar", are now all
708 treated as package separators.
709
710 Regardless of this change, the exact parsing of package separators has
711 never been guaranteed and is subject to change in future Perl versions.
712
713 Changes to Syntax or to Perl Operators
714 "given" return values
715
716 "given" blocks now return the last evaluated expression, or an empty
717 list if the block was exited by "break". Thus you can now write:
718
719 my $type = do {
720 given ($num) {
721 break when undef;
722 "integer" when /^[+-]?[0-9]+$/;
723 "float" when /^[+-]?[0-9]+(?:\.[0-9]+)?$/;
724 "unknown";
725 }
726 };
727
728 See "Return value" in perlsyn for details.
729
730 Change in parsing of certain prototypes
731
732 Functions declared with the following prototypes now behave correctly
733 as unary functions:
734
735 *
736 \$ \% \@ \* \&
737 \[...]
738 ;$ ;*
739 ;\$ ;\% etc.
740 ;\[...]
741
742 Due to this bug fix [perl #75904], functions using the "(*)", "(;$)"
743 and "(;*)" prototypes are parsed with higher precedence than before.
744 So in the following example:
745
746 sub foo(;$);
747 foo $a < $b;
748
749 the second line is now parsed correctly as "foo($a) < $b", rather than
750 "foo($a < $b)". This happens when one of these operators is used in an
751 unparenthesised argument:
752
753 < > <= >= lt gt le ge
754 == != <=> eq ne cmp ~~
755 &
756 | ^
757 &&
758 || //
759 .. ...
760 ?:
761 = += -= *= etc.
762 , =>
763
764 Smart-matching against array slices
765
766 Previously, the following code resulted in a successful match:
767
768 my @a = qw(a y0 z);
769 my @b = qw(a x0 z);
770 @a[0 .. $#b] ~~ @b;
771
772 This odd behaviour has now been fixed [perl #77468].
773
774 Negation treats strings differently from before
775
776 The unary negation operator, "-", now treats strings that look like
777 numbers as numbers [perl #57706].
778
779 Negative zero
780
781 Negative zero (-0.0), when converted to a string, now becomes "0" on
782 all platforms. It used to become "-0" on some, but "0" on others.
783
784 If you still need to determine whether a zero is negative, use
785 "sprintf("%g", $zero) =~ /^-/" or the Data::Float module on CPAN.
786
787 ":=" is now a syntax error
788
789 Previously "my $pi := 4" was exactly equivalent to "my $pi : = 4", with
790 the ":" being treated as the start of an attribute list, ending before
791 the "=". The use of ":=" to mean ": =" was deprecated in 5.12.0, and
792 is now a syntax error. This allows future use of ":=" as a new token.
793
794 Outside the core's tests for it, we find no Perl 5 code on CPAN using
795 this construction, so we believe that this change will have little
796 impact on real-world codebases.
797
798 If it is absolutely necessary to have empty attribute lists (for
799 example, because of a code generator), simply avoid the error by adding
800 a space before the "=".
801
802 Change in the parsing of identifiers
803
804 Characters outside the Unicode "XIDStart" set are no longer allowed at
805 the beginning of an identifier. This means that certain accents and
806 marks that normally follow an alphabetic character may no longer be the
807 first character of an identifier.
808
809 Threads and Processes
810 Directory handles not copied to threads
811
812 On systems other than Windows that do not have a "fchdir" function,
813 newly-created threads no longer inherit directory handles from their
814 parent threads. Such programs would usually have crashed anyway [perl
815 #75154].
816
817 "close" on shared pipes
818
819 To avoid deadlocks, the "close" function no longer waits for the child
820 process to exit if the underlying file descriptor is still in use by
821 another thread. It returns true in such cases.
822
823 fork() emulation will not wait for signalled children
824
825 On Windows parent processes would not terminate until all forked
826 children had terminated first. However, "kill("KILL", ...)" is
827 inherently unstable on pseudo-processes, and "kill("TERM", ...)" might
828 not get delivered if the child is blocked in a system call.
829
830 To avoid the deadlock and still provide a safe mechanism to terminate
831 the hosting process, Perl now no longer waits for children that have
832 been sent a SIGTERM signal. It is up to the parent process to
833 waitpid() for these children if child-cleanup processing must be
834 allowed to finish. However, it is also then the responsibility of the
835 parent to avoid the deadlock by making sure the child process can't be
836 blocked on I/O.
837
838 See perlfork for more information about the fork() emulation on
839 Windows.
840
841 Configuration
842 Naming fixes in Policy_sh.SH may invalidate Policy.sh
843
844 Several long-standing typos and naming confusions in Policy_sh.SH have
845 been fixed, standardizing on the variable names used in config.sh.
846
847 This will change the behaviour of Policy.sh if you happen to have been
848 accidentally relying on its incorrect behaviour.
849
850 Perl source code is read in text mode on Windows
851
852 Perl scripts used to be read in binary mode on Windows for the benefit
853 of the ByteLoader module (which is no longer part of core Perl). This
854 had the side-effect of breaking various operations on the "DATA"
855 filehandle, including seek()/tell(), and even simply reading from
856 "DATA" after filehandles have been flushed by a call to system(),
857 backticks, fork() etc.
858
859 The default build options for Windows have been changed to read Perl
860 source code on Windows in text mode now. ByteLoader will (hopefully)
861 be updated on CPAN to automatically handle this situation [perl
862 #28106].
863
865 See also "Deprecated C APIs".
866
867 Omitting a space between a regular expression and subsequent word
868 Omitting the space between a regular expression operator or its
869 modifiers and the following word is deprecated. For example,
870 "m/foo/sand $bar" is for now still parsed as "m/foo/s and $bar", but
871 will now issue a warning.
872
873 "\cX"
874 The backslash-c construct was designed as a way of specifying non-
875 printable characters, but there were no restrictions (on ASCII
876 platforms) on what the character following the "c" could be. Now, a
877 deprecation warning is raised if that character isn't an ASCII
878 character. Also, a deprecation warning is raised for "\c{" (which is
879 the same as simply saying ";").
880
881 "\b{" and "\B{"
882 In regular expressions, a literal "{" immediately following a "\b" (not
883 in a bracketed character class) or a "\B{" is now deprecated to allow
884 for its future use by Perl itself.
885
886 Perl 4-era .pl libraries
887 Perl bundles a handful of library files that predate Perl 5. This
888 bundling is now deprecated for most of these files, which are now
889 available from CPAN. The affected files now warn when run, if they
890 were installed as part of the core.
891
892 This is a mandatory warning, not obeying -X or lexical warning bits.
893 The warning is modelled on that supplied by deprecate.pm for
894 deprecated-in-core .pm libraries. It points to the specific CPAN
895 distribution that contains the .pl libraries. The CPAN versions, of
896 course, do not generate the warning.
897
898 List assignment to $[
899 Assignment to $[ was deprecated and started to give warnings in Perl
900 version 5.12.0. This version of Perl (5.14) now also emits a warning
901 when assigning to $[ in list context. This fixes an oversight in
902 5.12.0.
903
904 Use of qw(...) as parentheses
905 Historically the parser fooled itself into thinking that qw(...)
906 literals were always enclosed in parentheses, and as a result you could
907 sometimes omit parentheses around them:
908
909 for $x qw(a b c) { ... }
910
911 The parser no longer lies to itself in this way. Wrap the list literal
912 in parentheses like this:
913
914 for $x (qw(a b c)) { ... }
915
916 This is being deprecated because the parentheses in "for $i (1,2,3) {
917 ... }" are not part of expression syntax. They are part of the
918 statement syntax, with the "for" statement wanting literal parentheses.
919 The synthetic parentheses that a "qw" expression acquired were only
920 intended to be treated as part of expression syntax.
921
922 Note that this does not change the behaviour of cases like:
923
924 use POSIX qw(setlocale localeconv);
925 our @EXPORT = qw(foo bar baz);
926
927 where parentheses were never required around the expression.
928
929 "\N{BELL}"
930 This is because Unicode is using that name for a different character.
931 See "Unicode Version 6.0 is now supported (mostly)" for more
932 explanation.
933
934 "?PATTERN?"
935 "?PATTERN?" (without the initial "m") has been deprecated and now
936 produces a warning. This is to allow future use of "?" in new
937 operators. The match-once functionality is still available as
938 "m?PATTERN?".
939
940 Tie functions on scalars holding typeglobs
941 Calling a tie function ("tie", "tied", "untie") with a scalar argument
942 acts on a filehandle if the scalar happens to hold a typeglob.
943
944 This is a long-standing bug that will be removed in Perl 5.16, as there
945 is currently no way to tie the scalar itself when it holds a typeglob,
946 and no way to untie a scalar that has had a typeglob assigned to it.
947
948 Now there is a deprecation warning whenever a tie function is used on a
949 handle without an explicit "*".
950
951 User-defined case-mapping
952 This feature is being deprecated due to its many issues, as documented
953 in "User-Defined Case Mappings (for serious hackers only)" in
954 perlunicode. This feature will be removed in Perl 5.16. Instead use
955 the CPAN module Unicode::Casing, which provides improved functionality.
956
957 Deprecated modules
958 The following module will be removed from the core distribution in a
959 future release, and should be installed from CPAN instead.
960 Distributions on CPAN that require this should add it to their
961 prerequisites. The core version of these module now issues a
962 deprecation warning.
963
964 If you ship a packaged version of Perl, either alone or as part of a
965 larger system, then you should carefully consider the repercussions of
966 core module deprecations. You may want to consider shipping your
967 default build of Perl with a package for the deprecated module that
968 installs into "vendor" or "site" Perl library directories. This will
969 inhibit the deprecation warnings.
970
971 Alternatively, you may want to consider patching lib/deprecate.pm to
972 provide deprecation warnings specific to your packaging system or
973 distribution of Perl, consistent with how your packaging system or
974 distribution manages a staged transition from a release where the
975 installation of a single package provides the given functionality, to a
976 later release where the system administrator needs to know to install
977 multiple packages to get that same functionality.
978
979 You can silence these deprecation warnings by installing the module in
980 question from CPAN. To install the latest version of it by role rather
981 than by name, just install "Task::Deprecations::5_14".
982
983 Devel::DProf
984 We strongly recommend that you install and use Devel::NYTProf
985 instead of Devel::DProf, as Devel::NYTProf offers significantly
986 improved profiling and reporting.
987
989 "Safe signals" optimisation
990 Signal dispatch has been moved from the runloop into control ops. This
991 should give a few percent speed increase, and eliminates nearly all the
992 speed penalty caused by the introduction of "safe signals" in 5.8.0.
993 Signals should still be dispatched within the same statement as they
994 were previously. If this does not happen, or if you find it possible
995 to create uninterruptible loops, this is a bug, and reports are
996 encouraged of how to recreate such issues.
997
998 Optimisation of shift() and pop() calls without arguments
999 Two fewer OPs are used for shift() and pop() calls with no argument
1000 (with implicit @_). This change makes shift() 5% faster than "shift
1001 @_" on non-threaded perls, and 25% faster on threaded ones.
1002
1003 Optimisation of regexp engine string comparison work
1004 The "foldEQ_utf8" API function for case-insensitive comparison of
1005 strings (which is used heavily by the regexp engine) was substantially
1006 refactored and optimised -- and its documentation much improved as a
1007 free bonus.
1008
1009 Regular expression compilation speed-up
1010 Compiling regular expressions has been made faster when upgrading the
1011 regex to utf8 is necessary but this isn't known when the compilation
1012 begins.
1013
1014 String appending is 100 times faster
1015 When doing a lot of string appending, perls built to use the system's
1016 "malloc" could end up allocating a lot more memory than needed in a
1017 inefficient way.
1018
1019 "sv_grow", the function used to allocate more memory if necessary when
1020 appending to a string, has been taught to round up the memory it
1021 requests to a certain geometric progression, making it much faster on
1022 certain platforms and configurations. On Win32, it's now about 100
1023 times faster.
1024
1025 Eliminate "PL_*" accessor functions under ithreads
1026 When "MULTIPLICITY" was first developed, and interpreter state moved
1027 into an interpreter struct, thread- and interpreter-local "PL_*"
1028 variables were defined as macros that called accessor functions
1029 (returning the address of the value) outside the Perl core. The intent
1030 was to allow members within the interpreter struct to change size
1031 without breaking binary compatibility, so that bug fixes could be
1032 merged to a maintenance branch that necessitated such a size change.
1033 This mechanism was redundant and penalised well-behaved code. It has
1034 been removed.
1035
1036 Freeing weak references
1037 When there are many weak references to an object, freeing that object
1038 can under some circumstances take O(N*N) time to free, where N is the
1039 number of references. The circumstances in which this can happen have
1040 been reduced [perl #75254]
1041
1042 Lexical array and hash assignments
1043 An earlier optimisation to speed up "my @array = ..." and "my %hash =
1044 ..." assignments caused a bug and was disabled in Perl 5.12.0.
1045
1046 Now we have found another way to speed up these assignments [perl
1047 #82110].
1048
1049 @_ uses less memory
1050 Previously, @_ was allocated for every subroutine at compile time with
1051 enough space for four entries. Now this allocation is done on demand
1052 when the subroutine is called [perl #72416].
1053
1054 Size optimisations to SV and HV structures
1055 "xhv_fill" has been eliminated from "struct xpvhv", saving 1 IV per
1056 hash and on some systems will cause "struct xpvhv" to become cache-
1057 aligned. To avoid this memory saving causing a slowdown elsewhere,
1058 boolean use of "HvFILL" now calls "HvTOTALKEYS" instead (which is
1059 equivalent), so while the fill data when actually required are now
1060 calculated on demand, cases when this needs to be done should be rare.
1061
1062 The order of structure elements in SV bodies has changed. Effectively,
1063 the NV slot has swapped location with STASH and MAGIC. As all access
1064 to SV members is via macros, this should be completely transparent.
1065 This change allows the space saving for PVHVs documented above, and may
1066 reduce the memory allocation needed for PVIVs on some architectures.
1067
1068 "XPV", "XPVIV", and "XPVNV" now allocate only the parts of the "SV"
1069 body they actually use, saving some space.
1070
1071 Scalars containing regular expressions now allocate only the part of
1072 the "SV" body they actually use, saving some space.
1073
1074 Memory consumption improvements to Exporter
1075 The @EXPORT_FAIL AV is no longer created unless needed, hence neither
1076 is the typeglob backing it. This saves about 200 bytes for every
1077 package that uses Exporter but doesn't use this functionality.
1078
1079 Memory savings for weak references
1080 For weak references, the common case of just a single weak reference
1081 per referent has been optimised to reduce the storage required. In
1082 this case it saves the equivalent of one small Perl array per referent.
1083
1084 "%+" and "%-" use less memory
1085 The bulk of the "Tie::Hash::NamedCapture" module used to be in the Perl
1086 core. It has now been moved to an XS module to reduce overhead for
1087 programs that do not use "%+" or "%-".
1088
1089 Multiple small improvements to threads
1090 The internal structures of threading now make fewer API calls and fewer
1091 allocations, resulting in noticeably smaller object code.
1092 Additionally, many thread context checks have been deferred so they're
1093 done only as needed (although this is only possible for non-debugging
1094 builds).
1095
1096 Adjacent pairs of nextstate opcodes are now optimized away
1097 Previously, in code such as
1098
1099 use constant DEBUG => 0;
1100
1101 sub GAK {
1102 warn if DEBUG;
1103 print "stuff\n";
1104 }
1105
1106 the ops for "warn if DEBUG" would be folded to a "null" op
1107 ("ex-const"), but the "nextstate" op would remain, resulting in a
1108 runtime op dispatch of "nextstate", "nextstate", etc.
1109
1110 The execution of a sequence of "nextstate" ops is indistinguishable
1111 from just the last "nextstate" op so the peephole optimizer now
1112 eliminates the first of a pair of "nextstate" ops except when the first
1113 carries a label, since labels must not be eliminated by the optimizer,
1114 and label usage isn't conclusively known at compile time.
1115
1117 New Modules and Pragmata
1118 • CPAN::Meta::YAML 0.003 has been added as a dual-life module. It
1119 supports a subset of YAML sufficient for reading and writing
1120 META.yml and MYMETA.yml files included with CPAN distributions or
1121 generated by the module installation toolchain. It should not be
1122 used for any other general YAML parsing or generation task.
1123
1124 • CPAN::Meta version 2.110440 has been added as a dual-life module.
1125 It provides a standard library to read, interpret and write CPAN
1126 distribution metadata files (like META.json and META.yml) that
1127 describe a distribution, its contents, and the requirements for
1128 building it and installing it. The latest CPAN distribution
1129 metadata specification is included as CPAN::Meta::Spec and notes on
1130 changes in the specification over time are given in
1131 CPAN::Meta::History.
1132
1133 • HTTP::Tiny 0.012 has been added as a dual-life module. It is a
1134 very small, simple HTTP/1.1 client designed for simple GET requests
1135 and file mirroring. It has been added so that CPAN.pm and CPANPLUS
1136 can "bootstrap" HTTP access to CPAN using pure Perl without relying
1137 on external binaries like curl(1) or wget(1).
1138
1139 • JSON::PP 2.27105 has been added as a dual-life module to allow CPAN
1140 clients to read META.json files in CPAN distributions.
1141
1142 • Module::Metadata 1.000004 has been added as a dual-life module. It
1143 gathers package and POD information from Perl module files. It is
1144 a standalone module based on Module::Build::ModuleInfo for use by
1145 other module installation toolchain components.
1146 Module::Build::ModuleInfo has been deprecated in favor of this
1147 module instead.
1148
1149 • Perl::OSType 1.002 has been added as a dual-life module. It maps
1150 Perl operating system names (like "dragonfly" or "MSWin32") to more
1151 generic types with standardized names (like "Unix" or "Windows").
1152 It has been refactored out of Module::Build and ExtUtils::CBuilder
1153 and consolidates such mappings into a single location for easier
1154 maintenance.
1155
1156 • The following modules were added by the Unicode::Collate upgrade.
1157 See below for details.
1158
1159 Unicode::Collate::CJK::Big5
1160
1161 Unicode::Collate::CJK::GB2312
1162
1163 Unicode::Collate::CJK::JISX0208
1164
1165 Unicode::Collate::CJK::Korean
1166
1167 Unicode::Collate::CJK::Pinyin
1168
1169 Unicode::Collate::CJK::Stroke
1170
1171 • Version::Requirements version 0.101020 has been added as a dual-
1172 life module. It provides a standard library to model and
1173 manipulates module prerequisites and version constraints defined in
1174 CPAN::Meta::Spec.
1175
1176 Updated Modules and Pragma
1177 • attributes has been upgraded from version 0.12 to 0.14.
1178
1179 • Archive::Extract has been upgraded from version 0.38 to 0.48.
1180
1181 Updates since 0.38 include: a safe print method that guards
1182 Archive::Extract from changes to "$\"; a fix to the tests when run
1183 in core Perl; support for TZ files; a modification for the lzma
1184 logic to favour IO::Uncompress::Unlzma; and a fix for an issue with
1185 NetBSD-current and its new unzip(1) executable.
1186
1187 • Archive::Tar has been upgraded from version 1.54 to 1.76.
1188
1189 Important changes since 1.54 include the following:
1190
1191 • Compatibility with busybox implementations of tar(1).
1192
1193 • A fix so that write() and create_archive() close only
1194 filehandles they themselves opened.
1195
1196 • A bug was fixed regarding the exit code of extract_archive.
1197
1198 • The ptar(1) utility has a new option to allow safe creation of
1199 tarballs without world-writable files on Windows, allowing
1200 those archives to be uploaded to CPAN.
1201
1202 • A new ptargrep(1) utility for using regular expressions against
1203 the contents of files in a tar archive.
1204
1205 • pax extended headers are now skipped.
1206
1207 • Attribute::Handlers has been upgraded from version 0.87 to 0.89.
1208
1209 • autodie has been upgraded from version 2.06_01 to 2.1001.
1210
1211 • AutoLoader has been upgraded from version 5.70 to 5.71.
1212
1213 • The B module has been upgraded from version 1.23 to 1.29.
1214
1215 It no longer crashes when taking apart a "y///" containing
1216 characters outside the octet range or compiled in a "use utf8"
1217 scope.
1218
1219 The size of the shared object has been reduced by about 40%, with
1220 no reduction in functionality.
1221
1222 • B::Concise has been upgraded from version 0.78 to 0.83.
1223
1224 B::Concise marks rv2sv(), rv2av(), and rv2hv() ops with the new
1225 "OPpDEREF" flag as "DREFed".
1226
1227 It no longer produces mangled output with the -tree option [perl
1228 #80632].
1229
1230 • B::Debug has been upgraded from version 1.12 to 1.16.
1231
1232 • B::Deparse has been upgraded from version 0.96 to 1.03.
1233
1234 The deparsing of a "nextstate" op has changed when it has both a
1235 change of package relative to the previous nextstate, or a change
1236 of "%^H" or other state and a label. The label was previously
1237 emitted first, but is now emitted last (5.12.1).
1238
1239 The "no 5.13.2" or similar form is now correctly handled by
1240 B::Deparse (5.12.3).
1241
1242 B::Deparse now properly handles the code that applies a conditional
1243 pattern match against implicit $_ as it was fixed in [perl #20444].
1244
1245 Deparsing of "our" followed by a variable with funny characters (as
1246 permitted under the "use utf8" pragma) has also been fixed [perl
1247 #33752].
1248
1249 • B::Lint has been upgraded from version 1.11_01 to 1.13.
1250
1251 • base has been upgraded from version 2.15 to 2.16.
1252
1253 • Benchmark has been upgraded from version 1.11 to 1.12.
1254
1255 • bignum has been upgraded from version 0.23 to 0.27.
1256
1257 • Carp has been upgraded from version 1.15 to 1.20.
1258
1259 Carp now detects incomplete caller() overrides and avoids using
1260 bogus @DB::args. To provide backtraces, Carp relies on particular
1261 behaviour of the caller() builtin. Carp now detects if other code
1262 has overridden this with an incomplete implementation, and modifies
1263 its backtrace accordingly. Previously incomplete overrides would
1264 cause incorrect values in backtraces (best case), or obscure fatal
1265 errors (worst case).
1266
1267 This fixes certain cases of "Bizarre copy of ARRAY" caused by
1268 modules overriding caller() incorrectly (5.12.2).
1269
1270 It now also avoids using regular expressions that cause Perl to
1271 load its Unicode tables, so as to avoid the "BEGIN not safe after
1272 errors" error that ensue if there has been a syntax error [perl
1273 #82854].
1274
1275 • CGI has been upgraded from version 3.48 to 3.52.
1276
1277 This provides the following security fixes: the MIME boundary in
1278 multipart_init() is now random and the handling of newlines
1279 embedded in header values has been improved.
1280
1281 • Compress::Raw::Bzip2 has been upgraded from version 2.024 to 2.033.
1282
1283 It has been updated to use bzip2(1) 1.0.6.
1284
1285 • Compress::Raw::Zlib has been upgraded from version 2.024 to 2.033.
1286
1287 • constant has been upgraded from version 1.20 to 1.21.
1288
1289 Unicode constants work once more. They have been broken since Perl
1290 5.10.0 [CPAN RT #67525].
1291
1292 • CPAN has been upgraded from version 1.94_56 to 1.9600.
1293
1294 Major highlights:
1295
1296 • much less configuration dialog hassle
1297
1298 • support for META/MYMETA.json
1299
1300 • support for local::lib
1301
1302 • support for HTTP::Tiny to reduce the dependency on FTP sites
1303
1304 • automatic mirror selection
1305
1306 • iron out all known bugs in configure_requires
1307
1308 • support for distributions compressed with bzip2(1)
1309
1310 • allow Foo/Bar.pm on the command line to mean "Foo::Bar"
1311
1312 • CPANPLUS has been upgraded from version 0.90 to 0.9103.
1313
1314 A change to cpanp-run-perl resolves RT #55964
1315 <http://rt.cpan.org/Public/Bug/Display.html?id=55964> and RT #57106
1316 <http://rt.cpan.org/Public/Bug/Display.html?id=57106>, both of
1317 which related to failures to install distributions that use
1318 "Module::Install::DSL" (5.12.2).
1319
1320 A dependency on Config was not recognised as a core module
1321 dependency. This has been fixed.
1322
1323 CPANPLUS now includes support for META.json and MYMETA.json.
1324
1325 • CPANPLUS::Dist::Build has been upgraded from version 0.46 to 0.54.
1326
1327 • Data::Dumper has been upgraded from version 2.125 to 2.130_02.
1328
1329 The indentation used to be off when $Data::Dumper::Terse was set.
1330 This has been fixed [perl #73604].
1331
1332 This upgrade also fixes a crash when using custom sort functions
1333 that might cause the stack to change [perl #74170].
1334
1335 Dumpxs no longer crashes with globs returned by *$io_ref [perl
1336 #72332].
1337
1338 • DB_File has been upgraded from version 1.820 to 1.821.
1339
1340 • DBM_Filter has been upgraded from version 0.03 to 0.04.
1341
1342 • Devel::DProf has been upgraded from version 20080331.00 to
1343 20110228.00.
1344
1345 Merely loading Devel::DProf now no longer triggers profiling to
1346 start. Both "use Devel::DProf" and "perl -d:DProf ..." behave as
1347 before and start the profiler.
1348
1349 NOTE: Devel::DProf is deprecated and will be removed from a future
1350 version of Perl. We strongly recommend that you install and use
1351 Devel::NYTProf instead, as it offers significantly improved
1352 profiling and reporting.
1353
1354 • Devel::Peek has been upgraded from version 1.04 to 1.07.
1355
1356 • Devel::SelfStubber has been upgraded from version 1.03 to 1.05.
1357
1358 • diagnostics has been upgraded from version 1.19 to 1.22.
1359
1360 It now renders pod links slightly better, and has been taught to
1361 find descriptions for messages that share their descriptions with
1362 other messages.
1363
1364 • Digest::MD5 has been upgraded from version 2.39 to 2.51.
1365
1366 It is now safe to use this module in combination with threads.
1367
1368 • Digest::SHA has been upgraded from version 5.47 to 5.61.
1369
1370 "shasum" now more closely mimics sha1sum(1)/md5sum(1).
1371
1372 "addfile" accepts all POSIX filenames.
1373
1374 New SHA-512/224 and SHA-512/256 transforms (ref. NIST Draft FIPS
1375 180-4 [February 2011])
1376
1377 • DirHandle has been upgraded from version 1.03 to 1.04.
1378
1379 • Dumpvalue has been upgraded from version 1.13 to 1.16.
1380
1381 • DynaLoader has been upgraded from version 1.10 to 1.13.
1382
1383 It fixes a buffer overflow when passed a very long file name.
1384
1385 It no longer inherits from AutoLoader; hence it no longer produces
1386 weird error messages for unsuccessful method calls on classes that
1387 inherit from DynaLoader [perl #84358].
1388
1389 • Encode has been upgraded from version 2.39 to 2.42.
1390
1391 Now, all 66 Unicode non-characters are treated the same way U+FFFF
1392 has always been treated: in cases when it was disallowed, all 66
1393 are disallowed, and in cases where it warned, all 66 warn.
1394
1395 • Env has been upgraded from version 1.01 to 1.02.
1396
1397 • Errno has been upgraded from version 1.11 to 1.13.
1398
1399 The implementation of Errno has been refactored to use about 55%
1400 less memory.
1401
1402 On some platforms with unusual header files, like Win32 gcc(1)
1403 using "mingw64" headers, some constants that weren't actually error
1404 numbers have been exposed by Errno. This has been fixed [perl
1405 #77416].
1406
1407 • Exporter has been upgraded from version 5.64_01 to 5.64_03.
1408
1409 Exporter no longer overrides $SIG{__WARN__} [perl #74472]
1410
1411 • ExtUtils::CBuilder has been upgraded from version 0.27 to 0.280203.
1412
1413 • ExtUtils::Command has been upgraded from version 1.16 to 1.17.
1414
1415 • ExtUtils::Constant has been upgraded from 0.22 to 0.23.
1416
1417 The AUTOLOAD helper code generated by
1418 "ExtUtils::Constant::ProxySubs" can now croak() for missing
1419 constants, or generate a complete "AUTOLOAD" subroutine in XS,
1420 allowing simplification of many modules that use it (Fcntl,
1421 File::Glob, GDBM_File, I18N::Langinfo, POSIX, Socket).
1422
1423 ExtUtils::Constant::ProxySubs can now optionally push the names of
1424 all constants onto the package's @EXPORT_OK.
1425
1426 • ExtUtils::Install has been upgraded from version 1.55 to 1.56.
1427
1428 • ExtUtils::MakeMaker has been upgraded from version 6.56 to 6.57_05.
1429
1430 • ExtUtils::Manifest has been upgraded from version 1.57 to 1.58.
1431
1432 • ExtUtils::ParseXS has been upgraded from version 2.21 to 2.2210.
1433
1434 • Fcntl has been upgraded from version 1.06 to 1.11.
1435
1436 • File::Basename has been upgraded from version 2.78 to 2.82.
1437
1438 • File::CheckTree has been upgraded from version 4.4 to 4.41.
1439
1440 • File::Copy has been upgraded from version 2.17 to 2.21.
1441
1442 • File::DosGlob has been upgraded from version 1.01 to 1.04.
1443
1444 It allows patterns containing literal parentheses: they no longer
1445 need to be escaped. On Windows, it no longer adds an extra ./ to
1446 file names returned when the pattern is a relative glob with a
1447 drive specification, like C:*.pl [perl #71712].
1448
1449 • File::Fetch has been upgraded from version 0.24 to 0.32.
1450
1451 HTTP::Lite is now supported for the "http" scheme.
1452
1453 The fetch(1) utility is supported on FreeBSD, NetBSD, and Dragonfly
1454 BSD for the "http" and "ftp" schemes.
1455
1456 • File::Find has been upgraded from version 1.15 to 1.19.
1457
1458 It improves handling of backslashes on Windows, so that paths like
1459 C:\dir\/file are no longer generated [perl #71710].
1460
1461 • File::Glob has been upgraded from version 1.07 to 1.12.
1462
1463 • File::Spec has been upgraded from version 3.31 to 3.33.
1464
1465 Several portability fixes were made in File::Spec::VMS: a colon is
1466 now recognized as a delimiter in native filespecs; caret-escaped
1467 delimiters are recognized for better handling of extended
1468 filespecs; catpath() returns an empty directory rather than the
1469 current directory if the input directory name is empty; and
1470 abs2rel() properly handles Unix-style input (5.12.2).
1471
1472 • File::stat has been upgraded from 1.02 to 1.05.
1473
1474 The "-x" and "-X" file test operators now work correctly when run
1475 by the superuser.
1476
1477 • Filter::Simple has been upgraded from version 0.84 to 0.86.
1478
1479 • GDBM_File has been upgraded from 1.10 to 1.14.
1480
1481 This fixes a memory leak when DBM filters are used.
1482
1483 • Hash::Util has been upgraded from 0.07 to 0.11.
1484
1485 Hash::Util no longer emits spurious "uninitialized" warnings when
1486 recursively locking hashes that have undefined values [perl
1487 #74280].
1488
1489 • Hash::Util::FieldHash has been upgraded from version 1.04 to 1.09.
1490
1491 • I18N::Collate has been upgraded from version 1.01 to 1.02.
1492
1493 • I18N::Langinfo has been upgraded from version 0.03 to 0.08.
1494
1495 langinfo() now defaults to using $_ if there is no argument given,
1496 just as the documentation has always claimed.
1497
1498 • I18N::LangTags has been upgraded from version 0.35 to 0.35_01.
1499
1500 • if has been upgraded from version 0.05 to 0.0601.
1501
1502 • IO has been upgraded from version 1.25_02 to 1.25_04.
1503
1504 This version of IO includes a new IO::Select, which now allows
1505 IO::Handle objects (and objects in derived classes) to be removed
1506 from an IO::Select set even if the underlying file descriptor is
1507 closed or invalid.
1508
1509 • IPC::Cmd has been upgraded from version 0.54 to 0.70.
1510
1511 Resolves an issue with splitting Win32 command lines. An argument
1512 consisting of the single character "0" used to be omitted (CPAN RT
1513 #62961).
1514
1515 • IPC::Open3 has been upgraded from 1.05 to 1.09.
1516
1517 open3() now produces an error if the "exec" call fails, allowing
1518 this condition to be distinguished from a child process that exited
1519 with a non-zero status [perl #72016].
1520
1521 The internal xclose() routine now knows how to handle file
1522 descriptors as documented, so duplicating "STDIN" in a child
1523 process using its file descriptor now works [perl #76474].
1524
1525 • IPC::SysV has been upgraded from version 2.01 to 2.03.
1526
1527 • lib has been upgraded from version 0.62 to 0.63.
1528
1529 • Locale::Maketext has been upgraded from version 1.14 to 1.19.
1530
1531 Locale::Maketext now supports external caches.
1532
1533 This upgrade also fixes an infinite loop in
1534 Locale::Maketext::Guts::_compile() when working with tainted values
1535 (CPAN RT #40727).
1536
1537 "->maketext" calls now back up and restore $@ so error messages are
1538 not suppressed (CPAN RT #34182).
1539
1540 • Log::Message has been upgraded from version 0.02 to 0.04.
1541
1542 • Log::Message::Simple has been upgraded from version 0.06 to 0.08.
1543
1544 • Math::BigInt has been upgraded from version 1.89_01 to 1.994.
1545
1546 This fixes, among other things, incorrect results when computing
1547 binomial coefficients [perl #77640].
1548
1549 It also prevents sqrt($int) from crashing under "use bigrat".
1550 [perl #73534].
1551
1552 • Math::BigInt::FastCalc has been upgraded from version 0.19 to 0.28.
1553
1554 • Math::BigRat has been upgraded from version 0.24 to 0.26_02.
1555
1556 • Memoize has been upgraded from version 1.01_03 to 1.02.
1557
1558 • MIME::Base64 has been upgraded from 3.08 to 3.13.
1559
1560 Includes new functions to calculate the length of encoded and
1561 decoded base64 strings.
1562
1563 Now provides encode_base64url() and decode_base64url() functions to
1564 process the base64 scheme for "URL applications".
1565
1566 • Module::Build has been upgraded from version 0.3603 to 0.3800.
1567
1568 A notable change is the deprecation of several modules.
1569 Module::Build::Version has been deprecated and Module::Build now
1570 relies on the version pragma directly. Module::Build::ModuleInfo
1571 has been deprecated in favor of a standalone copy called
1572 Module::Metadata. Module::Build::YAML has been deprecated in favor
1573 of CPAN::Meta::YAML.
1574
1575 Module::Build now also generates META.json and MYMETA.json files in
1576 accordance with version 2 of the CPAN distribution metadata
1577 specification, CPAN::Meta::Spec. The older format META.yml and
1578 MYMETA.yml files are still generated.
1579
1580 • Module::CoreList has been upgraded from version 2.29 to 2.47.
1581
1582 Besides listing the updated core modules of this release, it also
1583 stops listing the "Filespec" module. That module never existed in
1584 core. The scripts generating Module::CoreList confused it with
1585 VMS::Filespec, which actually is a core module as of Perl 5.8.7.
1586
1587 • Module::Load has been upgraded from version 0.16 to 0.18.
1588
1589 • Module::Load::Conditional has been upgraded from version 0.34 to
1590 0.44.
1591
1592 • The mro pragma has been upgraded from version 1.02 to 1.07.
1593
1594 • NDBM_File has been upgraded from version 1.08 to 1.12.
1595
1596 This fixes a memory leak when DBM filters are used.
1597
1598 • Net::Ping has been upgraded from version 2.36 to 2.38.
1599
1600 • NEXT has been upgraded from version 0.64 to 0.65.
1601
1602 • Object::Accessor has been upgraded from version 0.36 to 0.38.
1603
1604 • ODBM_File has been upgraded from version 1.07 to 1.10.
1605
1606 This fixes a memory leak when DBM filters are used.
1607
1608 • Opcode has been upgraded from version 1.15 to 1.18.
1609
1610 • The overload pragma has been upgraded from 1.10 to 1.13.
1611
1612 "overload::Method" can now handle subroutines that are themselves
1613 blessed into overloaded classes [perl #71998].
1614
1615 The documentation has greatly improved. See "Documentation" below.
1616
1617 • Params::Check has been upgraded from version 0.26 to 0.28.
1618
1619 • The parent pragma has been upgraded from version 0.223 to 0.225.
1620
1621 • Parse::CPAN::Meta has been upgraded from version 1.40 to 1.4401.
1622
1623 The latest Parse::CPAN::Meta can now read YAML and JSON files using
1624 CPAN::Meta::YAML and JSON::PP, which are now part of the Perl core.
1625
1626 • PerlIO::encoding has been upgraded from version 0.12 to 0.14.
1627
1628 • PerlIO::scalar has been upgraded from 0.07 to 0.11.
1629
1630 A read() after a seek() beyond the end of the string no longer
1631 thinks it has data to read [perl #78716].
1632
1633 • PerlIO::via has been upgraded from version 0.09 to 0.11.
1634
1635 • Pod::Html has been upgraded from version 1.09 to 1.11.
1636
1637 • Pod::LaTeX has been upgraded from version 0.58 to 0.59.
1638
1639 • Pod::Perldoc has been upgraded from version 3.15_02 to 3.15_03.
1640
1641 • Pod::Simple has been upgraded from version 3.13 to 3.16.
1642
1643 • POSIX has been upgraded from 1.19 to 1.24.
1644
1645 It now includes constants for POSIX signal constants.
1646
1647 • The re pragma has been upgraded from version 0.11 to 0.18.
1648
1649 The "use re '/flags'" subpragma is new.
1650
1651 The regmust() function used to crash when called on a regular
1652 expression belonging to a pluggable engine. Now it croaks instead.
1653
1654 regmust() no longer leaks memory.
1655
1656 • Safe has been upgraded from version 2.25 to 2.29.
1657
1658 Coderefs returned by reval() and rdo() are now wrapped via
1659 wrap_code_refs() (5.12.1).
1660
1661 This fixes a possible infinite loop when looking for coderefs.
1662
1663 It adds several "version::vxs::*" routines to the default share.
1664
1665 • SDBM_File has been upgraded from version 1.06 to 1.09.
1666
1667 • SelfLoader has been upgraded from 1.17 to 1.18.
1668
1669 It now works in taint mode [perl #72062].
1670
1671 • The sigtrap pragma has been upgraded from version 1.04 to 1.05.
1672
1673 It no longer tries to modify read-only arguments when generating a
1674 backtrace [perl #72340].
1675
1676 • Socket has been upgraded from version 1.87 to 1.94.
1677
1678 See "Improved IPv6 support" above.
1679
1680 • Storable has been upgraded from version 2.22 to 2.27.
1681
1682 Includes performance improvement for overloaded classes.
1683
1684 This adds support for serialising code references that contain
1685 UTF-8 strings correctly. The Storable minor version number changed
1686 as a result, meaning that Storable users who set
1687 $Storable::accept_future_minor to a "FALSE" value will see errors
1688 (see "FORWARD COMPATIBILITY" in Storable for more details).
1689
1690 Freezing no longer gets confused if the Perl stack gets reallocated
1691 during freezing [perl #80074].
1692
1693 • Sys::Hostname has been upgraded from version 1.11 to 1.16.
1694
1695 • Term::ANSIColor has been upgraded from version 2.02 to 3.00.
1696
1697 • Term::UI has been upgraded from version 0.20 to 0.26.
1698
1699 • Test::Harness has been upgraded from version 3.17 to 3.23.
1700
1701 • Test::Simple has been upgraded from version 0.94 to 0.98.
1702
1703 Among many other things, subtests without a "plan" or "no_plan" now
1704 have an implicit done_testing() added to them.
1705
1706 • Thread::Semaphore has been upgraded from version 2.09 to 2.12.
1707
1708 It provides two new methods that give more control over the
1709 decrementing of semaphores: "down_nb" and "down_force".
1710
1711 • Thread::Queue has been upgraded from version 2.11 to 2.12.
1712
1713 • The threads pragma has been upgraded from version 1.75 to 1.83.
1714
1715 • The threads::shared pragma has been upgraded from version 1.32 to
1716 1.37.
1717
1718 • Tie::Hash has been upgraded from version 1.03 to 1.04.
1719
1720 Calling "Tie::Hash->TIEHASH()" used to loop forever. Now it
1721 "croak"s.
1722
1723 • Tie::Hash::NamedCapture has been upgraded from version 0.06 to
1724 0.08.
1725
1726 • Tie::RefHash has been upgraded from version 1.38 to 1.39.
1727
1728 • Time::HiRes has been upgraded from version 1.9719 to 1.9721_01.
1729
1730 • Time::Local has been upgraded from version 1.1901_01 to 1.2000.
1731
1732 • Time::Piece has been upgraded from version 1.15_01 to 1.20_01.
1733
1734 • Unicode::Collate has been upgraded from version 0.52_01 to 0.73.
1735
1736 Unicode::Collate has been updated to use Unicode 6.0.0.
1737
1738 Unicode::Collate::Locale now supports a plethora of new locales:
1739 ar, be, bg, de__phonebook, hu, hy, kk, mk, nso, om, tn, vi, hr, ig,
1740 ja, ko, ru, sq, se, sr, to, uk, zh, zh__big5han, zh__gb2312han,
1741 zh__pinyin, and zh__stroke.
1742
1743 The following modules have been added:
1744
1745 Unicode::Collate::CJK::Big5 for "zh__big5han" which makes tailoring
1746 of CJK Unified Ideographs in the order of CLDR's big5han ordering.
1747
1748 Unicode::Collate::CJK::GB2312 for "zh__gb2312han" which makes
1749 tailoring of CJK Unified Ideographs in the order of CLDR's
1750 gb2312han ordering.
1751
1752 Unicode::Collate::CJK::JISX0208 which makes tailoring of 6355 kanji
1753 (CJK Unified Ideographs) in the JIS X 0208 order.
1754
1755 Unicode::Collate::CJK::Korean which makes tailoring of CJK Unified
1756 Ideographs in the order of CLDR's Korean ordering.
1757
1758 Unicode::Collate::CJK::Pinyin for "zh__pinyin" which makes
1759 tailoring of CJK Unified Ideographs in the order of CLDR's pinyin
1760 ordering.
1761
1762 Unicode::Collate::CJK::Stroke for "zh__stroke" which makes
1763 tailoring of CJK Unified Ideographs in the order of CLDR's stroke
1764 ordering.
1765
1766 This also sees the switch from using the pure-Perl version of this
1767 module to the XS version.
1768
1769 • Unicode::Normalize has been upgraded from version 1.03 to 1.10.
1770
1771 • Unicode::UCD has been upgraded from version 0.27 to 0.32.
1772
1773 A new function, Unicode::UCD::num(), has been added. This function
1774 returns the numeric value of the string passed it or "undef" if the
1775 string in its entirety has no "safe" numeric value. (For more
1776 detail, and for the definition of "safe", see "num()" in
1777 Unicode::UCD.)
1778
1779 This upgrade also includes several bug fixes:
1780
1781 charinfo()
1782 • It is now updated to Unicode Version 6.0.0 with Corrigendum
1783 #8, excepting that, just as with Perl 5.14, the code point
1784 at U+1F514 has no name.
1785
1786 • Hangul syllable code points have the correct names, and
1787 their decompositions are always output without requiring
1788 Lingua::KO::Hangul::Util to be installed.
1789
1790 • CJK (Chinese-Japanese-Korean) code points U+2A700 to
1791 U+2B734 and U+2B740 to U+2B81D are now properly handled.
1792
1793 • Numeric values are now output for those CJK code points
1794 that have them.
1795
1796 • Names output for code points with multiple aliases are now
1797 the corrected ones.
1798
1799 charscript()
1800 This now correctly returns "Unknown" instead of "undef" for the
1801 script of a code point that hasn't been assigned another one.
1802
1803 charblock()
1804 This now correctly returns "No_Block" instead of "undef" for
1805 the block of a code point that hasn't been assigned to another
1806 one.
1807
1808 • The version pragma has been upgraded from 0.82 to 0.88.
1809
1810 Because of a bug, now fixed, the is_strict() and is_lax() functions
1811 did not work when exported (5.12.1).
1812
1813 • The warnings pragma has been upgraded from version 1.09 to 1.12.
1814
1815 Calling "use warnings" without arguments is now significantly more
1816 efficient.
1817
1818 • The warnings::register pragma has been upgraded from version 1.01
1819 to 1.02.
1820
1821 It is now possible to register warning categories other than the
1822 names of packages using warnings::register. See perllexwarn(1) for
1823 more information.
1824
1825 • XSLoader has been upgraded from version 0.10 to 0.13.
1826
1827 • VMS::DCLsym has been upgraded from version 1.03 to 1.05.
1828
1829 Two bugs have been fixed [perl #84086]:
1830
1831 The symbol table name was lost when tying a hash, due to a thinko
1832 in "TIEHASH". The result was that all tied hashes interacted with
1833 the local symbol table.
1834
1835 Unless a symbol table name had been explicitly specified in the
1836 call to the constructor, querying the special key ":LOCAL" failed
1837 to identify objects connected to the local symbol table.
1838
1839 • The Win32 module has been upgraded from version 0.39 to 0.44.
1840
1841 This release has several new functions: Win32::GetSystemMetrics(),
1842 Win32::GetProductInfo(), Win32::GetOSDisplayName().
1843
1844 The names returned by Win32::GetOSName() and
1845 Win32::GetOSDisplayName() have been corrected.
1846
1847 • XS::Typemap has been upgraded from version 0.03 to 0.05.
1848
1849 Removed Modules and Pragmata
1850 As promised in Perl 5.12.0's release notes, the following modules have
1851 been removed from the core distribution, and if needed should be
1852 installed from CPAN instead.
1853
1854 • Class::ISA has been removed from the Perl core. Prior version was
1855 0.36.
1856
1857 • Pod::Plainer has been removed from the Perl core. Prior version
1858 was 1.02.
1859
1860 • Switch has been removed from the Perl core. Prior version was
1861 2.16.
1862
1863 The removal of Shell has been deferred until after 5.14, as the
1864 implementation of Shell shipped with 5.12.0 did not correctly issue the
1865 warning that it was to be removed from core.
1866
1868 New Documentation
1869 perlgpl
1870
1871 perlgpl has been updated to contain GPL version 1, as is included in
1872 the README distributed with Perl (5.12.1).
1873
1874 Perl 5.12.x delta files
1875
1876 The perldelta files for Perl 5.12.1 to 5.12.3 have been added from the
1877 maintenance branch: perl5121delta, perl5122delta, perl5123delta.
1878
1879 perlpodstyle
1880
1881 New style guide for POD documentation, split mostly from the NOTES
1882 section of the pod2man(1) manpage.
1883
1884 perlsource, perlinterp, perlhacktut, and perlhacktips
1885
1886 See "perlhack and perlrepository revamp", below.
1887
1888 Changes to Existing Documentation
1889 perlmodlib is now complete
1890
1891 The perlmodlib manpage that came with Perl 5.12.0 was missing several
1892 modules due to a bug in the script that generates the list. This has
1893 been fixed [perl #74332] (5.12.1).
1894
1895 Replace incorrect tr/// table in perlebcdic
1896
1897 perlebcdic contains a helpful table to use in "tr///" to convert
1898 between EBCDIC and Latin1/ASCII. The table was the inverse of the one
1899 it describes, though the code that used the table worked correctly for
1900 the specific example given.
1901
1902 The table has been corrected and the sample code changed to correspond.
1903
1904 The table has also been changed to hex from octal, and the recipes in
1905 the pod have been altered to print out leading zeros to make all values
1906 the same length.
1907
1908 Tricks for user-defined casing
1909
1910 perlunicode now contains an explanation of how to override, mangle and
1911 otherwise tweak the way Perl handles upper-, lower- and other-case
1912 conversions on Unicode data, and how to provide scoped changes to alter
1913 one's own code's behaviour without stomping on anybody else's.
1914
1915 INSTALL explicitly states that Perl requires a C89 compiler
1916
1917 This was already true, but it's now Officially Stated For The Record
1918 (5.12.2).
1919
1920 Explanation of "\xHH" and "\oOOO" escapes
1921
1922 perlop has been updated with more detailed explanation of these two
1923 character escapes.
1924
1925 -0NNN switch
1926
1927 In perlrun, the behaviour of the -0NNN switch for -0400 or higher has
1928 been clarified (5.12.2).
1929
1930 Maintenance policy
1931
1932 perlpolicy now contains the policy on what patches are acceptable for
1933 maintenance branches (5.12.1).
1934
1935 Deprecation policy
1936
1937 perlpolicy now contains the policy on compatibility and deprecation
1938 along with definitions of terms like "deprecation" (5.12.2).
1939
1940 New descriptions in perldiag
1941
1942 The following existing diagnostics are now documented:
1943
1944 • Ambiguous use of %c resolved as operator %c
1945
1946 • Ambiguous use of %c{%s} resolved to %c%s
1947
1948 • Ambiguous use of %c{%s[...]} resolved to %c%s[...]
1949
1950 • Ambiguous use of %c{%s{...}} resolved to %c%s{...}
1951
1952 • Ambiguous use of -%s resolved as -&%s()
1953
1954 • Invalid strict version format (%s)
1955
1956 • Invalid version format (%s)
1957
1958 • Invalid version object
1959
1960 perlbook
1961
1962 perlbook has been expanded to cover many more popular books.
1963
1964 "SvTRUE" macro
1965
1966 The documentation for the "SvTRUE" macro in perlapi was simply wrong in
1967 stating that get-magic is not processed. It has been corrected.
1968
1969 op manipulation functions
1970
1971 Several API functions that process optrees have been newly documented.
1972
1973 perlvar revamp
1974
1975 perlvar reorders the variables and groups them by topic. Each variable
1976 introduced after Perl 5.000 notes the first version in which it is
1977 available. perlvar also has a new section for deprecated variables to
1978 note when they were removed.
1979
1980 Array and hash slices in scalar context
1981
1982 These are now documented in perldata.
1983
1984 "use locale" and formats
1985
1986 perlform and perllocale have been corrected to state that "use locale"
1987 affects formats.
1988
1989 overload
1990
1991 overload's documentation has practically undergone a rewrite. It is
1992 now much more straightforward and clear.
1993
1994 perlhack and perlrepository revamp
1995
1996 The perlhack document is now much shorter, and focuses on the Perl 5
1997 development process and submitting patches to Perl. The technical
1998 content has been moved to several new documents, perlsource,
1999 perlinterp, perlhacktut, and perlhacktips. This technical content has
2000 been only lightly edited.
2001
2002 The perlrepository document has been renamed to perlgit. This new
2003 document is just a how-to on using git with the Perl source code. Any
2004 other content that used to be in perlrepository has been moved to
2005 perlhack.
2006
2007 Time::Piece examples
2008
2009 Examples in perlfaq4 have been updated to show the use of Time::Piece.
2010
2012 The following additions or changes have been made to diagnostic output,
2013 including warnings and fatal error messages. For the complete list of
2014 diagnostic messages, see perldiag.
2015
2016 New Diagnostics
2017 New Errors
2018
2019 Closure prototype called
2020 This error occurs when a subroutine reference passed to an
2021 attribute handler is called, if the subroutine is a closure [perl
2022 #68560].
2023
2024 Insecure user-defined property %s
2025 Perl detected tainted data when trying to compile a regular
2026 expression that contains a call to a user-defined character
2027 property function, meaning "\p{IsFoo}" or "\p{InFoo}". See "User-
2028 Defined Character Properties" in perlunicode and perlsec.
2029
2030 panic: gp_free failed to free glob pointer - something is repeatedly
2031 re-creating entries
2032 This new error is triggered if a destructor called on an object in
2033 a typeglob that is being freed creates a new typeglob entry
2034 containing an object with a destructor that creates a new entry
2035 containing an object etc.
2036
2037 Parsing code internal error (%s)
2038 This new fatal error is produced when parsing code supplied by an
2039 extension violates the parser's API in a detectable way.
2040
2041 refcnt: fd %d%s
2042 This new error only occurs if an internal consistency check fails
2043 when a pipe is about to be closed.
2044
2045 Regexp modifier "/%c" may not appear twice
2046 The regular expression pattern has one of the mutually exclusive
2047 modifiers repeated.
2048
2049 Regexp modifiers "/%c" and "/%c" are mutually exclusive
2050 The regular expression pattern has more than one of the mutually
2051 exclusive modifiers.
2052
2053 Using !~ with %s doesn't make sense
2054 This error occurs when "!~" is used with "s///r" or "y///r".
2055
2056 New Warnings
2057
2058 "\b{" is deprecated; use "\b\{" instead
2059 "\B{" is deprecated; use "\B\{" instead
2060 Use of an unescaped "{" immediately following a "\b" or "\B" is now
2061 deprecated in order to reserve its use for Perl itself in a future
2062 release.
2063
2064 Operation "%s" returns its argument for ...
2065 Performing an operation requiring Unicode semantics (such as case-
2066 folding) on a Unicode surrogate or a non-Unicode character now
2067 triggers this warning.
2068
2069 Use of qw(...) as parentheses is deprecated
2070 See "Use of qw(...) as parentheses", above, for details.
2071
2072 Changes to Existing Diagnostics
2073 • The "Variable $foo is not imported" warning that precedes a "strict
2074 'vars'" error has now been assigned the "misc" category, so that
2075 "no warnings" will suppress it [perl #73712].
2076
2077 • warn() and die() now produce "Wide character" warnings when fed a
2078 character outside the byte range if "STDERR" is a byte-sized
2079 handle.
2080
2081 • The "Layer does not match this perl" error message has been
2082 replaced with these more helpful messages [perl #73754]:
2083
2084 • PerlIO layer function table size (%d) does not match size
2085 expected by this perl (%d)
2086
2087 • PerlIO layer instance size (%d) does not match size expected by
2088 this perl (%d)
2089
2090 • The "Found = in conditional" warning that is emitted when a
2091 constant is assigned to a variable in a condition is now withheld
2092 if the constant is actually a subroutine or one generated by "use
2093 constant", since the value of the constant may not be known at the
2094 time the program is written [perl #77762].
2095
2096 • Previously, if none of the gethostbyaddr(), gethostbyname() and
2097 gethostent() functions were implemented on a given platform, they
2098 would all die with the message "Unsupported socket function
2099 'gethostent' called", with analogous messages for getnet*() and
2100 getserv*(). This has been corrected.
2101
2102 • The warning message about unrecognized regular expression escapes
2103 passed through has been changed to include any literal "{"
2104 following the two-character escape. For example, "\q{" is now
2105 emitted instead of "\q".
2106
2108 perlbug(1)
2109
2110 • perlbug now looks in the EMAIL environment variable for a return
2111 address if the REPLY-TO and REPLYTO variables are empty.
2112
2113 • perlbug did not previously generate a "From:" header, potentially
2114 resulting in dropped mail; it now includes that header.
2115
2116 • The user's address is now used as the Return-Path.
2117
2118 Many systems these days don't have a valid Internet domain name,
2119 and perlbug@perl.org does not accept email with a return-path that
2120 does not resolve. So the user's address is now passed to sendmail
2121 so it's less likely to get stuck in a mail queue somewhere [perl
2122 #82996].
2123
2124 • perlbug now always gives the reporter a chance to change the email
2125 address it guesses for them (5.12.2).
2126
2127 • perlbug should no longer warn about uninitialized values when using
2128 the -d and -v options (5.12.2).
2129
2130 perl5db.pl
2131
2132 • The remote terminal works after forking and spawns new sessions,
2133 one per forked process.
2134
2135 ptargrep
2136
2137 • ptargrep is a new utility to apply pattern matching to the contents
2138 of files in a tar archive. It comes with "Archive::Tar".
2139
2141 See also "Naming fixes in Policy_sh.SH may invalidate Policy.sh",
2142 above.
2143
2144 • CCINCDIR and CCLIBDIR for the mingw64 cross-compiler are now
2145 correctly under $(CCHOME)\mingw\include and \lib rather than
2146 immediately below $(CCHOME).
2147
2148 This means the "incpath", "libpth", "ldflags", "lddlflags" and
2149 "ldflags_nolargefiles" values in Config.pm and Config_heavy.pl are
2150 now set correctly.
2151
2152 • "make test.valgrind" has been adjusted to account for cpan/dist/ext
2153 separation.
2154
2155 • On compilers that support it, -Wwrite-strings is now added to
2156 cflags by default.
2157
2158 • The Encode module can now (once again) be included in a static Perl
2159 build. The special-case handling for this situation got broken in
2160 Perl 5.11.0, and has now been repaired.
2161
2162 • The previous default size of a PerlIO buffer (4096 bytes) has been
2163 increased to the larger of 8192 bytes and your local BUFSIZ.
2164 Benchmarks show that doubling this decade-old default increases
2165 read and write performance by around 25% to 50% when using the
2166 default layers of perlio on top of unix. To choose a non-default
2167 size, such as to get back the old value or to obtain an even larger
2168 value, configure with:
2169
2170 ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N
2171
2172 where N is the desired size in bytes; it should probably be a
2173 multiple of your page size.
2174
2175 • An "incompatible operand types" error in ternary expressions when
2176 building with "clang" has been fixed (5.12.2).
2177
2178 • Perl now skips setuid File::Copy tests on partitions it detects
2179 mounted as "nosuid" (5.12.2).
2180
2182 New Platforms
2183 AIX Perl now builds on AIX 4.2 (5.12.1).
2184
2185 Discontinued Platforms
2186 Apollo DomainOS
2187 The last vestiges of support for this platform have been excised
2188 from the Perl distribution. It was officially discontinued in
2189 version 5.12.0. It had not worked for years before that.
2190
2191 MacOS Classic
2192 The last vestiges of support for this platform have been excised
2193 from the Perl distribution. It was officially discontinued in an
2194 earlier version.
2195
2196 Platform-Specific Notes
2197 AIX
2198
2199 • README.aix has been updated with information about the XL C/C++ V11
2200 compiler suite (5.12.2).
2201
2202 ARM
2203
2204 • The "d_u32align" configuration probe on ARM has been fixed
2205 (5.12.2).
2206
2207 Cygwin
2208
2209 • MakeMaker has been updated to build manpages on cygwin.
2210
2211 • Improved rebase behaviour
2212
2213 If a DLL is updated on cygwin the old imagebase address is reused.
2214 This solves most rebase errors, especially when updating on core
2215 DLL's. See
2216 <http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README>
2217 for more information.
2218
2219 • Support for the standard cygwin dll prefix (needed for FFIs)
2220
2221 • Updated build hints file
2222
2223 FreeBSD 7
2224
2225 • FreeBSD 7 no longer contains /usr/bin/objformat. At build time,
2226 Perl now skips the objformat check for versions 7 and higher and
2227 assumes ELF (5.12.1).
2228
2229 HP-UX
2230
2231 • Perl now allows -Duse64bitint without promoting to "use64bitall" on
2232 HP-UX (5.12.1).
2233
2234 IRIX
2235
2236 • Conversion of strings to floating-point numbers is now more
2237 accurate on IRIX systems [perl #32380].
2238
2239 Mac OS X
2240
2241 • Early versions of Mac OS X (Darwin) had buggy implementations of
2242 the setregid(), setreuid(), setrgid(,) and setruid() functions, so
2243 Perl would pretend they did not exist.
2244
2245 These functions are now recognised on Mac OS 10.5 (Leopard; Darwin
2246 9) and higher, as they have been fixed [perl #72990].
2247
2248 MirBSD
2249
2250 • Previously if you built Perl with a shared libperl.so on MirBSD
2251 (the default config), it would work up to the installation;
2252 however, once installed, it would be unable to find libperl. Path
2253 handling is now treated as in the other BSD dialects.
2254
2255 NetBSD
2256
2257 • The NetBSD hints file has been changed to make the system malloc
2258 the default.
2259
2260 OpenBSD
2261
2262 • OpenBSD > 3.7 has a new malloc implementation which is mmap-based,
2263 and as such can release memory back to the OS; however, Perl's use
2264 of this malloc causes a substantial slowdown, so we now default to
2265 using Perl's malloc instead [perl #75742].
2266
2267 OpenVOS
2268
2269 • Perl now builds again with OpenVOS (formerly known as Stratus VOS)
2270 [perl #78132] (5.12.3).
2271
2272 Solaris
2273
2274 • DTrace is now supported on Solaris. There used to be build
2275 failures, but these have been fixed [perl #73630] (5.12.3).
2276
2277 VMS
2278
2279 • Extension building on older (pre 7.3-2) VMS systems was broken
2280 because configure.com hit the DCL symbol length limit of 1K. We
2281 now work within this limit when assembling the list of extensions
2282 in the core build (5.12.1).
2283
2284 • We fixed configuring and building Perl with -Uuseperlio (5.12.1).
2285
2286 • "PerlIOUnix_open" now honours the default permissions on VMS.
2287
2288 When "perlio" became the default and "unix" became the default
2289 bottom layer, the most common path for creating files from Perl
2290 became "PerlIOUnix_open", which has always explicitly used 0666 as
2291 the permission mask. This prevents inheriting permissions from RMS
2292 defaults and ACLs, so to avoid that problem, we now pass 0777 to
2293 open(). In the VMS CRTL, 0777 has a special meaning over and above
2294 intersecting with the current umask; specifically, it allows Unix
2295 syscalls to preserve native default permissions (5.12.3).
2296
2297 • The shortening of symbols longer than 31 characters in the core C
2298 sources and in extensions is now by default done by the C compiler
2299 rather than by xsubpp (which could only do so for generated symbols
2300 in XS code). You can reenable xsubpp's symbol shortening by
2301 configuring with -Uuseshortenedsymbols, but you'll have some work
2302 to do to get the core sources to compile.
2303
2304 • Record-oriented files (record format variable or variable with
2305 fixed control) opened for write by the "perlio" layer will now be
2306 line-buffered to prevent the introduction of spurious line breaks
2307 whenever the perlio buffer fills up.
2308
2309 • git_version.h is now installed on VMS. This was an oversight in
2310 v5.12.0 which caused some extensions to fail to build (5.12.2).
2311
2312 • Several memory leaks in stat() have been fixed (5.12.2).
2313
2314 • A memory leak in Perl_rename() due to a double allocation has been
2315 fixed (5.12.2).
2316
2317 • A memory leak in vms_fid_to_name() (used by realpath() and
2318 realname()> has been fixed (5.12.2).
2319
2320 Windows
2321
2322 See also "fork() emulation will not wait for signalled children" and
2323 "Perl source code is read in text mode on Windows", above.
2324
2325 • Fixed build process for SDK2003SP1 compilers.
2326
2327 • Compilation with Visual Studio 2010 is now supported.
2328
2329 • When using old 32-bit compilers, the define "_USE_32BIT_TIME_T" is
2330 now set in $Config{ccflags}. This improves portability when
2331 compiling XS extensions using new compilers, but for a Perl
2332 compiled with old 32-bit compilers.
2333
2334 • $Config{gccversion} is now set correctly when Perl is built using
2335 the mingw64 compiler from <http://mingw64.org> [perl #73754].
2336
2337 • When building Perl with the mingw64 x64 cross-compiler "incpath",
2338 "libpth", "ldflags", "lddlflags" and "ldflags_nolargefiles" values
2339 in Config.pm and Config_heavy.pl were not previously being set
2340 correctly because, with that compiler, the include and lib
2341 directories are not immediately below "$(CCHOME)" (5.12.2).
2342
2343 • The build process proceeds more smoothly with mingw and dmake when
2344 C:\MSYS\bin is in the PATH, due to a "Cwd" fix.
2345
2346 • Support for building with Visual C++ 2010 is now underway, but is
2347 not yet complete. See README.win32 or perlwin32 for more details.
2348
2349 • The option to use an externally-supplied crypt(), or to build with
2350 no crypt() at all, has been removed. Perl supplies its own crypt()
2351 implementation for Windows, and the political situation that
2352 required this part of the distribution to sometimes be omitted is
2353 long gone.
2354
2356 New APIs
2357 CLONE_PARAMS structure added to ease correct thread creation
2358
2359 Modules that create threads should now create "CLONE_PARAMS" structures
2360 by calling the new function Perl_clone_params_new(), and free them with
2361 Perl_clone_params_del(). This will ensure compatibility with any
2362 future changes to the internals of the "CLONE_PARAMS" structure layout,
2363 and that it is correctly allocated and initialised.
2364
2365 New parsing functions
2366
2367 Several functions have been added for parsing Perl statements and
2368 expressions. These functions are meant to be used by XS code invoked
2369 during Perl parsing, in a recursive-descent manner, to allow modules to
2370 augment the standard Perl syntax.
2371
2372 • parse_stmtseq() parses a sequence of statements, up to closing
2373 brace or EOF.
2374
2375 • parse_fullstmt() parses a complete Perl statement, including
2376 optional label.
2377
2378 • parse_barestmt() parses a statement without a label.
2379
2380 • parse_block() parses a code block.
2381
2382 • parse_label() parses a statement label, separate from statements.
2383
2384 • parse_fullexpr(), parse_listexpr(), parse_termexpr(), and
2385 parse_arithexpr() parse expressions at various precedence levels.
2386
2387 Hints hash API
2388
2389 A new C API for introspecting the hinthash "%^H" at runtime has been
2390 added. See "cop_hints_2hv", "cop_hints_fetchpvn",
2391 "cop_hints_fetchpvs", "cop_hints_fetchsv", and "hv_copy_hints_hv" in
2392 perlapi for details.
2393
2394 A new, experimental API has been added for accessing the internal
2395 structure that Perl uses for "%^H". See the functions beginning with
2396 "cophh_" in perlapi.
2397
2398 C interface to caller()
2399
2400 The "caller_cx" function has been added as an XSUB-writer's equivalent
2401 of caller(). See perlapi for details.
2402
2403 Custom per-subroutine check hooks
2404
2405 XS code in an extension module can now annotate a subroutine (whether
2406 implemented in XS or in Perl) so that nominated XS code will be called
2407 at compile time (specifically as part of op checking) to change the op
2408 tree of that subroutine. The compile-time check function (supplied by
2409 the extension module) can implement argument processing that can't be
2410 expressed as a prototype, generate customised compile-time warnings,
2411 perform constant folding for a pure function, inline a subroutine
2412 consisting of sufficiently simple ops, replace the whole call with a
2413 custom op, and so on. This was previously all possible by hooking the
2414 "entersub" op checker, but the new mechanism makes it easy to tie the
2415 hook to a specific subroutine. See "cv_set_call_checker" in perlapi.
2416
2417 To help in writing custom check hooks, several subtasks within standard
2418 "entersub" op checking have been separated out and exposed in the API.
2419
2420 Improved support for custom OPs
2421
2422 Custom ops can now be registered with the new "custom_op_register" C
2423 function and the "XOP" structure. This will make it easier to add new
2424 properties of custom ops in the future. Two new properties have been
2425 added already, "xop_class" and "xop_peep".
2426
2427 "xop_class" is one of the OA_*OP constants. It allows B and other
2428 introspection mechanisms to work with custom ops that aren't BASEOPs.
2429 "xop_peep" is a pointer to a function that will be called for ops of
2430 this type from "Perl_rpeep".
2431
2432 See "Custom Operators" in perlguts and "Custom Operators" in perlapi
2433 for more detail.
2434
2435 The old "PL_custom_op_names"/"PL_custom_op_descs" interface is still
2436 supported but discouraged.
2437
2438 Scope hooks
2439
2440 It is now possible for XS code to hook into Perl's lexical scope
2441 mechanism at compile time, using the new "Perl_blockhook_register"
2442 function. See "Compile-time scope hooks" in perlguts.
2443
2444 The recursive part of the peephole optimizer is now hookable
2445
2446 In addition to "PL_peepp", for hooking into the toplevel peephole
2447 optimizer, a "PL_rpeepp" is now available to hook into the optimizer
2448 recursing into side-chains of the optree.
2449
2450 New non-magical variants of existing functions
2451
2452 The following functions/macros have been added to the API. The *_nomg
2453 macros are equivalent to their non-"_nomg" variants, except that they
2454 ignore get-magic. Those ending in "_flags" allow one to specify
2455 whether get-magic is processed.
2456
2457 sv_2bool_flags
2458 SvTRUE_nomg
2459 sv_2nv_flags
2460 SvNV_nomg
2461 sv_cmp_flags
2462 sv_cmp_locale_flags
2463 sv_eq_flags
2464 sv_collxfrm_flags
2465
2466 In some of these cases, the non-"_flags" functions have been replaced
2467 with wrappers around the new functions.
2468
2469 pv/pvs/sv versions of existing functions
2470
2471 Many functions ending with pvn now have equivalent "pv/pvs/sv"
2472 versions.
2473
2474 List op-building functions
2475
2476 List op-building functions have been added to the API. See
2477 op_append_elem, op_append_list, and op_prepend_elem in perlapi.
2478
2479 "LINKLIST"
2480
2481 The LINKLIST macro, part of op building that constructs the execution-
2482 order op chain, has been added to the API.
2483
2484 Localisation functions
2485
2486 The "save_freeop", "save_op", "save_pushi32ptr" and "save_pushptrptr"
2487 functions have been added to the API.
2488
2489 Stash names
2490
2491 A stash can now have a list of effective names in addition to its usual
2492 name. The first effective name can be accessed via the "HvENAME"
2493 macro, which is now the recommended name to use in MRO linearisations
2494 ("HvNAME" being a fallback if there is no "HvENAME").
2495
2496 These names are added and deleted via "hv_ename_add" and
2497 "hv_ename_delete". These two functions are not part of the API.
2498
2499 New functions for finding and removing magic
2500
2501 The mg_findext() and sv_unmagicext() functions have been added to the
2502 API. They allow extension authors to find and remove magic attached to
2503 scalars based on both the magic type and the magic virtual table,
2504 similar to how sv_magicext() attaches magic of a certain type and with
2505 a given virtual table to a scalar. This eliminates the need for
2506 extensions to walk the list of "MAGIC" pointers of an "SV" to find the
2507 magic that belongs to them.
2508
2509 "find_rundefsv"
2510
2511 This function returns the SV representing $_, whether it's lexical or
2512 dynamic.
2513
2514 "Perl_croak_no_modify"
2515
2516 Perl_croak_no_modify() is short-hand for "Perl_croak("%s",
2517 PL_no_modify)".
2518
2519 "PERL_STATIC_INLINE" define
2520
2521 The "PERL_STATIC_INLINE" define has been added to provide the best-
2522 guess incantation to use for static inline functions, if the C compiler
2523 supports C99-style static inline. If it doesn't, it'll give a plain
2524 "static".
2525
2526 "HAS_STATIC_INLINE" can be used to check if the compiler actually
2527 supports inline functions.
2528
2529 New "pv_escape" option for hexadecimal escapes
2530
2531 A new option, "PERL_PV_ESCAPE_NONASCII", has been added to "pv_escape"
2532 to dump all characters above ASCII in hexadecimal. Before, one could
2533 get all characters as hexadecimal or the Latin1 non-ASCII as octal.
2534
2535 "lex_start"
2536
2537 "lex_start" has been added to the API, but is considered experimental.
2538
2539 op_scope() and op_lvalue()
2540
2541 The op_scope() and op_lvalue() functions have been added to the API,
2542 but are considered experimental.
2543
2544 C API Changes
2545 "PERL_POLLUTE" has been removed
2546
2547 The option to define "PERL_POLLUTE" to expose older 5.005 symbols for
2548 backwards compatibility has been removed. Its use was always
2549 discouraged, and MakeMaker contains a more specific escape hatch:
2550
2551 perl Makefile.PL POLLUTE=1
2552
2553 This can be used for modules that have not been upgraded to 5.6 naming
2554 conventions (and really should be completely obsolete by now).
2555
2556 Check API compatibility when loading XS modules
2557
2558 When Perl's API changes in incompatible ways (which usually happens
2559 between major releases), XS modules compiled for previous versions of
2560 Perl will no longer work. They need to be recompiled against the new
2561 Perl.
2562
2563 The "XS_APIVERSION_BOOTCHECK" macro has been added to ensure that
2564 modules are recompiled and to prevent users from accidentally loading
2565 modules compiled for old perls into newer perls. That macro, which is
2566 called when loading every newly compiled extension, compares the API
2567 version of the running perl with the version a module has been compiled
2568 for and raises an exception if they don't match.
2569
2570 Perl_fetch_cop_label
2571
2572 The first argument of the C API function "Perl_fetch_cop_label" has
2573 changed from "struct refcounted_he *" to "COP *", to insulate the user
2574 from implementation details.
2575
2576 This API function was marked as "may change", and likely isn't in use
2577 outside the core. (Neither an unpacked CPAN nor Google's codesearch
2578 finds any other references to it.)
2579
2580 GvCV() and GvGP() are no longer lvalues
2581
2582 The new GvCV_set() and GvGP_set() macros are now provided to replace
2583 assignment to those two macros.
2584
2585 This allows a future commit to eliminate some backref magic between GV
2586 and CVs, which will require complete control over assignment to the
2587 "gp_cv" slot.
2588
2589 CvGV() is no longer an lvalue
2590
2591 Under some circumstances, the CvGV() field of a CV is now reference-
2592 counted. To ensure consistent behaviour, direct assignment to it, for
2593 example "CvGV(cv) = gv" is now a compile-time error. A new macro,
2594 "CvGV_set(cv,gv)" has been introduced to run this operation safely.
2595 Note that modification of this field is not part of the public API,
2596 regardless of this new macro (and despite its being listed in this
2597 section).
2598
2599 CvSTASH() is no longer an lvalue
2600
2601 The CvSTASH() macro can now only be used as an rvalue. CvSTASH_set()
2602 has been added to replace assignment to CvSTASH(). This is to ensure
2603 that backreferences are handled properly. These macros are not part of
2604 the API.
2605
2606 Calling conventions for "newFOROP" and "newWHILEOP"
2607
2608 The way the parser handles labels has been cleaned up and refactored.
2609 As a result, the newFOROP() constructor function no longer takes a
2610 parameter stating what label is to go in the state op.
2611
2612 The newWHILEOP() and newFOROP() functions no longer accept a line
2613 number as a parameter.
2614
2615 Flags passed to "uvuni_to_utf8_flags" and "utf8n_to_uvuni"
2616
2617 Some of the flags parameters to uvuni_to_utf8_flags() and
2618 utf8n_to_uvuni() have changed. This is a result of Perl's now allowing
2619 internal storage and manipulation of code points that are problematic
2620 in some situations. Hence, the default actions for these functions has
2621 been complemented to allow these code points. The new flags are
2622 documented in perlapi. Code that requires the problematic code points
2623 to be rejected needs to change to use the new flags. Some flag names
2624 are retained for backward source compatibility, though they do nothing,
2625 as they are now the default. However the flags "UNICODE_ALLOW_FDD0",
2626 "UNICODE_ALLOW_FFFF", "UNICODE_ILLEGAL", and "UNICODE_IS_ILLEGAL" have
2627 been removed, as they stem from a fundamentally broken model of how the
2628 Unicode non-character code points should be handled, which is now
2629 described in "Non-character code points" in perlunicode. See also the
2630 Unicode section under "Selected Bug Fixes".
2631
2632 Deprecated C APIs
2633 "Perl_ptr_table_clear"
2634 "Perl_ptr_table_clear" is no longer part of Perl's public API.
2635 Calling it now generates a deprecation warning, and it will be
2636 removed in a future release.
2637
2638 "sv_compile_2op"
2639 The sv_compile_2op() API function is now deprecated. Searches
2640 suggest that nothing on CPAN is using it, so this should have zero
2641 impact.
2642
2643 It attempted to provide an API to compile code down to an optree,
2644 but failed to bind correctly to lexicals in the enclosing scope.
2645 It's not possible to fix this problem within the constraints of its
2646 parameters and return value.
2647
2648 "find_rundefsvoffset"
2649 The "find_rundefsvoffset" function has been deprecated. It
2650 appeared that its design was insufficient for reliably getting the
2651 lexical $_ at run-time.
2652
2653 Use the new "find_rundefsv" function or the "UNDERBAR" macro
2654 instead. They directly return the right SV representing $_,
2655 whether it's lexical or dynamic.
2656
2657 "CALL_FPTR" and "CPERLscope"
2658 Those are left from an old implementation of "MULTIPLICITY" using
2659 C++ objects, which was removed in Perl 5.8. Nowadays these macros
2660 do exactly nothing, so they shouldn't be used anymore.
2661
2662 For compatibility, they are still defined for external "XS" code.
2663 Only extensions defining "PERL_CORE" must be updated now.
2664
2665 Other Internal Changes
2666 Stack unwinding
2667
2668 The protocol for unwinding the C stack at the last stage of a "die" has
2669 changed how it identifies the target stack frame. This now uses a
2670 separate variable "PL_restartjmpenv", where previously it relied on the
2671 "blk_eval.cur_top_env" pointer in the "eval" context frame that has
2672 nominally just been discarded. This change means that code running
2673 during various stages of Perl-level unwinding no longer needs to take
2674 care to avoid destroying the ghost frame.
2675
2676 Scope stack entries
2677
2678 The format of entries on the scope stack has been changed, resulting in
2679 a reduction of memory usage of about 10%. In particular, the memory
2680 used by the scope stack to record each active lexical variable has been
2681 halved.
2682
2683 Memory allocation for pointer tables
2684
2685 Memory allocation for pointer tables has been changed. Previously
2686 "Perl_ptr_table_store" allocated memory from the same arena system as
2687 "SV" bodies and "HE"s, with freed memory remaining bound to those
2688 arenas until interpreter exit. Now it allocates memory from arenas
2689 private to the specific pointer table, and that memory is returned to
2690 the system when "Perl_ptr_table_free" is called. Additionally,
2691 allocation and release are both less CPU intensive.
2692
2693 "UNDERBAR"
2694
2695 The "UNDERBAR" macro now calls "find_rundefsv". "dUNDERBAR" is now a
2696 noop but should still be used to ensure past and future compatibility.
2697
2698 String comparison routines renamed
2699
2700 The "ibcmp_*" functions have been renamed and are now called "foldEQ",
2701 "foldEQ_locale", and "foldEQ_utf8". The old names are still available
2702 as macros.
2703
2704 "chop" and "chomp" implementations merged
2705
2706 The opcode bodies for "chop" and "chomp" and for "schop" and "schomp"
2707 have been merged. The implementation functions Perl_do_chop() and
2708 Perl_do_chomp(), never part of the public API, have been merged and
2709 moved to a static function in pp.c. This shrinks the Perl binary
2710 slightly, and should not affect any code outside the core (unless it is
2711 relying on the order of side-effects when "chomp" is passed a list of
2712 values).
2713
2715 I/O
2716 • Perl no longer produces this warning:
2717
2718 $ perl -we 'open(my $f, ">", \my $x); binmode($f, "scalar")'
2719 Use of uninitialized value in binmode at -e line 1.
2720
2721 • Opening a glob reference via "open($fh, ">", \*glob)" no longer
2722 causes the glob to be corrupted when the filehandle is printed to.
2723 This would cause Perl to crash whenever the glob's contents were
2724 accessed [perl #77492].
2725
2726 • PerlIO no longer crashes when called recursively, such as from a
2727 signal handler. Now it just leaks memory [perl #75556].
2728
2729 • Most I/O functions were not warning for unopened handles unless the
2730 "closed" and "unopened" warnings categories were both enabled. Now
2731 only "use warnings 'unopened'" is necessary to trigger these
2732 warnings, as had always been the intention.
2733
2734 • There have been several fixes to PerlIO layers:
2735
2736 When "binmode(FH, ":crlf")" pushes the ":crlf" layer on top of the
2737 stack, it no longer enables crlf layers lower in the stack so as to
2738 avoid unexpected results [perl #38456].
2739
2740 Opening a file in ":raw" mode now does what it advertises to do
2741 (first open the file, then "binmode" it), instead of simply leaving
2742 off the top layer [perl #80764].
2743
2744 The three layers ":pop", ":utf8", and ":bytes" didn't allow
2745 stacking when opening a file. For example this:
2746
2747 open(FH, ">:pop:perlio", "some.file") or die $!;
2748
2749 would throw an "Invalid argument" error. This has been fixed in
2750 this release [perl #82484].
2751
2752 Regular Expression Bug Fixes
2753 • The regular expression engine no longer loops when matching
2754 ""\N{LATIN SMALL LIGATURE FF}" =~ /f+/i" and similar expressions
2755 [perl #72998] (5.12.1).
2756
2757 • The trie runtime code should no longer allocate massive amounts of
2758 memory, fixing #74484.
2759
2760 • Syntax errors in "(?{...})" blocks no longer cause panic messages
2761 [perl #2353].
2762
2763 • A pattern like "(?:(o){2})?" no longer causes a "panic" error [perl
2764 #39233].
2765
2766 • A fatal error in regular expressions containing "(.*?)" when
2767 processing UTF-8 data has been fixed [perl #75680] (5.12.2).
2768
2769 • An erroneous regular expression engine optimisation that caused
2770 regex verbs like *COMMIT sometimes to be ignored has been removed.
2771
2772 • The regular expression bracketed character class "[\8\9]" was
2773 effectively the same as "[89\000]", incorrectly matching a NULL
2774 character. It also gave incorrect warnings that the 8 and 9 were
2775 ignored. Now "[\8\9]" is the same as "[89]" and gives legitimate
2776 warnings that "\8" and "\9" are unrecognized escape sequences,
2777 passed-through.
2778
2779 • A regular expression match in the right-hand side of a global
2780 substitution ("s///g") that is in the same scope will no longer
2781 cause match variables to have the wrong values on subsequent
2782 iterations. This can happen when an array or hash subscript is
2783 interpolated in the right-hand side, as in "s|(.)|@a{ print($1),
2784 /./ }|g" [perl #19078].
2785
2786 • Several cases in which characters in the Latin-1 non-ASCII range
2787 (0x80 to 0xFF) used not to match themselves, or used to match both
2788 a character class and its complement, have been fixed. For
2789 instance, U+00E2 could match both "\w" and "\W" [perl #78464] [perl
2790 #18281] [perl #60156].
2791
2792 • Matching a Unicode character against an alternation containing
2793 characters that happened to match continuation bytes in the
2794 former's UTF8 representation (like "qq{\x{30ab}} =~ /\xab|\xa9/")
2795 would cause erroneous warnings [perl #70998].
2796
2797 • The trie optimisation was not taking empty groups into account,
2798 preventing "foo" from matching "/\A(?:(?:)foo|bar|zot)\z/" [perl
2799 #78356].
2800
2801 • A pattern containing a "+" inside a lookahead would sometimes cause
2802 an incorrect match failure in a global match (for example,
2803 "/(?=(\S+))/g") [perl #68564].
2804
2805 • A regular expression optimisation would sometimes cause a match
2806 with a "{n,m}" quantifier to fail when it should have matched [perl
2807 #79152].
2808
2809 • Case-insensitive matching in regular expressions compiled under
2810 "use locale" now works much more sanely when the pattern or target
2811 string is internally encoded in UTF8. Previously, under these
2812 conditions the localeness was completely lost. Now, code points
2813 above 255 are treated as Unicode, but code points between 0 and 255
2814 are treated using the current locale rules, regardless of whether
2815 the pattern or the string is encoded in UTF8. The few case-
2816 insensitive matches that cross the 255/256 boundary are not
2817 allowed. For example, 0xFF does not caselessly match the character
2818 at 0x178, LATIN CAPITAL LETTER Y WITH DIAERESIS, because 0xFF may
2819 not be LATIN SMALL LETTER Y in the current locale, and Perl has no
2820 way of knowing if that character even exists in the locale, much
2821 less what code point it is.
2822
2823 • The "(?|...)" regular expression construct no longer crashes if the
2824 final branch has more sets of capturing parentheses than any other
2825 branch. This was fixed in Perl 5.10.1 for the case of a single
2826 branch, but that fix did not take multiple branches into account
2827 [perl #84746].
2828
2829 • A bug has been fixed in the implementation of "{...}" quantifiers
2830 in regular expressions that prevented the code block in "/((\w+)(?{
2831 print $2 })){2}/" from seeing the $2 sometimes [perl #84294].
2832
2833 Syntax/Parsing Bugs
2834 • "when (scalar) {...}" no longer crashes, but produces a syntax
2835 error [perl #74114] (5.12.1).
2836
2837 • A label right before a string eval ("foo: eval $string") no longer
2838 causes the label to be associated also with the first statement
2839 inside the eval [perl #74290] (5.12.1).
2840
2841 • The "no 5.13.2" form of "no" no longer tries to turn on features or
2842 pragmata (like strict) [perl #70075] (5.12.2).
2843
2844 • "BEGIN {require 5.12.0}" now behaves as documented, rather than
2845 behaving identically to "use 5.12.0". Previously, "require" in a
2846 "BEGIN" block was erroneously executing the "use feature ':5.12.0'"
2847 and "use strict" behaviour, which only "use" was documented to
2848 provide [perl #69050].
2849
2850 • A regression introduced in Perl 5.12.0, making "my $x = 3; $x =
2851 length(undef)" result in $x set to 3 has been fixed. $x will now
2852 be "undef" [perl #85508] (5.12.2).
2853
2854 • When strict "refs" mode is off, "%{...}" in rvalue context returns
2855 "undef" if its argument is undefined. An optimisation introduced
2856 in Perl 5.12.0 to make "keys %{...}" faster when used as a boolean
2857 did not take this into account, causing "keys %{+undef}" (and "keys
2858 %$foo" when $foo is undefined) to be an error, which it should be
2859 so in strict mode only [perl #81750].
2860
2861 • Constant-folding used to cause
2862
2863 $text =~ ( 1 ? /phoo/ : /bear/)
2864
2865 to turn into
2866
2867 $text =~ /phoo/
2868
2869 at compile time. Now it correctly matches against $_ [perl
2870 #20444].
2871
2872 • Parsing Perl code (either with string "eval" or by loading modules)
2873 from within a "UNITCHECK" block no longer causes the interpreter to
2874 crash [perl #70614].
2875
2876 • String "eval"s no longer fail after 2 billion scopes have been
2877 compiled [perl #83364].
2878
2879 • The parser no longer hangs when encountering certain Unicode
2880 characters, such as U+387 [perl #74022].
2881
2882 • Defining a constant with the same name as one of Perl's special
2883 blocks (like "INIT") stopped working in 5.12.0, but has now been
2884 fixed [perl #78634].
2885
2886 • A reference to a literal value used as a hash key ($hash{\"foo"})
2887 used to be stringified, even if the hash was tied [perl #79178].
2888
2889 • A closure containing an "if" statement followed by a constant or
2890 variable is no longer treated as a constant [perl #63540].
2891
2892 • "state" can now be used with attributes. It used to mean the same
2893 thing as "my" if any attributes were present [perl #68658].
2894
2895 • Expressions like "@$a > 3" no longer cause $a to be mentioned in
2896 the "Use of uninitialized value in numeric gt" warning when $a is
2897 undefined (since it is not part of the ">" expression, but the
2898 operand of the "@") [perl #72090].
2899
2900 • Accessing an element of a package array with a hard-coded number
2901 (as opposed to an arbitrary expression) would crash if the array
2902 did not exist. Usually the array would be autovivified during
2903 compilation, but typeglob manipulation could remove it, as in these
2904 two cases which used to crash:
2905
2906 *d = *a; print $d[0];
2907 undef *d; print $d[0];
2908
2909 • The -C command-line option, when used on the shebang line, can now
2910 be followed by other options [perl #72434].
2911
2912 • The "B" module was returning "B::OP"s instead of "B::LOGOP"s for
2913 "entertry" [perl #80622]. This was due to a bug in the Perl core,
2914 not in "B" itself.
2915
2916 Stashes, Globs and Method Lookup
2917 Perl 5.10.0 introduced a new internal mechanism for caching MROs
2918 (method resolution orders, or lists of parent classes; aka "isa"
2919 caches) to make method lookup faster (so @ISA arrays would not have to
2920 be searched repeatedly). Unfortunately, this brought with it quite a
2921 few bugs. Almost all of these have been fixed now, along with a few
2922 MRO-related bugs that existed before 5.10.0:
2923
2924 • The following used to have erratic effects on method resolution,
2925 because the "isa" caches were not reset or otherwise ended up
2926 listing the wrong classes. These have been fixed.
2927
2928 Aliasing packages by assigning to globs [perl #77358]
2929 Deleting packages by deleting their containing stash elements
2930 Undefining the glob containing a package ("undef *Foo::")
2931 Undefining an ISA glob ("undef *Foo::ISA")
2932 Deleting an ISA stash element ("delete $Foo::{ISA}")
2933 Sharing @ISA arrays between classes (via "*Foo::ISA = \@Bar::ISA"
2934 or "*Foo::ISA = *Bar::ISA") [perl #77238]
2935
2936 "undef *Foo::ISA" would even stop a new @Foo::ISA array from
2937 updating caches.
2938
2939 • Typeglob assignments would crash if the glob's stash no longer
2940 existed, so long as the glob assigned to were named "ISA" or the
2941 glob on either side of the assignment contained a subroutine.
2942
2943 • "PL_isarev", which is accessible to Perl via "mro::get_isarev" is
2944 now updated properly when packages are deleted or removed from the
2945 @ISA of other classes. This allows many packages to be created and
2946 deleted without causing a memory leak [perl #75176].
2947
2948 In addition, various other bugs related to typeglobs and stashes have
2949 been fixed:
2950
2951 • Some work has been done on the internal pointers that link between
2952 symbol tables (stashes), typeglobs, and subroutines. This has the
2953 effect that various edge cases related to deleting stashes or stash
2954 entries (for example, <%FOO:: = ()>), and complex typeglob or code-
2955 reference aliasing, will no longer crash the interpreter.
2956
2957 • Assigning a reference to a glob copy now assigns to a glob slot
2958 instead of overwriting the glob with a scalar [perl #1804] [perl
2959 #77508].
2960
2961 • A bug when replacing the glob of a loop variable within the loop
2962 has been fixed [perl #21469]. This means the following code will
2963 no longer crash:
2964
2965 for $x (...) {
2966 *x = *y;
2967 }
2968
2969 • Assigning a glob to a PVLV used to convert it to a plain string.
2970 Now it works correctly, and a PVLV can hold a glob. This would
2971 happen when a nonexistent hash or array element was passed to a
2972 subroutine:
2973
2974 sub { $_[0] = *foo }->($hash{key});
2975 # $_[0] would have been the string "*main::foo"
2976
2977 It also happened when a glob was assigned to, or returned from, an
2978 element of a tied array or hash [perl #36051].
2979
2980 • When trying to report "Use of uninitialized value $Foo::BAR",
2981 crashes could occur if the glob holding the global variable in
2982 question had been detached from its original stash by, for example,
2983 "delete $::{"Foo::"}". This has been fixed by disabling the
2984 reporting of variable names in those cases.
2985
2986 • During the restoration of a localised typeglob on scope exit, any
2987 destructors called as a result would be able to see the typeglob in
2988 an inconsistent state, containing freed entries, which could result
2989 in a crash. This would affect code like this:
2990
2991 local *@;
2992 eval { die bless [] }; # puts an object in $@
2993 sub DESTROY {
2994 local $@; # boom
2995 }
2996
2997 Now the glob entries are cleared before any destructors are called.
2998 This also means that destructors can vivify entries in the glob.
2999 So Perl tries again and, if the entries are re-created too many
3000 times, dies with a "panic: gp_free ..." error message.
3001
3002 • If a typeglob is freed while a subroutine attached to it is still
3003 referenced elsewhere, the subroutine is renamed to "__ANON__" in
3004 the same package, unless the package has been undefined, in which
3005 case the "__ANON__" package is used. This could cause packages to
3006 be sometimes autovivified, such as if the package had been deleted.
3007 Now this no longer occurs. The "__ANON__" package is also now used
3008 when the original package is no longer attached to the symbol
3009 table. This avoids memory leaks in some cases [perl #87664].
3010
3011 • Subroutines and package variables inside a package whose name ends
3012 with "::" can now be accessed with a fully qualified name.
3013
3014 Unicode
3015 • What has become known as "the Unicode Bug" is almost completely
3016 resolved in this release. Under "use feature 'unicode_strings'"
3017 (which is automatically selected by "use 5.012" and above), the
3018 internal storage format of a string no longer affects the external
3019 semantics. [perl #58182].
3020
3021 There are two known exceptions:
3022
3023 1. The now-deprecated, user-defined case-changing functions
3024 require utf8-encoded strings to operate. The CPAN module
3025 Unicode::Casing has been written to replace this feature
3026 without its drawbacks, and the feature is scheduled to be
3027 removed in 5.16.
3028
3029 2. quotemeta() (and its in-line equivalent "\Q") can also give
3030 different results depending on whether a string is encoded in
3031 UTF-8. See "The "Unicode Bug"" in perlunicode.
3032
3033 • Handling of Unicode non-character code points has changed.
3034 Previously they were mostly considered illegal, except that in some
3035 place only one of the 66 of them was known. The Unicode Standard
3036 considers them all legal, but forbids their "open interchange".
3037 This is part of the change to allow internal use of any code point
3038 (see "Core Enhancements"). Together, these changes resolve [perl
3039 #38722], [perl #51918], [perl #51936], and [perl #63446].
3040
3041 • Case-insensitive "/i" regular expression matching of Unicode
3042 characters that match multiple characters now works much more as
3043 intended. For example
3044
3045 "\N{LATIN SMALL LIGATURE FFI}" =~ /ffi/ui
3046
3047 and
3048
3049 "ffi" =~ /\N{LATIN SMALL LIGATURE FFI}/ui
3050
3051 are both true. Previously, there were many bugs with this feature.
3052 What hasn't been fixed are the places where the pattern contains
3053 the multiple characters, but the characters are split up by other
3054 things, such as in
3055
3056 "\N{LATIN SMALL LIGATURE FFI}" =~ /(f)(f)i/ui
3057
3058 or
3059
3060 "\N{LATIN SMALL LIGATURE FFI}" =~ /ffi*/ui
3061
3062 or
3063
3064 "\N{LATIN SMALL LIGATURE FFI}" =~ /[a-f][f-m][g-z]/ui
3065
3066 None of these match.
3067
3068 Also, this matching doesn't fully conform to the current Unicode
3069 Standard, which asks that the matching be made upon the NFD
3070 (Normalization Form Decomposed) of the text. However, as of this
3071 writing (April 2010), the Unicode Standard is currently in flux
3072 about what they will recommend doing with regard in such scenarios.
3073 It may be that they will throw out the whole concept of multi-
3074 character matches. [perl #71736].
3075
3076 • Naming a deprecated character in "\N{NAME}" no longer leaks memory.
3077
3078 • We fixed a bug that could cause "\N{NAME}" constructs followed by a
3079 single "." to be parsed incorrectly [perl #74978] (5.12.1).
3080
3081 • "chop" now correctly handles characters above "\x{7fffffff}" [perl
3082 #73246].
3083
3084 • Passing to "index" an offset beyond the end of the string when the
3085 string is encoded internally in UTF8 no longer causes panics [perl
3086 #75898].
3087
3088 • warn() and die() now respect utf8-encoded scalars [perl #45549].
3089
3090 • Sometimes the UTF8 length cache would not be reset on a value
3091 returned by substr, causing "length(substr($uni_string, ...))" to
3092 give wrong answers. With "${^UTF8CACHE}" set to -1, it would also
3093 produce a "panic" error message [perl #77692].
3094
3095 Ties, Overloading and Other Magic
3096 • Overloading now works properly in conjunction with tied variables.
3097 What formerly happened was that most ops checked their arguments
3098 for overloading before checking for magic, so for example an
3099 overloaded object returned by a tied array access would usually be
3100 treated as not overloaded [RT #57012].
3101
3102 • Various instances of magic (like tie methods) being called on tied
3103 variables too many or too few times have been fixed:
3104
3105 • $tied->() did not always call FETCH [perl #8438].
3106
3107 • Filetest operators and "y///" and "tr///" were calling FETCH
3108 too many times.
3109
3110 • The "=" operator used to ignore magic on its right-hand side if
3111 the scalar happened to hold a typeglob (if a typeglob was the
3112 last thing returned from or assigned to a tied scalar) [perl
3113 #77498].
3114
3115 • Dereference operators used to ignore magic if the argument was
3116 a reference already (such as from a previous FETCH) [perl
3117 #72144].
3118
3119 • "splice" now calls set-magic (so changes made by "splice @ISA"
3120 are respected by method calls) [perl #78400].
3121
3122 • In-memory files created by "open($fh, ">", \$buffer)" were not
3123 calling FETCH/STORE at all [perl #43789] (5.12.2).
3124
3125 • utf8::is_utf8() now respects get-magic (like $1) (5.12.1).
3126
3127 • Non-commutative binary operators used to swap their operands if the
3128 same tied scalar was used for both operands and returned a
3129 different value for each FETCH. For instance, if $t returned 2 the
3130 first time and 3 the second, then "$t/$t" would evaluate to 1.5.
3131 This has been fixed [perl #87708].
3132
3133 • String "eval" now detects taintedness of overloaded or tied
3134 arguments [perl #75716].
3135
3136 • String "eval" and regular expression matches against objects with
3137 string overloading no longer cause memory corruption or crashes
3138 [perl #77084].
3139
3140 • readline now honors "<>" overloading on tied arguments.
3141
3142 • "<expr>" always respects overloading now if the expression is
3143 overloaded.
3144
3145 Because "<> as glob" was parsed differently from "<> as filehandle"
3146 from 5.6 onwards, something like "<$foo[0]>" did not handle
3147 overloading, even if $foo[0] was an overloaded object. This was
3148 contrary to the documentation for overload, and meant that "<>"
3149 could not be used as a general overloaded iterator operator.
3150
3151 • The fallback behaviour of overloading on binary operators was
3152 asymmetric [perl #71286].
3153
3154 • Magic applied to variables in the main package no longer affects
3155 other packages. See "Magic variables outside the main package"
3156 above [perl #76138].
3157
3158 • Sometimes magic (ties, taintedness, etc.) attached to variables
3159 could cause an object to last longer than it should, or cause a
3160 crash if a tied variable were freed from within a tie method.
3161 These have been fixed [perl #81230].
3162
3163 • DESTROY methods of objects implementing ties are no longer able to
3164 crash by accessing the tied variable through a weak reference [perl
3165 #86328].
3166
3167 • Fixed a regression of kill() when a match variable is used for the
3168 process ID to kill [perl #75812].
3169
3170 • $AUTOLOAD used to remain tainted forever if it ever became tainted.
3171 Now it is correctly untainted if an autoloaded method is called and
3172 the method name was not tainted.
3173
3174 • "sprintf" now dies when passed a tainted scalar for the format. It
3175 did already die for arbitrary expressions, but not for simple
3176 scalars [perl #82250].
3177
3178 • "lc", "uc", "lcfirst", and "ucfirst" no longer return untainted
3179 strings when the argument is tainted. This has been broken since
3180 perl 5.8.9 [perl #87336].
3181
3182 The Debugger
3183 • The Perl debugger now also works in taint mode [perl #76872].
3184
3185 • Subroutine redefinition works once more in the debugger [perl
3186 #48332].
3187
3188 • When -d is used on the shebang ("#!") line, the debugger now has
3189 access to the lines of the main program. In the past, this
3190 sometimes worked and sometimes did not, depending on the order in
3191 which things happened to be arranged in memory [perl #71806].
3192
3193 • A possible memory leak when using caller() to set @DB::args has
3194 been fixed (5.12.2).
3195
3196 • Perl no longer stomps on $DB::single, $DB::trace, and $DB::signal
3197 if these variables already have values when $^P is assigned to
3198 [perl #72422].
3199
3200 • "#line" directives in string evals were not properly updating the
3201 arrays of lines of code ("@{"_< ..."}") that the debugger (or any
3202 debugging or profiling module) uses. In threaded builds, they were
3203 not being updated at all. In non-threaded builds, the line number
3204 was ignored, so any change to the existing line number would cause
3205 the lines to be misnumbered [perl #79442].
3206
3207 Threads
3208 • Perl no longer accidentally clones lexicals in scope within active
3209 stack frames in the parent when creating a child thread [perl
3210 #73086].
3211
3212 • Several memory leaks in cloning and freeing threaded Perl
3213 interpreters have been fixed [perl #77352].
3214
3215 • Creating a new thread when directory handles were open used to
3216 cause a crash, because the handles were not cloned, but simply
3217 passed to the new thread, resulting in a double free.
3218
3219 Now directory handles are cloned properly on Windows and on systems
3220 that have a "fchdir" function. On other systems, new threads
3221 simply do not inherit directory handles from their parent threads
3222 [perl #75154].
3223
3224 • The typeglob "*,", which holds the scalar variable $, (output field
3225 separator), had the wrong reference count in child threads.
3226
3227 • [perl #78494] When pipes are shared between threads, the "close"
3228 function (and any implicit close, such as on thread exit) no longer
3229 blocks.
3230
3231 • Perl now does a timely cleanup of SVs that are cloned into a new
3232 thread but then discovered to be orphaned (that is, their owners
3233 are not cloned). This eliminates several "scalars leaked" warnings
3234 when joining threads.
3235
3236 Scoping and Subroutines
3237 • Lvalue subroutines are again able to return copy-on-write scalars.
3238 This had been broken since version 5.10.0 [perl #75656] (5.12.3).
3239
3240 • "require" no longer causes "caller" to return the wrong file name
3241 for the scope that called "require" and other scopes higher up that
3242 had the same file name [perl #68712].
3243
3244 • "sort" with a "($$)"-prototyped comparison routine used to cause
3245 the value of @_ to leak out of the sort. Taking a reference to @_
3246 within the sorting routine could cause a crash [perl #72334].
3247
3248 • Match variables (like $1) no longer persist between calls to a sort
3249 subroutine [perl #76026].
3250
3251 • Iterating with "foreach" over an array returned by an lvalue sub
3252 now works [perl #23790].
3253
3254 • $@ is now localised during calls to "binmode" to prevent action at
3255 a distance [perl #78844].
3256
3257 • Calling a closure prototype (what is passed to an attribute handler
3258 for a closure) now results in a "Closure prototype called" error
3259 message instead of a crash [perl #68560].
3260
3261 • Mentioning a read-only lexical variable from the enclosing scope in
3262 a string "eval" no longer causes the variable to become writable
3263 [perl #19135].
3264
3265 Signals
3266 • Within signal handlers, $! is now implicitly localized.
3267
3268 • CHLD signals are no longer unblocked after a signal handler is
3269 called if they were blocked before by "POSIX::sigprocmask" [perl
3270 #82040].
3271
3272 • A signal handler called within a signal handler could cause leaks
3273 or double-frees. Now fixed [perl #76248].
3274
3275 Miscellaneous Memory Leaks
3276 • Several memory leaks when loading XS modules were fixed (5.12.2).
3277
3278 • substr(), pos(), keys(), and vec() could, when used in combination
3279 with lvalues, result in leaking the scalar value they operate on,
3280 and cause its destruction to happen too late. This has now been
3281 fixed.
3282
3283 • The postincrement and postdecrement operators, "++" and "--", used
3284 to cause leaks when used on references. This has now been fixed.
3285
3286 • Nested "map" and "grep" blocks no longer leak memory when
3287 processing large lists [perl #48004].
3288
3289 • "use VERSION" and "no VERSION" no longer leak memory [perl #78436]
3290 [perl #69050].
3291
3292 • ".=" followed by "<>" or "readline" would leak memory if $/
3293 contained characters beyond the octet range and the scalar assigned
3294 to happened to be encoded as UTF8 internally [perl #72246].
3295
3296 • "eval 'BEGIN{die}'" no longer leaks memory on non-threaded builds.
3297
3298 Memory Corruption and Crashes
3299 • glob() no longer crashes when %File::Glob:: is empty and
3300 "CORE::GLOBAL::glob" isn't present [perl #75464] (5.12.2).
3301
3302 • readline() has been fixed when interrupted by signals so it no
3303 longer returns the "same thing" as before or random memory.
3304
3305 • When assigning a list with duplicated keys to a hash, the
3306 assignment used to return garbage and/or freed values:
3307
3308 @a = %h = (list with some duplicate keys);
3309
3310 This has now been fixed [perl #31865].
3311
3312 • The mechanism for freeing objects in globs used to leave dangling
3313 pointers to freed SVs, meaning Perl users could see corrupted state
3314 during destruction.
3315
3316 Perl now frees only the affected slots of the GV, rather than
3317 freeing the GV itself. This makes sure that there are no dangling
3318 refs or corrupted state during destruction.
3319
3320 • The interpreter no longer crashes when freeing deeply-nested arrays
3321 of arrays. Hashes have not been fixed yet [perl #44225].
3322
3323 • Concatenating long strings under "use encoding" no longer causes
3324 Perl to crash [perl #78674].
3325
3326 • Calling "->import" on a class lacking an import method could
3327 corrupt the stack, resulting in strange behaviour. For instance,
3328
3329 push @a, "foo", $b = bar->import;
3330
3331 would assign "foo" to $b [perl #63790].
3332
3333 • The "recv" function could crash when called with the MSG_TRUNC flag
3334 [perl #75082].
3335
3336 • "formline" no longer crashes when passed a tainted format picture.
3337 It also taints $^A now if its arguments are tainted [perl #79138].
3338
3339 • A bug in how we process filetest operations could cause a segfault.
3340 Filetests don't always expect an op on the stack, so we now use
3341 TOPs only if we're sure that we're not "stat"ing the "_"
3342 filehandle. This is indicated by "OPf_KIDS" (as checked in
3343 ck_ftst) [perl #74542] (5.12.1).
3344
3345 • unpack() now handles scalar context correctly for %32H and %32u,
3346 fixing a potential crash. split() would crash because the third
3347 item on the stack wasn't the regular expression it expected.
3348 "unpack("%2H", ...)" would return both the unpacked result and the
3349 checksum on the stack, as would "unpack("%2u", ...)" [perl #73814]
3350 (5.12.2).
3351
3352 Fixes to Various Perl Operators
3353 • The "&", "|", and "^" bitwise operators no longer coerce read-only
3354 arguments [perl #20661].
3355
3356 • Stringifying a scalar containing "-0.0" no longer has the effect of
3357 turning false into true [perl #45133].
3358
3359 • Some numeric operators were converting integers to floating point,
3360 resulting in loss of precision on 64-bit platforms [perl #77456].
3361
3362 • sprintf() was ignoring locales when called with constant arguments
3363 [perl #78632].
3364
3365 • Combining the vector (%v) flag and dynamic precision would cause
3366 "sprintf" to confuse the order of its arguments, making it treat
3367 the string as the precision and vice-versa [perl #83194].
3368
3369 Bugs Relating to the C API
3370 • The C-level "lex_stuff_pvn" function would sometimes cause a
3371 spurious syntax error on the last line of the file if it lacked a
3372 final semicolon [perl #74006] (5.12.1).
3373
3374 • The "eval_sv" and "eval_pv" C functions now set $@ correctly when
3375 there is a syntax error and no "G_KEEPERR" flag, and never set it
3376 if the "G_KEEPERR" flag is present [perl #3719].
3377
3378 • The XS multicall API no longer causes subroutines to lose reference
3379 counts if called via the multicall interface from within those very
3380 subroutines. This affects modules like List::Util. Calling one of
3381 its functions with an active subroutine as the first argument could
3382 cause a crash [perl #78070].
3383
3384 • The "SvPVbyte" function available to XS modules now calls magic
3385 before downgrading the SV, to avoid warnings about wide characters
3386 [perl #72398].
3387
3388 • The ref types in the typemap for XS bindings now support magical
3389 variables [perl #72684].
3390
3391 • "sv_catsv_flags" no longer calls "mg_get" on its second argument
3392 (the source string) if the flags passed to it do not include
3393 SV_GMAGIC. So it now matches the documentation.
3394
3395 • "my_strftime" no longer leaks memory. This fixes a memory leak in
3396 "POSIX::strftime" [perl #73520].
3397
3398 • XSUB.h now correctly redefines fgets under PERL_IMPLICIT_SYS [perl
3399 #55049] (5.12.1).
3400
3401 • XS code using fputc() or fputs() on Windows could cause an error
3402 due to their arguments being swapped [perl #72704] (5.12.1).
3403
3404 • A possible segfault in the "T_PTROBJ" default typemap has been
3405 fixed (5.12.2).
3406
3407 • A bug that could cause "Unknown error" messages when "call_sv(code,
3408 G_EVAL)" is called from an XS destructor has been fixed (5.12.2).
3409
3411 This is a list of significant unresolved issues which are regressions
3412 from earlier versions of Perl or which affect widely-used CPAN modules.
3413
3414 • "List::Util::first" misbehaves in the presence of a lexical $_
3415 (typically introduced by "my $_" or implicitly by "given"). The
3416 variable that gets set for each iteration is the package variable
3417 $_, not the lexical $_.
3418
3419 A similar issue may occur in other modules that provide functions
3420 which take a block as their first argument, like
3421
3422 foo { ... $_ ...} list
3423
3424 See also: <https://github.com/Perl/perl5/issues/9798>
3425
3426 • readline() returns an empty string instead of a cached previous
3427 value when it is interrupted by a signal
3428
3429 • The changes in prototype handling break Switch. A patch has been
3430 sent upstream and will hopefully appear on CPAN soon.
3431
3432 • The upgrade to ExtUtils-MakeMaker-6.57_05 has caused some tests in
3433 the Module-Install distribution on CPAN to fail. (Specifically,
3434 02_mymeta.t tests 5 and 21; 18_all_from.t tests 6 and 15;
3435 19_authors.t tests 5, 13, 21, and 29; and
3436 20_authors_with_special_characters.t tests 6, 15, and 23 in version
3437 1.00 of that distribution now fail.)
3438
3439 • On VMS, "Time::HiRes" tests will fail due to a bug in the CRTL's
3440 implementation of "setitimer": previous timer values would be
3441 cleared if a timer expired but not if the timer was reset before
3442 expiring. HP OpenVMS Engineering have corrected the problem and
3443 will release a patch in due course (Quix case # QXCM1001115136).
3444
3445 • On VMS, there were a handful of "Module::Build" test failures we
3446 didn't get to before the release; please watch CPAN for updates.
3447
3449 keys(), values(), and each() work on arrays
3450 You can now use the keys(), values(), and each() builtins on arrays;
3451 previously you could use them only on hashes. See perlfunc for
3452 details. This is actually a change introduced in perl 5.12.0, but it
3453 was missed from that release's perl5120delta.
3454
3455 split() and @_
3456 split() no longer modifies @_ when called in scalar or void context.
3457 In void context it now produces a "Useless use of split" warning. This
3458 was also a perl 5.12.0 change that missed the perldelta.
3459
3461 Randy Kobes, creator of http://kobesearch.cpan.org/ and
3462 contributor/maintainer to several core Perl toolchain modules, passed
3463 away on September 18, 2010 after a battle with lung cancer. The
3464 community was richer for his involvement. He will be missed.
3465
3467 Perl 5.14.0 represents one year of development since Perl 5.12.0 and
3468 contains nearly 550,000 lines of changes across nearly 3,000 files from
3469 150 authors and committers.
3470
3471 Perl continues to flourish into its third decade thanks to a vibrant
3472 community of users and developers. The following people are known to
3473 have contributed the improvements that became Perl 5.14.0:
3474
3475 Aaron Crane, Abhijit Menon-Sen, Abigail, Ævar Arnfjörð Bjarmason,
3476 Alastair Douglas, Alexander Alekseev, Alexander Hartmaier, Alexandr
3477 Ciornii, Alex Davies, Alex Vandiver, Ali Polatel, Allen Smith, Andreas
3478 König, Andrew Rodland, Andy Armstrong, Andy Dougherty, Aristotle
3479 Pagaltzis, Arkturuz, Arvan, A. Sinan Unur, Ben Morrow, Bo Lindbergh,
3480 Boris Ratner, Brad Gilbert, Bram, brian d foy, Brian Phillips, Casey
3481 West, Charles Bailey, Chas. Owens, Chip Salzenberg, Chris 'BinGOs'
3482 Williams, chromatic, Craig A. Berry, Curtis Jewell, Dagfinn Ilmari
3483 Mannsåker, Dan Dascalescu, Dave Rolsky, David Caldwell, David Cantrell,
3484 David Golden, David Leadbeater, David Mitchell, David Wheeler, Eric
3485 Brine, Father Chrysostomos, Fingle Nark, Florian Ragwitz, Frank
3486 Wiegand, Franz Fasching, Gene Sullivan, George Greer, Gerard Goossen,
3487 Gisle Aas, Goro Fuji, Grant McLean, gregor herrmann, H.Merijn Brand,
3488 Hongwen Qiu, Hugo van der Sanden, Ian Goodacre, James E Keenan, James
3489 Mastros, Jan Dubois, Jay Hannah, Jerry D. Hedden, Jesse Vincent, Jim
3490 Cromie, Jirka Hruška, John Peacock, Joshua ben Jore, Joshua Pritikin,
3491 Karl Williamson, Kevin Ryde, kmx, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯, Larwan Berke,
3492 Leon Brocard, Leon Timmermans, Lubomir Rintel, Lukas Mai, Maik
3493 Hentsche, Marty Pauley, Marvin Humphrey, Matt Johnson, Matt S Trout,
3494 Max Maischein, Michael Breen, Michael Fig, Michael G Schwern, Michael
3495 Parker, Michael Stevens, Michael Witten, Mike Kelly, Moritz Lenz,
3496 Nicholas Clark, Nick Cleaton, Nick Johnston, Nicolas Kaiser, Niko Tyni,
3497 Noirin Shirley, Nuno Carvalho, Paul Evans, Paul Green, Paul Johnson,
3498 Paul Marquess, Peter J. Holzer, Peter John Acklam, Peter Martini,
3499 Philippe Bruhat (BooK), Piotr Fusik, Rafael Garcia-Suarez, Rainer
3500 Tammer, Reini Urban, Renee Baecker, Ricardo Signes, Richard Möhn,
3501 Richard Soderberg, Rob Hoelz, Robin Barker, Ruslan Zakirov, Salvador
3502 Fandiño, Salvador Ortiz Garcia, Shlomi Fish, Sinan Unur, Sisyphus,
3503 Slaven Rezic, Steffen Müller, Steve Hay, Steven Schubiger, Steve
3504 Peters, Sullivan Beck, Tatsuhiko Miyagawa, Tim Bunce, Todd Rinaldo, Tom
3505 Christiansen, Tom Hukins, Tony Cook, Tye McQueen, Vadim Konovalov,
3506 Vernon Lyon, Vincent Pit, Walt Mankowski, Wolfram Humann, Yves Orton,
3507 Zefram, and Zsbán Ambrus.
3508
3509 This is woefully incomplete as it's automatically generated from
3510 version control history. In particular, it doesn't include the names
3511 of the (very much appreciated) contributors who reported issues in
3512 previous versions of Perl that helped make Perl 5.14.0 better. For a
3513 more complete list of all of Perl's historical contributors, please see
3514 the "AUTHORS" file in the Perl 5.14.0 distribution.
3515
3516 Many of the changes included in this version originated in the CPAN
3517 modules included in Perl's core. We're grateful to the entire CPAN
3518 community for helping Perl to flourish.
3519
3521 If you find what you think is a bug, you might check the articles
3522 recently posted to the comp.lang.perl.misc newsgroup and the Perl bug
3523 database at http://rt.perl.org/perlbug/ . There may also be
3524 information at http://www.perl.org/ , the Perl Home Page.
3525
3526 If you believe you have an unreported bug, please run the perlbug
3527 program included with your release. Be sure to trim your bug down to a
3528 tiny but sufficient test case. Your bug report, along with the output
3529 of "perl -V", will be sent off to perlbug@perl.org to be analysed by
3530 the Perl porting team.
3531
3532 If the bug you are reporting has security implications, which make it
3533 inappropriate to send to a publicly archived mailing list, then please
3534 send it to perl5-security-report@perl.org. This points to a closed
3535 subscription unarchived mailing list, which includes all the core
3536 committers, who are able to help assess the impact of issues, figure
3537 out a resolution, and help co-ordinate the release of patches to
3538 mitigate or fix the problem across all platforms on which Perl is
3539 supported. Please use this address for security issues in the Perl
3540 core only, not for modules independently distributed on CPAN.
3541
3543 The Changes file for an explanation of how to view exhaustive details
3544 on what changed.
3545
3546 The INSTALL file for how to build Perl.
3547
3548 The README file for general stuff.
3549
3550 The Artistic and Copying files for copyright information.
3551
3552
3553
3554perl v5.38.2 2023-11-30 PERL5140DELTA(1)