This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ExtUtils::ParseXS changelog
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 527d644b124fe.
5
6 =head1 NAME
7
8 [ this is a template for a new perldelta file. Any text flagged as
9 XXX needs to be processed before release. ]
10
11 perldelta - what is new for perl v5.15.3
12
13 =head1 DESCRIPTION
14
15 This document describes differences between the 5.15.2 release and
16 the 5.15.3 release.
17
18 If you are upgrading from an earlier release such as 5.15.1, first read
19 L<perl5152delta>, which describes differences between 5.15.1 and
20 5.15.2.
21
22 =head1 Notice
23
24 XXX Any important notices here
25
26 =head1 Core Enhancements
27
28 XXX New core language features go here. Summarise user-visible core language
29 enhancements. Particularly prominent performance optimisations could go
30 here, but most should go in the L</Performance Enhancements> section.
31
32 [ List each enhancement as a =head2 entry ]
33
34 =head2 More CORE subs are callable through references
35
36 Perl 5.15.2 introduced subroutines in the CORE namespace.  Most of them
37 could only be called as barewords; i.e., they could be aliased at compile
38 time and then inlined under new names.
39
40 Almost all of these functions can now be called through references and via
41 C<&foo()> syntax, bypassing the prototype.  See L<CORE> for a list of the
42 exceptions.
43
44 =head1 Security
45
46 XXX Any security-related notices go here.  In particular, any security
47 vulnerabilities closed should be noted here rather than in the
48 L</Selected Bug Fixes> section.
49
50 [ List each security issue as a =head2 entry ]
51
52 =head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
53
54 Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would 
55 cause an access violation / segfault.  A Perl program that accepts a flags value from
56 an external source could expose itself to denial of service or arbitrary code
57 execution attacks.  There are no known exploits in the wild.  The problem has been
58 corrected by explicitly disabling all unsupported flags and setting unused function
59 pointers to null.  Bug reported by ClĂ©ment Lecigne.
60
61 =head1 Incompatible Changes
62
63 =head2 $[ has been removed
64
65 The array/string index offsetting mechanism, controlled by the C<$[> magic
66 variable, has been removed.  C<$[> now always reads as zero.  Writing a
67 zero to it is still permitted, but writing a non-zero value causes an
68 exception.  Those hopelessly addicted to FORTRAN-style 1-based indexing
69 may wish to use the module L<Array::Base>, which provides an independent
70 implementation of the index offsetting concept, or L<Classic::Perl>,
71 which allows L<Array::Base> to be controlled through assignment to C<$[>.
72
73 =head2 User-defined case changing operations.
74
75 This feature was deprecated in Perl 5.14, and has now been removed.
76 The CPAN module L<Unicode::Casing> provides better functionality without
77 the drawbacks that this feature had, as are detailed in the 5.14
78 documentation:
79 L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
80
81 =head2 XSUBs are now 'static'
82
83 XSUB C functions are now 'static', that is, they are not visible from
84 outside the compilation unit. For the exceedingly rare case where
85 this is not desired, a new public macro C<XS_EXTERNAL(name)> can be
86 used in place of C<XS(name)>. C<ExtUtils::ParseXS> (C<xsubpp>)
87 can be made to declare XSUBs with C<XS_EXTERNAL> using the
88 C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
89
90 =head1 Deprecations
91
92 XXX Any deprecated features, syntax, modules etc. should be listed here.
93 In particular, deprecated modules should be listed here even if they are
94 listed as an updated module in the L</Modules and Pragmata> section.
95
96 [ List each deprecation as a =head2 entry ]
97
98 =head1 Performance Enhancements
99
100 XXX Changes which enhance performance without changing behaviour go here. There
101 may well be none in a stable release.
102
103 [ List each enhancement as a =item entry ]
104
105 =over 4
106
107 =item *
108
109 XXX
110
111 =back
112
113 =head1 Modules and Pragmata
114
115 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
116 go here.  If Module::CoreList is updated, generate an initial draft of the
117 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
118 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
119 below.  A paragraph summary for important changes should then be added by hand.
120 In an ideal world, dual-life modules would have a F<Changes> file that could be
121 cribbed.
122
123 [ Within each section, list entries as a =item entry ]
124
125 =head2 New Modules and Pragmata
126
127 =over 4
128
129 =item *
130
131 XXX
132
133 =back
134
135 =head2 Updated Modules and Pragmata
136
137 =over 4
138
139 =item *
140
141 L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01.
142
143 This is only a minor documentation update.
144
145 =item *
146
147 L<Archive::Extract> has been upgraded from version 0.52 to version 0.56.
148
149 Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
150
151 =item *
152
153 L<Archive::Tar> has been upgraded from version 1.76 to version 1.78.
154
155 =item *
156
157 L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9110.
158
159 =item *
160
161 L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58.
162
163 =item *
164
165 L<Devel::PPPort> has been upgraded from version 3.19 to version 3.20.
166
167 =item *
168
169 L<diagnostics> has been upgraded from version 1.24 to version 1.25.
170
171 It now strips out C<SZ<><...>> formatting codes before displaying
172 descriptions [perl #94488].
173
174 =item *
175
176 L<Data::Dumper> has been upgraded from version 2.133 to version 2.134.
177
178 The XS code for sorting hash keys has been simplified slightly.
179
180 =item *
181
182 L<ExtUtils::ParseXS> has been upgraded from version 3.04_03 to version 3.04_04.
183
184 The handling of C<dVAR> in the generated XS code has been simplified.
185
186 =item *
187
188 L<Locale::Codes> has been upgraded from version 3.17 to version 3.18.
189
190 The CIA world added non-standard values, so this is no longer used as a source
191 of data.
192
193 =item *
194
195 L<File::Glob> has been upgraded from version 1.12 to version 1.13.
196
197 See L</Security>.
198
199 =item *
200
201 L<Filter::Simple> has been upgrade from version 0.87 to 0.88.
202
203 It is now better at detecting the end of a pod section.  It always checks
204 for =cut, instead of checking for =end (if the pod begins with =begin) or
205 the end of the paragraph (if the pod begins with =for) [perl #92436].
206
207 =item *
208
209 L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603.
210
211 C<int()> on a Math::BigRat object containing -1/2 now creates a
212 Math::BigInt containing 0, rather than -0.  L<Math::BigInt> does not even
213 support negative zero, so the resulting object was actually malformed
214 [perl #95530].
215
216 =item *
217
218 L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007.
219
220 =item *
221
222 L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46.
223
224 =item *
225
226 L<ODBM_File> has been upgraded from version 1.11 to version 1.12.
227
228 This is only a minor refactoring of the XS code to bring it closer to the
229 other C<?DBM_File> modules.
230
231 =item *
232
233 L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150033.
234
235 =item *
236
237 L<Pod::Simple> has been upgraded from version 3.18 to version 3.19.
238
239 =item *
240
241 L<POSIX> has been upgraded from version 1.24 to version 1.25.
242
243 L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this
244 implementation detail was buggy, and may fail as a result of this change.
245 The module's Perl code has been considerably simplified, roughly halving
246 the number of lines, with no change in functionality.
247
248 =item *
249
250 L<XSLoader> has been upgraded from version 0.15 to version 0.16.
251
252 =back
253
254 =head2 Removed Modules and Pragmata
255
256 =over 4
257
258 =item *
259
260 XXX
261
262 =back
263
264 =head1 Documentation
265
266 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
267 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
268
269 =head2 New Documentation
270
271 =head3 L<perlootut>
272
273 This a new OO tutorial. It focuses on basic OO concepts, and then recommends
274 that readers choose an OO framework from CPAN.
275
276 =head2 Changes to Existing Documentation
277
278 =head3 L<perlobj>
279
280 =over 4
281
282 =item *
283
284 This document has been rewritten from scratch, and its coverage of various OO
285 concepts has been expanded.
286
287 =back
288
289 =head2 Removed Documentation
290
291 =head3 Old OO Documentation
292
293 All the old OO tutorials, perltoot, perltooc, and perlboot, have been
294 removed. The perlbot (bag of object tricks) document has been removed as well.
295
296 =head1 Diagnostics
297
298 The following additions or changes have been made to diagnostic output,
299 including warnings and fatal error messages.  For the complete list of
300 diagnostic messages, see L<perldiag>.
301
302 XXX New or changed warnings emitted by the core's C<C> code go here. Also
303 include any changes in L<perldiag> that reconcile it to the C<C> code.
304
305 [ Within each section, list entries as a =item entry that links to perldiag,
306   e.g.
307
308   =item *
309
310   L<Invalid version object|perldiag/"Invalid version object">
311 ]
312
313 =head2 New Diagnostics
314
315 XXX Newly added diagnostic messages go here
316
317 =head3 New Errors
318
319 =over 4
320
321 =item *
322
323 XXX L<message|perldiag/"message">
324
325 =back
326
327 =head3 New Warnings
328
329 =over 4
330
331 =item *
332
333 XXX L<message|perldiag/"message">
334
335 =back
336
337 =head2 Changes to Existing Diagnostics
338
339 XXX Changes (i.e. rewording) of diagnostic messages go here
340
341 =over 4
342
343 =item *
344
345 XXX Describe change here
346
347 =back
348
349 =head1 Utility Changes
350
351 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
352 here. Most of these are built within the directories F<utils> and F<x2p>.
353
354 [ List utility changes as a =head3 entry for each utility and =item
355 entries for each change
356 Use L<XXX> with program names to get proper documentation linking. ]
357
358 =head3 L<XXX>
359
360 =over 4
361
362 =item *
363
364 XXX
365
366 =back
367
368 =head1 Configuration and Compilation
369
370 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
371 go here.  Any other changes to the Perl build process should be listed here.
372 However, any platform-specific changes should be listed in the
373 L</Platform Support> section, instead.
374
375 [ List changes as a =item entry ].
376
377 =over 4
378
379 =item *
380
381 The file F<global.sym> is no longer needed, and has been removed. It
382 contained a list of all exported functions, one of the files generated by
383 F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
384 has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
385 now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
386 store the list of exported functions in an intermediate file.
387
388 As F<global.sym> was never installed, this change will not be visible
389 outside the build process.
390
391 =back
392
393 =head1 Testing
394
395 XXX Any significant changes to the testing of a freshly built perl should be
396 listed here.  Changes which create B<new> files in F<t/> go here as do any
397 large changes to the testing harness (e.g. when parallel testing was added).
398 Changes to existing files in F<t/> aren't worth summarising, although the bugs
399 that they represent may be covered elsewhere.
400
401 [ List each test improvement as a =item entry ]
402
403 =over 4
404
405 =item *
406
407 F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
408 F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
409 previously was it was possible to inadvertently commit changes that worked
410 perfectly locally, but broke the build on Win32.
411
412 =item *
413
414 F<t/op/unlink.t> has been added to test the C<unlink> function.
415
416 =back
417
418 =head1 Platform Support
419
420 XXX Any changes to platform support should be listed in the sections below.
421
422 [ Within the sections, list each platform as a =item entry with specific
423 changes as paragraphs below it. ]
424
425 =head2 New Platforms
426
427 XXX List any platforms that this version of perl compiles on, that previous
428 versions did not. These will either be enabled by new files in the F<hints/>
429 directories, or new subdirectories and F<README> files at the top level of the
430 source tree.
431
432 =over 4
433
434 =item XXX-some-platform
435
436 XXX
437
438 =back
439
440 =head2 Discontinued Platforms
441
442 XXX List any platforms that this version of perl no longer compiles on.
443
444 =over 4
445
446 =item XXX-some-platform
447
448 XXX
449
450 =back
451
452 =head2 Platform-Specific Notes
453
454 XXX List any changes for specific platforms. This could include configuration
455 and compilation changes or changes in portability/compatibility.  However,
456 changes within modules for platforms should generally be listed in the
457 L</Modules and Pragmata> section.
458
459 =over 4
460
461 =item XXX-some-platform
462
463 XXX
464
465 =back
466
467 =head1 Internal Changes
468
469 XXX Changes which affect the interface available to C<XS> code go here.
470 Other significant internal changes for future core maintainers should
471 be noted as well.
472
473 [ List each change as a =item entry ]
474
475 =over 4
476
477 =item *
478
479 XXX
480
481 =back
482
483 =head1 Selected Bug Fixes
484
485 XXX Important bug fixes in the core language are summarised here.
486 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
487 L</Modules and Pragmata>.
488
489 [ List each fix as a =item entry ]
490
491 =over 4
492
493 =item *
494
495 In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
496 variable had not been used yet.  This has been fixed.
497
498 =item *
499
500 C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to
501 return true for most, but not all built-in variables, if
502 they had not been used yet.  Many times that new built-in
503 variables were added in past versions, this construct was
504 not taken into account, so this affected C<${^GLOBAL_PHASE}> and
505 C<${^UTF8CACHE}>, among others.  It also used to return false if the
506 package name was given as well (C<${"::!"}>) and for subroutines in the
507 CORE package [perl #97978] [perl #97492] [perl #97484].
508
509 =item *
510
511 Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
512 represents the name of a built-in global variable used to return false if
513 the variable had never been used before, but only on the I<first> call.
514 This, too, has been fixed.
515
516 =item *
517
518 Various functions that take a filehandle argument in rvalue context
519 (C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
520 was a tied variable, and warn twice, if it was C<undef> [perl #97482].
521
522 =item *
523
524 C<close> and similar filehandle functions, when called on built-in global
525 variables (like C<$+>), used to die if the variable happened to hold the
526 undefined value, instead of producing the usual "Use of uninitialized
527 value" warning.
528
529 =item *
530
531 When autovivified file handles were introduced in Perl 5.6.0, C<readline>
532 was inadvertently made to autovivify when called as C<readline($foo)> (but
533 not as C<< <$foo> >>).  It has now been fixed never to autovivify.
534
535 =item *
536
537 C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
538 now calls it just once.
539
540 =item *
541
542 Some cases of dereferencing a complex expression, such as
543 C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
544 it once.
545
546 =item *
547
548 For a tied variable returning a package name, C<< $tied->method >> used to
549 call C<FETCH> multiple times (even up to six!), and sometimes would
550 fail to call the method, due to memory corruption.
551
552 =item *
553
554 Calling an undefined anonymous subroutine (e.g., what $x holds after
555 C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
556 has been corrected to "Undefined subroutine called" [perl #71154].
557
558 =item *
559
560 Causing C<@DB::args> to be freed between uses of C<caller> no longer
561 results in a crash [perl #93320].
562
563 =item *
564
565 Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
566 values.  It would die in strict mode or lvalue context for most undefined
567 values, but would be treated as the empty string (with a warning) for the
568 specific scalar return by C<undef()> (C<&PL_sv_undef> internally).  This
569 has been corrected.  C<undef()> is now treated like other undefined
570 scalars, as in Perl 5.005.
571
572 =item *
573
574 It used to be possible to free the typeglob of a localised array or hash
575 (e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
576
577 =item *
578
579 C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
580 C<setpgrp> was ignoring its argument if there was just one.  Now it is
581 equivalent to C<setpgrp($foo,0)>.
582
583 =item *
584
585 Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH
586 only once.
587
588 =item *
589
590 C<chdir>, C<chmod> and C<chown> now always call FETCH if passed a tied
591 variable as the last argument.  They used to ignore tiedness if the last
592 thing return from or assigned to the variable was a typeglob or reference
593 to a typeglob.
594
595 =back
596
597 =head1 Known Problems
598
599 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
600 tests that had to be C<TODO>ed for the release would be noted here, unless
601 they were specific to a particular platform (see below).
602
603 This is a list of some significant unfixed bugs, which are regressions
604 from either 5.XXX.XXX or 5.XXX.XXX.
605
606 [ List each fix as a =item entry ]
607
608 =over 4
609
610 =item *
611
612 XXX
613
614 =back
615
616 =head1 Obituary
617
618 XXX If any significant core contributor has died, we've added a short obituary
619 here.
620
621 =head1 Acknowledgements
622
623 XXX Generate this with:
624
625   perl Porting/acknowledgements.pl v5.15.2..HEAD
626
627 =head1 Reporting Bugs
628
629 If you find what you think is a bug, you might check the articles
630 recently posted to the comp.lang.perl.misc newsgroup and the perl
631 bug database at http://rt.perl.org/perlbug/ .  There may also be
632 information at http://www.perl.org/ , the Perl Home Page.
633
634 If you believe you have an unreported bug, please run the L<perlbug>
635 program included with your release.  Be sure to trim your bug down
636 to a tiny but sufficient test case.  Your bug report, along with the
637 output of C<perl -V>, will be sent off to perlbug@perl.org to be
638 analysed by the Perl porting team.
639
640 If the bug you are reporting has security implications, which make it
641 inappropriate to send to a publicly archived mailing list, then please send
642 it to perl5-security-report@perl.org. This points to a closed subscription
643 unarchived mailing list, which includes
644 all the core committers, who will be able
645 to help assess the impact of issues, figure out a resolution, and help
646 co-ordinate the release of patches to mitigate or fix the problem across all
647 platforms on which Perl is supported. Please only use this address for
648 security issues in the Perl core, not for modules independently
649 distributed on CPAN.
650
651 =head1 SEE ALSO
652
653 The F<Changes> file for an explanation of how to view exhaustive details
654 on what changed.
655
656 The F<INSTALL> file for how to build Perl.
657
658 The F<README> file for general stuff.
659
660 The F<Artistic> and F<Copying> files for copyright information.
661
662 =cut