This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
2ac78eda52cab8cbfedd8eb3f59fa75f9533458a
[perl5.git] / pod / perldelta.pod
1
2 =encoding utf8
3
4 =head1 NAME
5
6 perldelta - what is new for perl v5.19.11
7
8 =head1 DESCRIPTION
9
10 This document describes differences between the 5.19.10 release and the 5.19.11
11 release.
12
13 If you are upgrading from an earlier release such as 5.19.9, first read
14 L<perl51910delta>, which describes differences between 5.19.9 and 5.19.10.
15
16 =head1 Modules and Pragmata
17
18 =head2 New Modules and Pragmata
19
20 =over 4
21
22 =item *
23
24 L<experimental> version 0.007 has been added.
25
26 This pragma provides an easy and convenient way to enable or disable
27 experimental features.
28
29 =back
30
31 =head2 Updated Modules and Pragmata
32
33 =over 4
34
35 =item *
36
37 L<Carp> has been upgraded from version 1.33 to 1.3301.
38
39 No changes have been made to the installed code other than the version bump to
40 keep in sync with the latest CPAN release.
41
42 =item *
43
44 L<CPAN> has been upgraded from version 2.04-TRIAL to 2.05.
45
46 This fixes L<local::lib> shell variable string output and prevents an endless
47 loop when running "notest test Module" for some Module having dependencies.
48
49 =item *
50
51 L<DB> has been upgraded from version 1.43 to 1.44.
52
53 The debugger now correctly restores its input and output filehandles after
54 using the pager command.
55 [L<perl #121456|https://rt.perl.org/Public/Bug/Display.html?id=121456>]
56
57 =item *
58
59 L<ExtUtils::Install> has been upgraded from version 1.63 to 1.67.
60
61 When upgrading an already-installed file, L<ExtUtils::Install> could mess up
62 the permissions of files if the old versions of files were hard or symbolic
63 links.  This has now been fixed.
64 [L<perl #72028|https://rt.perl.org/Public/Bug/Display.html?id=72028>]
65
66 The MM_TEST_ROOT feature has been removed from the tests.
67
68 =item *
69
70 L<ExtUtils::MakeMaker> has been upgraded from version 6.92 to 6.94.
71
72 A regression in MM_Unix.pm has been resolved.
73 [L<Issue #96|https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/issues/96>]
74
75 =item *
76
77 L<Module::CoreList> has been upgraded from version 3.09 to 3.10.
78
79 The list of Perl versions covered has been updated.
80
81 =item *
82
83 L<PerlIO> has been upgraded from version 1.08 to 1.09.
84
85 The warning about the use of the C<:utf8> layer has been made more prominent.
86
87 =item *
88
89 L<Storable> has been upgraded from version 2.48 to 2.49.
90
91 Recognition of tied SVs has been tightened up.
92
93 =item *
94
95 L<Win32> has been upgraded from version 0.48 to 0.49.
96
97 This fixes a problem when building with B<gcc> version 4.8.1 from
98 L<http://www.mingw.org>.
99 [L<cpan #94730|https://rt.cpan.org/Public/Bug/Display.html?id=94730>]
100
101 =back
102
103 =head1 Diagnostics
104
105 The following additions or changes have been made to diagnostic output,
106 including warnings and fatal error messages.  For the complete list of
107 diagnostic messages, see L<perldiag>.
108
109 =head2 Changes to Existing Diagnostics
110
111 =over 4
112
113 =item *
114
115 The now fatal error message C<Character following "\c" must be ASCII> has been
116 reworded as C<Character following "\c" must be printable ASCII> to emphasize
117 that in C<\cI<X>>, I<X> must be a I<printable (non-control)> ASCII character.
118
119 =back
120
121 =head1 Utility Changes
122
123 =head2 L<perlbug>
124
125 =over 4
126
127 =item *
128
129 L<perlbug> has been modified to supply the report template with CRLF line
130 endings on Windows.
131 [L<perl #121277|https://rt.perl.org/Public/Bug/Display.html?id=121277>]
132
133 =item *
134
135 L<perlbug> now makes as few assumptions as possible about the encoding of the
136 report.  This will likely change in the future to assume UTF-8 by default but
137 allow a user override.
138
139 =back
140
141 =head1 Configuration and Compilation
142
143 =over 4
144
145 =item *
146
147 By default, B<gcc> 4.9 does some optimizations that break perl.  The B<-fwrapv>
148 option disables those optimizations (and probably others), so for B<gcc> 4.9
149 (and later, since the optimizations probably won't go away), F<Configure> now
150 adds B<-fwrapv> unless the user requests B<-fno-wrapv>, which disables
151 B<-fwrapv>, or B<-fsanitize=undefined>, which turns the overflows B<-fwrapv>
152 ignores into runtime errors.  (This is not done prior to B<gcc> 4.3, since
153 B<-fwrapv> was broken then.)
154 [L<perl #121505|https://rt.perl.org/Public/Bug/Display.html?id=121505>]
155
156 =back
157
158 =head1 Platform Support
159
160 =head2 Platform-Specific Notes
161
162 =over 4
163
164 =item VMS
165
166 On VMS only, a check for glob metacharacters in a path returned by the
167 L<C<glob()>|perlfunc/glob> operator has been replaced with a check for VMS
168 wildcard characters.  This saves a significant number of unnecessary
169 L<C<lstat()>|perlfunc/lstat> calls such that some simple glob operations become
170 60-80% faster.
171
172 =item Win32
173
174 The time taken to build perl on Windows has been reduced quite significantly
175 (time savings in the region of 30-40% are typically seen) by reducing the
176 number of, usually failing, I/O calls for each L<C<require()>|perlfunc/require>
177 (for B<miniperl.exe> only).
178 [L<perl #121119|https://rt.perl.org/Public/Bug/Display.html?id=121119>]
179
180 About 15 minutes of idle sleeping was removed from running C<make test> due to
181 a bug in which the timeout monitor used for tests could not be cancelled once
182 the test completes, and the full timeout period elapsed before running the next
183 test file.
184 [L<perl #121395|https://rt.perl.org/Public/Bug/Display.html?id=121395>]
185
186 On a perl built without pseudo-fork (pseudo-fork builds were not affected by
187 this bug), killing a process tree with L<C<kill()>|perlfunc/kill> and a negative
188 signal resulted in C<kill()> inverting the returned value.  For example, if
189 C<kill()> killed 1 process tree PID then it returned 0 instead of 1, and if
190 C<kill()> was passed 2 invalid PIDs then it returned 2 instead of 0.  This has
191 probably been the case since the process tree kill feature was implemented on
192 Win32.  It has now been corrected to follow the documented behaviour.
193 [L<perl #121230|https://rt.perl.org/Public/Bug/Display.html?id=121230>]
194
195 When building a 64-bit perl, an uninitialized memory read in B<miniperl.exe>,
196 used during the build process, could lead to a 4GB B<wperl.exe> being created.
197 This has now been fixed.  (Note that B<perl.exe> itself was unaffected, but
198 obviously B<wperl.exe> would have been completely broken.)
199 [L<perl #121471|https://rt.perl.org/Public/Bug/Display.html?id=121471>]
200
201 Perl can now be built with B<gcc> version 4.8.1 from L<http://www.mingw.org>.
202 This was previously broken due to an incorrect definition of DllMain() in one
203 of perl's source files.  Earlier B<gcc> versions were also affected when using
204 version 4 of the w32api package.  Versions of B<gcc> available from
205 L<http://mingw-w64.sourceforge.net/> were not affected.
206 [L<perl #121643|https://rt.perl.org/Public/Bug/Display.html?id=121643>]
207
208 The test harness now has no failures when perl is built on a FAT drive with the
209 Windows OS on an NTFS drive.
210 [L<perl #21442|https://rt.perl.org/Public/Bug/Display.html?id=21442>]
211
212 =back
213
214 =head1 Internal Changes
215
216 =over 4
217
218 =item *
219
220 C<LC_NUMERIC> is now initialized to the C locale.  This affects only XS
221 modules, as the Perl core usages always make sure this locale category is
222 correctly set for their purposes.  XS code remains vulnerable to other code
223 changing this category's locale.  Further fixes are planned in Perl 5.22 to
224 reduce these long-standing vulnerabilities.
225 [L<perl #121317|https://rt.perl.org/Public/Bug/Display.html?id=121317>]
226
227 =back
228
229 =head1 Selected Bug Fixes
230
231 =over 4
232
233 =item *
234
235 A regression involving the string value of L<C<$!>|perlvar/$!> introduced in
236 Perl 5.19.2 has been reverted for Perl 5.20.
237 [L<perl #119499|https://rt.perl.org/Public/Bug/Display.html?id=119499>]
238
239 This re-breaks the bugs it fixed,
240 L<perl #112208|https://rt.perl.org/Public/Bug/Display.html?id=112208>, so an
241 alternative fix is planned for Perl 5.22
242
243 =item *
244
245 A regression was introduced in Perl 5.19.10 that under some circumstances
246 caused C<//m> matches to falsely fail.  Now fixed.
247 [L<perl #121484|https://rt.perl.org/Public/Bug/Display.html?id=121484>]
248
249 =item *
250
251 A regression was introduced in the fix for
252 L<perl #116192|https://rt.perl.org/Public/Bug/Display.html?id=116192> that
253 prevented C<perl -I /somedir/> (with a trailing slash) from finding .pmc files.
254 This has been fixed.
255 [L<perl #121512|https://rt.perl.org/Public/Bug/Display.html?id=121512>].
256
257 =item *
258
259 Fixed a bug detected by valgrind where sv_pvn_force_flags() would check SvPVX()
260 even when the SV hadn't been upgraded to a SVt_PV.  SvPVX() is only initialized
261 when the SV is upgraded to a SVt_PV or higher.
262 [L<perl #121366|https://rt.perl.org/Public/Bug/Display.html?id=121366>]
263
264 =item *
265
266 Fixed a bug in L<C<caller()>|perlfunc/caller> introduced in Perl 5.18.0.  In
267 some circumstances when C<caller()> was called on an C<eval STRING> stack frame
268 it would attempt to allocate the limit of the address space minus one, which
269 would croak with an out of memory error, which would be caught by the eval.  A
270 change in Perl 5.19.1 which increased allocation sizes to allow COW to operate
271 more often rounded that allocation size up and wrapped to a zero allocation
272 size, resulting in a crash when the source string was copied over.
273 [L<perl #120998|https://rt.perl.org/Public/Bug/Display.html?id=120998>].
274
275 =back
276
277 =head1 Known Problems
278
279 =over 4
280
281 =item *
282
283 One test in F<ext/POSIX/t/time.t> is known to fail on Windows when building
284 with certain versions of B<gcc> from L<http://www.mingw.org> due to a known bug
285 in the MinGW build, which is logged here:
286 L<http://sourceforge.net/p/mingw/bugs/2152/>.
287
288 =back
289
290 =head1 Acknowledgements
291
292 Perl 5.19.11 represents approximately 4 weeks of development since Perl 5.19.10
293 and contains approximately 3,600 lines of changes across 140 files from 18
294 authors.
295
296 Excluding auto-generated files, documentation and release tools, there were
297 approximately 850 lines of changes to 72 .pm, .t, .c and .h files.
298
299 Perl continues to flourish into its third decade thanks to a vibrant community
300 of users and developers.  The following people are known to have contributed
301 the improvements that became Perl 5.19.11:
302
303 Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan, David
304 Golden, David Mitchell, H.Merijn Brand, Hiroo Hayashi, Karl Williamson, Matthew
305 Horsfall, Ricardo Signes, Shirakata Kentaro, Smylers, Steve Hay, Thomas Sibley,
306 Tony Cook, Zefram, Ævar Arnfjörð Bjarmason.
307
308 The list above is almost certainly incomplete as it is automatically generated
309 from version control history.  In particular, it does not include the names of
310 the (very much appreciated) contributors who reported issues to the Perl bug
311 tracker.
312
313 Many of the changes included in this version originated in the CPAN modules
314 included in Perl's core.  We're grateful to the entire CPAN community for
315 helping Perl to flourish.
316
317 For a more complete list of all of Perl's historical contributors, please see
318 the F<AUTHORS> file in the Perl source distribution.
319
320 =head1 Reporting Bugs
321
322 If you find what you think is a bug, you might check the articles recently
323 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
324 https://rt.perl.org/ .  There may also be information at http://www.perl.org/ ,
325 the Perl Home Page.
326
327 If you believe you have an unreported bug, please run the L<perlbug> program
328 included with your release.  Be sure to trim your bug down to a tiny but
329 sufficient test case.  Your bug report, along with the output of C<perl -V>,
330 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
331
332 If the bug you are reporting has security implications, which make it
333 inappropriate to send to a publicly archived mailing list, then please send it
334 to perl5-security-report@perl.org.  This points to a closed subscription
335 unarchived mailing list, which includes all the core committers, who will be
336 able to help assess the impact of issues, figure out a resolution, and help
337 co-ordinate the release of patches to mitigate or fix the problem across all
338 platforms on which Perl is supported.  Please only use this address for
339 security issues in the Perl core, not for modules independently distributed on
340 CPAN.
341
342 =head1 SEE ALSO
343
344 The F<Changes> file for an explanation of how to view exhaustive details on
345 what changed.
346
347 The F<INSTALL> file for how to build Perl.
348
349 The F<README> file for general stuff.
350
351 The F<Artistic> and F<Copying> files for copyright information.
352
353 =cut