Fix the NAME in two old perlXYZdelta.pod files
[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 =head1 XXX - THIS DOCUMENT IS ONLY CURRENT THROUGH PERL5114
6
7 FIX ME BEFORE RELEASE
8
9 OTHER ISSUES: 
10
11 UPDATED MODULE LIST NEEDS TO BE GENERATED
12 ORDERING NEEDS CHECKING
13 HEAVY COPYEDITING IS NEEDED
14
15
16 =head1 DESCRIPTION
17
18 This document describes differences between the 5.10.0 release and
19 the 5.12.0 release.
20
21 Many of the bug fixes in 5.12.0 were already seen in the 5.10.1
22 maintenance release since the two releases were kept closely
23 coordinated (while 5.12.0 was still called 5.11.something).
24
25 You can see the list of changes in the 5.10.1 release 
26 by reading L<perl5101delta>.
27
28 =head1 Core Enhancements
29
30 =head2 qr overloading
31
32 It is now possible to overload the C<qr//> operator, that is,
33 conversion to regexp, like it was already possible to overload
34 conversion to boolean, string or number of objects. It is invoked when
35 an object appears on the right hand side of the C<=~> operator or when
36 it is interpolated into a regexp. See L<overload>.
37
38 =head2 Pluggable keywords
39
40 Extension modules can now cleanly hook into the Perl parser to define
41 new kinds of keyword-headed expression and compound statement. The
42 syntax following the keyword is defined entirely by the extension. This
43 allow a completely non-Perl sublanguage to be parsed inline, with the
44 correct ops cleanly generated. This feature is currently considered
45 experimental.
46
47 See L<perlapi/PL_keyword_plugin> for the mechanism. The Perl core
48 source distribution also includes a new module
49 L<XS::APItest::KeywordRPN>, which implements reverse Polish notation
50 arithmetic via pluggable keywords. This module is mainly used for test
51 purposes, and is not normally installed, but also serves as an example
52 of how to use the new mechanism.
53
54 =head2 APIs for more internals
55
56 The lowest layers of the lexer and parts of the pad system now have C
57 APIs available to XS extensions. These are necessary to support proper
58 use of pluggable keywords, but have other uses too. The new APIs are
59 experimental, and only cover a small proportion of what would be
60 necessary to take full advantage of the core's facilities in these
61 areas. It is intended that the Perl 5.13 development cycle will see the
62 addition of a full range of clean, supported interfaces.
63
64 =head2 Overridable function lookup
65
66 Where an extension module hooks the creation of rv2cv ops to modify the
67 subroutine lookup process, this now works correctly for bareword
68 subroutine calls. This means that prototypes on subroutines referenced
69 this way will be processed correctly. (Previously bareword subroutine
70 names were initially looked up, for parsing purposes, by an unhookable
71 mechanism, so extensions could only properly influence subroutine names
72 that appeared with an C<&> sigil.)
73
74 =head2 Unicode version
75
76 Perl is shipped with the latest Unicode version, 5.2, dated October 2009.  See
77 L<http://www.unicode.org/versions/Unicode5.2.0> for details about this release
78 of Unicode.  See L<perlunicode> for instructions on installing and using
79 older versions of Unicode.
80
81 =head2 Unicode properties
82
83 A concerted effort has been made to update Perl to be in sync with the latest
84 Unicode standard.  Changes for this include:
85
86 Perl can now handle every Unicode character property.  A new pod,
87 L<perluniprops>, lists all available non-Unihan character properties.  By
88 default the Unihan properties and certain others (deprecated and Unicode
89 internal-only ones) are not exposed.  See below for more details on
90 these; there is also a section in the pod listing them, and explaining
91 why they are not exposed.
92
93 Perl now fully supports the Unicode compound-style of using C<=> and C<:>
94 in writing regular expressions: C<\p{property=value}> and
95 C<\p{property:value}> (both of which mean the same thing).
96
97 Perl now fully supports the Unicode loose matching rules for text
98 between the braces in C<\p{...}> constructs.  In addition, Perl allows
99 underscores between digits of numbers.
100
101 All the Unicode-defined synonyms for properties and property values are
102 now accepted.
103
104 C<qr/\X/>, which matches a Unicode logical character, has been expanded to work
105 better with various Asian languages.  It now is defined as an I<extended
106 grapheme cluster>.  (See L<http://www.unicode.org/reports/tr29/>).
107 Anything matched previously and that made sense will continue to be
108 matched, but in addition:
109
110 =over
111
112 =item *
113
114 C<\X> will not break apart a C<S<CR LF>> sequence.
115
116 =item *
117
118 C<\X> will now match a sequence which includes the C<ZWJ> and C<ZWNJ> characters.
119
120 =item *
121
122 C<\X> will now always match at least one character, including an initial mark.
123 Marks generally come after a base character, but it is possible in Unicode to
124 have them in isolation, and C<\X> will now handle that case, for example at the
125 beginning of a line, or after a C<ZWSP>.  And this is the part where C<\X>
126 doesn't match the things that it used to that don't make sense.  Formerly, for
127 example, you could have the nonsensical case of an accented LF.
128
129 =item *
130
131 C<\X> will now match a (Korean) Hangul syllable sequence, and the Thai and Lao
132 exception cases.
133
134 =back
135
136 Otherwise, this change should be transparent for the non-affected languages.
137
138 C<\p{...}> matches using the Canonical_Combining_Class property were
139 completely broken in previous Perls.  This is now fixed.
140
141 In previous Perls, the Unicode C<Decomposition_Type=Compat> property and a
142 Perl extension had the same name, which led to neither matching all the
143 correct values (with more than 100 mistakes in one, and several thousand
144 in the other).  The Perl extension has now been renamed to be
145 C<Decomposition_Type=Noncanonical> (short: C<dt=noncanon>).  It has the same
146 meaning as was previously intended, namely the union of all the
147 non-canonical Decomposition types, with Unicode C<Compat> being just one of
148 those.
149
150 C<\p{Uppercase}> and C<\p{Lowercase}> have been brought into line with the
151 Unicode definitions.  This means they each match a few more characters
152 than previously.
153
154 C<\p{Cntrl}> now matches the same characters as C<\p{Control}>.  This means it
155 no longer will match Private Use (gc=co), Surrogates (gc=cs), nor Format
156 (gc=cf) code points.  The Format code points represent the biggest
157 possible problem.  All but 36 of them are either officially deprecated
158 or strongly discouraged from being used.  Of those 36, likely the most
159 widely used are the soft hyphen (U+00AD), and BOM, ZWSP, ZWNJ, WJ, and
160 similar characters, plus bidirectional controls.
161
162 C<\p{Alpha}> now matches the same characters as C<\p{Alphabetic}>.  The Perl
163 definition included a number of things that aren't really alpha (all
164 marks), while omitting many that were.  As a direct consequence, the
165 definitions of C<\p{Alnum}> and C<\p{Word}> which depend on Alpha also change
166 correspondingly.
167
168 C<\p{Word}> also now doesn't match certain characters it wasn't supposed
169 to, such as fractions.
170
171 C<\p{Print}> no longer matches the line control characters: Tab, LF, CR,
172 FF, VT, and NEL.  This brings it in line with standards and the documentation.
173
174 C<\p{Decomposition_Type=Canonical}> now includes the Hangul syllables.
175
176 C<\p{XDigit}> now matches the same characters as C<\p{Hex_Digit}>.  This
177 means that in addition to the characters it currently matches,
178 C<[A-Fa-f0-9]>, it will also match the 22 fullwidth equivalents, for
179 example U+FF10: FULLWIDTH DIGIT ZERO.
180
181 The Numeric type property has been extended to include the Unihan
182 characters.
183
184 There is a new Perl extension, the 'Present_In', or simply 'In',
185 property.  This is an extension of the Unicode Age property, but
186 C<\p{In=5.0}> matches any code point whose usage has been determined
187 I<as of> Unicode version 5.0.  The C<\p{Age=5.0}> only matches code points
188 added in I<precisely> version 5.0.
189
190 A number of properties did not have the correct values for unassigned
191 code points.  This is now fixed.  The affected properties are
192 Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type,
193 Hangul_Syllable_Type, Numeric_Type, and Line_Break.
194
195 The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties
196 have been updated to their current Unicode definitions.
197
198 Certain properties that are supposed to be Unicode internal-only were
199 erroneously exposed by previous Perls.  Use of these in regular
200 expressions will now generate, if enabled, a deprecated warning message.
201 The properties are: Other_Alphabetic, Other_Default_Ignorable_Code_Point,
202 Other_Grapheme_Extend, Other_ID_Continue, Other_ID_Start, Other_Lowercase,
203 Other_Math, and Other_Uppercase.
204
205 An installation can now fairly easily change which Unicode properties
206 Perl understands.  As mentioned above, certain properties are by default
207 turned off.  These include all the Unihan properties (which should be
208 accessible via the CPAN module Unicode::Unihan) and any deprecated or
209 Unicode internal-only property that Perl has never exposed.
210
211 The generated files in the C<lib/unicore/To> directory are now more
212 clearly marked as being stable, directly usable by applications.
213 New hash entries in them give the format of the normal entries,
214 which allows for easier machine parsing.  Perl can generate files
215 in this directory for any property, though most are suppressed.  An
216 installation can choose to change which get written.  Instructions
217 are in L<perluniprops>.
218
219 =head2 Regular Expressions
220
221 U+0FFFF is now a legal character in regular expressions.
222
223 =head2 A proper interface for pluggable Method Resolution Orders
224
225 As of Perl 5.11.0 there is a new interface for plugging and using method
226 resolution orders other than the default (linear depth first search).
227 The C3 method resolution order added in 5.10.0 has been re-implemented as
228 a plugin, without changing its Perl-space interface. See L<perlmroapi> for
229 more information.
230
231 =head2 The C<overloading> pragma
232
233 This pragma allows you to lexically disable or enable overloading
234 for some or all operations. (Yuval Kogman)
235
236 =head2 C<\N> regex escape
237
238 A new regex escape has been added, C<\N>. It will match any character that
239 is not a newline, independently from the presence or absence of the single
240 line match modifier C</s>.  It is not usable within a character class.
241 (If C<\N> is followed by an opening brace and
242 by a letter, perl will still assume that a Unicode character name is
243 coming, so compatibility is preserved.) (Rafael Garcia-Suarez).
244
245 This will break a L<custom charnames translator|charnames/CUSTOM TRANSLATORS>
246 which allows numbers for character names, as C<\N{3}> will now mean to match 3
247 non-newline characters, and not the character whose name is C<3>.  (No standard
248 name is a number, so only a custom translator would be affected.)
249
250 =head2 Implicit strictures
251
252 Using the C<use VERSION> syntax with a version number greater or equal
253 to 5.11.0 will also lexically enable strictures just like C<use strict>
254 would do (in addition to enabling features.) So, the following:
255
256     use 5.11.0;
257
258 will now imply:
259
260     use strict;
261     use feature ':5.11';
262
263 =head2 Parallel tests
264
265 The core distribution can now run its regression tests in parallel on
266 Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS> in
267 your environment to the number of tests to run in parallel, and run
268 C<make test_harness>. On a Bourne-like shell, this can be done as
269
270     TEST_JOBS=3 make test_harness  # Run 3 tests in parallel
271
272 An environment variable is used, rather than parallel make itself, because
273 L<TAP::Harness> needs to be able to schedule individual non-conflicting test
274 scripts itself, and there is no standard interface to C<make> utilities to
275 interact with their job schedulers.
276
277 Note that currently some test scripts may fail when run in parallel (most
278 notably C<ext/IO/t/io_dir.t>). If necessary run just the failing scripts
279 again sequentially and see if the failures go away.
280
281 =head2 The C<...> operator
282
283 A new operator, C<...>, nicknamed the Yada Yada operator, has been added.
284 It is intended to mark placeholder code that is not yet implemented.
285 See L<perlop/"Yada Yada Operator">. (chromatic)
286
287 =head2 DTrace support
288
289 Some support for DTrace has been added. See "DTrace support" in F<INSTALL>.
290
291 =head2 Support for C<configure_requires> in CPAN module metadata
292
293 Both C<CPAN> and C<CPANPLUS> now support the C<configure_requires> keyword
294 in the F<META.yml> metadata file included in most recent CPAN distributions.
295 This allows distribution authors to specify configuration prerequisites that
296 must be installed before running F<Makefile.PL> or F<Build.PL>.
297
298 See the documentation for C<ExtUtils::MakeMaker> or C<Module::Build> for more
299 on how to specify C<configure_requires> when creating a distribution for CPAN.
300
301 =head2 C<each> is now more flexible
302
303 The C<each> function can now operate on arrays.
304
305 =head2 Y2038 compliance
306
307 Perl's core time-related functions are now Y2038 compliant. (With 29
308 years to spare!)
309
310 =head2 C<$,> flexibility
311
312 The variable C<$,> may now be tied.
313
314 =head2 // in where clauses
315
316 // now behaves like || in when clauses
317
318 =head2 Enabling warnings from your shell environment
319
320 You can now set C<-W> from the C<PERL5OPT> environment variable
321
322 =head2 C<delete local>
323
324 C<delete local> now allows you to locally delete a hash entry.
325
326 =head2 New support for Abstract namespace sockets
327
328 Abstract namespace sockets are Linux-specific socket type that live in
329 AF_UNIX family, slightly abusing it to be able to use arbitrary
330 character arrays as addresses: They start with nul byte and are not
331 terminated by nul byte, but with the length passed to the socket()
332 system call.
333
334 =head2 New C<package NAME VERSION> syntax
335
336 This new syntax allows a module author to set the $VERSION of a namespace
337 when the namespace is declared with 'package'.  It eliminates the need
338 for C<our $VERSION = ...> and similar constructs.  E.g.
339
340       package Foo::Bar 1.23;
341       # $Foo::Bar::VERSION == 1.23
342
343 There are several advantages to this:
344
345 =over 
346
347 =item *
348
349 C<$VERSION> is parsed in exactly the same way as C<use NAME VERSION>
350
351 =item *
352
353 C<$VERSION> is set at compile time
354
355 =item *
356
357 C<$VERSION> is a version object that provides proper overloading of
358 comparision operators so comparing C<$VERSION> to decimal (1.23) or
359 dotted-decimal (v1.2.3) version numbers works correctly.
360
361 =item *
362
363 Eliminates C<$VERSION = ...> and C<eval $VERSION> clutter
364
365 =item *
366
367 As it requires VERSION to be a numeric literal or v-string
368 literal, it can be statically parsed by toolchain modules
369 without C<eval> the way MM-E<gt>parse_version does for C<$VERSION = ...>
370
371 =item *
372
373 It does not break old code with only C<package NAME>, but code that uses
374 C<package NAME VERSION> will need to be restricted to perl 5.12.0 or newer
375 This is analogous to the change to C<open> from two-args to three-args.
376 Users requiring the latest Perl will benefit, and perhaps after several
377 years, it will become a standard practice.
378
379 =back
380
381 However, C<package NAME VERSION> requires a new, 'strict' version
382 number format.  See L<"Version number formats"> for details.
383
384 =head1 Incompatible Changes
385
386 =head2 Version number formats
387
388 Acceptable version number formats have been formalized into "strict" and
389 "lax" rules.  C<package NAME VERSION> takes a strict version number.
390 C<UNIVERSAL::VERSION> and the L<version> object constructors take lax
391 version numbers.  Providing an invalid version will result in a fatal
392 error.  The version argument in C<use NAME VERSION> is first parsed as a
393 numeric literal or v-string and then passed to C<UNIVERSAL::VERSION>
394 (and must then pass the "lax" format test).
395
396 These formats are documented fully in the L<version> module.  To a first
397 approximation, a "strict" version number is a positive decimal number
398 (integer or decimal-fraction) without exponentiation or else a
399 dotted-decimal v-string with a leading 'v' character and at least three
400 components.  A "lax" version number allows v-strings with fewer than
401 three components or without a leading 'v'.  Under "lax" rules, both
402 decimal and dotted-decimal versions may have a trailing "alpha"
403 component separated by an underscore character after a fractional or
404 dotted-decimal component.
405
406 The L<version> module adds C<version::is_strict> and C<version::is_lax>
407 functions to check a scalar against these rules.
408
409 =head2 @INC reorganization
410
411 In @INC, ARCHLIB and PRIVLIB now occur after after the current version's
412 site_perl and vendor_perl.
413
414 =head2 Switch statement changes
415
416 The handling of complex expressions by the C<given>/C<when> switch
417 statement has been enhanced. These enhancements are also available in
418 5.10.1 and subsequent 5.10 releases. There are two new cases where
419 C<when> now interprets its argument as a boolean, instead of an
420 expression to be used in a smart match:
421
422 =head2 flip-flop operators
423
424 The C<..> and C<...> flip-flop operators are now evaluated in boolean
425 context, following their usual semantics; see L<perlop/"Range Operators">.
426
427 Note that, as in perl 5.10.0, C<when (1..10)> will not work to test
428 whether a given value is an integer between 1 and 10; you should use
429 C<when ([1..10])> instead (note the array reference).
430
431 However, contrary to 5.10.0, evaluating the flip-flop operators in boolean
432 context ensures it can now be useful in a C<when()>, notably for
433 implementing bistable conditions, like in:
434
435     when (/^=begin/ .. /^=end/) {
436       # do something
437     }
438
439 =head2 defined-or operator
440
441 A compound expression involving the defined-or operator, as in
442 C<when (expr1 // expr2)>, will be treated as boolean if the first
443 expression is boolean. (This just extends the existing rule that applies
444 to the regular or operator, as in C<when (expr1 || expr2)>.)
445
446 =head2 Smart match changes
447
448 This section details more changes brought to the semantics to
449 the smart match operator, that naturally also modify the behaviour
450 of the switch statements where smart matching is implicitly used.
451 These changes were also made for the 5.10.1 release, and will remain in
452 subsequent 5.10 releases.
453
454 =head3 Changes to type-based dispatch
455
456 The smart match operator C<~~> is no longer commutative. The behaviour of
457 a smart match now depends primarily on the type of its right hand
458 argument. Moreover, its semantics have been adjusted for greater
459 consistency or usefulness in several cases. While the general backwards
460 compatibility is maintained, several changes must be noted:
461
462 =over 4
463
464 =item *
465
466 Code references with an empty prototype are no longer treated specially.
467 They are passed an argument like the other code references (even if they
468 choose to ignore it).
469
470 =item *
471
472 C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine
473 returns a true value for each key of the hash (or element of the
474 array), instead of passing the whole hash or array as a reference to
475 the subroutine.
476
477 =item *
478
479 Due to the commutativity breakage, code references are no longer
480 treated specially when appearing on the left of the C<~~> operator,
481 but like any vulgar scalar.
482
483 =item *
484
485 C<undef ~~ %hash> is always false (since C<undef> can't be a key in a
486 hash). No implicit conversion to C<""> is done (as was the case in perl
487 5.10.0).
488
489 =item *
490
491 C<$scalar ~~ @array> now always distributes the smart match across the
492 elements of the array. It's true if one element in @array verifies
493 C<$scalar ~~ $element>. This is a generalization of the old behaviour
494 that tested whether the array contained the scalar.
495
496 =back
497
498 The full dispatch table for the smart match operator is given in
499 L<perlsyn/"Smart matching in detail">.
500
501 =head3 Smart match and overloading
502
503 According to the rule of dispatch based on the rightmost argument type,
504 when an object overloading C<~~> appears on the right side of the
505 operator, the overload routine will always be called (with a 3rd argument
506 set to a true value, see L<overload>.) However, when the object will
507 appear on the left, the overload routine will be called only when the
508 rightmost argument is a simple scalar. This way, distributivity of smart
509 match across arrays is not broken, as well as the other behaviours with
510 complex types (coderefs, hashes, regexes). Thus, writers of overloading
511 routines for smart match mostly need to worry only with comparing
512 against a scalar, and possibly with stringification overloading; the
513 other common cases will be automatically handled consistently.
514
515 C<~~> will now refuse to work on objects that do not overload it (in order
516 to avoid relying on the object's underlying structure). (However, if the
517 object overloads the stringification or the numification operators, and
518 if overload fallback is active, it will be used instead, as usual.)
519
520 =head2 Labels can't be keywords
521
522 Labels used as targets for the C<goto>, C<last>, C<next> or C<redo>
523 statements cannot be keywords anymore. This restriction will prevent
524 potential confusion between the C<goto LABEL> and C<goto EXPR> syntaxes:
525 for example, a statement like C<goto print> would jump to a label whose
526 name would be the return value of C<print()>, (usually 1), instead of a
527 label named C<print>. Moreover, the other control flow statements
528 would just ignore any keyword passed to them as a label name. Since
529 such labels cannot be defined anymore, this kind of error will be
530 avoided.
531
532 =head2 Other incompatible changes
533
534 =over 4
535
536 =item *
537
538 The definitions of a number of Unicode properties have changed to match those
539 of the current Unicode standard.  These are listed above under L</Unicode
540 properties>.  This could break code that is expecting the old definitions.
541
542 =item *
543
544 The boolkeys op moved to the group of hash ops. This breaks binary
545 compatibility.
546
547 =item *
548
549 Filehandles are blessed directly into C<IO::Handle>, as C<FileHandle> is
550 merely a wrapper around C<IO::Handle>.
551
552 The previous behaviour was to bless Filehandles into L<FileHandle>
553 (an empty proxy class) if it was loaded into memory and otherwise
554 to bless them into C<IO::Handle>.
555
556 =item *
557
558 The semantics of C<use feature :5.10*> have changed slightly.
559 See L<"Modules and Pragmata"> for more information.
560
561 =item *
562
563 The version control system used for the development of the perl
564 interpreter has been switched from Perforce to git.  This is mainly an
565 internal issue that only affects people actively working on the perl core;
566 but it may have minor external visibility, for example in some of details
567 of the output of C<perl -V>. See L<perlrepository> for more information.
568
569 =item *
570
571 The internal structure of the C<ext/> directory in the perl source has
572 been reorganised. In general, a module C<Foo::Bar> whose source was
573 stored under F<ext/Foo/Bar/> is now located under F<ext/Foo-Bar/>. Also,
574 nearly all dual-life modules have been moved from F<lib/> to F<ext/>. This
575 is purely a source tarball change, and should make no difference to the
576 compilation or installation of perl, unless you have a very customised build
577 process that explicitly relies on this structure, or which hard-codes the
578 C<nonxs_ext> F<Configure> parameter. Specifically, this change does not by
579 default alter the location of any files in the final installation.
580
581 =item *
582
583 As part of the C<Test::Harness> 2.x to 3.x upgrade, the experimental
584 C<Test::Harness::Straps> module has been removed.
585 See L</"Updated Modules"> for more details.
586
587 =item *
588
589 As part of the C<ExtUtils::MakeMaker> upgrade, the
590 C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish> modules
591 have been removed from this distribution.
592
593 =item *
594
595 C<Module::CoreList> no longer contains the C<%:patchlevel> hash.
596
597 =item *
598
599 This one is actually a change introduced in 5.10.0, but it was missed
600 from that release's perldelta, so it is mentioned here instead.
601
602 A bugfix related to the handling of the C</m> modifier and C<qr> resulted
603 in a change of behaviour between 5.8.x and 5.10.0:
604
605     # matches in 5.8.x, doesn't match in 5.10.0
606     $re = qr/^bar/; "foo\nbar" =~ /$re/m;
607
608 =item *
609
610 C<length undef> now returns undef.
611
612 =item *
613
614 Unsupported private C API functions are now declared "static" to prevent
615 leakage to Perl's public API.
616
617 =item *
618
619 To support the bootstrapping process, F<miniperl> no longer builds with
620 UTF-8 support in the regexp engine.
621
622 This allows a build to complete with PERL_UNICODE set and a UTF-8 locale.
623 Without this there's a bootstrapping problem, as miniperl can't load the UTF-8
624 components of the regexp engine, because they're not yet built.
625
626 =item *
627
628 F<miniperl>'s @INC is now restricted to just C<-I...>, the split of
629 C<$ENV{PERL5LIB}>, and "C<.>"
630
631 =item *
632
633 A space or a newline is now required after a C<"#line XXX"> directive.
634
635 =item *
636
637 Tied filehandles now have an additional method EOF which provides the EOF type
638
639 =item *
640
641 To better match all other flow control statements, C<foreach> may no
642 longer be used as an attribute.
643
644 =back
645
646 =head1 Deprecations
647
648 From time to time, Perl's developers find it necessary to deprecate
649 features or modules we've previously shipped as part of the core
650 distribution. We are well aware of the pain and frustration that a
651 backwards-incompatible change to Perl can cause for developers building
652 or maintaining software in Perl. You can be sure that when we deprecate
653 a functionality or syntax, it isn't a choice we make lightly. Sometimes,
654 we choose to deprecate functionality or syntax because it was found to
655 be poorly designed or implemented. Sometimes, this is because they're
656 holding back other features or causing performance problems. Sometimes,
657 the reasons are more complex. Wherever possible, we try to keep deprecated
658 functionality available to developers in its previous form for at least
659 one major release.  So long as a deprecated feature isn't actively
660 disrupting our ability to maintain and extend Perl, we'll try to leave
661 it in place as long as possible.
662
663 The following items are now deprecated.
664
665 =over 4
666
667 =item Use of C<:=> to mean an empty attribute list is now deprecated.
668
669 An accident of Perl's parser meant that these constructions were all
670 equivalent:
671
672     my $pi := 4;
673     my $pi : = 4;
674     my $pi :  = 4;
675
676 with the C<:> being treated as the start of an attribute list, which
677 ends before the C<=>. As whitespace is not significant here, all are
678 parsed as an empty attribute list, hence all the above are equivalent
679 to, and better written as
680
681     my $pi = 4;
682
683 because no attribute processing is done for an empty list.
684
685 As is, this meant that C<:=> cannot be used as a new token, without
686 silently changing the meaning of existing code. Hence that particular
687 form is now deprecated, and will become a syntax error. If it is
688 absolutely necessary to have empty attribute lists (for example,
689 because of a code generator) then avoid the warning by adding a space
690 before the C<=>.
691
692 =item C<< UNIVERSAL->import() >>
693
694 The method C<< UNIVERSAL->import() >> is now deprecated.  Attempting to
695 pass import arguments to a C<use UNIVERSAL> statement will result in a
696 deprecation warning.
697
698 =item Use of "goto" to jump into a construct is deprecated
699
700 Using C<goto> to jump from an outer scope into an inner scope is now
701 deprecated. This rare use case was causing problems in the
702 implementation of scopes.
703
704 =item Deprecated Modules
705
706 The following modules will be removed from the core distribution in a future
707 release, and should be installed from CPAN instead. Distributions on CPAN
708 which require these should add them to their prerequisites. The core versions
709 of these modules warnings will issue a deprecation warning.
710
711 If you ship a packaged version of Perl, either alone or as part of a larger
712 system, then you should carefully consider the reprecussions of core module
713 deprecations.  You may want to consider shipping your default build of
714 Perl with packages for some or all deprecated modules which install into
715 C<vendor> or C<site> perl library directories. This will inhibit the 
716 deprecation warnings.
717
718 Alternatively, you may want to consider patching F<lib/deprecate.pm>
719 to provide deprecation warnings specific to your packaging system or
720 distribution of Perl.
721
722 =over
723
724 =item L<Class::ISA>
725
726 =item L<Pod::Plainer>
727
728 =item L<Shell>
729
730 =item L<Switch>
731
732 Switch is buggy and should be avoided.  See L<perlsyn/"Switch
733 statements"> for its replacement.
734
735 =back
736
737 =item suidperl
738
739 C<suidperl> has been removed. It used to provide a mechanism to
740 emulate setuid permission bits on systems that don't support it properly.
741
742 =item Assignment to $[
743
744 =item attrs
745
746 Remove attrs, which has been deprecated since 1999-10-02.
747
748 =item Use of the attribute :locked on subroutines.
749
750 =item Use of "locked" with the attributes pragma.
751
752 =item Use of "unique" with the attributes pragma.
753
754 =item Numerous Perl 4-era libraries:
755
756 F<termcap.pl>, F<tainted.pl>, F<stat.pl>, F<shellwords.pl>, F<pwd.pl>,
757 F<open3.pl>, F<open2.pl>, F<newgetopt.pl>, F<look.pl>, F<find.pl>,
758 F<finddepth.pl>, F<importenv.pl>, F<hostname.pl>, F<getopts.pl>,
759 F<getopt.pl>, F<getcwd.pl>, F<flush.pl>, F<fastcwd.pl>, F<exceptions.pl>,
760 F<ctime.pl>, F<complete.pl>, F<cacheout.pl>, F<bigrat.pl>, F<bigint.pl>,
761 F<bigfloat.pl>, F<assert.pl>, F<abbrev.pl>, F<dotsh.pl>, and
762 F<timelocal.pl> are all now deprecated. Using them will incur a warning.
763
764 =back
765
766 =head1 Modules and Pragmata
767
768 =head2 Dual-lifed modules moved
769
770 Dual-lifed modules maintained primarily in the Perl core now live in dist/.
771 Dual-lifed modules maintained primarily on CPAN now live in cpan/
772
773 In previous releases of Perl, it was customary to enumerate all module
774 changes in this section of the C<perldelta> file. From 5.11.0 forward
775 only notable updates (such as new or deprecated modules ) will be listed
776 in this section. For a complete reference to the versions of modules
777 shipped in a given release of perl, please see L<Module::CoreList>.
778
779 =head2 New Modules and Pragmata
780
781 =over 4
782
783 =item *
784
785 C<autodie>
786
787 This is a new lexically-scoped alternative for the C<Fatal> module.
788 The bundled version is 2.06_01. Note that in this release, using a string
789 eval when C<autodie> is in effect can cause the autodie behaviour to leak
790 into the surrounding scope. See L<autodie/"BUGS"> for more details.
791
792 =item *
793
794 C<Compress::Raw::Bzip2>
795
796 This has been added to the core (version 2.020).
797
798 =item *
799
800 C<parent>
801
802 This pragma establishes an ISA relationship with base classes at compile
803 time. It provides the key feature of C<base> without further unwanted
804 behaviors.
805
806 =item *
807
808 C<Parse::CPAN::Meta>
809
810 This has been added to the core (version 1.39).
811
812 =back
813
814 =head2 Pragmata Changes
815
816 =over 4
817
818 =item *
819
820 C<overloading>
821
822 See L</"The C<overloading> pragma"> above.
823
824 =item *
825
826 C<attrs>
827
828 The C<attrs> pragma has been removed. It had been marked as deprecated since
829 5.6.0.
830
831 =item *
832
833 C<charnames>
834
835 The Unicode F<NameAliases.txt> database file has been added. This has the
836 effect of adding some extra C<\N> character names that formerly wouldn't
837 have been recognised; for example, C<"\N{LATIN CAPITAL LETTER GHA}">.
838
839 =item *
840
841 C<feature>
842
843 The meaning of the C<:5.10> and C<:5.10.X> feature bundles has
844 changed slightly. The last component, if any (i.e. C<X>) is simply ignored.
845 This is predicated on the assumption that new features will not, in
846 general, be added to maintenance releases. So C<:5.10> and C<:5.10.X>
847 have identical effect. This is a change to the behaviour documented for
848 5.10.0.
849
850 =item *
851
852 C<mro>
853
854 Upgraded from version 1.00 to 1.01. Performance for single inheritance is 40%
855 faster - see L</"Performance Enhancements"> below.
856
857 C<mro> is now implemented as an XS extension. The documented interface has not
858 changed. Code relying on the implementation detail that some C<mro::>
859 methods happened to be available at all times gets to "keep both pieces".
860
861 =item *
862
863 C<diagnostics>
864
865 Supports %.0f formatting internally.
866
867 =item *
868
869 C<overload>
870
871 Allow overloading of 'qr'.
872
873 =item *
874
875 C<constant>
876
877 Upgraded from version 1.19 to 1.20.
878
879 =item *
880
881 C<diagnostics>
882
883 This pragma no longer suppresses C<Use of uninitialized value in range
884 (or flip)> warnings. [perl #71204]
885
886 =item *
887
888 C<feature>
889
890 Upgraded from 1.13 to 1.14.  Added the C<unicode_strings> feature:
891
892     use feature "unicode_strings";
893
894 This pragma turns on Unicode semantics for the case-changing operations
895 (C<uc>, C<lc>, C<ucfirst>, C<lcfirst>) on strings that don't have the
896 internal UTF-8 flag set, but that contain single-byte characters between
897 128 and 255.
898
899 =item *
900
901 C<threads>
902
903 Upgraded from version 1.74 to 1.75.
904
905 =item *
906
907 C<less>
908
909 Upgraded from version 0.02 to 0.03.
910
911 This version introduces the C<stash_name> method to allow subclasses of
912 C<less> to pick where in %^H to store their stash.
913
914 =item *
915
916 C<version>
917
918 Upgraded from version 0.77 to 0.81.
919
920 This version adds support for L</Version number formats> as described earlier
921 in this document and in its own documentation.
922
923 =item *
924
925 C<warnings>
926
927 Upgraded from 1.07 to 1.09. 
928
929 Added new C<warnings::fatal_enabled()> function.
930 This version adds the C<illegalproto> warning category.  See also L</New or
931 Changed Diagnostics> for this change.
932
933 =back
934
935
936 =head2 Updated Modules
937
938 =over 4
939
940 =item XXX TODO RECALCULATE THIS VS 5.10.0
941
942 =back
943
944 =head2 Removed Modules and Pragmata
945
946 =over 4
947
948 =item *
949
950 C<Devel::DProf::V>
951
952 Removed from the Perl core.  Prior version was 'undef'.
953
954 =back
955
956 =head1 Documentation
957
958 =head2 New Documentation
959
960 =over 4
961
962 =item *
963
964 L<perlhaiku>
965
966 This contains instructions on how to build perl for the Haiku platform.
967
968 =item *
969
970 L<perlmroapi>
971
972 This describes the new interface for pluggable Method Resolution Orders.
973
974 =item *
975
976 L<perlperf>
977
978 This document, by Richard Foley, provides an introduction to the use of
979 performance and optimization techniques which can be used with particular
980 reference to perl programs.
981
982 =item *
983
984 L<perlrepository>
985
986 This describes how to access the perl source using the I<git> version
987 control system.
988
989 =item *
990
991 L<perlpolicy> extends the "Social contract about contributed modules" into
992 the beginnings of a document on Perl porting policies.
993
994 =back
995
996 =head2 Changes to Existing Documentation
997
998 The various large F<Changes*> files (which listed every change made to perl
999 over the last 18 years) have been removed, and replaced by a small file,
1000 also called F<Changes>, which just explains how that same information may
1001 be extracted from the git version control system.
1002
1003 The file F<Porting/patching.pod> has been deleted, as it mainly described
1004 interacting with the old Perforce-based repository, which is now obsolete.
1005 Information still relevant has been moved to L<perlrepository>.
1006
1007 L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all
1008 generated at build time, rather than being shipped as part of the release.
1009
1010 =over
1011
1012 =item *
1013
1014 Documented -X overloading.
1015
1016 =item *
1017
1018 Documented that C<when()> treats specially most of the filetest operators
1019
1020 =item *
1021
1022 Documented C<when> as a syntax modifier
1023
1024 =item *
1025
1026 Eliminated "Old Perl threads tutorial", which described 5005 threads.
1027
1028 F<pod/perlthrtut.pod> is the same material reworked for ithreads.
1029
1030 =item *
1031
1032 Correct previous documentation: v-strings are not deprecated
1033
1034 With version objects, we need them to use MODULE VERSION syntax.  This
1035 patch removes the deprecation notice.
1036
1037 =item *
1038
1039 Added security contact information to L<perlsec>
1040
1041 A significant fraction of the core documentation has been updated to clarify
1042 the behavior of Perl's Unicode handling.
1043
1044 Much of the remaining core documentation has been reviewed and edited
1045 for clarity, consistent use of language, and to fix the spelling of Tom
1046 Christiansen's name.
1047
1048 The Pod specification (L<perlpodspec>) has been updated to bring the
1049 specification in line with modern usage already supported by most Pod
1050 systems.  A parameter string may now follow the format name in a
1051 "begin/end" region.  Links to URIs with a text description are now
1052 allowed.  The usage of C<LE<lt>"section"E<gt>> has been marked as
1053 deprecated.
1054
1055 L<if.pm|if> has been documented in L<perlfunc/use> as a means to get
1056 conditional loading of modules despite the implicit BEGIN block around
1057 C<use>.
1058
1059 =item *
1060
1061 The documentation for C<$1> in perlvar.pod has been clarified.
1062
1063 =back
1064
1065 =head1 Performance Enhancements
1066
1067 =over 4
1068
1069 =item *
1070
1071 A new internal cache means that C<isa()> will often be faster.
1072
1073 =item *
1074
1075 The implementation of C<C3> Method Resolution Order has been optimised -
1076 linearisation for classes with single inheritance is 40% faster. Performance
1077 for multiple inheritance is unchanged.
1078
1079 =item *
1080
1081 Under C<use locale>, the locale-relevant information is now cached on
1082 read-only values, such as the list returned by C<keys %hash>. This makes
1083 operations such as C<sort keys %hash> in the scope of C<use locale> much
1084 faster.
1085
1086 =item *
1087
1088 Empty C<DESTROY> methods are no longer called.
1089
1090 =item *
1091
1092 Faster C<Perl_sv_utf8_upgrade()>
1093
1094 =item *
1095
1096 Speed up C<keys> on empty hash
1097
1098 =item *
1099
1100 C<if (%foo)> has been optimized to be faster than C<if (keys %foo)>
1101
1102 =item *
1103
1104 Reversing an array to itself (as in C<@a = reverse @a>) in void context
1105 now happens in-place and is several orders of magnitude faster than it
1106 used to be. It will also preserve non-existent elements whenever
1107 possible, i.e. for non magical arrays or tied arrays with C<EXISTS> and
1108 C<DELETE> methods.
1109
1110 =back
1111
1112 =head1 Installation and Configuration Improvements
1113
1114 =head2 F<ext/> reorganisation
1115
1116 The layout of directories in F<ext> has been revised. Specifically, all
1117 extensions are now flat, and at the top level, with C</> in pathnames
1118 replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>,
1119 etc.  The names of the extensions as specified to F<Configure>, and as
1120 reported by C<%Config::Config> under the keys C<dynamic_ext>,
1121 C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and
1122 still use C</>. Hence this change will not have any affect once perl is
1123 installed. C<Safe> has been split out from being part of C<Opcode>, and
1124 C<mro> is now an extension in its own right.
1125
1126 Nearly all dual-life modules have been moved from F<lib> to F<ext>, and will
1127 now appear as known C<nonxs_ext>. This will made no difference to the
1128 structure of an installed perl, nor will the modules installed differ,
1129 unless you run F<Configure> with options to specify an exact list of
1130 extensions to build. In this case, you will rapidly become aware that you
1131 need to add to your list, because various modules needed to complete the
1132 build, such as C<ExtUtils::ParseXS>, have now become extensions, and
1133 without them the build will fail well before it attempts to run the
1134 regression tests.
1135
1136 =head2 Configuration improvements
1137
1138 If C<vendorlib> and C<vendorarch> are the same, then they are only added to
1139 C<@INC> once.
1140
1141 C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
1142 perl is built with  C<-Dusedevel>.
1143
1144 F<Configure> will enable use of C<-fstack-protector>, to provide protection
1145 against stack-smashing attacks, if the compiler supports it.
1146
1147 F<Configure> will now determine the correct prototypes for re-entrant
1148 functions and for C<gconvert> if you are using a C++ compiler rather
1149 than a C compiler.
1150
1151 On Unix, if you build from a tree containing a git repository, the
1152 configuration process will note the commit hash you have checked out, for
1153 display in the output of C<perl -v> and C<perl -V>. Unpushed local commits
1154 are automatically added to the list of local patches displayed by
1155 C<perl -V>.
1156
1157 USE_ATTRIBUTES_FOR_PERLIO is now reported in the compile-time options
1158 listed by the C<-V> switch.
1159
1160 =head2 Compilation improvements
1161
1162 As part of the flattening of F<ext>, all extensions on all platforms are
1163 built by F<make_ext.pl>. This replaces the Unix-specific
1164 F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific
1165 F<win32/buildext.pl>.
1166
1167 =head1 Changed Internals
1168
1169 =over 4
1170
1171 =item *
1172
1173 C<Perl_pmflag> has been removed from the public API. Calling it now
1174 generates a deprecation warning, and it will be removed in a future
1175 release. Although listed as part of the API, it was never documented,
1176 and only ever used in F<toke.c>, and prior to 5.10, F<regcomp.c>. In
1177 core, it has been replaced by a static function.
1178
1179 =item *
1180
1181 Perl_magic_setmglob now knows about globs, fixing RT #71254.
1182
1183 =item *
1184
1185 TODO: C<SVt_RV> is gone. RVs are now stored in IVs
1186
1187 =item *
1188
1189 TODO: REGEXPs are first class
1190
1191 =item *
1192
1193 TODO: OOK is reworked, such that an OOKed scalar is PV not PVIV
1194
1195 =item *
1196
1197 The J.R.R. Tolkien quotes at the head of C source file have been checked and
1198 proper citations added, thanks to a patch from Tom Christiansen.
1199
1200 =item *
1201
1202 C<Perl_vcroak()> now accepts a null first argument. In addition, a full audit
1203 was made of the "not NULL" compiler annotations, and those for several
1204 other internal functions were corrected.
1205
1206 =item *
1207
1208 New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1209 have been added to formalise the temporary saving of the C<errno>
1210 variable.
1211
1212 =item *
1213
1214 The function C<Perl_sv_insert_flags> has been added to augment
1215 C<Perl_sv_insert>.
1216
1217 =item *
1218
1219 The function C<Perl_newSV_type(type)> has been added, equivalent to
1220 C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1221
1222 =item *
1223
1224 The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1225 C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1226
1227 Two flag bits are currently supported.
1228
1229 =over 4
1230
1231 =item *
1232
1233 C<SVf_UTF8>
1234
1235 This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1236 sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1237 is available for this.
1238
1239 =item *
1240
1241 C<SVs_TEMP>
1242
1243 Call C<Perl_sv_2mortal()> on the new SV.
1244
1245 =back
1246
1247 There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1248
1249 =item *
1250
1251 The function C<Perl_croak_xs_usage> has been added as a wrapper to
1252 C<Perl_croak>.
1253
1254 =item *
1255
1256 The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1257 exported.
1258
1259 =item *
1260
1261 C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1262 temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1263 which is a pointer dereference into the interpreter structure under ithreads,
1264 and a global variable otherwise.
1265
1266 =item *
1267
1268 C<Perl_mg_free()> used to leave freed memory accessible via C<SvMAGIC()> on
1269 the scalar. It now updates the linked list to remove each piece of magic
1270 as it is freed.
1271
1272 =item *
1273
1274 Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1275 eliminates a lot of hackish workarounds to cope with it not being reference
1276 counted.
1277
1278 =item *
1279
1280 C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1281 This has been fixed.
1282
1283 =item *
1284
1285 The I<public> IV and NV flags are now not set if the string value has
1286 trailing "garbage". This behaviour is consistent with not setting the
1287 public IV or NV flags if the value is out of range for the type.
1288
1289 =item *
1290
1291 SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1292 The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1293 that was enabled when the F<perl> binary was compiled.
1294
1295 =item *
1296
1297 Smartmatch resolution tracing has been added as a new diagnostic. Use C<-DM> to
1298 enable it.
1299
1300 =item *
1301
1302 A new debugging flag C<-DB> now dumps subroutine definitions, leaving
1303 C<-Dx> for its original purpose of dumping syntax trees.
1304
1305 =item *
1306
1307 Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1308 replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1309 is clearer to those unfamiliar with the core code.
1310
1311 =item *
1312
1313 A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1314 not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1315 C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1316 casting away C<const>. This allows proper compile-time auditing of
1317 C<const> correctness in the core, and helped picked up some errors (now
1318 fixed).
1319
1320 =item *
1321
1322 Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1323 stack and mortalizing them.
1324
1325 =item *
1326
1327 Use of the private structure C<mro_meta> has changed slightly. Nothing
1328 outside the core should be accessing this directly anyway.
1329
1330 =item *
1331
1332 A new tool, F<Porting/expand-macro.pl> has been added, that allows you
1333 to view how a C preprocessor macro would be expanded when compiled.
1334 This is handy when trying to decode the macro hell that is the perl
1335 guts.
1336
1337 =back
1338
1339 =head1 Testing
1340
1341 =head2 New Tests
1342
1343 Many modules updated from CPAN incorporate new tests.
1344 Several tests that have the potential to hang forever if they fail now
1345 incorporate a "watchdog" functionality that will kill them after a timeout,
1346 which helps ensure that C<make test> and C<make test_harness> run to
1347 completion automatically. (Jerry Hedden).
1348
1349 Some core-specific tests have been added:
1350
1351 =over 4
1352
1353 =item *
1354
1355 Significant cleanups to core tests to ensure that language and
1356 interpreter features are not used before they're tested.
1357
1358 =item *
1359
1360 C<make test_porting> now runs a number of important pre-commit checks
1361 which might be of use to anyone working on the Perl core.
1362
1363 =item *
1364
1365 F<t/porting/podcheck.t> automatically checks the well-formedness of
1366 POD found in all .pl, .pm and .pod files in the F<MANIFEST>, other than in
1367 dual-lifed modules which are primarily maintained outside the Perl core.
1368
1369 =item *
1370
1371 F<t/porting/manifest.t> now tests that all files listed in MANIFEST are present.
1372
1373 =item *
1374
1375 F<t/op/while_readdir.t>
1376
1377 Test that a bare readdir in while loop sets $_.
1378
1379 =item *
1380
1381 F<t/comp/retainedlines.t>
1382
1383 Check that the debugger can retain source lines from C<eval>.
1384
1385 =item *
1386
1387 F<t/io/perlio_fail.t>
1388
1389 Check that bad layers fail.
1390
1391 =item *
1392
1393 F<t/io/perlio_leaks.t>
1394
1395 Check that PerlIO layers are not leaking.
1396
1397 =item *
1398
1399 F<t/io/perlio_open.t>
1400
1401 Check that certain special forms of open work.
1402
1403 =item *
1404
1405 F<t/io/perlio.t>
1406
1407 General PerlIO tests.
1408
1409 =item *
1410
1411 F<t/io/pvbm.t>
1412
1413 Check that there is no unexpected interaction between the internal types
1414 C<PVBM> and C<PVGV>.
1415
1416 =item *
1417
1418 F<t/mro/package_aliases.t>
1419
1420 Check that mro works properly in the presence of aliased packages.
1421
1422 =item *
1423
1424 F<t/op/dbm.t>
1425
1426 Tests for C<dbmopen> and C<dbmclose>.
1427
1428 =item *
1429
1430 F<t/op/index_thr.t>
1431
1432 Tests for the interaction of C<index> and threads.
1433
1434 =item *
1435
1436 F<t/op/pat_thr.t>
1437
1438 Tests for the interaction of esoteric patterns and threads.
1439
1440 =item *
1441
1442 F<t/op/qr_gc.t>
1443
1444 Test that C<qr> doesn't leak.
1445
1446 =item *
1447
1448 F<t/op/reg_email_thr.t>
1449
1450 Tests for the interaction of regex recursion and threads.
1451
1452 =item *
1453
1454 F<t/op/regexp_qr_embed_thr.t>
1455
1456 Tests for the interaction of patterns with embedded C<qr//> and threads.
1457
1458 =item *
1459
1460 F<t/op/regexp_unicode_prop.t>
1461
1462 Tests for Unicode properties in regular expressions.
1463
1464 =item *
1465
1466 F<t/op/regexp_unicode_prop_thr.t>
1467
1468 Tests for the interaction of Unicode properties and threads.
1469
1470 =item *
1471
1472 F<t/op/reg_nc_tie.t>
1473
1474 Test the tied methods of C<Tie::Hash::NamedCapture>.
1475
1476 =item *
1477
1478 F<t/op/reg_posixcc.t>
1479
1480 Check that POSIX character classes behave consistently.
1481
1482 =item *
1483
1484 F<t/op/re.t>
1485
1486 Check that exportable C<re> functions in F<universal.c> work.
1487
1488 =item *
1489
1490 F<t/op/setpgrpstack.t>
1491
1492 Check that C<setpgrp> works.
1493
1494 =item *
1495
1496 F<t/op/substr_thr.t>
1497
1498 Tests for the interaction of C<substr> and threads.
1499
1500 =item *
1501
1502 F<t/op/upgrade.t>
1503
1504 Check that upgrading and assigning scalars works.
1505
1506 =item *
1507
1508 F<t/uni/lex_utf8.t>
1509
1510 Check that Unicode in the lexer works.
1511
1512 =item *
1513
1514 F<t/uni/tie.t>
1515
1516 Check that Unicode and C<tie> work.
1517
1518 =item *
1519
1520 F<t/comp/final_line_num.t>
1521
1522 See if line numbers are correct at EOF
1523
1524 =item *
1525
1526 F<t/comp/form_scope.t>
1527
1528 See if format scoping works
1529
1530 =item *
1531
1532 F<t/comp/line_debug.t>
1533
1534 See if C<< @{"_<$file"} >> works
1535
1536 =item *
1537
1538 F<t/op/filetest_t.t>
1539
1540 See if -t file test works
1541
1542 =item *
1543
1544 F<t/op/qr.t>
1545
1546 See if qr works
1547
1548 =item *
1549
1550 F<t/op/utf8cache.t>
1551
1552 Tests malfunctions of utf8 cache
1553
1554 =item *
1555
1556 F<t/re/uniprops.t>
1557
1558 Test unicode \p{} regex constructs
1559
1560 =back
1561
1562 =head2 Testing improvements
1563
1564 =over 4
1565
1566 =item *
1567
1568 It's now possible to override C<PERL5OPT> and friends in F<t/TEST>
1569
1570 =back
1571
1572
1573 =head1 New or Changed Diagnostics
1574
1575 Several new diagnostics, see L<perldiag> for details.
1576
1577 =over 4
1578
1579 =item *
1580
1581 C<Bad plugin affecting keyword '%s'>
1582
1583 =item *
1584
1585 C<gmtime(%.0f) too large>
1586
1587 =item *
1588
1589 C<Lexing code attempted to stuff non-Latin-1 character into Latin-1 input>
1590
1591 =item *
1592
1593 C<Lexing code internal error (%s)>
1594
1595 =item *
1596
1597 C<localtime(%.0f) too large>
1598
1599 =item *
1600
1601 C<Overloaded dereference did not return a reference>
1602
1603 =item *
1604
1605 C<Overloaded qr did not return a REGEXP>
1606
1607 =item *
1608
1609 C<Perl_pmflag() is deprecated, and will be removed from the XS API>
1610
1611 =item *
1612
1613 New warning category C<illegalproto>
1614
1615 The two warnings :
1616
1617   Illegal character in prototype for %s : %s
1618   Prototype after '%c' for %s : %s
1619
1620 have been moved from the C<syntax> top-level warnings category into a new
1621 first-level category, C<illegalproto>. These two warnings are currently the
1622 only ones emitted during parsing of an invalid/illegal prototype, so one
1623 can now do
1624
1625   no warnings 'illegalproto';
1626
1627 to suppress only those, but not other syntax-related warnings. Warnings where
1628 prototypes are changed, ignored, or not met are still in the C<prototype>
1629 category as before. (Matt S. Trout)
1630
1631 =item *
1632
1633 lvalue attribute ignored after the subroutine has been defined
1634
1635 This new warning is issued when one attempts to mark a subroutine as
1636 lvalue after it has been defined.
1637
1638 =item *
1639
1640 warn if C<++> or C<--> are unable to change the value because it's
1641 beyond the limit of representation
1642
1643 This uses a new warnings category: "imprecision".
1644
1645 =item * 
1646
1647 C<lc>, C<uc>, C<lcfirst>, and C<ucfirst> warn when passed undef.
1648
1649 =item *
1650
1651 Show constant in "Useless use of a constant in void context"
1652
1653 =item *
1654
1655 Make the new warning report undef constants as undef
1656
1657 =item *
1658
1659 Add a new warning, "Prototype after '%s'"
1660
1661 =item *
1662
1663 Tweak the "Illegal character in prototype" warning so it's more precise
1664 when reporting illegal characters after _
1665
1666 =item *
1667
1668 Correct the unintended interpolation of C<$\> in regex
1669
1670 =item *
1671
1672 Make overflow warnings in C<gmtime> and C<localtime> only occur when
1673 warnings are enabled
1674
1675 =item *
1676
1677 Improve mro merging error messages.
1678
1679 They are now very similar to those produced by Algorithm::C3.
1680
1681 =item *
1682
1683 Amelioration of the error message "Unrecognized character %s in column %d"
1684
1685 Changes the error message to "Unrecognized character %s; marked by E<lt>--
1686 HERE after %sE<lt>-- HERE near column %d". This should make it a little
1687 simpler to spot and correct the suspicious character.
1688
1689 =item *
1690
1691 Explicitely point to C<$.> when it causes an uninitialized warning for
1692 ranges in scalar context
1693
1694 =item *
1695
1696 C<split> now warns when called in void context
1697
1698 =item *
1699
1700 C<printf>-style functions called with too few arguments will now issue the
1701 warning C<"Missing argument in %s"> [perl #71000]
1702
1703 =item *
1704
1705 C<panic: sv_chop %s>
1706
1707 This new fatal error occurs when the C routine C<Perl_sv_chop()> was
1708 passed a position that is not within the scalar's string buffer. This
1709 could be caused by buggy XS code, and at this point recovery is not
1710 possible.
1711
1712 =item *
1713
1714 C<Deep recursion on subroutine "%s">
1715
1716 It is now possible to change the depth threshold for this warning from the
1717 default of 100, by recompiling the F<perl> binary, setting the C
1718 pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1719
1720 =item *
1721
1722 Perl now properly returns a syntax error instead of segfaulting
1723 if C<each>, C<keys>, or C<values> is used without an argument.
1724
1725 =item *
1726
1727 C<tell()> now fails properly if called without an argument and when no
1728 previous file was read.
1729
1730 C<tell()> now returns C<-1>, and sets errno to C<EBADF>, thus restoring
1731 the 5.8.x behaviour.
1732
1733 =item *
1734
1735 C<overload> no longer implicitly unsets fallback on repeated 'use
1736 overload' lines.
1737
1738 =item *
1739
1740 POSIX::strftime() can now handle Unicode characters in the format string.
1741
1742 =item *
1743
1744 The Windows select() implementation now supports all empty C<fd_set>s
1745 more correctly.
1746
1747 =item *
1748
1749 The "syntax" category was removed from 5 warnings that should only be in
1750 "deprecated".
1751
1752 =item *
1753
1754 Three fatal C<pack>/C<unpack> error messages have been normalized to
1755 "panic: %s"
1756
1757 =item *
1758
1759 "Unicode character is illegal" has been rephrased to be more accurate
1760
1761 It now reads C<Unicode non-character is illegal in interchange> and the
1762 perldiag documentation has been expanded a bit.
1763
1764 =item *
1765
1766 Perl now defaults to issuing a warning if a deprecated language feature
1767 is used.
1768
1769 To disable this feature in a given lexical scope, you should use C<no
1770 warnings 'deprecated';> For information about which language features
1771 are deprecated and explanations of various deprecation warnings, please
1772 see L<perldiag.pod>
1773
1774 =back
1775
1776 The following diagnostics have been removed:
1777
1778 =over 4
1779
1780 =item *
1781
1782 C<Runaway format>
1783
1784 =item *
1785
1786 C<Can't locate package %s for the parents of %s>
1787
1788 This warning has been removed. In general, it only got produced in
1789 conjunction with other warnings, and removing it allowed an ISA lookup
1790 optimisation to be added.
1791
1792 =item *
1793
1794 C<v-string in use/require is non-portable>
1795
1796 =back
1797
1798 =head1 Utility Changes
1799
1800 =over 4
1801
1802 =item *
1803
1804 F<h2ph>
1805
1806 Now looks in C<include-fixed> too, which is a recent addition to gcc's
1807 search path.
1808
1809 =item *
1810
1811 F<h2xs>
1812
1813 No longer incorrectly treats enum values like macros (Daniel Burr).
1814
1815 Now handles C++ style constants (C<//>) properly in enums. (A patch from
1816 Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
1817
1818 =item *
1819
1820 F<perl5db.pl>
1821
1822 C<LVALUE> subroutines now work under the debugger.
1823
1824 The debugger now correctly handles proxy constant subroutines, and
1825 subroutine stubs.
1826
1827 =item *
1828
1829 F<perlbug>
1830
1831 F<perlbug> now uses C<%Module::CoreList::bug_tracker> to print out upstream bug
1832 tracker URLs.
1833
1834 Where the user names a module that their bug report is about, and we know the
1835 URL for its upstream bug tracker, provide a message to the user explaining
1836 that the core copies the CPAN version directly, and provide the URL for
1837 reporting the bug directly to upstream.
1838
1839 =item *
1840
1841 F<perlthanks>
1842
1843 Perl 5.11.0 added a new utility F<perlthanks>, which is a variant of
1844 F<perlbug>, but for sending non-bug-reports to the authors and maintainers
1845 of Perl. Getting nothing but bug reports can become a bit demoralising:
1846 we'll see if this changes things.
1847
1848 =item *
1849
1850 F<perlbug>
1851
1852 No longer reports "Message sent" when it hasn't actually sent the message
1853
1854 =item *
1855
1856 F<a2p>
1857
1858 Fixed bugs with the match() operator in list context, remove mention of
1859 C<$[>.
1860
1861 =back
1862
1863 =head1 Selected Bug Fixes
1864
1865 =over 4
1866
1867 =item *
1868
1869 Ensure that pp_qr returns a new regexp SV each time. Resolves RT #69852.
1870
1871 Instead of returning a(nother) reference to the (pre-compiled) regexp in the
1872 optree, use reg_temp_copy() to create a copy of it, and return a reference to
1873 that. This resolves issues about Regexp::DESTROY not being called in a timely
1874 fashion (the original bug tracked by RT #69852), as well as bugs related to
1875 blessing regexps, and of assigning to regexps, as described in correspondence
1876 added to the ticket.
1877
1878 It transpires that we also need to undo the SvPVX() sharing when ithreads
1879 cloning a Regexp SV, because mother_re is set to NULL, instead of a cloned
1880 copy of the mother_re. This change might fix bugs with regexps and threads in
1881 certain other situations, but as yet neither tests nor bug reports have
1882 indicated any problems, so it might not actually be an edge case that it's
1883 possible to reach.
1884
1885 =item *
1886
1887 Several compilation errors and segfaults when perl was built with C<-Dmad> were fixed.
1888
1889 =item *
1890
1891 Fixes for lexer API changes in 5.11.2 which broke NYTProf's savesrc option.
1892
1893 =item *
1894
1895 C<-t> should only return TRUE for file handles connected to a TTY
1896
1897 The Microsoft C version of C<isatty()> returns TRUE for all
1898 character mode devices, including the F</dev/null>-style "nul"
1899 device and printers like "lpt1".
1900
1901 =item *
1902
1903 Fixed a regression caused by commit fafafbaf which caused a panic during
1904 parameter passing [perl #70171]
1905
1906 =item *
1907
1908 On systems which in-place edits without backup files, -i'*' now works as
1909 the documentation says it does [perl #70802]
1910
1911 =item *
1912
1913 Saving and restoring magic flags no longer loses readonly flag.
1914
1915 =item *
1916
1917 The malformed syntax C<grep EXPR LIST> (note the missing comma) no longer
1918 causes abrupt and total failure.
1919
1920 =item *
1921
1922 Regular expressions compiled with C<qr{}> literals properly set C<$'> when
1923 matching again.
1924
1925 =item *
1926
1927 Using named subroutines with C<sort> should no longer lead to bus errors [perl
1928 #71076]
1929
1930 =item *
1931
1932 Numerous bugfixes catch small issues caused by the recently-added Lexer API.
1933
1934 =item *
1935
1936 Smart match against C<@_> sometimes gave false negatives. [perl #71078]
1937
1938 =item *
1939
1940 C<$@> may now be assigned a read-only value (without error or busting
1941 the stack).
1942
1943 =item *
1944
1945 C<sort> called recursively from within an active comparison subroutine no
1946 longer causes a bus error if run multiple times. [perl #71076]
1947
1948 =item *
1949
1950 Tie::Hash::NamedCapture::* will not abort if passed bad input (RT #71828)
1951
1952 =item *
1953
1954 @_ and $_ no longer leak under threads (RT #34342 and #41138, also
1955 #70602, #70974)
1956
1957 =item *
1958
1959 C<-I> on shebang line now adds directories in front of @INC
1960 as documented, and as does C<-I> when specified on the command-line.
1961
1962 =item *
1963
1964 C<kill> is now fatal when called on non-numeric process identifiers.
1965 Previously, an C<undef> process identifier would be interpreted as a
1966 request to kill process 0, which would terminate the current process
1967 group on POSIX systems.  Since process identifiers are always integers,
1968 killing a non-numeric process is now fatal.
1969
1970 =item *
1971
1972 5.10.0 inadvertently disabled an optimisation, which caused a measurable
1973 performance drop in list assignment, such as is often used to assign
1974 function parameters from C<@_>. The optimisation has been re-instated, and
1975 the performance regression fixed.  (This fix is also present in 5.10.1)
1976
1977 =item *
1978
1979 Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038].
1980
1981 =item *
1982
1983 Some potential coredumps in PerlIO fixed [RT #57322,54828].
1984
1985 =item *
1986
1987 The debugger now works with lvalue subroutines.
1988
1989 =item *
1990
1991 The debugger's C<m> command was broken on modules that defined constants
1992 [RT #61222].
1993
1994 =item *
1995
1996 C<crypt> and string complement could return tainted values for untainted
1997 arguments [RT #59998].
1998
1999 =item *
2000
2001 The C<-i>I<.suffix> command-line switch now recreates the file using
2002 restricted permissions, before changing its mode to match the original
2003 file. This eliminates a potential race condition [RT #60904].
2004
2005 =item *
2006
2007 On some Unix systems, the value in C<$?> would not have the top bit set
2008 (C<$? & 128>) even if the child core dumped.
2009
2010 =item *
2011
2012 Under some circumstances, C<$^R> could incorrectly become undefined
2013 [RT #57042].
2014
2015 =item *
2016
2017 In the XS API, various hash functions, when passed a pre-computed hash where
2018 the key is UTF-8, might result in an incorrect lookup.
2019
2020 =item *
2021
2022 XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
2023 [RT #57176].
2024
2025 =item *
2026
2027 C<< $object-E<gt>isa('Foo') >> would report false if the package C<Foo> didn't
2028 exist, even if the object's C<@ISA> contained C<Foo>.
2029
2030 =item *
2031
2032 Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
2033 C<@ISA>, have been found and fixed.
2034
2035 =item *
2036
2037 Bitwise operations on references could crash the interpreter, e.g.
2038 C<$x=\$y; $x |= "foo"> [RT #54956].
2039
2040 =item *
2041
2042 Patterns including alternation might be sensitive to the internal UTF-8
2043 representation, e.g.
2044
2045     my $byte = chr(192);
2046     my $utf8 = chr(192); utf8::upgrade($utf8);
2047     $utf8 =~ /$byte|X}/i;       # failed in 5.10.0
2048
2049 =item *
2050
2051 Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in
2052 effect), double-quoted literal strings could be corrupted where a C<\xNN>,
2053 C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
2054 greater than 255 [RT #59908].
2055
2056 =item *
2057
2058 C<B::Deparse> failed to correctly deparse various constructs:
2059 C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
2060 C<sub foo(_)> [RT #62484].
2061
2062 =item *
2063
2064 Using C<setpgrp> with no arguments could corrupt the perl stack.
2065
2066 =item *
2067
2068 The block form of C<eval> is now specifically trappable by C<Safe> and
2069 C<ops>.  Previously it was erroneously treated like string C<eval>.
2070
2071 =item *
2072
2073 In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
2074 match operator (C<~~>) [RT #63854].
2075
2076 =item *
2077
2078 In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
2079 C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
2080
2081     ("ab" x 32768) =~ /^(ab)*$/
2082
2083 =item *
2084
2085 C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
2086
2087 =item *
2088
2089 Using C<next> or C<last> to exit a C<given> block no longer produces a
2090 spurious warning like the following:
2091
2092     Exiting given via last at foo.pl line 123
2093
2094 =item *
2095
2096 On Windows, C<'.\foo'> and C<'..\foo'>  were treated differently than
2097 C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
2098
2099 =item *
2100
2101 Assigning a format to a glob could corrupt the format; e.g.:
2102
2103      *bar=*foo{FORMAT}; # foo format now bad
2104
2105 =item *
2106
2107 Attempting to coerce a typeglob to a string or number could cause an
2108 assertion failure. The correct error message is now generated,
2109 C<Can't coerce GLOB to I<$type>>.
2110
2111 =item *
2112
2113 Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This
2114 has been fixed [RT #49003].
2115
2116 =item *
2117
2118 C<length> on a tied scalar that returned a Unicode value would not be
2119 correct the first time. This has been fixed.
2120
2121 =item *
2122
2123 Using an array C<tie> inside in array C<tie> could SEGV. This has been
2124 fixed. [RT #51636]
2125
2126 =item *
2127
2128 A race condition inside C<PerlIOStdio_close()> has been identified and
2129 fixed. This used to cause various threading issues, including SEGVs.
2130
2131 =item *
2132
2133 In C<unpack>, the use of C<()> groups in scalar context was internally
2134 placing a list on the interpreter's stack, which manifested in various
2135 ways, including SEGVs.  This is now fixed [RT #50256].
2136
2137 =item *
2138
2139 Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>.
2140 These have all been fixed.
2141
2142 =item *
2143
2144 A 5.10.0 optimisation to clear the temporary stack within the implicit
2145 loop of C<s///ge> has been reverted, as it turned out to be the cause of
2146 obscure bugs in seemingly unrelated parts of the interpreter [commit
2147 ef0d4e17921ee3de].
2148
2149 =item *
2150
2151 The line numbers for warnings inside C<elsif> are now correct.
2152
2153 =item *
2154
2155 The C<..> operator now works correctly with ranges whose ends are at or
2156 close to the values of the smallest and largest integers.
2157
2158 =item *
2159
2160 C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms.
2161 This has been fixed [RT #54828].
2162
2163 =item *
2164
2165 An off-by-one error meant that C<index $str, ...> was effectively being
2166 executed as C<index "$str\0", ...>. This has been fixed [RT #53746].
2167
2168 =item *
2169
2170 Various leaks associated with named captures in regexes have been fixed
2171 [RT #57024].
2172
2173 =item *
2174
2175 A weak reference to a hash would leak. This was affecting C<DBI>
2176 [RT #56908].
2177
2178 =item *
2179
2180 Using (?|) in a regex could cause a segfault [RT #59734].
2181
2182 =item *
2183
2184 Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520].
2185
2186 =item *
2187
2188 Calling C<Perl_sv_chop()> or otherwise upgrading an SV could result in an
2189 unaligned 64-bit access on the SPARC architecture [RT #60574].
2190
2191 =item *
2192
2193 In the 5.10.0 release, C<inc_version_list> would incorrectly list
2194 C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order
2195 [RT #67628].
2196
2197 =item *
2198
2199 In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value
2200 [RT #52552].
2201
2202 =item *
2203
2204 In 5.10.0, C<printf> and C<sprintf> could produce the fatal error
2205 C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings
2206 [RT #62666].
2207
2208 =item *
2209
2210 In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be
2211 missed (method cache issue) [RT #60220,60232].
2212
2213 =item *
2214
2215 In the 5.10.0 release, a combination of C<use feature> and C<//ee> could
2216 cause a memory leak [RT #63110].
2217
2218 =item *
2219
2220 C<-C> on the shebang (C<#!>) line is once more permitted if it is also
2221 specified on the command line. C<-C> on the shebang line used to be a
2222 silent no-op I<if> it was not also on the command line, so perl 5.10.0
2223 disallowed it, which broke some scripts. Now perl checks whether it is
2224 also on the command line and only dies if it is not [RT #67880].
2225
2226 =item *
2227
2228 In 5.10.0, certain types of re-entrant regular expression could crash,
2229 or cause the following assertion failure [RT #60508]:
2230
2231     Assertion rx->sublen >= (s - rx->subbeg) + i failed
2232
2233 =item *
2234
2235 Previously missing files from Unicode 5.1 Character Database are now included.
2236
2237 =item *
2238
2239 C<TMPDIR> is now honored when opening an anonymous temporary file
2240
2241 =back
2242
2243 =head1 Platform Specific Changes
2244
2245 =head2 New Platforms
2246
2247 =over
2248
2249 =item Haiku
2250
2251 Patches from the Haiku maintainers have been merged in. Perl should now
2252 build on Haiku.
2253
2254 =item MirOS BSD
2255
2256 Perl should now build on MirOS BSD.
2257
2258
2259 =back
2260
2261 =head2 Discontinued Platforms
2262
2263 =over
2264
2265 =item DomainOS
2266
2267 Support for Apollo DomainOS was removed in Perl 5.11.0
2268
2269 =item MachTen
2270
2271 Support for Tenon Intersystems MachTen Unix layer for MacOS Classic was
2272 removed in Perl 5.11.0
2273
2274 =item MiNT
2275
2276 Support for Atari MiNT was removed in Perl 5.11.0.
2277
2278 =back
2279
2280 =head2 Updated Platforms
2281
2282 =over 4
2283
2284 =item Darwin (Mac OS X)
2285
2286 =over 4
2287
2288 =item *
2289
2290 Skip testing the be_BY.CP1131 locale on Darwin 10 (Mac OS X 10.6),
2291 as it's still buggy.
2292
2293 =item *
2294
2295 Correct infelicities in the regexp used to identify buggy locales
2296 on Darwin 8 and 9 (Mac OS X 10.4 and 10.5, respectively).
2297
2298 =back
2299
2300 =item DragonFly BSD
2301
2302 =over 4
2303
2304 =item *
2305
2306 Fix thread library selection [perl #69686]
2307
2308 =back
2309
2310 =item Win32
2311
2312 =over 4
2313
2314 =item *
2315
2316 Initial support for mingw64 is now available
2317
2318 =item *
2319
2320 Various bits of Perl's build infrastructure are no longer converted to
2321 win32 line endings at release time. If this hurts you, please report the
2322 problem with the L<perlbug> program included with perl.
2323
2324 =item *
2325
2326 Always add a manifest resource to C<perl.exe> to specify the C<trustInfo>
2327 settings for Windows Vista and later.  Without this setting Windows
2328 will treat C<perl.exe> as a legacy application and apply various
2329 heuristics like redirecting access to protected file system areas
2330 (like the "Program Files" folder) to the users "VirtualStore"
2331 instead of generating a proper "permission denied" error.
2332
2333 For VC8 and VC9 this manifest setting is automatically generated by
2334 the compiler/linker (together with the binding information for their
2335 respective runtime libraries); for all other compilers we need to
2336 embed the manifest resource explicitly in the external resource file.
2337
2338 This change also requests the Microsoft Common-Controls version 6.0
2339 (themed controls introduced in Windows XP) via the dependency list
2340 in the assembly manifest.  For VC8 and VC9 this is specified using the
2341 C</manifestdependency> linker commandline option instead.
2342
2343 =item *
2344
2345 Improved message window handling means that C<alarm> and C<kill> messages
2346 will no longer be dropped under race conditions.
2347
2348 =back
2349
2350 =item cygwin
2351
2352 =over 4
2353
2354 =item *
2355
2356 Enable IPv6 support on cygwin 1.7 and newer
2357
2358 =back
2359
2360 =item OpenVMS
2361
2362 =over 4
2363
2364 =item *
2365
2366 Make -UDEBUGGING the default on VMS for 5.12.0.
2367
2368 Like it has been everywhere else for ages and ages.  Also make
2369 command-line selection of -UDEBUGGING and -DDEBUGGING work in
2370 configure.com; before the only way to turn it off was by saying
2371 no in answer to the interactive question.
2372
2373 =item *
2374
2375 The default pipe buffer size on VMS has been updated to 8192 on 64-bit
2376 systems.
2377
2378 =item *
2379
2380 Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail
2381 if C<$/> was set to a numeric reference (to indicate record-style reads).
2382 This is now fixed.
2383
2384 =item *
2385
2386 VMS now supports C<getgrgid>.
2387
2388 =item *
2389
2390 Many improvements and cleanups have been made to the VMS file name handling
2391 and conversion code.
2392
2393 =item *
2394
2395 Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit
2396 status in a VMS condition value for better interaction with GNV's bash
2397 shell and other utilities that depend on POSIX exit values.  See
2398 L<perlvms/"$?"> for details.
2399
2400 =item *
2401
2402 C<File::Copy> now detects Unix compatibility mode on VMS.
2403
2404 =back
2405
2406 =item AIX
2407
2408 Removed F<libbsd> for AIX 5L and 6.1. Only C<flock()> was used from F<libbsd>.
2409
2410 Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
2411 optional package with the AIX Toolbox. Unfortunately the 64 bit version
2412 is broken.
2413
2414 Hints changes mean that AIX 4.2 should work again.
2415
2416 =item Cygwin
2417
2418 On Cygwin we now strip the last number from the DLL. This has been the
2419 behaviour in the cygwin.com build for years. The hints files have been
2420 updated.
2421
2422
2423 =item FreeBSD
2424
2425 The hints files now identify the correct threading libraries on FreeBSD 7
2426 and later.
2427
2428 =item Irix
2429
2430 We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
2431 C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
2432
2433 =item NetBSD
2434
2435 Hints now supports versions 5.*.
2436
2437 =item Stratus VOS
2438
2439 Various changes from Stratus have been merged in.
2440
2441 =item Symbian
2442
2443 There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
2444
2445 =back
2446
2447 =head1 Known Problems
2448
2449 This is a list of some significant unfixed bugs, which are regressions
2450 from either 5.10.0 or 5.8.x.
2451
2452 =over 4
2453
2454 =item *
2455
2456 C<List::Util::first> misbehaves in the presence of a lexical C<$_>
2457 (typically introduced by C<my $_> or implicitly by C<given>). The variable
2458 which gets set for each iteration is the package variable C<$_>, not the
2459 lexical C<$_> [RT #67694].
2460
2461 A similar issue may occur in other modules that provide functions which
2462 take a block as their first argument, like
2463
2464     foo { ... $_ ...} list
2465
2466 =item *
2467
2468 Some regexes may run much more slowly when run in a child thread compared
2469 with the thread the pattern was compiled into [RT #55600].
2470
2471 =item *
2472
2473 Untriaged test crashes on Windows 2000
2474
2475 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.
2476
2477 =item *
2478
2479 Known test failures on VMS
2480
2481 Perl 5.11.1 fails a small set of core and CPAN tests as of this release.
2482 With luck, that'll be sorted out for 5.11.2
2483
2484 =item *
2485
2486 Known test failures on VMS
2487
2488 Perl 5.11.2 fails a small set of core and CPAN tests as of this
2489 release. With luck, that'll be sorted out for 5.11.3.
2490
2491 =back
2492
2493 =head1 Acknowledgements
2494
2495 Perl 5.12.0 represents approximately two years of development since
2496 Perl 5.10.0 and contains __ lines of changes across ___ files
2497 from __ authors and committers:
2498
2499 XXX TODO LIST
2500
2501 Many of the changes included in this version originated in the CPAN
2502 modules included in Perl's core. We're grateful to the entire CPAN
2503 community for helping Perl to flourish.
2504
2505 =head1 Reporting Bugs
2506
2507 If you find what you think is a bug, you might check the articles
2508 recently posted to the comp.lang.perl.misc newsgroup and the perl
2509 bug database at L<http://rt.perl.org/perlbug/>.  There may also be
2510 information at L<http://www.perl.org/>, the Perl Home Page.
2511
2512 If you believe you have an unreported bug, please run the B<perlbug>
2513 program included with your release.  Be sure to trim your bug down
2514 to a tiny but sufficient test case.  Your bug report, along with the
2515 output of C<perl -V>, will be sent off to perlbug@perl.org to be
2516 analyzed by the Perl porting team.
2517
2518 If the bug you are reporting has security implications, which make it
2519 inappropriate to send to a publicly archived mailing list, then please send
2520 it to perl5-security-report@perl.org. This points to a closed subscription
2521 unarchived mailing list, which includes all the core committers, who be able
2522 to help assess the impact of issues, figure out a resolution, and help
2523 co-ordinate the release of patches to mitigate or fix the problem across all
2524 platforms on which Perl is supported. Please only use this address for
2525 security issues in the Perl core, not for modules independently
2526 distributed on CPAN.
2527
2528 =head1 SEE ALSO
2529
2530 The F<Changes> file for an explanation of how to view exhaustive details
2531 on what changed.
2532
2533 The F<INSTALL> file for how to build Perl.
2534
2535 The F<README> file for general stuff.
2536
2537 The F<Artistic> and F<Copying> files for copyright information.
2538
2539 =cut