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