1PERL5120DELTA(1) Perl Programmers Reference Guide PERL5120DELTA(1)
2
3
4
6 perl5120delta - what is new for perl v5.12.0
7
9 This document describes differences between the 5.10.0 release and the
10 5.12.0 release.
11
12 Many of the bug fixes in 5.12.0 are already included in the 5.10.1
13 maintenance release.
14
15 You can see the list of those changes in the 5.10.1 release notes
16 (perl5101delta).
17
19 New "package NAME VERSION" syntax
20 This new syntax allows a module author to set the $VERSION of a
21 namespace when the namespace is declared with 'package'. It eliminates
22 the need for "our $VERSION = ..." and similar constructs. E.g.
23
24 package Foo::Bar 1.23;
25 # $Foo::Bar::VERSION == 1.23
26
27 There are several advantages to this:
28
29 · $VERSION is parsed in exactly the same way as "use NAME VERSION"
30
31 · $VERSION is set at compile time
32
33 · $VERSION is a version object that provides proper overloading of
34 comparison operators so comparing $VERSION to decimal (1.23) or
35 dotted-decimal (v1.2.3) version numbers works correctly.
36
37 · Eliminates "$VERSION = ..." and "eval $VERSION" clutter
38
39 · As it requires VERSION to be a numeric literal or v-string literal,
40 it can be statically parsed by toolchain modules without "eval" the
41 way MM->parse_version does for "$VERSION = ..."
42
43 It does not break old code with only "package NAME", but code that uses
44 "package NAME VERSION" will need to be restricted to perl 5.12.0 or
45 newer This is analogous to the change to "open" from two-args to three-
46 args. Users requiring the latest Perl will benefit, and perhaps after
47 several years, it will become a standard practice.
48
49 However, "package NAME VERSION" requires a new, 'strict' version number
50 format. See "Version number formats" for details.
51
52 The "..." operator
53 A new operator, "...", nicknamed the Yada Yada operator, has been
54 added. It is intended to mark placeholder code that is not yet
55 implemented. See "Yada Yada Operator" in perlop.
56
57 Implicit strictures
58 Using the "use VERSION" syntax with a version number greater or equal
59 to 5.11.0 will lexically enable strictures just like "use strict" would
60 do (in addition to enabling features.) The following:
61
62 use 5.12.0;
63
64 means:
65
66 use strict;
67 use feature ':5.12';
68
69 Unicode improvements
70 Perl 5.12 comes with Unicode 5.2, the latest version available to us at
71 the time of release. This version of Unicode was released in October
72 2009. See <http://www.unicode.org/versions/Unicode5.2.0> for further
73 details about what's changed in this version of the standard. See
74 perlunicode for instructions on installing and using other versions of
75 Unicode.
76
77 Additionally, Perl's developers have significantly improved Perl's
78 Unicode implementation. For full details, see "Unicode overhaul" below.
79
80 Y2038 compliance
81 Perl's core time-related functions are now Y2038 compliant. (It may not
82 mean much to you, but your kids will love it!)
83
84 qr overloading
85 It is now possible to overload the "qr//" operator, that is, conversion
86 to regexp, like it was already possible to overload conversion to
87 boolean, string or number of objects. It is invoked when an object
88 appears on the right hand side of the "=~" operator or when it is
89 interpolated into a regexp. See overload.
90
91 Pluggable keywords
92 Extension modules can now cleanly hook into the Perl parser to define
93 new kinds of keyword-headed expression and compound statement. The
94 syntax following the keyword is defined entirely by the extension. This
95 allows a completely non-Perl sublanguage to be parsed inline, with the
96 correct ops cleanly generated.
97
98 See "PL_keyword_plugin" in perlapi for the mechanism. The Perl core
99 source distribution also includes a new module XS::APItest::KeywordRPN,
100 which implements reverse Polish notation arithmetic via pluggable
101 keywords. This module is mainly used for test purposes, and is not
102 normally installed, but also serves as an example of how to use the new
103 mechanism.
104
105 Perl's developers consider this feature to be experimental. We may
106 remove it or change it in a backwards-incompatible way in Perl 5.14.
107
108 APIs for more internals
109 The lowest layers of the lexer and parts of the pad system now have C
110 APIs available to XS extensions. These are necessary to support proper
111 use of pluggable keywords, but have other uses too. The new APIs are
112 experimental, and only cover a small proportion of what would be
113 necessary to take full advantage of the core's facilities in these
114 areas. It is intended that the Perl 5.13 development cycle will see the
115 addition of a full range of clean, supported interfaces.
116
117 Perl's developers consider this feature to be experimental. We may
118 remove it or change it in a backwards-incompatible way in Perl 5.14.
119
120 Overridable function lookup
121 Where an extension module hooks the creation of rv2cv ops to modify the
122 subroutine lookup process, this now works correctly for bareword
123 subroutine calls. This means that prototypes on subroutines referenced
124 this way will be processed correctly. (Previously bareword subroutine
125 names were initially looked up, for parsing purposes, by an unhookable
126 mechanism, so extensions could only properly influence subroutine names
127 that appeared with an "&" sigil.)
128
129 A proper interface for pluggable Method Resolution Orders
130 As of Perl 5.12.0 there is a new interface for plugging and using
131 method resolution orders other than the default linear depth first
132 search. The C3 method resolution order added in 5.10.0 has been re-
133 implemented as a plugin, without changing its Perl-space interface. See
134 perlmroapi for more information.
135
136 "\N" experimental regex escape
137 Perl now supports "\N", a new regex escape which you can think of as
138 the inverse of "\n". It will match any character that is not a newline,
139 independently from the presence or absence of the single line match
140 modifier "/s". It is not usable within a character class. "\N{3}"
141 means to match 3 non-newlines; "\N{5,}" means to match at least 5.
142 "\N{NAME}" still means the character or sequence named "NAME", but
143 "NAME" no longer can be things like 3, or "5,".
144
145 This will break a custom charnames translator which allows numbers for
146 character names, as "\N{3}" will now mean to match 3 non-newline
147 characters, and not the character whose name is 3. (No name defined by
148 the Unicode standard is a number, so only custom translators might be
149 affected.)
150
151 Perl's developers are somewhat concerned about possible user confusion
152 with the existing "\N{...}" construct which matches characters by their
153 Unicode name. Consequently, this feature is experimental. We may remove
154 it or change it in a backwards-incompatible way in Perl 5.14.
155
156 DTrace support
157 Perl now has some support for DTrace. See "DTrace support" in INSTALL.
158
159 Support for "configure_requires" in CPAN module metadata
160 Both "CPAN" and "CPANPLUS" now support the "configure_requires" keyword
161 in the META.yml metadata file included in most recent CPAN
162 distributions. This allows distribution authors to specify
163 configuration prerequisites that must be installed before running
164 Makefile.PL or Build.PL.
165
166 See the documentation for "ExtUtils::MakeMaker" or "Module::Build" for
167 more on how to specify "configure_requires" when creating a
168 distribution for CPAN.
169
170 "each", "keys", "values" are now more flexible
171 The "each", "keys", "values" function can now operate on arrays.
172
173 "when" as a statement modifier
174 "when" is now allowed to be used as a statement modifier.
175
176 $, flexibility
177 The variable $, may now be tied.
178
179 // in when clauses
180 // now behaves like || in when clauses
181
182 Enabling warnings from your shell environment
183 You can now set "-W" from the "PERL5OPT" environment variable
184
185 "delete local"
186 "delete local" now allows you to locally delete a hash entry.
187
188 New support for Abstract namespace sockets
189 Abstract namespace sockets are Linux-specific socket type that live in
190 AF_UNIX family, slightly abusing it to be able to use arbitrary
191 character arrays as addresses: They start with nul byte and are not
192 terminated by nul byte, but with the length passed to the socket()
193 system call.
194
195 32-bit limit on substr arguments removed
196 The 32-bit limit on "substr" arguments has now been removed. The full
197 range of the system's signed and unsigned integers is now available for
198 the "pos" and "len" arguments.
199
201 Deprecations warn by default
202 Over the years, Perl's developers have deprecated a number of language
203 features for a variety of reasons. Perl now defaults to issuing a
204 warning if a deprecated language feature is used. Many of the
205 deprecations Perl now warns you about have been deprecated for many
206 years. You can find a list of what was deprecated in a given release
207 of Perl in the "perl5xxdelta.pod" file for that release.
208
209 To disable this feature in a given lexical scope, you should use "no
210 warnings 'deprecated';" For information about which language features
211 are deprecated and explanations of various deprecation warnings, please
212 see perldiag. See "Deprecations" below for the list of features and
213 modules Perl's developers have deprecated as part of this release.
214
215 Version number formats
216 Acceptable version number formats have been formalized into "strict"
217 and "lax" rules. "package NAME VERSION" takes a strict version number.
218 "UNIVERSAL::VERSION" and the version object constructors take lax
219 version numbers. Providing an invalid version will result in a fatal
220 error. The version argument in "use NAME VERSION" is first parsed as a
221 numeric literal or v-string and then passed to "UNIVERSAL::VERSION"
222 (and must then pass the "lax" format test).
223
224 These formats are documented fully in the version module. To a first
225 approximation, a "strict" version number is a positive decimal number
226 (integer or decimal-fraction) without exponentiation or else a dotted-
227 decimal v-string with a leading 'v' character and at least three
228 components. A "lax" version number allows v-strings with fewer than
229 three components or without a leading 'v'. Under "lax" rules, both
230 decimal and dotted-decimal versions may have a trailing "alpha"
231 component separated by an underscore character after a fractional or
232 dotted-decimal component.
233
234 The version module adds "version::is_strict" and "version::is_lax"
235 functions to check a scalar against these rules.
236
237 @INC reorganization
238 In @INC, "ARCHLIB" and "PRIVLIB" now occur after the current version's
239 "site_perl" and "vendor_perl". Modules installed into "site_perl" and
240 "vendor_perl" will now be loaded in preference to those installed in
241 "ARCHLIB" and "PRIVLIB".
242
243 REGEXPs are now first class
244 Internally, Perl now treats compiled regular expressions (such as those
245 created with "qr//") as first class entities. Perl modules which
246 serialize, deserialize or otherwise have deep interaction with Perl's
247 internal data structures need to be updated for this change. Most
248 affected CPAN modules have already been updated as of this writing.
249
250 Switch statement changes
251 The "given"/"when" switch statement handles complex statements better
252 than Perl 5.10.0 did (These enhancements are also available in 5.10.1
253 and subsequent 5.10 releases.) There are two new cases where "when" now
254 interprets its argument as a boolean, instead of an expression to be
255 used in a smart match:
256
257 flip-flop operators
258 The ".." and "..." flip-flop operators are now evaluated in boolean
259 context, following their usual semantics; see "Range Operators" in
260 perlop.
261
262 Note that, as in perl 5.10.0, "when (1..10)" will not work to test
263 whether a given value is an integer between 1 and 10; you should
264 use "when ([1..10])" instead (note the array reference).
265
266 However, contrary to 5.10.0, evaluating the flip-flop operators in
267 boolean context ensures it can now be useful in a "when()", notably
268 for implementing bistable conditions, like in:
269
270 when (/^=begin/ .. /^=end/) {
271 # do something
272 }
273
274 defined-or operator
275 A compound expression involving the defined-or operator, as in
276 "when (expr1 // expr2)", will be treated as boolean if the first
277 expression is boolean. (This just extends the existing rule that
278 applies to the regular or operator, as in "when (expr1 || expr2)".)
279
280 Smart match changes
281 Since Perl 5.10.0, Perl's developers have made a number of changes to
282 the smart match operator. These, of course, also alter the behaviour of
283 the switch statements where smart matching is implicitly used. These
284 changes were also made for the 5.10.1 release, and will remain in
285 subsequent 5.10 releases.
286
287 Changes to type-based dispatch
288
289 The smart match operator "~~" is no longer commutative. The behaviour
290 of a smart match now depends primarily on the type of its right hand
291 argument. Moreover, its semantics have been adjusted for greater
292 consistency or usefulness in several cases. While the general backwards
293 compatibility is maintained, several changes must be noted:
294
295 · Code references with an empty prototype are no longer treated
296 specially. They are passed an argument like the other code
297 references (even if they choose to ignore it).
298
299 · "%hash ~~ sub {}" and "@array ~~ sub {}" now test that the
300 subroutine returns a true value for each key of the hash (or
301 element of the array), instead of passing the whole hash or array
302 as a reference to the subroutine.
303
304 · Due to the commutativity breakage, code references are no longer
305 treated specially when appearing on the left of the "~~" operator,
306 but like any vulgar scalar.
307
308 · "undef ~~ %hash" is always false (since "undef" can't be a key in a
309 hash). No implicit conversion to "" is done (as was the case in
310 perl 5.10.0).
311
312 · "$scalar ~~ @array" now always distributes the smart match across
313 the elements of the array. It's true if one element in @array
314 verifies "$scalar ~~ $element". This is a generalization of the old
315 behaviour that tested whether the array contained the scalar.
316
317 The full dispatch table for the smart match operator is given in "Smart
318 matching in detail" in perlsyn.
319
320 Smart match and overloading
321
322 According to the rule of dispatch based on the rightmost argument type,
323 when an object overloading "~~" appears on the right side of the
324 operator, the overload routine will always be called (with a 3rd
325 argument set to a true value, see overload.) However, when the object
326 will appear on the left, the overload routine will be called only when
327 the rightmost argument is a simple scalar. This way, distributivity of
328 smart match across arrays is not broken, as well as the other
329 behaviours with complex types (coderefs, hashes, regexes). Thus,
330 writers of overloading routines for smart match mostly need to worry
331 only with comparing against a scalar, and possibly with stringification
332 overloading; the other common cases will be automatically handled
333 consistently.
334
335 "~~" will now refuse to work on objects that do not overload it (in
336 order to avoid relying on the object's underlying structure). (However,
337 if the object overloads the stringification or the numification
338 operators, and if overload fallback is active, it will be used instead,
339 as usual.)
340
341 Other potentially incompatible changes
342 · The definitions of a number of Unicode properties have changed to
343 match those of the current Unicode standard. These are listed above
344 under "Unicode overhaul". This change may break code that expects
345 the old definitions.
346
347 · The boolkeys op has moved to the group of hash ops. This breaks
348 binary compatibility.
349
350 · Filehandles are now always blessed into "IO::File".
351
352 The previous behaviour was to bless Filehandles into FileHandle (an
353 empty proxy class) if it was loaded into memory and otherwise to
354 bless them into "IO::Handle".
355
356 · The semantics of "use feature :5.10*" have changed slightly. See
357 "Modules and Pragmata" for more information.
358
359 · Perl's developers now use git, rather than Perforce. This should
360 be a purely internal change only relevant to people actively
361 working on the core. However, you may see minor difference in perl
362 as a consequence of the change. For example in some of details of
363 the output of "perl -V". See perlrepository for more information.
364
365 · As part of the "Test::Harness" 2.x to 3.x upgrade, the experimental
366 "Test::Harness::Straps" module has been removed. See "Modules and
367 Pragmata" for more details.
368
369 · As part of the "ExtUtils::MakeMaker" upgrade, the
370 "ExtUtils::MakeMaker::bytes" and "ExtUtils::MakeMaker::vmsish"
371 modules have been removed from this distribution.
372
373 · "Module::CoreList" no longer contains the %:patchlevel hash.
374
375 · "length undef" now returns undef.
376
377 · Unsupported private C API functions are now declared "static" to
378 prevent leakage to Perl's public API.
379
380 · To support the bootstrapping process, miniperl no longer builds
381 with UTF-8 support in the regexp engine.
382
383 This allows a build to complete with PERL_UNICODE set and a UTF-8
384 locale. Without this there's a bootstrapping problem, as miniperl
385 can't load the UTF-8 components of the regexp engine, because
386 they're not yet built.
387
388 · miniperl's @INC is now restricted to just "-I...", the split of
389 $ENV{PERL5LIB}, and "".""
390
391 · A space or a newline is now required after a "#line XXX" directive.
392
393 · Tied filehandles now have an additional method EOF which provides
394 the EOF type.
395
396 · To better match all other flow control statements, "foreach" may no
397 longer be used as an attribute.
398
399 · Perl's command-line switch "-P", which was deprecated in version
400 5.10.0, has now been removed. The CPAN module "Filter::cpp" can be
401 used as an alternative.
402
404 From time to time, Perl's developers find it necessary to deprecate
405 features or modules we've previously shipped as part of the core
406 distribution. We are well aware of the pain and frustration that a
407 backwards-incompatible change to Perl can cause for developers building
408 or maintaining software in Perl. You can be sure that when we deprecate
409 a functionality or syntax, it isn't a choice we make lightly.
410 Sometimes, we choose to deprecate functionality or syntax because it
411 was found to be poorly designed or implemented. Sometimes, this is
412 because they're holding back other features or causing performance
413 problems. Sometimes, the reasons are more complex. Wherever possible,
414 we try to keep deprecated functionality available to developers in its
415 previous form for at least one major release. So long as a deprecated
416 feature isn't actively disrupting our ability to maintain and extend
417 Perl, we'll try to leave it in place as long as possible.
418
419 The following items are now deprecated:
420
421 suidperl
422 "suidperl" is no longer part of Perl. It used to provide a
423 mechanism to emulate setuid permission bits on systems that don't
424 support it properly.
425
426 Use of ":=" to mean an empty attribute list
427 An accident of Perl's parser meant that these constructions were
428 all equivalent:
429
430 my $pi := 4;
431 my $pi : = 4;
432 my $pi : = 4;
433
434 with the ":" being treated as the start of an attribute list, which
435 ends before the "=". As whitespace is not significant here, all are
436 parsed as an empty attribute list, hence all the above are
437 equivalent to, and better written as
438
439 my $pi = 4;
440
441 because no attribute processing is done for an empty list.
442
443 As is, this meant that ":=" cannot be used as a new token, without
444 silently changing the meaning of existing code. Hence that
445 particular form is now deprecated, and will become a syntax error.
446 If it is absolutely necessary to have empty attribute lists (for
447 example, because of a code generator) then avoid the warning by
448 adding a space before the "=".
449
450 "UNIVERSAL->import()"
451 The method "UNIVERSAL->import()" is now deprecated. Attempting to
452 pass import arguments to a "use UNIVERSAL" statement will result in
453 a deprecation warning.
454
455 Use of "goto" to jump into a construct
456 Using "goto" to jump from an outer scope into an inner scope is now
457 deprecated. This rare use case was causing problems in the
458 implementation of scopes.
459
460 Custom character names in \N{name} that don't look like names
461 In "\N{name}", name can be just about anything. The standard
462 Unicode names have a very limited domain, but a custom name
463 translator could create names that are, for example, made up
464 entirely of punctuation symbols. It is now deprecated to make names
465 that don't begin with an alphabetic character, and aren't
466 alphanumeric or contain other than a very few other characters,
467 namely spaces, dashes, parentheses and colons. Because of the added
468 meaning of "\N" (See ""\N" experimental regex escape"), names that
469 look like curly brace -enclosed quantifiers won't work. For
470 example, "\N{3,4}" now means to match 3 to 4 non-newlines; before a
471 custom name "3,4" could have been created.
472
473 Deprecated Modules
474 The following modules will be removed from the core distribution in
475 a future release, and should be installed from CPAN instead.
476 Distributions on CPAN which require these should add them to their
477 prerequisites. The core versions of these modules warnings will
478 issue a deprecation warning.
479
480 If you ship a packaged version of Perl, either alone or as part of
481 a larger system, then you should carefully consider the
482 repercussions of core module deprecations. You may want to consider
483 shipping your default build of Perl with packages for some or all
484 deprecated modules which install into "vendor" or "site" perl
485 library directories. This will inhibit the deprecation warnings.
486
487 Alternatively, you may want to consider patching lib/deprecate.pm
488 to provide deprecation warnings specific to your packaging system
489 or distribution of Perl, consistent with how your packaging system
490 or distribution manages a staged transition from a release where
491 the installation of a single package provides the given
492 functionality, to a later release where the system administrator
493 needs to know to install multiple packages to get that same
494 functionality.
495
496 You can silence these deprecation warnings by installing the
497 modules in question from CPAN. To install the latest version of
498 all of them, just install "Task::Deprecations::5_12".
499
500 Class::ISA
501 Pod::Plainer
502 Shell
503 Switch
504 Switch is buggy and should be avoided. You may find Perl's new
505 "given"/"when" feature a suitable replacement. See "Switch
506 statements" in perlsyn for more information.
507
508 Assignment to $[
509 Use of the attribute :locked on subroutines
510 Use of "locked" with the attributes pragma
511 Use of "unique" with the attributes pragma
512 Perl_pmflag
513 "Perl_pmflag" is no longer part of Perl's public API. Calling it
514 now generates a deprecation warning, and it will be removed in a
515 future release. Although listed as part of the API, it was never
516 documented, and only ever used in toke.c, and prior to 5.10,
517 regcomp.c. In core, it has been replaced by a static function.
518
519 Numerous Perl 4-era libraries
520 termcap.pl, tainted.pl, stat.pl, shellwords.pl, pwd.pl, open3.pl,
521 open2.pl, newgetopt.pl, look.pl, find.pl, finddepth.pl,
522 importenv.pl, hostname.pl, getopts.pl, getopt.pl, getcwd.pl,
523 flush.pl, fastcwd.pl, exceptions.pl, ctime.pl, complete.pl,
524 cacheout.pl, bigrat.pl, bigint.pl, bigfloat.pl, assert.pl,
525 abbrev.pl, dotsh.pl, and timelocal.pl are all now deprecated.
526 Earlier, Perl's developers intended to remove these libraries from
527 Perl's core for the 5.14.0 release.
528
529 During final testing before the release of 5.12.0, several
530 developers discovered current production code using these ancient
531 libraries, some inside the Perl core itself. Accordingly, the
532 pumpking granted them a stay of execution. They will begin to warn
533 about their deprecation in the 5.14.0 release and will be removed
534 in the 5.16.0 release.
535
537 Perl's developers have made a concerted effort to update Perl to be in
538 sync with the latest Unicode standard. Changes for this include:
539
540 Perl can now handle every Unicode character property. New
541 documentation, perluniprops, lists all available non-Unihan character
542 properties. By default, perl does not expose Unihan, deprecated or
543 Unicode-internal properties. See below for more details on these;
544 there is also a section in the pod listing them, and explaining why
545 they are not exposed.
546
547 Perl now fully supports the Unicode compound-style of using "=" and ":"
548 in writing regular expressions: "\p{property=value}" and
549 "\p{property:value}" (both of which mean the same thing).
550
551 Perl now fully supports the Unicode loose matching rules for text
552 between the braces in "\p{...}" constructs. In addition, Perl allows
553 underscores between digits of numbers.
554
555 Perl now accepts all the Unicode-defined synonyms for properties and
556 property values.
557
558 "qr/\X/", which matches a Unicode logical character, has been expanded
559 to work better with various Asian languages. It now is defined as an
560 extended grapheme cluster. (See
561 <http://www.unicode.org/reports/tr29/>). Anything matched previously
562 and that made sense will continue to be accepted. Additionally:
563
564 · "\X" will not break apart a "CR LF" sequence.
565
566 · "\X" will now match a sequence which includes the "ZWJ" and "ZWNJ"
567 characters.
568
569 · "\X" will now always match at least one character, including an
570 initial mark. Marks generally come after a base character, but it
571 is possible in Unicode to have them in isolation, and "\X" will now
572 handle that case, for example at the beginning of a line, or after
573 a "ZWSP". And this is the part where "\X" doesn't match the things
574 that it used to that don't make sense. Formerly, for example, you
575 could have the nonsensical case of an accented LF.
576
577 · "\X" will now match a (Korean) Hangul syllable sequence, and the
578 Thai and Lao exception cases.
579
580 Otherwise, this change should be transparent for the non-affected
581 languages.
582
583 "\p{...}" matches using the Canonical_Combining_Class property were
584 completely broken in previous releases of Perl. They should now work
585 correctly.
586
587 Before Perl 5.12, the Unicode "Decomposition_Type=Compat" property and
588 a Perl extension had the same name, which led to neither matching all
589 the correct values (with more than 100 mistakes in one, and several
590 thousand in the other). The Perl extension has now been renamed to be
591 "Decomposition_Type=Noncanonical" (short: "dt=noncanon"). It has the
592 same meaning as was previously intended, namely the union of all the
593 non-canonical Decomposition types, with Unicode "Compat" being just one
594 of those.
595
596 "\p{Decomposition_Type=Canonical}" now includes the Hangul syllables.
597
598 "\p{Uppercase}" and "\p{Lowercase}" now work as the Unicode standard
599 says they should. This means they each match a few more characters
600 than they used to.
601
602 "\p{Cntrl}" now matches the same characters as "\p{Control}". This
603 means it no longer will match Private Use (gc=co), Surrogates (gc=cs),
604 nor Format (gc=cf) code points. The Format code points represent the
605 biggest possible problem. All but 36 of them are either officially
606 deprecated or strongly discouraged from being used. Of those 36, likely
607 the most widely used are the soft hyphen (U+00AD), and BOM, ZWSP, ZWNJ,
608 WJ, and similar characters, plus bidirectional controls.
609
610 "\p{Alpha}" now matches the same characters as "\p{Alphabetic}". Before
611 5.12, Perl's definition included a number of things that aren't really
612 alpha (all marks) while omitting many that were. The definitions of
613 "\p{Alnum}" and "\p{Word}" depend on Alpha's definition and have
614 changed accordingly.
615
616 "\p{Word}" no longer incorrectly matches non-word characters such as
617 fractions.
618
619 "\p{Print}" no longer matches the line control characters: Tab, LF, CR,
620 FF, VT, and NEL. This brings it in line with standards and the
621 documentation.
622
623 "\p{XDigit}" now matches the same characters as "\p{Hex_Digit}". This
624 means that in addition to the characters it currently matches,
625 "[A-Fa-f0-9]", it will also match the 22 fullwidth equivalents, for
626 example U+FF10: FULLWIDTH DIGIT ZERO.
627
628 The Numeric type property has been extended to include the Unihan
629 characters.
630
631 There is a new Perl extension, the 'Present_In', or simply 'In',
632 property. This is an extension of the Unicode Age property, but
633 "\p{In=5.0}" matches any code point whose usage has been determined as
634 of Unicode version 5.0. The "\p{Age=5.0}" only matches code points
635 added in precisely version 5.0.
636
637 A number of properties now have the correct values for unassigned code
638 points. The affected properties are Bidi_Class, East_Asian_Width,
639 Joining_Type, Decomposition_Type, Hangul_Syllable_Type, Numeric_Type,
640 and Line_Break.
641
642 The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties
643 are now up to date with current Unicode definitions.
644
645 Earlier versions of Perl erroneously exposed certain properties that
646 are supposed to be Unicode internal-only. Use of these in regular
647 expressions will now generate, if enabled, a deprecation warning
648 message. The properties are: Other_Alphabetic,
649 Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend,
650 Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and
651 Other_Uppercase.
652
653 It is now possible to change which Unicode properties Perl understands
654 on a per-installation basis. As mentioned above, certain properties are
655 turned off by default. These include all the Unihan properties (which
656 should be accessible via the CPAN module Unicode::Unihan) and any
657 deprecated or Unicode internal-only property that Perl has never
658 exposed.
659
660 The generated files in the "lib/unicore/To" directory are now more
661 clearly marked as being stable, directly usable by applications. New
662 hash entries in them give the format of the normal entries, which
663 allows for easier machine parsing. Perl can generate files in this
664 directory for any property, though most are suppressed. You can find
665 instructions for changing which are written in perluniprops.
666
668 New Modules and Pragmata
669 "autodie"
670 "autodie" is a new lexically-scoped alternative for the "Fatal"
671 module. The bundled version is 2.06_01. Note that in this release,
672 using a string eval when "autodie" is in effect can cause the
673 autodie behaviour to leak into the surrounding scope. See "BUGS" in
674 autodie for more details.
675
676 Version 2.06_01 has been added to the Perl core.
677
678 "Compress::Raw::Bzip2"
679 Version 2.024 has been added to the Perl core.
680
681 "overloading"
682 "overloading" allows you to lexically disable or enable overloading
683 for some or all operations.
684
685 Version 0.001 has been added to the Perl core.
686
687 "parent"
688 "parent" establishes an ISA relationship with base classes at
689 compile time. It provides the key feature of "base" without further
690 unwanted behaviors.
691
692 Version 0.223 has been added to the Perl core.
693
694 "Parse::CPAN::Meta"
695 Version 1.40 has been added to the Perl core.
696
697 "VMS::DCLsym"
698 Version 1.03 has been added to the Perl core.
699
700 "VMS::Stdio"
701 Version 2.4 has been added to the Perl core.
702
703 "XS::APItest::KeywordRPN"
704 Version 0.003 has been added to the Perl core.
705
706 Updated Pragmata
707 "base"
708 Upgraded from version 2.13 to 2.15.
709
710 "bignum"
711 Upgraded from version 0.22 to 0.23.
712
713 "charnames"
714 "charnames" now contains the Unicode NameAliases.txt database file.
715 This has the effect of adding some extra "\N" character names that
716 formerly wouldn't have been recognised; for example, "\N{LATIN
717 CAPITAL LETTER GHA}".
718
719 Upgraded from version 1.06 to 1.07.
720
721 "constant"
722 Upgraded from version 1.13 to 1.20.
723
724 "diagnostics"
725 "diagnostics" now supports %.0f formatting internally.
726
727 "diagnostics" no longer suppresses "Use of uninitialized value in
728 range (or flip)" warnings. [perl #71204]
729
730 Upgraded from version 1.17 to 1.19.
731
732 "feature"
733 In "feature", the meaning of the ":5.10" and ":5.10.X" feature
734 bundles has changed slightly. The last component, if any (i.e. "X")
735 is simply ignored. This is predicated on the assumption that new
736 features will not, in general, be added to maintenance releases. So
737 ":5.10" and ":5.10.X" have identical effect. This is a change to
738 the behaviour documented for 5.10.0.
739
740 "feature" now includes the "unicode_strings" feature:
741
742 use feature "unicode_strings";
743
744 This pragma turns on Unicode semantics for the case-changing
745 operations ("uc", "lc", "ucfirst", "lcfirst") on strings that don't
746 have the internal UTF-8 flag set, but that contain single-byte
747 characters between 128 and 255.
748
749 Upgraded from version 1.11 to 1.16.
750
751 "less"
752 "less" now includes the "stash_name" method to allow subclasses of
753 "less" to pick where in %^H to store their stash.
754
755 Upgraded from version 0.02 to 0.03.
756
757 "lib"
758 Upgraded from version 0.5565 to 0.62.
759
760 "mro"
761 "mro" is now implemented as an XS extension. The documented
762 interface has not changed. Code relying on the implementation
763 detail that some "mro::" methods happened to be available at all
764 times gets to "keep both pieces".
765
766 Upgraded from version 1.00 to 1.02.
767
768 "overload"
769 "overload" now allow overloading of 'qr'.
770
771 Upgraded from version 1.06 to 1.10.
772
773 "threads"
774 Upgraded from version 1.67 to 1.75.
775
776 "threads::shared"
777 Upgraded from version 1.14 to 1.32.
778
779 "version"
780 "version" now has support for "Version number formats" as described
781 earlier in this document and in its own documentation.
782
783 Upgraded from version 0.74 to 0.82.
784
785 "warnings"
786 "warnings" has a new "warnings::fatal_enabled()" function. It also
787 includes a new "illegalproto" warning category. See also "New or
788 Changed Diagnostics" for this change.
789
790 Upgraded from version 1.06 to 1.09.
791
792 Updated Modules
793 "Archive::Extract"
794 Upgraded from version 0.24 to 0.38.
795
796 "Archive::Tar"
797 Upgraded from version 1.38 to 1.54.
798
799 "Attribute::Handlers"
800 Upgraded from version 0.79 to 0.87.
801
802 "AutoLoader"
803 Upgraded from version 5.63 to 5.70.
804
805 "B::Concise"
806 Upgraded from version 0.74 to 0.78.
807
808 "B::Debug"
809 Upgraded from version 1.05 to 1.12.
810
811 "B::Deparse"
812 Upgraded from version 0.83 to 0.96.
813
814 "B::Lint"
815 Upgraded from version 1.09 to 1.11_01.
816
817 "CGI"
818 Upgraded from version 3.29 to 3.48.
819
820 "Class::ISA"
821 Upgraded from version 0.33 to 0.36.
822
823 NOTE: "Class::ISA" is deprecated and may be removed from a future
824 version of Perl.
825
826 "Compress::Raw::Zlib"
827 Upgraded from version 2.008 to 2.024.
828
829 "CPAN"
830 Upgraded from version 1.9205 to 1.94_56.
831
832 "CPANPLUS"
833 Upgraded from version 0.84 to 0.90.
834
835 "CPANPLUS::Dist::Build"
836 Upgraded from version 0.06_02 to 0.46.
837
838 "Data::Dumper"
839 Upgraded from version 2.121_14 to 2.125.
840
841 "DB_File"
842 Upgraded from version 1.816_1 to 1.820.
843
844 "Devel::PPPort"
845 Upgraded from version 3.13 to 3.19.
846
847 "Digest"
848 Upgraded from version 1.15 to 1.16.
849
850 "Digest::MD5"
851 Upgraded from version 2.36_01 to 2.39.
852
853 "Digest::SHA"
854 Upgraded from version 5.45 to 5.47.
855
856 "Encode"
857 Upgraded from version 2.23 to 2.39.
858
859 "Exporter"
860 Upgraded from version 5.62 to 5.64_01.
861
862 "ExtUtils::CBuilder"
863 Upgraded from version 0.21 to 0.27.
864
865 "ExtUtils::Command"
866 Upgraded from version 1.13 to 1.16.
867
868 "ExtUtils::Constant"
869 Upgraded from version 0.2 to 0.22.
870
871 "ExtUtils::Install"
872 Upgraded from version 1.44 to 1.55.
873
874 "ExtUtils::MakeMaker"
875 Upgraded from version 6.42 to 6.56.
876
877 "ExtUtils::Manifest"
878 Upgraded from version 1.51_01 to 1.57.
879
880 "ExtUtils::ParseXS"
881 Upgraded from version 2.18_02 to 2.21.
882
883 "File::Fetch"
884 Upgraded from version 0.14 to 0.24.
885
886 "File::Path"
887 Upgraded from version 2.04 to 2.08_01.
888
889 "File::Temp"
890 Upgraded from version 0.18 to 0.22.
891
892 "Filter::Simple"
893 Upgraded from version 0.82 to 0.84.
894
895 "Filter::Util::Call"
896 Upgraded from version 1.07 to 1.08.
897
898 "Getopt::Long"
899 Upgraded from version 2.37 to 2.38.
900
901 "IO"
902 Upgraded from version 1.23_01 to 1.25_02.
903
904 "IO::Zlib"
905 Upgraded from version 1.07 to 1.10.
906
907 "IPC::Cmd"
908 Upgraded from version 0.40_1 to 0.54.
909
910 "IPC::SysV"
911 Upgraded from version 1.05 to 2.01.
912
913 "Locale::Maketext"
914 Upgraded from version 1.12 to 1.14.
915
916 "Locale::Maketext::Simple"
917 Upgraded from version 0.18 to 0.21.
918
919 "Log::Message"
920 Upgraded from version 0.01 to 0.02.
921
922 "Log::Message::Simple"
923 Upgraded from version 0.04 to 0.06.
924
925 "Math::BigInt"
926 Upgraded from version 1.88 to 1.89_01.
927
928 "Math::BigInt::FastCalc"
929 Upgraded from version 0.16 to 0.19.
930
931 "Math::BigRat"
932 Upgraded from version 0.21 to 0.24.
933
934 "Math::Complex"
935 Upgraded from version 1.37 to 1.56.
936
937 "Memoize"
938 Upgraded from version 1.01_02 to 1.01_03.
939
940 "MIME::Base64"
941 Upgraded from version 3.07_01 to 3.08.
942
943 "Module::Build"
944 Upgraded from version 0.2808_01 to 0.3603.
945
946 "Module::CoreList"
947 Upgraded from version 2.12 to 2.29.
948
949 "Module::Load"
950 Upgraded from version 0.12 to 0.16.
951
952 "Module::Load::Conditional"
953 Upgraded from version 0.22 to 0.34.
954
955 "Module::Loaded"
956 Upgraded from version 0.01 to 0.06.
957
958 "Module::Pluggable"
959 Upgraded from version 3.6 to 3.9.
960
961 "Net::Ping"
962 Upgraded from version 2.33 to 2.36.
963
964 "NEXT"
965 Upgraded from version 0.60_01 to 0.64.
966
967 "Object::Accessor"
968 Upgraded from version 0.32 to 0.36.
969
970 "Package::Constants"
971 Upgraded from version 0.01 to 0.02.
972
973 "PerlIO"
974 Upgraded from version 1.04 to 1.06.
975
976 "Pod::Parser"
977 Upgraded from version 1.35 to 1.37.
978
979 "Pod::Perldoc"
980 Upgraded from version 3.14_02 to 3.15_02.
981
982 "Pod::Plainer"
983 Upgraded from version 0.01 to 1.02.
984
985 NOTE: "Pod::Plainer" is deprecated and may be removed from a future
986 version of Perl.
987
988 "Pod::Simple"
989 Upgraded from version 3.05 to 3.13.
990
991 "Safe"
992 Upgraded from version 2.12 to 2.22.
993
994 "SelfLoader"
995 Upgraded from version 1.11 to 1.17.
996
997 "Storable"
998 Upgraded from version 2.18 to 2.22.
999
1000 "Switch"
1001 Upgraded from version 2.13 to 2.16.
1002
1003 NOTE: "Switch" is deprecated and may be removed from a future
1004 version of Perl.
1005
1006 "Sys::Syslog"
1007 Upgraded from version 0.22 to 0.27.
1008
1009 "Term::ANSIColor"
1010 Upgraded from version 1.12 to 2.02.
1011
1012 "Term::UI"
1013 Upgraded from version 0.18 to 0.20.
1014
1015 "Test"
1016 Upgraded from version 1.25 to 1.25_02.
1017
1018 "Test::Harness"
1019 Upgraded from version 2.64 to 3.17.
1020
1021 "Test::Simple"
1022 Upgraded from version 0.72 to 0.94.
1023
1024 "Text::Balanced"
1025 Upgraded from version 2.0.0 to 2.02.
1026
1027 "Text::ParseWords"
1028 Upgraded from version 3.26 to 3.27.
1029
1030 "Text::Soundex"
1031 Upgraded from version 3.03 to 3.03_01.
1032
1033 "Thread::Queue"
1034 Upgraded from version 2.00 to 2.11.
1035
1036 "Thread::Semaphore"
1037 Upgraded from version 2.01 to 2.09.
1038
1039 "Tie::RefHash"
1040 Upgraded from version 1.37 to 1.38.
1041
1042 "Time::HiRes"
1043 Upgraded from version 1.9711 to 1.9719.
1044
1045 "Time::Local"
1046 Upgraded from version 1.18 to 1.1901_01.
1047
1048 "Time::Piece"
1049 Upgraded from version 1.12 to 1.15.
1050
1051 "Unicode::Collate"
1052 Upgraded from version 0.52 to 0.52_01.
1053
1054 "Unicode::Normalize"
1055 Upgraded from version 1.02 to 1.03.
1056
1057 "Win32"
1058 Upgraded from version 0.34 to 0.39.
1059
1060 "Win32API::File"
1061 Upgraded from version 0.1001_01 to 0.1101.
1062
1063 "XSLoader"
1064 Upgraded from version 0.08 to 0.10.
1065
1066 Removed Modules and Pragmata
1067 "attrs"
1068 Removed from the Perl core. Prior version was 1.02.
1069
1070 "CPAN::API::HOWTO"
1071 Removed from the Perl core. Prior version was 'undef'.
1072
1073 "CPAN::DeferedCode"
1074 Removed from the Perl core. Prior version was 5.50.
1075
1076 "CPANPLUS::inc"
1077 Removed from the Perl core. Prior version was 'undef'.
1078
1079 "DCLsym"
1080 Removed from the Perl core. Prior version was 1.03.
1081
1082 "ExtUtils::MakeMaker::bytes"
1083 Removed from the Perl core. Prior version was 6.42.
1084
1085 "ExtUtils::MakeMaker::vmsish"
1086 Removed from the Perl core. Prior version was 6.42.
1087
1088 "Stdio"
1089 Removed from the Perl core. Prior version was 2.3.
1090
1091 "Test::Harness::Assert"
1092 Removed from the Perl core. Prior version was 0.02.
1093
1094 "Test::Harness::Iterator"
1095 Removed from the Perl core. Prior version was 0.02.
1096
1097 "Test::Harness::Point"
1098 Removed from the Perl core. Prior version was 0.01.
1099
1100 "Test::Harness::Results"
1101 Removed from the Perl core. Prior version was 0.01.
1102
1103 "Test::Harness::Straps"
1104 Removed from the Perl core. Prior version was 0.26_01.
1105
1106 "Test::Harness::Util"
1107 Removed from the Perl core. Prior version was 0.01.
1108
1109 "XSSymSet"
1110 Removed from the Perl core. Prior version was 1.1.
1111
1112 Deprecated Modules and Pragmata
1113 See "Deprecated Modules" above.
1114
1116 New Documentation
1117 · perlhaiku contains instructions on how to build perl for the Haiku
1118 platform.
1119
1120 · perlmroapi describes the new interface for pluggable Method
1121 Resolution Orders.
1122
1123 · perlperf, by Richard Foley, provides an introduction to the use of
1124 performance and optimization techniques which can be used with
1125 particular reference to perl programs.
1126
1127 · perlrepository describes how to access the perl source using the
1128 git version control system.
1129
1130 · perlpolicy extends the "Social contract about contributed modules"
1131 into the beginnings of a document on Perl porting policies.
1132
1133 Changes to Existing Documentation
1134 · The various large Changes* files (which listed every change made to
1135 perl over the last 18 years) have been removed, and replaced by a
1136 small file, also called Changes, which just explains how that same
1137 information may be extracted from the git version control system.
1138
1139 · Porting/patching.pod has been deleted, as it mainly described
1140 interacting with the old Perforce-based repository, which is now
1141 obsolete. Information still relevant has been moved to
1142 perlrepository.
1143
1144 · The syntax "unless (EXPR) BLOCK else BLOCK" is now documented as
1145 valid, as is the syntax "unless (EXPR) BLOCK elsif (EXPR) BLOCK ...
1146 else BLOCK", although actually using the latter may not be the best
1147 idea for the readability of your source code.
1148
1149 · Documented -X overloading.
1150
1151 · Documented that "when()" treats specially most of the filetest
1152 operators
1153
1154 · Documented "when" as a syntax modifier.
1155
1156 · Eliminated "Old Perl threads tutorial", which described 5005
1157 threads.
1158
1159 pod/perlthrtut.pod is the same material reworked for ithreads.
1160
1161 · Correct previous documentation: v-strings are not deprecated
1162
1163 With version objects, we need them to use MODULE VERSION syntax.
1164 This patch removes the deprecation notice.
1165
1166 · Security contact information is now part of perlsec.
1167
1168 · A significant fraction of the core documentation has been updated
1169 to clarify the behavior of Perl's Unicode handling.
1170
1171 Much of the remaining core documentation has been reviewed and
1172 edited for clarity, consistent use of language, and to fix the
1173 spelling of Tom Christiansen's name.
1174
1175 · The Pod specification (perlpodspec) has been updated to bring the
1176 specification in line with modern usage already supported by most
1177 Pod systems. A parameter string may now follow the format name in a
1178 "begin/end" region. Links to URIs with a text description are now
1179 allowed. The usage of "L<"section">" has been marked as deprecated.
1180
1181 · if.pm has been documented in "use" in perlfunc as a means to get
1182 conditional loading of modules despite the implicit BEGIN block
1183 around "use".
1184
1185 · The documentation for $1 in perlvar.pod has been clarified.
1186
1187 · "\N{U+code point}" is now documented.
1188
1190 · A new internal cache means that "isa()" will often be faster.
1191
1192 · The implementation of "C3" Method Resolution Order has been
1193 optimised - linearisation for classes with single inheritance is
1194 40% faster. Performance for multiple inheritance is unchanged.
1195
1196 · Under "use locale", the locale-relevant information is now cached
1197 on read-only values, such as the list returned by "keys %hash".
1198 This makes operations such as "sort keys %hash" in the scope of
1199 "use locale" much faster.
1200
1201 · Empty "DESTROY" methods are no longer called.
1202
1203 · "Perl_sv_utf8_upgrade()" is now faster.
1204
1205 · "keys" on empty hash is now faster.
1206
1207 · "if (%foo)" has been optimized to be faster than "if (keys %foo)".
1208
1209 · The string repetition operator ("$str x $num") is now several times
1210 faster when $str has length one or $num is large.
1211
1212 · Reversing an array to itself (as in "@a = reverse @a") in void
1213 context now happens in-place and is several orders of magnitude
1214 faster than it used to be. It will also preserve non-existent
1215 elements whenever possible, i.e. for non magical arrays or tied
1216 arrays with "EXISTS" and "DELETE" methods.
1217
1219 · perlapi, perlintern, perlmodlib and perltoc are now all generated
1220 at build time, rather than being shipped as part of the release.
1221
1222 · If "vendorlib" and "vendorarch" are the same, then they are only
1223 added to @INC once.
1224
1225 · $Config{usedevel} and the C-level "PERL_USE_DEVEL" are now defined
1226 if perl is built with "-Dusedevel".
1227
1228 · Configure will enable use of "-fstack-protector", to provide
1229 protection against stack-smashing attacks, if the compiler supports
1230 it.
1231
1232 · Configure will now determine the correct prototypes for re-entrant
1233 functions and for "gconvert" if you are using a C++ compiler rather
1234 than a C compiler.
1235
1236 · On Unix, if you build from a tree containing a git repository, the
1237 configuration process will note the commit hash you have checked
1238 out, for display in the output of "perl -v" and "perl -V". Unpushed
1239 local commits are automatically added to the list of local patches
1240 displayed by "perl -V".
1241
1242 · Perl now supports SystemTap's "dtrace" compatibility layer and an
1243 issue with linking "miniperl" has been fixed in the process.
1244
1245 · perldoc now uses "less -R" instead of "less" for improved behaviour
1246 in the face of "groff"'s new usage of ANSI escape codes.
1247
1248 · "perl -V" now reports use of the compile-time options
1249 "USE_PERL_ATOF" and "USE_ATTRIBUTES_FOR_PERLIO".
1250
1251 · As part of the flattening of ext, all extensions on all platforms
1252 are built by make_ext.pl. This replaces the Unix-specific
1253 ext/util/make_ext, VMS-specific make_ext.com and Win32-specific
1254 win32/buildext.pl.
1255
1257 Each release of Perl sees numerous internal changes which shouldn't
1258 affect day to day usage but may still be notable for developers working
1259 with Perl's source code.
1260
1261 · The J.R.R. Tolkien quotes at the head of C source file have been
1262 checked and proper citations added, thanks to a patch from Tom
1263 Christiansen.
1264
1265 · The internal structure of the dual-life modules traditionally found
1266 in the lib/ and ext/ directories in the perl source has changed
1267 significantly. Where possible, dual-lifed modules have been
1268 extracted from lib/ and ext/.
1269
1270 Dual-lifed modules maintained by Perl's developers as part of the
1271 Perl core now live in dist/. Dual-lifed modules maintained
1272 primarily on CPAN now live in cpan/. When reporting a bug in a
1273 module located under cpan/, please send your bug report directly to
1274 the module's bug tracker or author, rather than Perl's bug tracker.
1275
1276 · "\N{...}" now compiles better, always forces UTF-8 internal
1277 representation
1278
1279 Perl's developers have fixed several problems with the recognition
1280 of "\N{...}" constructs. As part of this, perl will store any
1281 scalar or regex containing "\N{name}" or "\N{U+code point}" in its
1282 definition in UTF-8 format. (This was true previously for all
1283 occurrences of "\N{name}" that did not use a custom translator, but
1284 now it's always true.)
1285
1286 · Perl_magic_setmglob now knows about globs, fixing RT #71254.
1287
1288 · "SVt_RV" no longer exists. RVs are now stored in IVs.
1289
1290 · "Perl_vcroak()" now accepts a null first argument. In addition, a
1291 full audit was made of the "not NULL" compiler annotations, and
1292 those for several other internal functions were corrected.
1293
1294 · New macros "dSAVEDERRNO", "dSAVE_ERRNO", "SAVE_ERRNO",
1295 "RESTORE_ERRNO" have been added to formalise the temporary saving
1296 of the "errno" variable.
1297
1298 · The function "Perl_sv_insert_flags" has been added to augment
1299 "Perl_sv_insert".
1300
1301 · The function "Perl_newSV_type(type)" has been added, equivalent to
1302 "Perl_newSV()" followed by "Perl_sv_upgrade(type)".
1303
1304 · The function "Perl_newSVpvn_flags()" has been added, equivalent to
1305 "Perl_newSVpvn()" and then performing the action relevant to the
1306 flag.
1307
1308 Two flag bits are currently supported.
1309
1310 · "SVf_UTF8" will call "SvUTF8_on()" for you. (Note that this
1311 does not convert a sequence of ISO 8859-1 characters to UTF-8).
1312 A wrapper, "newSVpvn_utf8()" is available for this.
1313
1314 · "SVs_TEMP" now calls "Perl_sv_2mortal()" on the new SV.
1315
1316 There is also a wrapper that takes constant strings,
1317 "newSVpvs_flags()".
1318
1319 · The function "Perl_croak_xs_usage" has been added as a wrapper to
1320 "Perl_croak".
1321
1322 · Perl now exports the functions "PerlIO_find_layer" and
1323 "PerlIO_list_alloc".
1324
1325 · "PL_na" has been exterminated from the core code, replaced by local
1326 STRLEN temporaries, or "*_nolen()" calls. Either approach is faster
1327 than "PL_na", which is a pointer dereference into the interpreter
1328 structure under ithreads, and a global variable otherwise.
1329
1330 · "Perl_mg_free()" used to leave freed memory accessible via
1331 "SvMAGIC()" on the scalar. It now updates the linked list to remove
1332 each piece of magic as it is freed.
1333
1334 · Under ithreads, the regex in "PL_reg_curpm" is now reference
1335 counted. This eliminates a lot of hackish workarounds to cope with
1336 it not being reference counted.
1337
1338 · "Perl_mg_magical()" would sometimes incorrectly turn on
1339 "SvRMAGICAL()". This has been fixed.
1340
1341 · The public IV and NV flags are now not set if the string value has
1342 trailing "garbage". This behaviour is consistent with not setting
1343 the public IV or NV flags if the value is out of range for the
1344 type.
1345
1346 · Uses of "Nullav", "Nullcv", "Nullhv", "Nullop", "Nullsv" etc have
1347 been replaced by "NULL" in the core code, and non-dual-life
1348 modules, as "NULL" is clearer to those unfamiliar with the core
1349 code.
1350
1351 · A macro MUTABLE_PTR(p) has been added, which on (non-pedantic) gcc
1352 will not cast away "const", returning a "void *". Macros
1353 "MUTABLE_SV(av)", "MUTABLE_SV(cv)" etc build on this, casting to
1354 "AV *" etc without casting away "const". This allows proper
1355 compile-time auditing of "const" correctness in the core, and
1356 helped picked up some errors (now fixed).
1357
1358 · Macros "mPUSHs()" and "mXPUSHs()" have been added, for pushing SVs
1359 on the stack and mortalizing them.
1360
1361 · Use of the private structure "mro_meta" has changed slightly.
1362 Nothing outside the core should be accessing this directly anyway.
1363
1364 · A new tool, Porting/expand-macro.pl has been added, that allows you
1365 to view how a C preprocessor macro would be expanded when compiled.
1366 This is handy when trying to decode the macro hell that is the perl
1367 guts.
1368
1370 Testing improvements
1371 Parallel tests
1372 The core distribution can now run its regression tests in parallel
1373 on Unix-like platforms. Instead of running "make test", set
1374 "TEST_JOBS" in your environment to the number of tests to run in
1375 parallel, and run "make test_harness". On a Bourne-like shell, this
1376 can be done as
1377
1378 TEST_JOBS=3 make test_harness # Run 3 tests in parallel
1379
1380 An environment variable is used, rather than parallel make itself,
1381 because TAP::Harness needs to be able to schedule individual non-
1382 conflicting test scripts itself, and there is no standard interface
1383 to "make" utilities to interact with their job schedulers.
1384
1385 Note that currently some test scripts may fail when run in parallel
1386 (most notably "ext/IO/t/io_dir.t"). If necessary run just the
1387 failing scripts again sequentially and see if the failures go away.
1388
1389 Test harness flexibility
1390 It's now possible to override "PERL5OPT" and friends in t/TEST
1391
1392 Test watchdog
1393 Several tests that have the potential to hang forever if they fail
1394 now incorporate a "watchdog" functionality that will kill them
1395 after a timeout, which helps ensure that "make test" and "make
1396 test_harness" run to completion automatically.
1397
1398 New Tests
1399 Perl's developers have added a number of new tests to the core. In
1400 addition to the items listed below, many modules updated from CPAN
1401 incorporate new tests.
1402
1403 · Significant cleanups to core tests to ensure that language and
1404 interpreter features are not used before they're tested.
1405
1406 · "make test_porting" now runs a number of important pre-commit
1407 checks which might be of use to anyone working on the Perl core.
1408
1409 · t/porting/podcheck.t automatically checks the well-formedness of
1410 POD found in all .pl, .pm and .pod files in the MANIFEST, other
1411 than in dual-lifed modules which are primarily maintained outside
1412 the Perl core.
1413
1414 · t/porting/manifest.t now tests that all files listed in MANIFEST
1415 are present.
1416
1417 · t/op/while_readdir.t tests that a bare readdir in while loop sets
1418 $_.
1419
1420 · t/comp/retainedlines.t checks that the debugger can retain source
1421 lines from "eval".
1422
1423 · t/io/perlio_fail.t checks that bad layers fail.
1424
1425 · t/io/perlio_leaks.t checks that PerlIO layers are not leaking.
1426
1427 · t/io/perlio_open.t checks that certain special forms of open work.
1428
1429 · t/io/perlio.t includes general PerlIO tests.
1430
1431 · t/io/pvbm.t checks that there is no unexpected interaction between
1432 the internal types "PVBM" and "PVGV".
1433
1434 · t/mro/package_aliases.t checks that mro works properly in the
1435 presence of aliased packages.
1436
1437 · t/op/dbm.t tests "dbmopen" and "dbmclose".
1438
1439 · t/op/index_thr.t tests the interaction of "index" and threads.
1440
1441 · t/op/pat_thr.t tests the interaction of esoteric patterns and
1442 threads.
1443
1444 · t/op/qr_gc.t tests that "qr" doesn't leak.
1445
1446 · t/op/reg_email_thr.t tests the interaction of regex recursion and
1447 threads.
1448
1449 · t/op/regexp_qr_embed_thr.t tests the interaction of patterns with
1450 embedded "qr//" and threads.
1451
1452 · t/op/regexp_unicode_prop.t tests Unicode properties in regular
1453 expressions.
1454
1455 · t/op/regexp_unicode_prop_thr.t tests the interaction of Unicode
1456 properties and threads.
1457
1458 · t/op/reg_nc_tie.t tests the tied methods of
1459 "Tie::Hash::NamedCapture".
1460
1461 · t/op/reg_posixcc.t checks that POSIX character classes behave
1462 consistently.
1463
1464 · t/op/re.t checks that exportable "re" functions in universal.c
1465 work.
1466
1467 · t/op/setpgrpstack.t checks that "setpgrp" works.
1468
1469 · t/op/substr_thr.t tests the interaction of "substr" and threads.
1470
1471 · t/op/upgrade.t checks that upgrading and assigning scalars works.
1472
1473 · t/uni/lex_utf8.t checks that Unicode in the lexer works.
1474
1475 · t/uni/tie.t checks that Unicode and "tie" work.
1476
1477 · t/comp/final_line_num.t tests whether line numbers are correct at
1478 EOF
1479
1480 · t/comp/form_scope.t tests format scoping.
1481
1482 · t/comp/line_debug.t tests whether "@{"_<$file"}" works.
1483
1484 · t/op/filetest_t.t tests if -t file test works.
1485
1486 · t/op/qr.t tests "qr".
1487
1488 · t/op/utf8cache.t tests malfunctions of the utf8 cache.
1489
1490 · t/re/uniprops.t test unicodes "\p{}" regex constructs.
1491
1492 · t/op/filehandle.t tests some suitably portable filetest operators
1493 to check that they work as expected, particularly in the light of
1494 some internal changes made in how filehandles are blessed.
1495
1496 · t/op/time_loop.t tests that unix times greater than "2**63", which
1497 can now be handed to "gmtime" and "localtime", do not cause an
1498 internal overflow or an excessively long loop.
1499
1501 New Diagnostics
1502 · SV allocation tracing has been added to the diagnostics enabled by
1503 "-Dm". The tracing can alternatively output via the "PERL_MEM_LOG"
1504 mechanism, if that was enabled when the perl binary was compiled.
1505
1506 · Smartmatch resolution tracing has been added as a new diagnostic.
1507 Use "-DM" to enable it.
1508
1509 · A new debugging flag "-DB" now dumps subroutine definitions,
1510 leaving "-Dx" for its original purpose of dumping syntax trees.
1511
1512 · Perl 5.12 provides a number of new diagnostic messages to help you
1513 write better code. See perldiag for details of these new messages.
1514
1515 · "Bad plugin affecting keyword '%s'"
1516
1517 · "gmtime(%.0f) too large"
1518
1519 · "Lexing code attempted to stuff non-Latin-1 character into
1520 Latin-1 input"
1521
1522 · "Lexing code internal error (%s)"
1523
1524 · "localtime(%.0f) too large"
1525
1526 · "Overloaded dereference did not return a reference"
1527
1528 · "Overloaded qr did not return a REGEXP"
1529
1530 · "Perl_pmflag() is deprecated, and will be removed from the XS
1531 API"
1532
1533 · "lvalue attribute ignored after the subroutine has been
1534 defined"
1535
1536 This new warning is issued when one attempts to mark a
1537 subroutine as lvalue after it has been defined.
1538
1539 · Perl now warns you if "++" or "--" are unable to change the
1540 value because it's beyond the limit of representation.
1541
1542 This uses a new warnings category: "imprecision".
1543
1544 · "lc", "uc", "lcfirst", and "ucfirst" warn when passed undef.
1545
1546 · "Show constant in "Useless use of a constant in void context""
1547
1548 · "Prototype after '%s'"
1549
1550 · "panic: sv_chop %s"
1551
1552 This new fatal error occurs when the C routine "Perl_sv_chop()"
1553 was passed a position that is not within the scalar's string
1554 buffer. This could be caused by buggy XS code, and at this
1555 point recovery is not possible.
1556
1557 · The fatal error "Malformed UTF-8 returned by \N" is now
1558 produced if the "charnames" handler returns malformed UTF-8.
1559
1560 · If an unresolved named character or sequence was encountered
1561 when compiling a regex pattern then the fatal error "\N{NAME}
1562 must be resolved by the lexer" is now produced. This can
1563 happen, for example, when using a single-quotish context like
1564 "$re = '\N{SPACE}'; /$re/;". See perldiag for more examples of
1565 how the lexer can get bypassed.
1566
1567 · "Invalid hexadecimal number in \N{U+...}" is a new fatal error
1568 triggered when the character constant represented by "..." is
1569 not a valid hexadecimal number.
1570
1571 · The new meaning of "\N" as "[^\n]" is not valid in a bracketed
1572 character class, just like "." in a character class loses its
1573 special meaning, and will cause the fatal error "\N in a
1574 character class must be a named character: \N{...}".
1575
1576 · The rules on what is legal for the "..." in "\N{...}" have been
1577 tightened up so that unless the "..." begins with an alphabetic
1578 character and continues with a combination of alphanumerics,
1579 dashes, spaces, parentheses or colons then the warning
1580 "Deprecated character(s) in \N{...} starting at '%s'" is now
1581 issued.
1582
1583 · The warning "Using just the first characters returned by \N{}"
1584 will be issued if the "charnames" handler returns a sequence of
1585 characters which exceeds the limit of the number of characters
1586 that can be used. The message will indicate which characters
1587 were used and which were discarded.
1588
1589 Changed Diagnostics
1590 A number of existing diagnostic messages have been improved or
1591 corrected:
1592
1593 · A new warning category "illegalproto" allows finer-grained control
1594 of warnings around function prototypes.
1595
1596 The two warnings:
1597
1598 "Illegal character in prototype for %s : %s"
1599 "Prototype after '%c' for %s : %s"
1600
1601 have been moved from the "syntax" top-level warnings category into
1602 a new first-level category, "illegalproto". These two warnings are
1603 currently the only ones emitted during parsing of an
1604 invalid/illegal prototype, so one can now use
1605
1606 no warnings 'illegalproto';
1607
1608 to suppress only those, but not other syntax-related warnings.
1609 Warnings where prototypes are changed, ignored, or not met are
1610 still in the "prototype" category as before.
1611
1612 · "Deep recursion on subroutine "%s""
1613
1614 It is now possible to change the depth threshold for this warning
1615 from the default of 100, by recompiling the perl binary, setting
1616 the C pre-processor macro "PERL_SUB_DEPTH_WARN" to the desired
1617 value.
1618
1619 · "Illegal character in prototype" warning is now more precise when
1620 reporting illegal characters after _
1621
1622 · mro merging error messages are now very similar to those produced
1623 by Algorithm::C3.
1624
1625 · Amelioration of the error message "Unrecognized character %s in
1626 column %d"
1627
1628 Changes the error message to "Unrecognized character %s; marked by
1629 <-- HERE after %s<-- HERE near column %d". This should make it a
1630 little simpler to spot and correct the suspicious character.
1631
1632 · Perl now explicitly points to $. when it causes an uninitialized
1633 warning for ranges in scalar context.
1634
1635 · "split" now warns when called in void context.
1636
1637 · "printf"-style functions called with too few arguments will now
1638 issue the warning "Missing argument in %s" [perl #71000]
1639
1640 · Perl now properly returns a syntax error instead of segfaulting if
1641 "each", "keys", or "values" is used without an argument.
1642
1643 · "tell()" now fails properly if called without an argument and when
1644 no previous file was read.
1645
1646 "tell()" now returns "-1", and sets errno to "EBADF", thus
1647 restoring the 5.8.x behaviour.
1648
1649 · "overload" no longer implicitly unsets fallback on repeated 'use
1650 overload' lines.
1651
1652 · POSIX::strftime() can now handle Unicode characters in the format
1653 string.
1654
1655 · The "syntax" category was removed from 5 warnings that should only
1656 be in "deprecated".
1657
1658 · Three fatal "pack"/"unpack" error messages have been normalized to
1659 "panic: %s"
1660
1661 · "Unicode character is illegal" has been rephrased to be more
1662 accurate
1663
1664 It now reads "Unicode non-character is illegal in interchange" and
1665 the perldiag documentation has been expanded a bit.
1666
1667 · Currently, all but the first of the several characters that the
1668 "charnames" handler may return are discarded when used in a regular
1669 expression pattern bracketed character class. If this happens then
1670 the warning "Using just the first character returned by \N{} in
1671 character class" will be issued.
1672
1673 · The warning "Missing right brace on \N{} or unescaped left brace
1674 after \N. Assuming the latter" will be issued if Perl encounters a
1675 "\N{" but doesn't find a matching "}". In this case Perl doesn't
1676 know if it was mistakenly omitted, or if "match non-newline"
1677 followed by "match a "{"" was desired. It assumes the latter
1678 because that is actually a valid interpretation as written, unlike
1679 the other case. If you meant the former, you need to add the
1680 matching right brace. If you did mean the latter, you can silence
1681 this warning by writing instead "\N\{".
1682
1683 · "gmtime" and "localtime" called with numbers smaller than they can
1684 reliably handle will now issue the warnings "gmtime(%.0f) too
1685 small" and "localtime(%.0f) too small".
1686
1687 The following diagnostic messages have been removed:
1688
1689 · "Runaway format"
1690
1691 · "Can't locate package %s for the parents of %s"
1692
1693 In general this warning it only got produced in conjunction with
1694 other warnings, and removing it allowed an ISA lookup optimisation
1695 to be added.
1696
1697 · "v-string in use/require is non-portable"
1698
1700 · h2ph now looks in "include-fixed" too, which is a recent addition
1701 to gcc's search path.
1702
1703 · h2xs no longer incorrectly treats enum values like macros. It also
1704 now handles C++ style comments ("//") properly in enums.
1705
1706 · perl5db.pl now supports "LVALUE" subroutines. Additionally, the
1707 debugger now correctly handles proxy constant subroutines, and
1708 subroutine stubs.
1709
1710 · perlbug now uses %Module::CoreList::bug_tracker to print out
1711 upstream bug tracker URLs. If a user identifies a particular
1712 module as the topic of their bug report and we're able to divine
1713 the URL for its upstream bug tracker, perlbug now provide a message
1714 to the user explaining that the core copies the CPAN version
1715 directly, and provide the URL for reporting the bug directly to the
1716 upstream author.
1717
1718 perlbug no longer reports "Message sent" when it hasn't actually
1719 sent the message
1720
1721 · perlthanks is a new utility for sending non-bug-reports to the
1722 authors and maintainers of Perl. Getting nothing but bug reports
1723 can become a bit demoralising. If Perl 5.12 works well for you,
1724 please try out perlthanks. It will make the developers smile.
1725
1726 · Perl's developers have fixed bugs in a2p having to do with the
1727 "match()" operator in list context. Additionally, a2p no longer
1728 generates code that uses the $[ variable.
1729
1731 · U+0FFFF is now a legal character in regular expressions.
1732
1733 · pp_qr now always returns a new regexp SV. Resolves RT #69852.
1734
1735 Instead of returning a(nother) reference to the (pre-compiled)
1736 regexp in the optree, use reg_temp_copy() to create a copy of it,
1737 and return a reference to that. This resolves issues about
1738 Regexp::DESTROY not being called in a timely fashion (the original
1739 bug tracked by RT #69852), as well as bugs related to blessing
1740 regexps, and of assigning to regexps, as described in
1741 correspondence added to the ticket.
1742
1743 It transpires that we also need to undo the SvPVX() sharing when
1744 ithreads cloning a Regexp SV, because mother_re is set to NULL,
1745 instead of a cloned copy of the mother_re. This change might fix
1746 bugs with regexps and threads in certain other situations, but as
1747 yet neither tests nor bug reports have indicated any problems, so
1748 it might not actually be an edge case that it's possible to reach.
1749
1750 · Several compilation errors and segfaults when perl was built with
1751 "-Dmad" were fixed.
1752
1753 · Fixes for lexer API changes in 5.11.2 which broke NYTProf's savesrc
1754 option.
1755
1756 · "-t" should only return TRUE for file handles connected to a TTY
1757
1758 The Microsoft C version of "isatty()" returns TRUE for all
1759 character mode devices, including the /dev/null-style "nul" device
1760 and printers like "lpt1".
1761
1762 · Fixed a regression caused by commit fafafbaf which caused a panic
1763 during parameter passing [perl #70171]
1764
1765 · On systems which in-place edits without backup files, -i'*' now
1766 works as the documentation says it does [perl #70802]
1767
1768 · Saving and restoring magic flags no longer loses readonly flag.
1769
1770 · The malformed syntax "grep EXPR LIST" (note the missing comma) no
1771 longer causes abrupt and total failure.
1772
1773 · Regular expressions compiled with "qr{}" literals properly set "$'"
1774 when matching again.
1775
1776 · Using named subroutines with "sort" should no longer lead to bus
1777 errors [perl #71076]
1778
1779 · Numerous bugfixes catch small issues caused by the recently-added
1780 Lexer API.
1781
1782 · Smart match against @_ sometimes gave false negatives. [perl
1783 #71078]
1784
1785 · $@ may now be assigned a read-only value (without error or busting
1786 the stack).
1787
1788 · "sort" called recursively from within an active comparison
1789 subroutine no longer causes a bus error if run multiple times.
1790 [perl #71076]
1791
1792 · Tie::Hash::NamedCapture::* will not abort if passed bad input (RT
1793 #71828)
1794
1795 · @_ and $_ no longer leak under threads (RT #34342 and #41138, also
1796 #70602, #70974)
1797
1798 · "-I" on shebang line now adds directories in front of @INC as
1799 documented, and as does "-I" when specified on the command-line.
1800
1801 · "kill" is now fatal when called on non-numeric process identifiers.
1802 Previously, an "undef" process identifier would be interpreted as a
1803 request to kill process 0, which would terminate the current
1804 process group on POSIX systems. Since process identifiers are
1805 always integers, killing a non-numeric process is now fatal.
1806
1807 · 5.10.0 inadvertently disabled an optimisation, which caused a
1808 measurable performance drop in list assignment, such as is often
1809 used to assign function parameters from @_. The optimisation has
1810 been re-instated, and the performance regression fixed. (This fix
1811 is also present in 5.10.1)
1812
1813 · Fixed memory leak on "while (1) { map 1, 1 }" [RT #53038].
1814
1815 · Some potential coredumps in PerlIO fixed [RT #57322,54828].
1816
1817 · The debugger now works with lvalue subroutines.
1818
1819 · The debugger's "m" command was broken on modules that defined
1820 constants [RT #61222].
1821
1822 · "crypt" and string complement could return tainted values for
1823 untainted arguments [RT #59998].
1824
1825 · The "-i".suffix command-line switch now recreates the file using
1826 restricted permissions, before changing its mode to match the
1827 original file. This eliminates a potential race condition [RT
1828 #60904].
1829
1830 · On some Unix systems, the value in $? would not have the top bit
1831 set ("$? & 128") even if the child core dumped.
1832
1833 · Under some circumstances, $^R could incorrectly become undefined
1834 [RT #57042].
1835
1836 · In the XS API, various hash functions, when passed a pre-computed
1837 hash where the key is UTF-8, might result in an incorrect lookup.
1838
1839 · XS code including XSUB.h before perl.h gave a compile-time error
1840 [RT #57176].
1841
1842 · "$object->isa('Foo')" would report false if the package "Foo"
1843 didn't exist, even if the object's @ISA contained "Foo".
1844
1845 · Various bugs in the new-to 5.10.0 mro code, triggered by
1846 manipulating @ISA, have been found and fixed.
1847
1848 · Bitwise operations on references could crash the interpreter, e.g.
1849 "$x=\$y; $x |= "foo"" [RT #54956].
1850
1851 · Patterns including alternation might be sensitive to the internal
1852 UTF-8 representation, e.g.
1853
1854 my $byte = chr(192);
1855 my $utf8 = chr(192); utf8::upgrade($utf8);
1856 $utf8 =~ /$byte|X}/i; # failed in 5.10.0
1857
1858 · Within UTF8-encoded Perl source files (i.e. where "use utf8" is in
1859 effect), double-quoted literal strings could be corrupted where a
1860 "\xNN", "\0NNN" or "\N{}" is followed by a literal character with
1861 ordinal value greater than 255 [RT #59908].
1862
1863 · "B::Deparse" failed to correctly deparse various constructs:
1864 "readpipe STRING" [RT #62428], "CORE::require(STRING)" [RT #62488],
1865 "sub foo(_)" [RT #62484].
1866
1867 · Using "setpgrp" with no arguments could corrupt the perl stack.
1868
1869 · The block form of "eval" is now specifically trappable by "Safe"
1870 and "ops". Previously it was erroneously treated like string
1871 "eval".
1872
1873 · In 5.10.0, the two characters "[~" were sometimes parsed as the
1874 smart match operator ("~~") [RT #63854].
1875
1876 · In 5.10.0, the "*" quantifier in patterns was sometimes treated as
1877 "{0,32767}" [RT #60034, #60464]. For example, this match would
1878 fail:
1879
1880 ("ab" x 32768) =~ /^(ab)*$/
1881
1882 · "shmget" was limited to a 32 bit segment size on a 64 bit OS [RT
1883 #63924].
1884
1885 · Using "next" or "last" to exit a "given" block no longer produces a
1886 spurious warning like the following:
1887
1888 Exiting given via last at foo.pl line 123
1889
1890 · Assigning a format to a glob could corrupt the format; e.g.:
1891
1892 *bar=*foo{FORMAT}; # foo format now bad
1893
1894 · Attempting to coerce a typeglob to a string or number could cause
1895 an assertion failure. The correct error message is now generated,
1896 "Can't coerce GLOB to $type".
1897
1898 · Under "use filetest 'access'", "-x" was using the wrong access
1899 mode. This has been fixed [RT #49003].
1900
1901 · "length" on a tied scalar that returned a Unicode value would not
1902 be correct the first time. This has been fixed.
1903
1904 · Using an array "tie" inside in array "tie" could SEGV. This has
1905 been fixed. [RT #51636]
1906
1907 · A race condition inside "PerlIOStdio_close()" has been identified
1908 and fixed. This used to cause various threading issues, including
1909 SEGVs.
1910
1911 · In "unpack", the use of "()" groups in scalar context was
1912 internally placing a list on the interpreter's stack, which
1913 manifested in various ways, including SEGVs. This is now fixed [RT
1914 #50256].
1915
1916 · Magic was called twice in "substr", "\&$x", "tie $x, $m" and
1917 "chop". These have all been fixed.
1918
1919 · A 5.10.0 optimisation to clear the temporary stack within the
1920 implicit loop of "s///ge" has been reverted, as it turned out to be
1921 the cause of obscure bugs in seemingly unrelated parts of the
1922 interpreter [commit ef0d4e17921ee3de].
1923
1924 · The line numbers for warnings inside "elsif" are now correct.
1925
1926 · The ".." operator now works correctly with ranges whose ends are at
1927 or close to the values of the smallest and largest integers.
1928
1929 · "binmode STDIN, ':raw'" could lead to segmentation faults on some
1930 platforms. This has been fixed [RT #54828].
1931
1932 · An off-by-one error meant that "index $str, ..." was effectively
1933 being executed as "index "$str\0", ...". This has been fixed [RT
1934 #53746].
1935
1936 · Various leaks associated with named captures in regexes have been
1937 fixed [RT #57024].
1938
1939 · A weak reference to a hash would leak. This was affecting "DBI" [RT
1940 #56908].
1941
1942 · Using (?|) in a regex could cause a segfault [RT #59734].
1943
1944 · Use of a UTF-8 "tr//" within a closure could cause a segfault [RT
1945 #61520].
1946
1947 · Calling "Perl_sv_chop()" or otherwise upgrading an SV could result
1948 in an unaligned 64-bit access on the SPARC architecture [RT
1949 #60574].
1950
1951 · In the 5.10.0 release, "inc_version_list" would incorrectly list
1952 "5.10.*" after "5.8.*"; this affected the @INC search order [RT
1953 #67628].
1954
1955 · In 5.10.0, "pack "a*", $tainted_value" returned a non-tainted value
1956 [RT #52552].
1957
1958 · In 5.10.0, "printf" and "sprintf" could produce the fatal error
1959 "panic: utf8_mg_pos_cache_update" when printing UTF-8 strings [RT
1960 #62666].
1961
1962 · In the 5.10.0 release, a dynamically created "AUTOLOAD" method
1963 might be missed (method cache issue) [RT #60220,60232].
1964
1965 · In the 5.10.0 release, a combination of "use feature" and "//ee"
1966 could cause a memory leak [RT #63110].
1967
1968 · "-C" on the shebang ("#!") line is once more permitted if it is
1969 also specified on the command line. "-C" on the shebang line used
1970 to be a silent no-op if it was not also on the command line, so
1971 perl 5.10.0 disallowed it, which broke some scripts. Now perl
1972 checks whether it is also on the command line and only dies if it
1973 is not [RT #67880].
1974
1975 · In 5.10.0, certain types of re-entrant regular expression could
1976 crash, or cause the following assertion failure [RT #60508]:
1977
1978 Assertion rx->sublen >= (s - rx->subbeg) + i failed
1979
1980 · Perl now includes previously missing files from the Unicode
1981 Character Database.
1982
1983 · Perl now honors "TMPDIR" when opening an anonymous temporary file.
1984
1986 Perl is incredibly portable. In general, if a platform has a C
1987 compiler, someone has ported Perl to it (or will soon). We're happy to
1988 announce that Perl 5.12 includes support for several new platforms. At
1989 the same time, it's time to bid farewell to some (very) old friends.
1990
1991 New Platforms
1992 Haiku
1993 Perl's developers have merged patches from Haiku's maintainers.
1994 Perl should now build on Haiku.
1995
1996 MirOS BSD
1997 Perl should now build on MirOS BSD.
1998
1999 Discontinued Platforms
2000 Domain/OS
2001 MiNT
2002 Tenon MachTen
2003
2004 Updated Platforms
2005 AIX
2006 · Removed libbsd for AIX 5L and 6.1. Only "flock()" was used from
2007 libbsd.
2008
2009 · Removed libgdbm for AIX 5L and 6.1 if libgdbm < 1.8.3-5 is
2010 installed. The libgdbm is delivered as an optional package
2011 with the AIX Toolbox. Unfortunately the versions below 1.8.3-5
2012 are broken.
2013
2014 · Hints changes mean that AIX 4.2 should work again.
2015
2016 Cygwin
2017 · Perl now supports IPv6 on Cygwin 1.7 and newer.
2018
2019 · On Cygwin we now strip the last number from the DLL. This has
2020 been the behaviour in the cygwin.com build for years. The hints
2021 files have been updated.
2022
2023 Darwin (Mac OS X)
2024 · Skip testing the be_BY.CP1131 locale on Darwin 10 (Mac OS X
2025 10.6), as it's still buggy.
2026
2027 · Correct infelicities in the regexp used to identify buggy
2028 locales on Darwin 8 and 9 (Mac OS X 10.4 and 10.5,
2029 respectively).
2030
2031 DragonFly BSD
2032 · Fix thread library selection [perl #69686]
2033
2034 FreeBSD
2035 · The hints files now identify the correct threading libraries on
2036 FreeBSD 7 and later.
2037
2038 Irix
2039 · We now work around a bizarre preprocessor bug in the Irix 6.5
2040 compiler: "cc -E -" unfortunately goes into K&R mode, but "cc
2041 -E file.c" doesn't.
2042
2043 NetBSD
2044 · Hints now supports versions 5.*.
2045
2046 OpenVMS
2047 · "-UDEBUGGING" is now the default on VMS.
2048
2049 Like it has been everywhere else for ages and ages. Also make
2050 command-line selection of -UDEBUGGING and -DDEBUGGING work in
2051 configure.com; before the only way to turn it off was by saying
2052 no in answer to the interactive question.
2053
2054 · The default pipe buffer size on VMS has been updated to 8192 on
2055 64-bit systems.
2056
2057 · Reads from the in-memory temporary files of "PerlIO::scalar"
2058 used to fail if $/ was set to a numeric reference (to indicate
2059 record-style reads). This is now fixed.
2060
2061 · VMS now supports "getgrgid".
2062
2063 · Many improvements and cleanups have been made to the VMS file
2064 name handling and conversion code.
2065
2066 · Enabling the "PERL_VMS_POSIX_EXIT" logical name now encodes a
2067 POSIX exit status in a VMS condition value for better
2068 interaction with GNV's bash shell and other utilities that
2069 depend on POSIX exit values. See "$?" in perlvms for details.
2070
2071 · "File::Copy" now detects Unix compatibility mode on VMS.
2072
2073 Stratus VOS
2074 · Various changes from Stratus have been merged in.
2075
2076 Symbian
2077 · There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
2078
2079 Windows
2080 · Perl 5.12 supports Windows 2000 and later. The supporting code
2081 for legacy versions of Windows is still included, but will be
2082 removed during the next development cycle.
2083
2084 · Initial support for building Perl with MinGW-w64 is now
2085 available.
2086
2087 · perl.exe now includes a manifest resource to specify the
2088 "trustInfo" settings for Windows Vista and later. Without this
2089 setting Windows would treat perl.exe as a legacy application
2090 and apply various heuristics like redirecting access to
2091 protected file system areas (like the "Program Files" folder)
2092 to the users "VirtualStore" instead of generating a proper
2093 "permission denied" error.
2094
2095 The manifest resource also requests the Microsoft Common-
2096 Controls version 6.0 (themed controls introduced in Windows
2097 XP). Check out the Win32::VisualStyles module on CPAN to
2098 switch back to old style unthemed controls for legacy
2099 applications.
2100
2101 · The "-t" filetest operator now only returns true if the
2102 filehandle is connected to a console window. In previous
2103 versions of Perl it would return true for all character mode
2104 devices, including NUL and LPT1.
2105
2106 · The "-p" filetest operator now works correctly, and the
2107 Fcntl::S_IFIFO constant is defined when Perl is compiled with
2108 Microsoft Visual C. In previous Perl versions "-p" always
2109 returned a false value, and the Fcntl::S_IFIFO constant was not
2110 defined.
2111
2112 This bug is specific to Microsoft Visual C and never affected
2113 Perl binaries built with MinGW.
2114
2115 · The socket error codes are now more widely supported: The
2116 POSIX module will define the symbolic names, like
2117 POSIX::EWOULDBLOCK, and stringification of socket error codes
2118 in $! works as well now;
2119
2120 C:\>perl -MPOSIX -E "$!=POSIX::EWOULDBLOCK; say $!"
2121 A non-blocking socket operation could not be completed immediately.
2122
2123 · flock() will now set sensible error codes in $!. Previous Perl
2124 versions copied the value of $^E into $!, which caused much
2125 confusion.
2126
2127 · select() now supports all empty "fd_set"s more correctly.
2128
2129 · '.\foo' and '..\foo' were treated differently than './foo' and
2130 '../foo' by "do" and "require" [RT #63492].
2131
2132 · Improved message window handling means that "alarm" and "kill"
2133 messages will no longer be dropped under race conditions.
2134
2135 · Various bits of Perl's build infrastructure are no longer
2136 converted to win32 line endings at release time. If this hurts
2137 you, please report the problem with the perlbug program
2138 included with perl.
2139
2141 This is a list of some significant unfixed bugs, which are regressions
2142 from either 5.10.x or 5.8.x.
2143
2144 · Some CPANPLUS tests may fail if there is a functioning file
2145 ../../cpanp-run-perl outside your build directory. The failure
2146 shouldn't imply there's a problem with the actual functional
2147 software. The bug is already fixed in [RT #74188] and is scheduled
2148 for inclusion in perl-v5.12.1.
2149
2150 · "List::Util::first" misbehaves in the presence of a lexical $_
2151 (typically introduced by "my $_" or implicitly by "given"). The
2152 variable which gets set for each iteration is the package variable
2153 $_, not the lexical $_ [RT #67694].
2154
2155 A similar issue may occur in other modules that provide functions
2156 which take a block as their first argument, like
2157
2158 foo { ... $_ ...} list
2159
2160 · Some regexes may run much more slowly when run in a child thread
2161 compared with the thread the pattern was compiled into [RT #55600].
2162
2163 · Things like ""\N{LATIN SMALL LIGATURE FF}" =~ /\N{LATIN SMALL
2164 LETTER F}+/" will appear to hang as they get into a very long
2165 running loop [RT #72998].
2166
2167 · Several porters have reported mysterious crashes when Perl's entire
2168 test suite is run after a build on certain Windows 2000 systems.
2169 When run by hand, the individual tests reportedly work fine.
2170
2172 · This one is actually a change introduced in 5.10.0, but it was
2173 missed from that release's perldelta, so it is mentioned here
2174 instead.
2175
2176 A bugfix related to the handling of the "/m" modifier and "qr"
2177 resulted in a change of behaviour between 5.8.x and 5.10.0:
2178
2179 # matches in 5.8.x, doesn't match in 5.10.0
2180 $re = qr/^bar/; "foo\nbar" =~ /$re/m;
2181
2183 Perl 5.12.0 represents approximately two years of development since
2184 Perl 5.10.0 and contains over 750,000 lines of changes across over
2185 3,000 files from over 200 authors and committers.
2186
2187 Perl continues to flourish into its third decade thanks to a vibrant
2188 community of users and developers. The following people are known to
2189 have contributed the improvements that became Perl 5.12.0:
2190
2191 Aaron Crane, Abe Timmerman, Abhijit Menon-Sen, Abigail, Adam Russell,
2192 Adriano Ferreira, AEvar Arnfjoerd` Bjarmason, Alan Grover, Alexandr
2193 Ciornii, Alex Davies, Alex Vandiver, Andreas Koenig, Andrew Rodland,
2194 andrew@sundale.net, Andy Armstrong, Andy Dougherty, Jose AUGUSTE-
2195 ETIENNE, Benjamin Smith, Ben Morrow, bharanee rathna, Bo Borgerson, Bo
2196 Lindbergh, Brad Gilbert, Bram, Brendan O'Dea, brian d foy, Charles
2197 Bailey, Chip Salzenberg, Chris 'BinGOs' Williams, Christoph Lamprecht,
2198 Chris Williams, chromatic, Claes Jakobsson, Craig A. Berry, Dan
2199 Dascalescu, Daniel Frederick Crisman, Daniel M. Quinlan, Dan Jacobson,
2200 Dan Kogai, Dave Mitchell, Dave Rolsky, David Cantrell, David Dick,
2201 David Golden, David Mitchell, David M. Syzdek, David Nicol, David
2202 Wheeler, Dennis Kaarsemaker, Dintelmann, Peter, Dominic Dunlop,
2203 Dr.Ruud, Duke Leto, Enrico Sorcinelli, Eric Brine, Father Chrysostomos,
2204 Florian Ragwitz, Frank Wiegand, Gabor Szabo, Gene Sullivan, Geoffrey T.
2205 Dairiki, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Graham
2206 Barr, Green, Paul, Hans Dieter Pearcey, Harmen, H. Merijn Brand, Hugo
2207 van der Sanden, Ian Goodacre, Igor Sutton, Ingo Weinhold, James Bence,
2208 James Mastros, Jan Dubois, Jari Aalto, Jarkko Hietaniemi, Jay Hannah,
2209 Jerry Hedden, Jesse Vincent, Jim Cromie, Jody Belka, John E. Malmberg,
2210 John Malmberg, John Peacock, John Peacock via RT, John P. Linderman,
2211 John Wright, Josh ben Jore, Jos I. Boumans, Karl Williamson, Kenichi
2212 Ishigaki, Ken Williams, Kevin Brintnall, Kevin Ryde, Kurt Starsinic,
2213 Leon Brocard, Lubomir Rintel, Luke Ross, Marcel Gruenauer, Marcus
2214 Holland-Moritz, Mark Jason Dominus, Marko Asplund, Martin Hasch,
2215 Mashrab Kuvatov, Matt Kraai, Matt S Trout, Max Maischein, Michael
2216 Breen, Michael Cartmell, Michael G Schwern, Michael Witten, Mike
2217 Giroux, Milosz Tanski, Moritz Lenz, Nicholas Clark, Nick Cleaton, Niko
2218 Tyni, Offer Kaye, Osvaldo Villalon, Paul Fenwick, Paul Gaborit, Paul
2219 Green, Paul Johnson, Paul Marquess, Philip Hazel, Philippe Bruhat,
2220 Rafael Garcia-Suarez, Rainer Tammer, Rajesh Mandalemula, Reini Urban,
2221 Renee Baecker, Ricardo Signes, Ricardo SIGNES, Richard Foley, Rich
2222 Rauenzahn, Rick Delaney, Risto Kankkunen, Robert May, Roberto C.
2223 Sanchez, Robin Barker, SADAHIRO Tomoyuki, Salvador Ortiz Garcia, Sam
2224 Vilain, Scott Lanning, Sebastien Aperghis-Tramoni, Sergio Durigan
2225 Junior, Shlomi Fish, Simon 'corecode' Schubert, Sisyphus, Slaven Rezic,
2226 Smylers, Steffen Mueller, Steffen Ullrich, Stepan Kasal, Steve Hay,
2227 Steven Schubiger, Steve Peters, Tels, The Doctor, Tim Bunce, Tim
2228 Jenness, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tom Wyant, Tony
2229 Cook, Torsten Schoenfeld, Tye McQueen, Vadim Konovalov, Vincent Pit,
2230 Hio YAMASHINA, Yasuhiro Matsumoto, Yitzchak Scott-Thoennes, Yuval
2231 Kogman, Yves Orton, Zefram, Zsban Ambrus
2232
2233 This is woefully incomplete as it's automatically generated from
2234 version control history. In particular, it doesn't include the names
2235 of the (very much appreciated) contributors who reported issues in
2236 previous versions of Perl that helped make Perl 5.12.0 better. For a
2237 more complete list of all of Perl's historical contributors, please see
2238 the "AUTHORS" file in the Perl 5.12.0 distribution.
2239
2240 Our "retired" pumpkings Nicholas Clark and Rafael Garcia-Suarez deserve
2241 special thanks for their brilliant and substantive ongoing
2242 contributions. Nicholas personally authored over 30% of the patches
2243 since 5.10.0. Rafael comes in second in patch authorship with 11%, but
2244 is first by a long shot in committing patches authored by others,
2245 pushing 44% of the commits since 5.10.0 in this category, often after
2246 providing considerable coaching to the patch authors. These statistics
2247 in no way comprise all of their contributions, but express in shorthand
2248 that we couldn't have done it without them.
2249
2250 Many of the changes included in this version originated in the CPAN
2251 modules included in Perl's core. We're grateful to the entire CPAN
2252 community for helping Perl to flourish.
2253
2255 If you find what you think is a bug, you might check the articles
2256 recently posted to the comp.lang.perl.misc newsgroup and the perl bug
2257 database at <http://rt.perl.org/perlbug/>. There may also be
2258 information at <http://www.perl.org/>, the Perl Home Page.
2259
2260 If you believe you have an unreported bug, please run the perlbug
2261 program included with your release. Be sure to trim your bug down to a
2262 tiny but sufficient test case. Your bug report, along with the output
2263 of "perl -V", will be sent off to perlbug@perl.org to be analyzed by
2264 the Perl porting team.
2265
2266 If the bug you are reporting has security implications, which make it
2267 inappropriate to send to a publicly archived mailing list, then please
2268 send it to perl5-security-report@perl.org. This points to a closed
2269 subscription unarchived mailing list, which includes all the core
2270 committers, who will be able to help assess the impact of issues,
2271 figure out a resolution, and help co-ordinate the release of patches to
2272 mitigate or fix the problem across all platforms on which Perl is
2273 supported. Please only use this address for security issues in the Perl
2274 core, not for modules independently distributed on CPAN.
2275
2277 The Changes file for an explanation of how to view exhaustive details
2278 on what changed.
2279
2280 The INSTALL file for how to build Perl.
2281
2282 The README file for general stuff.
2283
2284 The Artistic and Copying files for copyright information.
2285
2286 <http://dev.perl.org/perl5/errata.html> for a list of issues found
2287 after this release, as well as a list of CPAN modules known to be
2288 incompatible with this release.
2289
2290
2291
2292perl v5.30.2 2020-03-27 PERL5120DELTA(1)