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