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