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