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