This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Added Acknowledgements
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
6fee6573 5perldelta - what is new for perl v5.23.9
eabfc7bc 6
2cfe9b50 7=head1 DESCRIPTION
eabfc7bc 8
6fee6573 9This document describes differences between the 5.23.8 release and the 5.23.9
2cfe9b50 10release.
eabfc7bc 11
6fee6573
S
12If you are upgrading from an earlier release such as 5.23.7, first read
13L<perl5238delta>, which describes differences between 5.23.7 and 5.23.8.
394609a5 14
6fee6573 15=head1 Core Enhancements
cdfe2e65 16
df0d64c4 17=head2 perl will now croak when closing an in-place output file fails
a8c28920 18
df0d64c4
RS
19Until now, failure to close the output file for an in-place edit was not
20detected, meaning that the input file could be clobbered without the edit being
21successfully completed. Now, when the output file cannot be closed
22successfully, an exception is raised.
a8c28920 23
6fee6573 24=head1 Security
07450df7 25
7d12a739 26=head2 Remove duplicate environment variables from C<environ>
a7e63acd 27
7d12a739
A
28Previously, if an environment variable appeared more than once in
29C<environ[]>, C<%ENV> would contain the last entry for that name,
30while a typical C<getenv()> would return the first entry. We now
31make sure C<%ENV> contains the same as what C<getenv> returns.
d7a7ed74 32
7d12a739
A
33Second, we remove duplicates from C<environ[]>, so if a setting
34with that name is set in C<%ENV> we won't pass an unsafe value
35to a child process.
d7a7ed74 36
7d12a739 37[CVE-2016-2381]
34e79b75 38
6fee6573 39=head1 Performance Enhancements
fc9da770 40
6fee6573 41=over 4
df539208
S
42
43=item *
44
7d12a739
A
45The number of calls to C<add_cp_to_invlist> has been reduced. This
46optimizes the compilation of inverted character classes.
df539208 47
6fee6573 48=back
df539208 49
6fee6573 50=head1 Modules and Pragmata
df539208 51
6fee6573
S
52XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
53go here. If Module::CoreList is updated, generate an initial draft of the
54following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
55for important changes should then be added by hand. In an ideal world,
56dual-life modules would have a F<Changes> file that could be cribbed.
fc9da770 57
6fee6573 58[ Within each section, list entries as a =item entry ]
df539208 59
6fee6573 60=head2 New Modules and Pragmata
df539208 61
6fee6573 62=over 4
df539208 63
fc9da770
S
64=item *
65
6fee6573 66XXX
fc9da770 67
6fee6573 68=back
df539208 69
6fee6573 70=head2 Updated Modules and Pragmata
df539208 71
6fee6573 72=over 4
df539208
S
73
74=item *
75
6fee6573 76L<XXX> has been upgraded from version A.xx to B.yy.
fc9da770 77
28192377
S
78=item *
79
80L<Module::CoreList> has been upgraded from version 5.20160121 to
815.20160221.
82
6fee6573 83=back
df539208 84
6fee6573 85=head2 Removed Modules and Pragmata
331b9876 86
6fee6573 87=over 4
fc9da770
S
88
89=item *
90
6fee6573 91XXX
331b9876 92
af8a293f 93=back
a7e63acd 94
c0883d63
SL
95=head1 Documentation
96
6fee6573 97=head2 Changes to Existing Documentation
d9d208b8 98
7d12a739 99=head3 L<perlfunc>
fd12b912 100
054383b6 101=over 4
fd12b912
DG
102
103=item *
104
7d12a739
A
105The L<perlfunc> manual page got a cleanup: there's more consistency now
106(in POD usage, grammar, code examples), better practices in code examples
107(use of C<my>, removal of bareword filehandles, dropped usage of C<&>
108when calling subroutines, ...), etc.
206e921d 109
af8a293f 110=back
206e921d 111
6fee6573 112=head1 Configuration and Compilation
d9d208b8 113
d7745c5b
DM
114=over 4
115
116=item *
117
7d12a739 118Dtrace builds now build successfully on systems with a newer dtrace
4511cd77
TC
119that require an input object file that uses the probes in the F<.d>
120file.
121
122Previously the probe would fail and cause a build failure. [perl
123#122287]
d7745c5b 124
d7745c5b
DM
125=item *
126
7d12a739
A
127F<installman> no longer warns if a module doesn't contain documentation,
128as this isn't actually an error. Now missing documentation will only
129be reported when using the B<--verbose> switch, and if it does, the
130missing documentation will be reported on C<STDOUT> instead of C<STDERR>.
d7745c5b 131
7d12a739 132=item *
d7745c5b 133
7d12a739
A
134The B<u> option to the C<ar> command was removed. This was redundant
135anyway, and on some systems, it caused a warning.
d7745c5b 136
7d12a739 137=item *
d7745c5b 138
7d12a739 139Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
d7745c5b 140
7d12a739 141=item *
d7745c5b 142
7d12a739 143Fix up dtrace compile/link for Solaris. [perl #127543]
d7745c5b 144
6fee6573 145=back
d7745c5b 146
7d12a739 147=head1 Platform Support
d7745c5b 148
6fee6573 149=head2 Platform-Specific Notes
d7745c5b 150
6fee6573 151=over 4
d7745c5b 152
e90a17ab 153=item Win32
d7745c5b 154
756bd853
SH
155=over
156
157=item *
158
e1ad4fbb
DIM
159Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
160result in an invalid C<$Config{archname}> for the resulting perl.
e90a17ab 161[perl #127584]
d7745c5b 162
756bd853
SH
163=item *
164
165Errors set by Winsock functions are now put directly into C<$^E>, and the
166relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
167modules for testing this against.
168
169The previous behaviour of putting the errors (converted to POSIX-style C<E*>
170error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
171of like-named Winsock and POSIX error constants, a relationship between which
172has unfortunately been established in one way or another since Perl 5.8.0.
173
174The new behaviour provides a much more robust solution for checking Winsock
175errors in portable software without accidentally matching POSIX tests that were
176intended for other OSes and may have different meanings for Winsock.
177
178The old behaviour is currently retained, warts and all, for backwards
179compatibility, but users are encouraged to change any code that tests C<$!>
180against C<E*> constants for Winsock errors to instead test C<$^E> against
181C<WSAE*> constants. After a suitable deprecation period, the old behaviour may
182be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
183possible confusion over which error variable to check.
184
185=back
186
d7745c5b
DM
187=back
188
6fee6573 189=head1 Selected Bug Fixes
42d92f4a 190
6fee6573 191=over 4
19b46ab5 192
23b4d8d6
TC
193=item *
194
710d3eb3
KW
195It now works properly to specify a user-defined property, such as
196
197 qr/\p{mypkg1::IsMyProperty}/i
198
199with C</i> caseless matching, an explicit package name, and
4fc43451 200I<IsMyProperty> not defined at the time of the pattern compilation.
23b4d8d6 201
2aade621
TC
202=item *
203
204Perl's memcpy(), memmove(), memset() and memcmp() fallbacks are now
205more compatible with the originals. [perl #127619]
206
7febee86
KW
207=item *
208
209The peak memory usage when compiling some regular expression patterns is
210now significantly smaller. [perl #127392]
211
212=item *
213
214A case has been fixed in which malformed UTF-8 in the source of a Perl
215script caused an assertion failure instead of an error message. [perl
216#127262]
217
7d12a739 218=item *
002a7765 219
7d12a739
A
220Fixed a buffer overrun issue in F<Socked.xs> which was reported by Coverity.
221[CPAN #111707]
84279daf 222
7d12a739 223=item *
84279daf 224
7d12a739
A
225Fixed a possible division by 0 error in C<Scalar::List::Utils::product>
226(reported by Coverity). [CPAN #105415]
84279daf 227
7d12a739
A
228=item *
229
230Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
231to modify the source SV, resulting in the program dying. [perl #127635]
84279daf 232
54e70d91
TC
233=item *
234
7d12a739 235Fixed a spurious warning about posix character classes. [perl #127581]
46d34d0e 236
7d12a739 237=item *
46d34d0e 238
7d12a739
A
239Fixed an obscure case where a pattern could fail to match. This only
240occurred when matching characters from the set of C1 controls, when
241the target matched string was in UTF-8, and only on EBCDIC platforms.
ac33c516 242
7d12a739
A
243=item *
244
245Fixed over eager warnings for C<< /[.foo.]/ >>.
246
247This prevents Perl from warning about constructs like C<< /[.].*[.]/ >>.
248[perl #127582, #127604]
ac33c516 249
9857cc20
S
250=item *
251
7d12a739
A
252Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
253it assumed that if the filename (without the F<.pmc?> extension) differed
254from the package name, if was a misspelled use statement (i.e. C<use Strict>
255instead of C<use strict>). We now check whether there's really a
256miscapitalization happening, and not another issue.
9857cc20 257
7d12a739
A
258=item *
259
260Turn an assertion into a more user friendly failure when parsing
261regexes. [perl #127599]
262
263=item *
3c84cb84 264
7d12a739
A
265Correctly raise an error when trying to compile patterns with
266unterminated character classes while there are trailing backslashes.
267[perl #126141].
0057cacf 268
7d12a739
A
269=item *
270
271Added a guard against malformed UTF-8. [perl #127262]
272
273=item *
274
275Only test C<semctl> if we have everything needed to use it. In a FreeBSD
276the C<semctl> entry point may exist, but it can be disabled by policy.
277[perl #127533]
278
279=item *
280
281Handle C<NOTHING> regops and C<EXACTFU_SS> regops in C<make_trie> properly.
282[perl #126206]
283
284=item *
285
286Fix a Solaris optimiser bug which prevented certain regular expression
287to be compiled. [perl #127455]
288
289=item *
290
291Improved the detection of infinite recursion in regular expressions.
292Previously, perl would in certain cases slowly consume resources until
293finally running out of memory. [perl #126182]
294
295
296=back
5a74572e 297
6fee6573 298=head1 Acknowledgements
e1ad135d 299
3ec37fe3
A
300Perl 5.23.9 represents approximately 4 weeks of development since Perl 5.23.8
301and contains approximately 21,000 lines of changes across 230 files from 23
302authors.
303
304Excluding auto-generated files, documentation and release tools, there were
305approximately 8,500 lines of changes to 120 .pm, .t, .c and .h files.
306
307Perl continues to flourish into its third decade thanks to a vibrant community
308of users and developers. The following people are known to have contributed the
309improvements that became Perl 5.23.9:
310
311Abigail, Alex Vandiver, Andy Broad, Aristotle Pagaltzis, Chris 'BinGOs'
312Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, David
313Mitchell, Father Chrysostomos, H.Merijn Brand, Jarkko Hietaniemi, John Peacock,
314Karl Williamson, Leon Timmermans, Lukas Mai, Matthew Horsfall, Ricardo Signes,
315Sawyer X, Shlomi Fish, Steve Hay, Tony Cook, Yves Orton.
316
317The list above is almost certainly incomplete as it is automatically generated
318from version control history. In particular, it does not include the names of
319the (very much appreciated) contributors who reported issues to the Perl bug
320tracker.
321
322Many of the changes included in this version originated in the CPAN modules
323included in Perl's core. We're grateful to the entire CPAN community for
324helping Perl to flourish.
325
326For a more complete list of all of Perl's historical contributors, please see
327the F<AUTHORS> file in the Perl source distribution.
f5b73711 328
44691e6f
AB
329=head1 Reporting Bugs
330
e08634c5
SH
331If you find what you think is a bug, you might check the articles recently
332posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
333L<https://rt.perl.org/> . There may also be information at
334L<http://www.perl.org/> , the Perl Home Page.
44691e6f 335
e08634c5
SH
336If you believe you have an unreported bug, please run the L<perlbug> program
337included with your release. Be sure to trim your bug down to a tiny but
338sufficient test case. Your bug report, along with the output of C<perl -V>,
339will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
340
341If the bug you are reporting has security implications, which make it
e08634c5
SH
342inappropriate to send to a publicly archived mailing list, then please send it
343to perl5-security-report@perl.org. This points to a closed subscription
344unarchived mailing list, which includes all the core committers, who will be
345able to help assess the impact of issues, figure out a resolution, and help
f9001595 346co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
347platforms on which Perl is supported. Please only use this address for
348security issues in the Perl core, not for modules independently distributed on
349CPAN.
44691e6f
AB
350
351=head1 SEE ALSO
352
e08634c5
SH
353The F<Changes> file for an explanation of how to view exhaustive details on
354what changed.
44691e6f
AB
355
356The F<INSTALL> file for how to build Perl.
357
358The F<README> file for general stuff.
359
360The F<Artistic> and F<Copying> files for copyright information.
361
362=cut