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