This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Removed the superfluous META.yml from Module-CoreList
[perl5.git] / pod / perldelta.pod
CommitLineData
4c793fe3
FR
1=encoding utf8
2
3=head1 NAME
4
4c793fe3
FR
5perldelta - what is new for perl v5.13.5
6
7=head1 DESCRIPTION
8
9This document describes differences between the 5.13.4 release and
10the 5.13.5 release.
11
12If you are upgrading from an earlier release such as 5.13.3, first read
13L<perl5134delta>, which describes differences between 5.13.3 and
145.13.4.
15
4c793fe3
FR
16=head1 Core Enhancements
17
0c692eed
FR
18=head2 Adjacent pairs of nextstate opcodes are now optimized away
19
20Previously, in code such as
21
22 use constant DEBUG => 0;
23
24 sub GAK {
25 warn if DEBUG;
26 print "stuff\n";
27 }
28
29the ops for C<warn if DEBUG;> would be folded to a C<null> op (C<ex-const>), but
30the C<nextstate> op would remain, resulting in a runtime op dispatch of
31C<nextstate>, C<nextstate>, ...
32
7bc3efda
SH
33The execution of a sequence of C<nextstate> ops is indistinguishable from just
34the last C<nextstate> op so the peephole optimizer now eliminates the first of
35a pair of C<nextstate> ops, except where the first carries a label, since labels
36must not be eliminated by the optimizer and label usage isn't conclusively known
37at compile time.
4c793fe3 38
85318b69
FR
39=head2 API function to parse statements
40
41The C<parse_fullstmt> function has been added to allow parsing of a single
7bc3efda 42complete Perl statement. See L<perlapi> for details.
85318b69
FR
43
44=head2 API functions for accessing the runtime hinthash
45
7bc3efda
SH
46A new C API for introspecting the hinthash C<%^H> at runtime has been added.
47See C<cop_hints_2hv>, C<cop_hints_fetchpvn>, C<cop_hints_fetchpvs>,
78846812 48C<cop_hints_fetchsv>, and C<hv_copy_hints_hv> in L<perlapi> for details.
85318b69
FR
49
50=head2 C interface to C<caller()>
51
52The C<caller_cx> function has been added as an XSUB-writer's equivalent of
7bc3efda 53C<caller()>. See L<perlapi> for details.
4c793fe3
FR
54
55=head1 Incompatible Changes
56
7bc3efda 57=head2 Magic variables outside the main package
44428a46 58
7bc3efda
SH
59In previous versions of Perl, magic variables like C<$!>, C<%SIG>, etc. would
60'leak' into other packages. So C<%foo::SIG> could be used to access signals,
44428a46
FC
61C<${"foo::!"}> (with strict mode off) to access C's C<errno>, etc.
62
7bc3efda
SH
63This was a bug, or an 'unintentional' feature, which caused various ill effects,
64such as signal handlers being wiped when modules were loaded, etc.
44428a46 65
7bc3efda
SH
66This has been fixed (or the feature has been removed, depending on how you see
67it).
44428a46 68
85318b69
FR
69=head2 Smart-matching against array slices
70
71Previously, the following code resulted in a successful match:
72
73 my @a = qw(a y0 z);
74 my @b = qw(a x0 z);
75 $a[0 .. $#b] ~~ @b;
76
ebce6c40
FR
77This odd behaviour has now been fixed
78L<[perl #77468]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=77468>.
85318b69 79
d6747b7a 80=head2 C API changes
4c793fe3 81
d6747b7a
NC
82The first argument of the C API function C<Perl_fetch_cop_label> has changed
83from C<struct refcounted he *> to C<COP *>, to better insulate the user from
84implementation details.
4c793fe3 85
d6747b7a 86This API function was marked as "may change", and likely isn't in use outside
7bc3efda 87the core. (Neither an unpacked CPAN, nor Google's codesearch, finds any other
d6747b7a 88references to it.)
4c793fe3
FR
89
90=head1 Deprecations
91
85318b69
FR
92=head2 Use of qw(...) as parentheses
93
94Historically the parser fooled itself into thinking that C<qw(...)> literals
95were always enclosed in parentheses, and as a result you could sometimes omit
96parentheses around them:
97
98 for $x qw(a b c) { ... }
99
100The parser no longer lies to itself in this way. Wrap the list literal in
101parentheses, like:
102
103 for $x (qw(a b c)) { ... }
4c793fe3
FR
104
105=head1 Performance Enhancements
106
4c793fe3
FR
107=over 4
108
109=item *
110
0c692eed
FR
111Scalars containing regular expressions now only allocate the part of the C<SV>
112body they actually use, saving some space.
4c793fe3 113
e2babdfb
FR
114=item *
115
116Compiling regular expressions has been made faster for the case where upgrading
7bc3efda 117the regex to utf8 is necessary but that isn't known when the compilation begins.
e2babdfb 118
4c793fe3
FR
119=back
120
121=head1 Modules and Pragmata
122
4c793fe3
FR
123=head2 Updated Modules and Pragmata
124
125=over 4
126
fc1418b7 127=item C<bignum>
4c793fe3 128
7bc3efda 129Upgraded from version 0.23 to 0.25.
8ebb9810 130
7bc3efda 131=item C<blib>
8ebb9810 132
7bc3efda 133Upgraded from version 1.05 to 1.06.
b3364d98 134
7bc3efda 135=item C<open>
b3364d98 136
7bc3efda 137Upgraded from version 1.07 to 1.08.
5355f933 138
fc1418b7 139=item C<threads-shared>
7bc3efda 140
fc1418b7 141Upgraded from version 1.33_02 to 1.33_03.
5355f933 142
fc1418b7 143=item C<warnings> and C<warnings::register>
4997ece7 144
fc1418b7 145Upgraded from version 1.10 to 1.11 and from version 1.01 to 1.02 respectively.
4997ece7
FR
146
147It is now possible to register warning categories other than the names of
ebce6c40 148packages using C<warnings::register>. See L<perllexwarn> for more information.
4997ece7 149
7bc3efda 150=item C<B::Debug>
4997ece7 151
7bc3efda 152Upgraded from version 1.12 to 1.16.
df91fef1 153
fc1418b7
SH
154=item C<CPANPLUS::Dist::Build>
155
156Upgraded from version 0.46 to 0.48.
157
7bc3efda 158=item C<Data::Dumper>
df91fef1 159
7bc3efda 160Upgraded from version 2.126 to 2.128.
ccb45ef4
FR
161
162This fixes a crash when using custom sort functions that might cause the stack
163to change.
164
7bc3efda 165=item C<Encode>
ccb45ef4 166
7bc3efda 167Upgraded from version 2.39 to 2.40.
fb37c85c 168
7bc3efda 169=item C<Errno>
fb37c85c 170
7bc3efda 171Upgraded from version 1.12 to 1.13.
48c1efd2
FR
172
173On some platforms with unusual header files, like Win32/gcc using mingw64
174headers, some constants which weren't actually error numbers have been exposed
7bc3efda 175by C<Errno>. This has been fixed
ebce6c40 176L<[perl #77416]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=77416>.
48c1efd2 177
7bc3efda 178=item C<ExtUtils::MakeMaker>
48c1efd2 179
fc1418b7 180Upgraded from version 6.5601 to 6.57_05.
0c692eed 181
7bc3efda 182=item C<Filter::Simple>
0c692eed 183
7bc3efda 184Upgraded from version 0.84 to 0.85.
b3364d98 185
7bc3efda 186=item C<Hash::Util>
b3364d98 187
7bc3efda 188Upgraded from version 0.08 to 0.09.
78846812 189
fc1418b7 190=item C<Math::BigInt>
78846812 191
fc1418b7 192Upgraded from version 1.89_01 to 1.95.
48c1efd2 193
a714e9cc 194This fixes, among other things, incorrect results when computing binomial
ebce6c40
FR
195coefficients
196L<[perl #77640]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77640>.
48c1efd2 197
7bc3efda 198=item C<Math::BigInt::FastCalc>
48c1efd2 199
7bc3efda 200Upgraded from version 0.19 to 0.22.
b3364d98 201
7bc3efda 202=item C<Math::BigRat>
b3364d98 203
7bc3efda 204Upgraded from version 0.24 to 0.26.
07d14be5 205
7bc3efda 206=item C<Module::CoreList>
07d14be5 207
7bc3efda 208Upgraded from version 2.37 to 2.38.
85318b69 209
fc1418b7
SH
210=item C<PerlIO::scalar>
211
212Upgraded from version 0.08 to 0.09.
213
7bc3efda 214=item C<POSIX>
85318b69 215
7bc3efda 216Upgraded from version 1.19 to 1.20.
df91fef1
FR
217
218It now includes constants for POSIX signal constants.
219
7bc3efda 220=item C<Safe>
df91fef1 221
7bc3efda 222Upgraded from version 2.27 to 2.28.
e2babdfb
FR
223
224This fixes a possible infinite loop when looking for coderefs.
225
fc1418b7
SH
226=item C<Test::Simple>
227
228Upgraded from version 0.96 to 0.97_01.
229
7bc3efda 230=item C<Tie::Hash>
e2babdfb 231
7bc3efda 232Upgraded from version 1.03 to 1.04.
c9a84c8b 233
7bc3efda 234Calling C<< Tie::Hash-E<gt>TIEHASH() >> used to loop forever. Now it C<croak>s.
c9a84c8b 235
7bc3efda 236=item C<Unicode::Collate>
c9a84c8b 237
7bc3efda 238Upgraded from version 0.56 to 0.59.
4c793fe3 239
7bc3efda 240=item C<XSLoader>
48c1efd2 241
7bc3efda 242Upgraded from version 0.10 to 0.11.
4c793fe3
FR
243
244=back
245
246=head1 Documentation
247
4c793fe3
FR
248=head2 Changes to Existing Documentation
249
0c692eed 250=head3 L<perlapi>
4c793fe3
FR
251
252=over 4
253
254=item *
255
0c692eed 256Many of the optree construction functions are now documented.
4c793fe3
FR
257
258=back
259
fc1418b7
SH
260=head3 L<perlbook>
261
262=over 4
263
264=item *
265
266Expanded to cover many more popular books.
267
268=back
269
e2babdfb
FR
270=head3 L<perlfaq>
271
7bc3efda
SH
272=over 4
273
274=item *
275
e2babdfb 276L<perlfaq>, L<perlfaq2>, L<perlfaq4>, L<perlfaq5>, L<perlfaq6>, L<perlfaq8>, and
7bc3efda
SH
277L<perlfaq9> have seen various updates and modernizations.
278
279=back
e2babdfb 280
4c793fe3
FR
281=head1 Diagnostics
282
283The following additions or changes have been made to diagnostic output,
284including warnings and fatal error messages. For the complete list of
285diagnostic messages, see L<perldiag>.
286
4c793fe3
FR
287=head2 New Diagnostics
288
4c793fe3
FR
289=over 4
290
291=item *
292
fc1418b7
SH
293Parsing code internal error (%s)
294
295New fatal error produced when parsing code supplied by an extension violated the
296parser's API in a detectable way.
297
298=item *
299
85318b69 300Use of qw(...) as parentheses is deprecated
4c793fe3 301
ebce6c40
FR
302See L</"Use of qw(...) as parentheses"> for details.
303
4c793fe3
FR
304=back
305
4c793fe3
FR
306=head1 Utility Changes
307
48c1efd2 308=head3 L<h2ph>
4c793fe3
FR
309
310=over 4
311
312=item *
313
ebce6c40
FR
314The use of a deprecated C<goto> construct has been removed
315L<[perl #74404]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=74404>.
4c793fe3
FR
316
317=back
318
4c793fe3
FR
319=head1 Testing
320
4c793fe3
FR
321=over 4
322
323=item *
324
fc1418b7
SH
325The new F<t/lib/universal.t> script tests the Internal::* functions and other
326things in F<universal.c>.
327
328=item *
329
0c692eed
FR
330A rare race condition in F<t/op/while_readdir.t> has been fixed, stopping it
331from failing randomly when running tests in parallel.
4c793fe3 332
44428a46
FC
333=item *
334
335The new F<t/op/leaky-magic.t> script tests that magic applied to variables in
336the main packages does not affect other packages.
337
4c793fe3
FR
338=back
339
340=head1 Platform Support
341
4c793fe3
FR
342=head2 Platform-Specific Notes
343
4c793fe3
FR
344=over 4
345
0c692eed 346=item VMS
4c793fe3 347
0c692eed
FR
348=over 4
349
350=item *
351
7bc3efda 352Make C<PerlIOUnix_open> honour default permissions on VMS.
0c692eed 353
ebce6c40
FR
354When C<perlio> became the default and C<unixio> became the default bottom layer,
355the most common path for creating files from Perl became C<PerlIOUnix_open>,
356which has always explicitly used C<0666> as the permission mask.
0c692eed 357
7bc3efda
SH
358To avoid this, C<0777> is now passed as the permissions to C<open()>. In the
359VMS CRTL, C<0777> has a special meaning over and above intersecting with the
360current umask; specifically, it allows Unix syscalls to preserve native default
0c692eed
FR
361permissions.
362
363=back
4c793fe3
FR
364
365=back
366
367=head1 Internal Changes
368
4c793fe3
FR
369=over 4
370
371=item *
372
ebce6c40 373C<CALL_FPTR> and C<CPERLscope> have been deprecated.
0c692eed
FR
374
375Those are left from an old implementation of C<MULTIPLICITY> using C++ objects,
7bc3efda
SH
376which was removed in Perl 5.8. Nowadays these macros do exactly nothing, so
377they shouldn't be used anymore.
0c692eed 378
7bc3efda 379For compatibility, they are still defined for external C<XS> code. Only
0c692eed
FR
380extensions defining C<PERL_CORE> must be updated now.
381
382=item *
383
384C<lex_stuff_pvs()> has been added as a convenience macro wrapping
385C<lex_stuff_pvn()> for literal strings.
386
387=item *
388
7bc3efda 389The recursive part of the peephole optimizer is now hookable.
0c692eed
FR
390
391In addition to C<PL_peepp>, for hooking into the toplevel peephole optimizer, a
392C<PL_rpeepp> is now available to hook into the optimizer recursing into
393side-chains of the optree.
4c793fe3
FR
394
395=back
396
397=head1 Selected Bug Fixes
398
4c793fe3
FR
399=over 4
400
401=item *
402
7bc3efda 403A regression introduced in Perl 5.12.0, making
0c692eed 404C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been
7bc3efda 405fixed. C<$x> will now be C<undef>.
0c692eed
FR
406
407=item *
408
409A fatal error in regular expressions when processing UTF-8 data has been fixed
ebce6c40 410L<[perl #75680]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75680>.
0c692eed
FR
411
412=item *
413
7bc3efda
SH
414An erroneous regular expression engine optimization that caused regex verbs like
415C<*COMMIT> to sometimes be ignored has been removed.
0c692eed
FR
416
417=item *
418
7bc3efda 419The Perl debugger now also works in taint mode
ebce6c40 420L<[perl #76872]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76872>.
4c793fe3 421
8ebb9810
FR
422=item *
423
7bc3efda 424Several memory leaks in cloning and freeing threaded Perl interpreters have been
ebce6c40 425fixed L<[perl #77352]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77352>.
8ebb9810 426
48c1efd2
FR
427=item *
428
429A possible string corruption when doing regular expression matches on overloaded
ebce6c40
FR
430objects has been fixed
431L<[perl #77084]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77084>.
48c1efd2 432
44428a46
FC
433=item *
434
7bc3efda
SH
435Magic applied to variables in the main package no longer affects other packages.
436See L</Magic variables outside the main package> above
ebce6c40 437L<[perl #76138]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76138>.
44428a46 438
f4beb78f
FC
439=item *
440
7bc3efda
SH
441Opening a glob reference via C<< open $fh, "E<gt>", \*glob >> will no longer
442cause the glob to be corrupted when the filehandle is printed to. This would
443cause perl to crash whenever the glob's contents were accessed
ebce6c40 444L<[perl #77492]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77492>.
f4beb78f 445
ccb45ef4
FR
446=item *
447
7bc3efda
SH
448The postincrement and postdecrement operators, C<++> and C<-->, used to cause
449leaks when being used on references. This has now been fixed.
ccb45ef4 450
85318b69
FR
451=item *
452
ebce6c40 453A bug when replacing the glob of a loop variable within the loop has been fixed
7bc3efda 454L<[perl #21469]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=21469>. This
ebce6c40 455means the following code will no longer crash:
85318b69
FR
456
457 for $x (...) {
458 *x = *y;
459 }
460
80b6a949
AB
461=item *
462
7bc3efda
SH
463Perl would segfault if the undocumented C<Internals> functions that used
464reference prototypes were called with the C<&foo()> syntax, e.g.
465C<&Internals::SvREADONLY(undef)>
ebce6c40 466L<[perl #77776]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77776>.
80b6a949 467
7bc3efda
SH
468These functions now call C<SvROK> on their arguments before dereferencing them
469with C<SvRV>, and we test for this case in F<t/lib/universal.t>.
80b6a949 470
e2babdfb
FR
471=item *
472
473When assigning a list with duplicated keys to a hash, the assignment used to
474return garbage and/or freed values:
475
7bc3efda 476 @a = %h = (list with some duplicate keys);
e2babdfb 477
7bc3efda
SH
478This has now been fixed
479L<[perl #31865]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=31865>.
e2babdfb
FR
480
481=item *
482
7bc3efda 483An earlier release of the 5.13 series of Perl changed the semantics of opening a
e2babdfb
FR
484reference to a copy of a glob:
485
486 my $var = *STDOUT;
487 open my $fh, '>', \$var;
488
7bc3efda 489This was a mistake, and the previous behaviour from Perl 5.10 and 5.12, which is
e2babdfb
FR
490to treat \$var as a scalar reference, has now been restored.
491
346e4e56
KW
492=item *
493
7bc3efda
SH
494The regular expression bracketed character class C<[\8\9]> was effectively the
495same as C<[89\000]>, incorrectly matching a NULL character. It also gave
496incorrect warnings that the C<8> and C<9> were ignored. Now C<[\8\9]> is the
497same as C<[89]> and gives legitimate warnings that C<\8> and C<\9> are
498unrecognized escape sequences, passed-through.
346e4e56 499
78846812
FR
500=item *
501
ebce6c40
FR
502C<warn()> now respects utf8-encoded scalars
503L<[perl #45549]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=45549>.
78846812 504
4c793fe3
FR
505=back
506
962fbe1d
SH
507=head1 Known Problems
508
509=over 4
510
511=item *
512
513The upgrade to Encode-2.40 has caused some tests in the libwww-perl distribution
514on CPAN to fail. (Specifically, F<base/message-charset.t> tests 33-36 in version
08d032c0
SH
5155.836 of that distribution now fail.)
516
517=item *
518
519The upgrade to ExtUtils-MakeMaker-6.57_05 has caused some tests in the
520Module-Install distribution on CPAN to fail. (Specifically, F<02_mymeta.t> tests
5215 and 21, F<18_all_from.t> tests 6 and 15, F<19_authors.t> tests 5, 13, 21 and
52229, and F<20_authors_with_special_characters.t> tests 6, 15 and 23 in version
5231.00 of that distribution now fail.)
962fbe1d
SH
524
525=back
526
4c793fe3
FR
527=head1 Acknowledgements
528
0195fb5f
SH
529Perl 5.13.5 represents approximately one month of development since
530Perl 5.13.4 and contains 74558 lines of changes across 549 files
531from 45 authors and committers:
532
533Abigail, Alexander Alekseev, Aristotle Pagaltzis, Ben Morrow, Bram, brian d foy,
534Chas. Owens, Chris 'BinGOs' Williams, Craig A. Berry, Curtis Jewell, Dagfinn
535Ilmari Mannsåker, David Golden, David Leadbeater, David Mitchell, Eric Brine,
536Father Chrysostomos, Florian Ragwitz, Gisle Aas, Jan Dubois, Jerry D. Hedden,
537Jesse Vincent, Jim Cromie, Jirka Hruška, Karl Williamson, Michael G. Schwern,
538Nicholas Clark, Paul Johnson, Philippe Bruhat (BooK), Piotr Fusik, Rafael
539Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Rob Hoelz, Robin
540Barker, Steffen Mueller, Steve Hay, Steve Peters, Todd Rinaldo, Tony Cook,
541Vincent Pit, Yves Orton, Zefram, Zsbán Ambrus, Ævar Arnfjörð Bjarmason.
542
543Many of the changes included in this version originated in the CPAN
544modules included in Perl's core. We're grateful to the entire CPAN
545community for helping Perl to flourish.
4c793fe3
FR
546
547=head1 Reporting Bugs
548
549If you find what you think is a bug, you might check the articles
550recently posted to the comp.lang.perl.misc newsgroup and the perl
551bug database at http://rt.perl.org/perlbug/ . There may also be
552information at http://www.perl.org/ , the Perl Home Page.
553
554If you believe you have an unreported bug, please run the B<perlbug>
555program included with your release. Be sure to trim your bug down
556to a tiny but sufficient test case. Your bug report, along with the
557output of C<perl -V>, will be sent off to perlbug@perl.org to be
558analysed by the Perl porting team.
559
560If the bug you are reporting has security implications, which make it
561inappropriate to send to a publicly archived mailing list, then please send
7bc3efda 562it to perl5-security-report@perl.org. This points to a closed subscription
4c793fe3
FR
563unarchived mailing list, which includes all the core committers, who be able
564to help assess the impact of issues, figure out a resolution, and help
565co-ordinate the release of patches to mitigate or fix the problem across all
7bc3efda 566platforms on which Perl is supported. Please only use this address for
4c793fe3
FR
567security issues in the Perl core, not for modules independently
568distributed on CPAN.
569
570=head1 SEE ALSO
571
572The F<Changes> file for an explanation of how to view exhaustive details
573on what changed.
574
575The F<INSTALL> file for how to build Perl.
576
577The F<README> file for general stuff.
578
579The F<Artistic> and F<Copying> files for copyright information.
580
581=cut