This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
5.21.11 is now released
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
e5998677 5perldelta - what is new for perl v5.21.11
c68523cb 6
238894db 7=head1 DESCRIPTION
c68523cb 8
e5998677 9This document describes differences between the 5.21.10 release and the 5.21.11
238894db 10release.
c68523cb 11
e5998677
SH
12If you are upgrading from an earlier release such as 5.21.9, first read
13L<perl52110delta>, which describes differences between 5.21.9 and 5.21.10.
2ec11c70 14
e5998677 15=head1 Deprecations
b9c683b3 16
2e4abf26
DG
17=head2 Making all warnings fatal is discouraged
18
3e91b205
SH
19The documentation for L<fatal warnings|warnings/Fatal Warnings> notes that
20C<< use warnings FATAL => 'all' >> is discouraged and provides stronger
21language about the risks of fatal warnings in general.
2e4abf26 22
e5998677 23=head1 Modules and Pragmata
fea59588 24
e5998677 25=head2 Updated Modules and Pragmata
83a5d6b6 26
e5998677 27=over 4
e455391f
SH
28
29=item *
30
79a77127 31L<attributes> has been upgraded from version 0.26 to 0.27.
53902397 32
79a77127
SH
33=item *
34
c14a43b7
SH
35L<B> has been upgraded from version 1.57 to 1.58.
36
37=item *
38
39L<B::Deparse> has been upgraded from version 1.34 to 1.35.
40
47cb8ddb
SH
41C<< <<>> >> is now correctly deparsed.
42
c14a43b7
SH
43=item *
44
45L<Config::Perl::V> has been upgraded from version 0.23 to 0.24.
46
47=item *
48
51c2f40f
SH
49L<CPAN> has been upgraded from version 2.10 to 2.11.
50
51=item *
52
79a77127 53L<Cwd> has been upgraded from version 3.55 to 3.56.
83a5d6b6 54
abec5bed
DIM
55=item *
56
57L<ExtUtils::Miniperl> has been upgraded from version 1.04 to 1.05.
58
59=item *
60
c14a43b7
SH
61L<ExtUtils::ParseXS> has been upgraded from version 3.27 to 3.28.
62
63=item *
64
65L<ExtUtils::Typemaps> has been upgraded from version 3.25 to 3.28.
66
67=item *
68
69L<File::Spec> has been upgraded from version 3.55 to 3.56.
70
71=item *
72
73L<if> has been upgraded from version 0.0603 to 0.0604.
74
be39acb2
SH
75The documentation now notes that this module also works with C<no>.
76
c14a43b7
SH
77=item *
78
60dcce55
SH
79L<IO::Socket::IP> has been upgraded from version 0.36 to 0.37.
80
81=item *
82
79a77127
SH
83L<Module::CoreList> has been upgraded from version 5.20150320 to 5.20150420.
84
3e91b205 85Updated to cover the latest releases of Perl. Also fixes a fencepost error in
be39acb2 86is_core() and copes with versions that do not match x.yyyzzz.
abec5bed
DIM
87
88=item *
89
9749148e
TC
90L<perl5db.pl> has been upgraded from 1.48 to 1.49.
91
799b8ca7
SH
92The debugger would cause an assertion failure.
93L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127>
9749148e
TC
94
95=item *
96
abec5bed
DIM
97L<PerlIO::mmap> has been upgraded from version 0.013 to 0.014.
98
99=item *
100
79a77127 101L<utf8> has been upgraded from version 1.15 to 1.16.
abec5bed 102
be39acb2
SH
103Minor documentation update only.
104
2e4abf26
DG
105=item *
106
107L<warnings> has been upgraded from version 1.31 to 1.32.
108
e5998677 109=back
83a5d6b6 110
e5998677 111=head1 Documentation
83a5d6b6 112
e5998677 113=head2 Changes to Existing Documentation
338906ce 114
5de148ee
SH
115=head3 L<perlebcdic>
116
117=over 4
118
119=item *
120
121This document has been significantly updated in the light of recent
122improvements to EBCDIC support.
123
124=back
125
47cb8ddb
SH
126=head3 L<perlfunc>
127
128=over 4
129
130=item *
131
132Mention that C<study()> is currently a no-op.
133
134=back
135
136=head3 L<perlguts>
137
138=over 4
139
140=item *
141
142The OOK example has been updated to account for COW changes and a change in the
143storage of the offset.
144
145=back
146
5de148ee
SH
147=head3 L<perlhacktips>
148
149=over 4
150
151=item *
152
3e91b205
SH
153Documentation has been added illustrating the perils of assuming the contents
154of static memory pointed to by the return values of Perl wrappers for C library
5de148ee
SH
155functions doesn't change.
156
157=back
158
be39acb2
SH
159=head3 L<perlport>
160
161=over 4
162
163=item *
164
165Out-of-date VMS-specific information has been fixed/simplified.
166
167=back
168
169=head3 L<perluniintro>
170
171=over 4
172
173=item *
174
175Advice for how to make sure your strings and regular expression patterns are
3e91b205 176interpreted as Unicode has been revised to account for the new Perl 5.22 EBCDIC
be39acb2
SH
177handling.
178
179=back
180
5de148ee 181=head3 L<perlvms>
83a5d6b6 182
e5998677 183=over 4
83a5d6b6
SH
184
185=item *
186
5de148ee 187Out-of-date and/or incorrect material has been removed.
83a5d6b6 188
e5998677 189=back
338906ce 190
a9c3e753 191=head1 Testing
cd7bac54 192
b5d4d3b9 193=over 4
83b69bfd
DD
194
195=item *
196
62ddb720
SH
197F<t/porting/re_context.t> has been added to test that L<utf8> and its
198dependencies only use the subset of the C<$1..$n> capture vars that
199Perl_save_re_context() is hard-coded to localize, because that function has no
200efficient way of determining at runtime what vars to localize.
13adb056 201
b5d4d3b9 202=back
391823f2 203
a9c3e753 204=head1 Platform Support
6c8457e9 205
e5998677 206=head2 Platform-Specific Notes
2bf83140 207
e5998677 208=over 4
041a5927 209
86e0176a 210=item Win32
69e954a5 211
3e91b205
SH
212F<miniperl.exe> is now built with C<-fno-strict-aliasing>, allowing 64-bit
213builds to complete on GCC 4.8.
799b8ca7 214L<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976>
86e0176a 215
799b8ca7
SH
216C<test-prep> again depends on C<test-prep-gcc> for GCC builds.
217L<[perl #124221]|https://rt.perl.org/Ticket/Display.html?id=124221>
69e954a5 218
e5998677 219=back
20b5e916 220
e5998677 221=head1 Internal Changes
d76c14eb 222
532ecd00
DM
223=over 4
224
225=item *
d76c14eb 226
3e91b205
SH
227Perl 5.21.2 introduced a new build option, C<-DPERL_OP_PARENT>, which causes
228the last C<op_sibling> pointer to refer back to the parent rather than being
229C<NULL>, and where instead a new flag indicates the end of the chain. In this
230release, the new implementation has been revised; in particular:
d547bad0 231
e5998677 232=over 4
d547bad0 233
8a95d307
FC
234=item *
235
532ecd00 236On C<PERL_OP_PARENT> builds, the C<op_sibling> field has been renamed
3e91b205 237C<op_sibparent> to reflect its new dual purpose. Since the intention is that
532ecd00
DM
238this field should primarily be accessed via macros, this change should be
239transparent for code written to work under C<PERL_OP_PARENT>.
240
241=item *
242
3e91b205
SH
243The newly-introduced C<op_lastsib> flag bit has been renamed C<op_moresib> and
244its logic inverted; i.e. it is initialised to zero in a new op, and is changed
245to 1 when an op gains a sibling.
532ecd00
DM
246
247=item *
248
249The function C<Perl_op_parent> is now only available on C<PERL_OP_PARENT>
3e91b205 250builds. Using it on a plain build will be a compile-timer error.
532ecd00
DM
251
252=item *
253
3e91b205
SH
254Three new macros, C<OpMORESIB_set>, C<OpLASTSIB_set>, C<OpMAYBESIB_set> have
255been added, which are intended to be a low-level portable way to set
256C<op_sibling> / C<op_sibparent> while also updating C<op_moresib>. The first
257sets the sibling pointer to a new sibling, the second makes the op the last
258sibling, and the third conditionally does the first or second action. The
259C<op_sibling_splice()> function is retained as a higher-level interface that
260can also maintain consistency in the parent at the same time (e.g. by updating
261C<op_first> and C<op_last> where appropriate).
532ecd00
DM
262
263=item *
264
3e91b205
SH
265The macro C<OpSIBLING_set>, added in Perl 5.21.2, has been removed. It didn't
266manipulate C<op_moresib> and has been superseded by C<OpMORESIB_set> et al.
532ecd00
DM
267
268=item *
269
3e91b205
SH
270The C<op_sibling_splice> function now accepts a null C<parent> argument where
271the splicing doesn't affect the first or last ops in the sibling chain, and
272thus where the parent doesn't need to be updated accordingly.
532ecd00
DM
273
274=back
275
e5998677 276=back
338906ce 277
e5998677 278=head1 Selected Bug Fixes
338906ce 279
e5998677 280=over 4
338906ce
SH
281
282=item *
283
3e91b205
SH
284C<pack("D", $x)> and C<pack("F", $x)> now zero the padding on x86 long double
285builds. GCC 4.8 and later, under some build options, would either overwrite
286the zero-initialized padding, or bypass the initialized buffer entirely. This
287caused F<op/pack.t> to fail.
799b8ca7 288L<[perl #123971]|https://rt.perl.org/Ticket/Display.html?id=123971>
2f304be9 289
9749148e
TC
290=item *
291
3e91b205
SH
292Extending an array cloned from a parent thread could result in "Modification of
293a read-only value attempted" errors when attempting to modify the new elements.
799b8ca7 294L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127>
9749148e 295
47cb8ddb
SH
296=item *
297
298An assertion failure and subsequent crash with C<< *x=<y> >> has been fixed.
799b8ca7 299L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790>
47cb8ddb
SH
300
301=item *
302
303An optimization for state variable initialization introduced in Perl 5.21.6 has
304been reverted because it was found to exacerbate some other existing buggy
799b8ca7
SH
305behaviour.
306L<[perl #124160]|https://rt.perl.org/Ticket/Display.html?id=124160>
47cb8ddb
SH
307
308=item *
309
310The extension of another optimization to cover more ops in Perl 5.21 has also
311been reverted to its Perl 5.20 state as a temporary fix for regression issues
799b8ca7
SH
312that it caused.
313L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790>
47cb8ddb 314
be39acb2
SH
315=item *
316
317New bitwise ops added in Perl 5.21.9 accidentally caused C<$^H |= 0x1c020000>
318to enable all features. This has now been fixed.
319
320=item *
321
799b8ca7
SH
322A possible crashing/looping bug has been fixed.
323L<[perl #124099]|https://rt.perl.org/Ticket/Display.html?id=124099>
be39acb2
SH
324
325=item *
326
327UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document
799b8ca7
SH
328terminators and UTF-8 function names all now work correctly.
329L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113>
be39acb2
SH
330
331=item *
332
333Breakage in C<require(VERSION)> (with parentheses), introduced in Perl 5.21.6,
799b8ca7
SH
334has been fixed.
335L<[perl #124135]|https://rt.perl.org/Ticket/Display.html?id=124135>
be39acb2
SH
336
337=item *
338
339Wide char warnings, wrongly raised in UTF-8 locales since Perl 5.21.8, are now
799b8ca7
SH
340suppressed.
341L<[perl #123527]|https://rt.perl.org/Ticket/Display.html?id=123527>
be39acb2
SH
342
343=item *
344
345A subtle bug introduced in Perl 5.21.4 involving UTF-8 in regular expressions
3e91b205 346and sometimes causing a crash has been fixed. A new test script has been added
799b8ca7
SH
347to test this fix; see under L</Testing>.
348L<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109>
be39acb2
SH
349
350=item *
351
352A change introduced in Perl 5.21.10 that broke the autovivification CPAN module
353has been reverted.
354
355=item *
356
357A bug whereby C<< 'FOO'->f() >> lost the read-only status of C<FOO>, introduced
799b8ca7
SH
358in Perl 5.21.7, has been fixed.
359L<[perl #123619]|https://rt.perl.org/Ticket/Display.html?id=123619>
be39acb2
SH
360
361=item *
362
363A regression in Perl 5.21 in the matching of C</[A-Z]/ai> has been fixed.
364
a9c3e753 365=back
ea13b07e 366
e5998677 367=head1 Acknowledgements
0d42058e 368
2a7a05b4
SH
369Perl 5.21.11 represents approximately 4 weeks of development since Perl 5.21.10
370and contains approximately 5,800 lines of changes across 240 files from 24
371authors.
372
373Excluding auto-generated files, documentation and release tools, there were
374approximately 1,700 lines of changes to 160 .pm, .t, .c and .h files.
375
376Perl continues to flourish into its third decade thanks to a vibrant community
377of users and developers. The following people are known to have contributed
378the improvements that became Perl 5.21.11:
379
380Alex Vandiver, Andreas König, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel
381Dragan, David Golden, David Mitchell, Father Chrysostomos, H.Merijn Brand,
382Herbert Breunung, Hugo van der Sanden, James E Keenan, James McCoy, Karl
383Williamson, Matthew Horsfall, Max Maischein, Nicholas Clark, Rafael
384Garcia-Suarez, Randy Stauner, Ricardo Signes, Shirakata Kentaro, Steffen
385Müller, Steve Hay, Tony Cook.
386
387The list above is almost certainly incomplete as it is automatically generated
388from version control history. In particular, it does not include the names of
389the (very much appreciated) contributors who reported issues to the Perl bug
390tracker.
391
392Many of the changes included in this version originated in the CPAN modules
393included in Perl's core. We're grateful to the entire CPAN community for
394helping Perl to flourish.
395
396For a more complete list of all of Perl's historical contributors, please see
397the F<AUTHORS> file in the Perl source distribution.
f5b73711 398
44691e6f
AB
399=head1 Reporting Bugs
400
e08634c5
SH
401If you find what you think is a bug, you might check the articles recently
402posted to the comp.lang.perl.misc newsgroup and the perl bug database at
e5998677
SH
403https://rt.perl.org/ . There may also be information at
404http://www.perl.org/ , the Perl Home Page.
44691e6f 405
e08634c5
SH
406If you believe you have an unreported bug, please run the L<perlbug> program
407included with your release. Be sure to trim your bug down to a tiny but
408sufficient test case. Your bug report, along with the output of C<perl -V>,
409will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
410
411If the bug you are reporting has security implications, which make it
e08634c5
SH
412inappropriate to send to a publicly archived mailing list, then please send it
413to perl5-security-report@perl.org. This points to a closed subscription
414unarchived mailing list, which includes all the core committers, who will be
415able to help assess the impact of issues, figure out a resolution, and help
f9001595 416co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
417platforms on which Perl is supported. Please only use this address for
418security issues in the Perl core, not for modules independently distributed on
419CPAN.
44691e6f
AB
420
421=head1 SEE ALSO
422
e08634c5
SH
423The F<Changes> file for an explanation of how to view exhaustive details on
424what changed.
44691e6f
AB
425
426The F<INSTALL> file for how to build Perl.
427
428The F<README> file for general stuff.
429
430The F<Artistic> and F<Copying> files for copyright information.
431
432=cut