This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade Win32 from version 0.48 to 0.49
[perl5.git] / pod / perldelta.pod
1 =for todo
2
3 b51c3e77db (craigb) - Reduce excessive stat calls in glob on VMS
4 869747506f/00051dd553 (merijn) - gcc 4.9 by default does some optimizations that break perl / -fwrapv is broken prior to gcc-4.3 (#121505)
5 fc6f6f37f8 (craigb) - Make perlbug encoding-agnostic in handling prepared reports.
6 7e6b9e3a66 (craigb) - Attempt to satisfy CRLF expectations in perlbug on Windows.
7
8 =encoding utf8
9
10 =head1 NAME
11
12 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
13 to be processed before release. ]
14
15 perldelta - what is new for perl v5.19.11
16
17 =head1 DESCRIPTION
18
19 This document describes differences between the 5.19.10 release and the 5.19.11
20 release.
21
22 If you are upgrading from an earlier release such as 5.19.9, first read
23 L<perl51910delta>, which describes differences between 5.19.9 and 5.19.10.
24
25 =head1 Notice
26
27 XXX Any important notices here
28
29 =head1 Core Enhancements
30
31 XXX New core language features go here.  Summarize user-visible core language
32 enhancements.  Particularly prominent performance optimisations could go
33 here, but most should go in the L</Performance Enhancements> section.
34
35 [ List each enhancement as a =head2 entry ]
36
37 =head1 Security
38
39 XXX Any security-related notices go here.  In particular, any security
40 vulnerabilities closed should be noted here rather than in the
41 L</Selected Bug Fixes> section.
42
43 [ List each security issue as a =head2 entry ]
44
45 =head1 Incompatible Changes
46
47 XXX For a release on a stable branch, this section aspires to be:
48
49     There are no changes intentionally incompatible with 5.XXX.XXX
50     If any exist, they are bugs, and we request that you submit a
51     report.  See L</Reporting Bugs> below.
52
53 [ List each incompatible change as a =head2 entry ]
54
55 =head1 Deprecations
56
57 XXX Any deprecated features, syntax, modules etc. should be listed here.
58
59 =head2 Module removals
60
61 XXX Remove this section if inapplicable.
62
63 The following modules will be removed from the core distribution in a
64 future release, and will at that time need to be installed from CPAN.
65 Distributions on CPAN which require these modules will need to list them as
66 prerequisites.
67
68 The core versions of these modules will now issue C<"deprecated">-category
69 warnings to alert you to this fact.  To silence these deprecation warnings,
70 install the modules in question from CPAN.
71
72 Note that these are (with rare exceptions) fine modules that you are encouraged
73 to continue to use.  Their disinclusion from core primarily hinges on their
74 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
75 not usually on concerns over their design.
76
77 =over
78
79 =item XXX
80
81 XXX Note that deprecated modules should be listed here even if they are listed
82 as an updated module in the L</Modules and Pragmata> section.
83
84 =back
85
86 [ List each other deprecation as a =head2 entry ]
87
88 =head1 Performance Enhancements
89
90 XXX Changes which enhance performance without changing behaviour go here.
91 There 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>.  A paragraph summary
108 for important changes should then be added by hand.  In an ideal world,
109 dual-life modules would have a F<Changes> file that could be cribbed.
110
111 [ Within each section, list entries as a =item entry ]
112
113 =head2 New Modules and Pragmata
114
115 =over 4
116
117 =item *
118
119 XXX
120
121 =back
122
123 =head2 Updated Modules and Pragmata
124
125 =over 4
126
127 =item *
128
129 L<Carp> has been upgraded from version 1.33 to 1.3301.
130
131 No changes have been made to the installed code other than the version bump to
132 keep in sync with the latest CPAN release.
133
134 =item *
135
136 L<CPAN> has been upgraded from version 2.04-TRIAL to 2.05-TRIAL.
137
138 TODO
139
140 =item *
141
142 L<DB> has been upgraded from version 1.43 to 1.44.
143
144 The debugger now correctly restores its input and output filehandles after
145 using the pager command.
146 [L<perl #121456|https://rt.perl.org/Public/Bug/Display.html?id=121456>]
147
148 =item *
149
150 L<ExtUtils::Install> has been upgraded from version 1.63 to 1.64.
151
152 When upgrading an already-installed file, L<ExtUtils::Install> could mess up
153 the permissions of files if the old versions of files were hard or symbolic
154 links.  This has now been fixed.
155 [L<perl #72028|https://rt.perl.org/Public/Bug/Display.html?id=72028>]
156
157 The MM_TEST_ROOT feature has been removed from the tests.
158
159 =item *
160
161 L<ExtUtils::MakeMaker> has been upgraded from version 6.92 to 6.94.
162
163 A regression in MM_Unix.pm has been resolved.
164 [L<#96|https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/issues/96>]
165
166 =item *
167
168 L<Module::CoreList> has been upgraded from version 3.09 to 3.10.
169
170 The list of Perl versions covered has been updated.
171
172 =item *
173
174 L<PerlIO> has been upgraded from version 1.08 to 1.09.
175
176 The warning about the use of the C<:utf8> layer has been made more prominent.
177
178 =item *
179
180 L<Storable> has been upgraded from version 2.48 to 2.49.
181
182 Recognition of tied SVs has been tightened up.
183
184 =item *
185
186 L<Win32> has been upgraded from version 0.48 to 0.49.
187
188 This fixes a problem when building with B<gcc> version 4.8.1 from
189 L<http://www.mingw.org>.
190 [L<cpan #94730|https://rt.cpan.org/Public/Bug/Display.html?id=94730>]
191
192 =back
193
194 =head2 Removed Modules and Pragmata
195
196 =over 4
197
198 =item *
199
200 XXX
201
202 =back
203
204 =head1 Documentation
205
206 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
207 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
208
209 =head2 New Documentation
210
211 XXX Changes which create B<new> files in F<pod/> go here.
212
213 =head3 L<XXX>
214
215 XXX Description of the purpose of the new file here
216
217 =head2 Changes to Existing Documentation
218
219 XXX Changes which significantly change existing files in F<pod/> go here.
220 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
221 section.
222
223 =head3 L<XXX>
224
225 =over 4
226
227 =item *
228
229 XXX Description of the change here
230
231 =back
232
233 =head1 Diagnostics
234
235 The following additions or changes have been made to diagnostic output,
236 including warnings and fatal error messages.  For the complete list of
237 diagnostic messages, see L<perldiag>.
238
239 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
240 include any changes in L<perldiag> that reconcile it to the C<C> code.
241
242 =head2 New Diagnostics
243
244 XXX Newly added diagnostic messages go under here, separated into New Errors
245 and New Warnings
246
247 =head3 New Errors
248
249 =over 4
250
251 =item *
252
253 XXX L<message|perldiag/"message">
254
255 =back
256
257 =head3 New Warnings
258
259 =over 4
260
261 =item *
262
263 XXX L<message|perldiag/"message">
264
265 =back
266
267 =head2 Changes to Existing Diagnostics
268
269 XXX Changes (i.e. rewording) of diagnostic messages go here
270
271 =over 4
272
273 =item *
274
275 The now fatal error message C<Character following "\c" must be ASCII> has been
276 reworded as C<Character following "\c" must be printable ASCII> to emphasize
277 that in C<\cI<X>>, I<X> must be a I<printable (non-control)> ASCII character.
278
279 =back
280
281 =head1 Utility Changes
282
283 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
284 Most of these are built within the directories F<utils> and F<x2p>.
285
286 [ List utility changes as a =head3 entry for each utility and =item
287 entries for each change
288 Use L<XXX> with program names to get proper documentation linking. ]
289
290 =head3 L<XXX>
291
292 =over 4
293
294 =item *
295
296 XXX
297
298 =back
299
300 =head1 Configuration and Compilation
301
302 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
303 go here.  Any other changes to the Perl build process should be listed here.
304 However, any platform-specific changes should be listed in the
305 L</Platform Support> section, instead.
306
307 [ List changes as a =item entry ].
308
309 =over 4
310
311 =item *
312
313 XXX
314
315 =back
316
317 =head1 Testing
318
319 XXX Any significant changes to the testing of a freshly built perl should be
320 listed here.  Changes which create B<new> files in F<t/> go here as do any
321 large changes to the testing harness (e.g. when parallel testing was added).
322 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
323 that they represent may be covered elsewhere.
324
325 [ List each test improvement as a =item entry ]
326
327 =over 4
328
329 =item *
330
331 XXX
332
333 =back
334
335 =head1 Platform Support
336
337 XXX Any changes to platform support should be listed in the sections below.
338
339 [ Within the sections, list each platform as a =item entry with specific
340 changes as paragraphs below it. ]
341
342 =head2 New Platforms
343
344 XXX List any platforms that this version of perl compiles on, that previous
345 versions did not.  These will either be enabled by new files in the F<hints/>
346 directories, or new subdirectories and F<README> files at the top level of the
347 source tree.
348
349 =over 4
350
351 =item XXX-some-platform
352
353 XXX
354
355 =back
356
357 =head2 Discontinued Platforms
358
359 XXX List any platforms that this version of perl no longer compiles on.
360
361 =over 4
362
363 =item XXX-some-platform
364
365 XXX
366
367 =back
368
369 =head2 Platform-Specific Notes
370
371 XXX List any changes for specific platforms.  This could include configuration
372 and compilation changes or changes in portability/compatibility.  However,
373 changes within modules for platforms should generally be listed in the
374 L</Modules and Pragmata> section.
375
376 =over 4
377
378 =item Win32
379
380 The time taken to build perl on Windows has been reduced quite significantly
381 (time savings in the region of 30-40% are typically seen) by reducing the
382 number of, usually failing, I/O calls for each L<perlfunc/require> (for
383 miniperl only).
384 [L<perl #121119|https://rt.perl.org/Public/Bug/Display.html?id=121119>]
385
386 About 15 minutes of idle sleeping was removed from running C<make test> due to
387 a bug in which the timeout monitor used for tests could not be cancelled once
388 the test completes, and the full timeout period elapsed before running the next
389 test file.
390 [L<perl #121395|https://rt.perl.org/Public/Bug/Display.html?id=121395>]
391
392 On a perl built without psuedo-fork (psuedo-fork builds were not affected by
393 this bug), killing a process tree with L<perlfunc/kill> and a negative signal
394 resulted in kill() inverting the returned value.  For example, if kill() killed
395 1 process tree PID then it returned 0 instead of 1, and if kill() was passed 2
396 invalid PIDs then it returned 2 instead of 0.  This has probably been the case
397 since the process tree kill feature was implemented on Win32.  It has now been
398 corrected to follow the documented behaviour.
399 [L<perl #121230|https://rt.perl.org/Public/Bug/Display.html?id=121230>]
400
401 When building a 64-bit perl, an uninitialized memory read in B<miniperl.exe>,
402 used during the build process, could lead to a 4GB B<wperl.exe> being created.
403 This has now been fixed.  (Note that B<perl.exe> itself was unaffected, but
404 obviously B<wperl.exe> would have been completely broken.)
405 [L<perl #121471|https://rt.perl.org/Public/Bug/Display.html?id=121471>]
406
407 Perl can now be built with B<gcc> version 4.8.1 from L<http://www.mingw.org>.
408 This was previously broken due to an incorrect definition of C<DllMain()> in
409 one of perl's source files.  Earlier B<gcc> versions were also affected when
410 using version 4 of the w32api package.  Versions of B<gcc> available from
411 L<http://mingw-w64.sourceforge.net/> were not affected.
412 [L<perl #121643|https://rt.perl.org/Public/Bug/Display.html?id=121643>]
413
414 The test harness now has no failures when perl is built on a FAT drive with the
415 Windows OS on an NTFS drive.
416 [L<perl #21442|https://rt.perl.org/Public/Bug/Display.html?id=21442>]
417
418 =back
419
420 =head1 Internal Changes
421
422 XXX Changes which affect the interface available to C<XS> code go here.  Other
423 significant internal changes for future core maintainers should be noted as
424 well.
425
426 [ List each change as a =item entry ]
427
428 =over 4
429
430 =item *
431
432 C<LC_NUMERIC> is now initialized to the C locale.  This affects only
433 C<XS> modules, as the Perl core usages always make sure this locale
434 category is correctly set for their purposes.  C<XS> code remains
435 vulnerable to other code changing this category's locale.  Further fixes
436 are planned in v5.22 to reduce these long-standing vulnerabilities.
437 [L<perl #121317|https://rt.perl.org/Public/Bug/Display.html?id=121317>]
438
439 =back
440
441 =head1 Selected Bug Fixes
442
443 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
444 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
445
446 [ List each fix as a =item entry ]
447
448 =over 4
449
450 =item *
451
452 A regression involving the string value of C<$!> introduced in v5.19.2
453 has been reverted for v5.20.
454 [L<perl #119499|https://rt.perl.org/Public/Bug/Display.html?id=119499>]
455 This re-breaks the bugs it fixed,
456 L<perl #112208|https://rt.perl.org/Ticket/Display.html?id=112208>, so
457 an alternative fix is planned for v5.22
458
459 =item *
460
461 A regression was introduced in v5.19.10 that under some circumstances
462 caused C<//m> matches to falsely fail. Now fixed.
463
464 =item *
465
466 A regression was introduced in the fix for
467 [L<perl #116192|https://rt.perl.org/Public/Bug/Display.html?id=116192>] that
468 prevented C<perl -I /somedir/> (with a trailing slash) from finding .pmc files. This has
469 been fixed.
470 [L<perl #121512|https://rt.perl.org/Public/Bug/Display.html?id=121512>].
471
472 =item *
473
474 Fixed a bug detected by valgrind where sv_pvn_force_flags() would
475 check SvPVX() even when the SV hadn't been upgraded to a C<SVt_PV>.
476 SvPVX() is only initialized when the SV is upgraded to a C<SVt_PV> or
477 higher.  [L<perl
478 #121366|https://rt.perl.org/Public/Bug/Display.html?id=121366>]
479
480 =item *
481
482 Fixed a bug in caller() introduced in 5.18.0.  In some circumstances
483 when caller() was called on an C<eval STRING> stack frame it would
484 attempt to allocate the limit of the address space minus one, which
485 would croak with an out of memory error, which would be caught by the
486 eval.  A change in 5.19.1 which increased allocation sizes to allow
487 COW to operate more often rounded that allocation size up and wrapped
488 to a zero allocation size, resulting in a crash when the source string
489 was copied over.  [L<perl
490 #120998|https://rt.perl.org/Public/Bug/Display.html?id=120998>].
491
492 =back
493
494 =head1 Known Problems
495
496 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
497 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
498 platform specific bugs also go here.
499
500 [ List each fix as a =item entry ]
501
502 =over 4
503
504 =item *
505
506 XXX
507
508 =back
509
510 =head1 Errata From Previous Releases
511
512 =over 4
513
514 =item *
515
516 XXX Add anything here that we forgot to add, or were mistaken about, in
517 the perldelta of a previous release.
518
519 =back
520
521 =head1 Obituary
522
523 XXX If any significant core contributor has died, we've added a short obituary
524 here.
525
526 =head1 Acknowledgements
527
528 XXX Generate this with:
529
530   perl Porting/acknowledgements.pl v5.19.10..HEAD
531
532 =head1 Reporting Bugs
533
534 If you find what you think is a bug, you might check the articles recently
535 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
536 https://rt.perl.org/ .  There may also be information at
537 http://www.perl.org/ , the Perl Home Page.
538
539 If you believe you have an unreported bug, please run the L<perlbug> program
540 included with your release.  Be sure to trim your bug down to a tiny but
541 sufficient test case.  Your bug report, along with the output of C<perl -V>,
542 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
543
544 If the bug you are reporting has security implications, which make it
545 inappropriate to send to a publicly archived mailing list, then please send it
546 to perl5-security-report@perl.org.  This points to a closed subscription
547 unarchived mailing list, which includes all the core committers, who will be
548 able to help assess the impact of issues, figure out a resolution, and help
549 co-ordinate the release of patches to mitigate or fix the problem across all
550 platforms on which Perl is supported.  Please only use this address for
551 security issues in the Perl core, not for modules independently distributed on
552 CPAN.
553
554 =head1 SEE ALSO
555
556 The F<Changes> file for an explanation of how to view exhaustive details on
557 what changed.
558
559 The F<INSTALL> file for how to build Perl.
560
561 The F<README> file for general stuff.
562
563 The F<Artistic> and F<Copying> files for copyright information.
564
565 =cut