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