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