This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove vutil.c from list of customized files
[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
9842b06f 45Less peak memory is now used when compiling regular expression patterns.
df539208 46
6fee6573 47=back
df539208 48
6fee6573 49=head1 Modules and Pragmata
df539208 50
0d4476e9 51=head2 Updated Modules and Pragmata
fc9da770 52
0d4476e9 53=over 4
df539208 54
0d4476e9 55=item *
df539208 56
0d4476e9 57L<autouse> has been upgraded from version 1.08 to 1.11.
df539208 58
fc9da770
S
59=item *
60
0d4476e9 61L<bytes> has been upgraded from version 1.04 to 1.05.
fc9da770 62
0d4476e9 63=item *
df539208 64
0d4476e9 65L<Carp> has been upgraded from version 1.38 to 1.40.
df539208 66
0d4476e9 67C<longmess> now returns the error in scalar context. [CPAN #107225]
df539208
S
68
69=item *
70
0d4476e9
A
71L<Errno> has been upgraded from version 1.24 to 1.25.
72
73It now exports Winsock error constants.
74
75=item *
76
77L<ExtUtils::Embed> has been upgraded from version 1.32 to 1.33.
78
79=item *
80
81L<File::Find> has been upgraded from version 1.33 to 1.34.
df539208
S
82
83=item *
84
0d4476e9
A
85L<File::Glob> has been upgraded from version 1.25 to 1.26.
86
87=item *
88
89L<IPC::SysV> has been upgraded from version 2.05 to 2.06_01.
90
91=item *
92
93L<List::Util> has been upgraded from version 1.42_01 to 1.42_02.
fc9da770 94
28192377
S
95=item *
96
97L<Module::CoreList> has been upgraded from version 5.20160121 to
0d4476e9 985.20160320.
28192377 99
0d4476e9 100=item *
df539208 101
0d4476e9 102L<Pod::Functions> has been upgraded from version 1.09 to 1.10.
331b9876 103
0d4476e9
A
104=item *
105
106L<POSIX> has been upgraded from version 1.63 to 1.64.
107
108It now exports Winsock error constants.
109
110=item *
111
112L<Scalar::Util> has been upgraded from version 1.42_01 to 1.42_02.
113
114=item *
115
116L<SelfLoader> has been upgraded from version 1.22 to 1.23.
117
118=item *
119
120L<Socket> has been upgraded from version 2.020_02 to 2.020_03.
121
122=item *
123
124L<Storable> has been upgraded from version 2.55 to 2.56.
125
126=item *
127
128L<strict> has been upgraded from version 1.10 to 1.11.
129
130Narrowed the filename check.
131
132=item *
133
134L<Thread::Queue> has been upgraded from version 3.07 to 3.08.
fc9da770
S
135
136=item *
137
0d4476e9
A
138L<threads> has been upgraded from version 2.05 to 2.06.
139
140=item *
141
142L<Tie::File> has been upgraded from version 1.01 to 1.02.
143
144=item *
145
146L<Time::HiRes> has been upgraded from version 1.9730 to 1.9732.
147
148=item *
149
150L<version> has been upgraded from version 0.9909 to 0.9916.
151
152=item *
153
154L<warnings> has been upgraded from version 1.35 to 1.36.
155
156Narrowed the filename check.
fc9da770
S
157
158=item *
159
0d4476e9 160L<Win32API::File> has been upgraded from version 0.1202 to 0.1203.
331b9876 161
af8a293f 162=back
a7e63acd 163
c0883d63
SL
164=head1 Documentation
165
6fee6573 166=head2 Changes to Existing Documentation
d9d208b8 167
7d12a739 168=head3 L<perlfunc>
fd12b912 169
054383b6 170=over 4
fd12b912
DG
171
172=item *
173
7d12a739
A
174The L<perlfunc> manual page got a cleanup: there's more consistency now
175(in POD usage, grammar, code examples), better practices in code examples
176(use of C<my>, removal of bareword filehandles, dropped usage of C<&>
177when calling subroutines, ...), etc.
206e921d 178
af8a293f 179=back
206e921d 180
6fee6573 181=head1 Configuration and Compilation
d9d208b8 182
d7745c5b
DM
183=over 4
184
185=item *
186
7d12a739 187Dtrace builds now build successfully on systems with a newer dtrace
4511cd77
TC
188that require an input object file that uses the probes in the F<.d>
189file.
190
191Previously the probe would fail and cause a build failure. [perl
192#122287]
d7745c5b 193
d7745c5b
DM
194=item *
195
7d12a739
A
196F<installman> no longer warns if a module doesn't contain documentation,
197as this isn't actually an error. Now missing documentation will only
198be reported when using the B<--verbose> switch, and if it does, the
199missing documentation will be reported on C<STDOUT> instead of C<STDERR>.
d7745c5b 200
7d12a739 201=item *
d7745c5b 202
7d12a739
A
203The B<u> option to the C<ar> command was removed. This was redundant
204anyway, and on some systems, it caused a warning.
d7745c5b 205
7d12a739 206=item *
d7745c5b 207
7d12a739 208Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
d7745c5b 209
7d12a739 210=item *
d7745c5b 211
7d12a739 212Fix up dtrace compile/link for Solaris. [perl #127543]
d7745c5b 213
6fee6573 214=back
d7745c5b 215
7d12a739 216=head1 Platform Support
d7745c5b 217
6fee6573 218=head2 Platform-Specific Notes
d7745c5b 219
6fee6573 220=over 4
d7745c5b 221
e90a17ab 222=item Win32
d7745c5b 223
756bd853
SH
224=over
225
226=item *
227
e1ad4fbb
DIM
228Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
229result in an invalid C<$Config{archname}> for the resulting perl.
e90a17ab 230[perl #127584]
d7745c5b 231
756bd853
SH
232=item *
233
234Errors set by Winsock functions are now put directly into C<$^E>, and the
235relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
236modules for testing this against.
237
238The previous behaviour of putting the errors (converted to POSIX-style C<E*>
239error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
240of like-named Winsock and POSIX error constants, a relationship between which
241has unfortunately been established in one way or another since Perl 5.8.0.
242
243The new behaviour provides a much more robust solution for checking Winsock
244errors in portable software without accidentally matching POSIX tests that were
245intended for other OSes and may have different meanings for Winsock.
246
247The old behaviour is currently retained, warts and all, for backwards
248compatibility, but users are encouraged to change any code that tests C<$!>
249against C<E*> constants for Winsock errors to instead test C<$^E> against
250C<WSAE*> constants. After a suitable deprecation period, the old behaviour may
251be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
252possible confusion over which error variable to check.
253
254=back
255
d7745c5b
DM
256=back
257
6fee6573 258=head1 Selected Bug Fixes
42d92f4a 259
6fee6573 260=over 4
19b46ab5 261
23b4d8d6
TC
262=item *
263
710d3eb3
KW
264It now works properly to specify a user-defined property, such as
265
266 qr/\p{mypkg1::IsMyProperty}/i
267
268with C</i> caseless matching, an explicit package name, and
4fc43451 269I<IsMyProperty> not defined at the time of the pattern compilation.
23b4d8d6 270
2aade621
TC
271=item *
272
273Perl's memcpy(), memmove(), memset() and memcmp() fallbacks are now
274more compatible with the originals. [perl #127619]
275
7febee86
KW
276=item *
277
278The peak memory usage when compiling some regular expression patterns is
279now significantly smaller. [perl #127392]
280
281=item *
282
283A case has been fixed in which malformed UTF-8 in the source of a Perl
284script caused an assertion failure instead of an error message. [perl
285#127262]
286
7d12a739 287=item *
002a7765 288
7d12a739
A
289Fixed a buffer overrun issue in F<Socked.xs> which was reported by Coverity.
290[CPAN #111707]
84279daf 291
7d12a739 292=item *
84279daf 293
7d12a739
A
294Fixed a possible division by 0 error in C<Scalar::List::Utils::product>
295(reported by Coverity). [CPAN #105415]
84279daf 296
7d12a739
A
297=item *
298
299Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
300to modify the source SV, resulting in the program dying. [perl #127635]
84279daf 301
54e70d91
TC
302=item *
303
7d12a739 304Fixed a spurious warning about posix character classes. [perl #127581]
46d34d0e 305
7d12a739 306=item *
46d34d0e 307
7d12a739
A
308Fixed an obscure case where a pattern could fail to match. This only
309occurred when matching characters from the set of C1 controls, when
310the target matched string was in UTF-8, and only on EBCDIC platforms.
ac33c516 311
7d12a739
A
312=item *
313
314Fixed over eager warnings for C<< /[.foo.]/ >>.
315
316This prevents Perl from warning about constructs like C<< /[.].*[.]/ >>.
317[perl #127582, #127604]
ac33c516 318
9857cc20
S
319=item *
320
7d12a739
A
321Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
322it assumed that if the filename (without the F<.pmc?> extension) differed
323from the package name, if was a misspelled use statement (i.e. C<use Strict>
324instead of C<use strict>). We now check whether there's really a
325miscapitalization happening, and not another issue.
9857cc20 326
7d12a739
A
327=item *
328
329Turn an assertion into a more user friendly failure when parsing
330regexes. [perl #127599]
331
332=item *
3c84cb84 333
7d12a739
A
334Correctly raise an error when trying to compile patterns with
335unterminated character classes while there are trailing backslashes.
336[perl #126141].
0057cacf 337
7d12a739
A
338=item *
339
340Added a guard against malformed UTF-8. [perl #127262]
341
342=item *
343
344Only test C<semctl> if we have everything needed to use it. In a FreeBSD
345the C<semctl> entry point may exist, but it can be disabled by policy.
346[perl #127533]
347
348=item *
349
350Handle C<NOTHING> regops and C<EXACTFU_SS> regops in C<make_trie> properly.
351[perl #126206]
352
353=item *
354
355Fix a Solaris optimiser bug which prevented certain regular expression
356to be compiled. [perl #127455]
357
358=item *
359
360Improved the detection of infinite recursion in regular expressions.
361Previously, perl would in certain cases slowly consume resources until
362finally running out of memory. [perl #126182]
363
364
365=back
5a74572e 366
6fee6573 367=head1 Acknowledgements
e1ad135d 368
3ec37fe3
A
369Perl 5.23.9 represents approximately 4 weeks of development since Perl 5.23.8
370and contains approximately 21,000 lines of changes across 230 files from 23
371authors.
372
373Excluding auto-generated files, documentation and release tools, there were
374approximately 8,500 lines of changes to 120 .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 the
378improvements that became Perl 5.23.9:
379
380Abigail, Alex Vandiver, Andy Broad, Aristotle Pagaltzis, Chris 'BinGOs'
381Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, David
382Mitchell, Father Chrysostomos, H.Merijn Brand, Jarkko Hietaniemi, John Peacock,
383Karl Williamson, Leon Timmermans, Lukas Mai, Matthew Horsfall, Ricardo Signes,
384Sawyer X, Shlomi Fish, Steve Hay, Tony Cook, Yves Orton.
385
386The list above is almost certainly incomplete as it is automatically generated
387from version control history. In particular, it does not include the names of
388the (very much appreciated) contributors who reported issues to the Perl bug
389tracker.
390
391Many of the changes included in this version originated in the CPAN modules
392included in Perl's core. We're grateful to the entire CPAN community for
393helping Perl to flourish.
e1ad135d 394
3ec37fe3
A
395For a more complete list of all of Perl's historical contributors, please see
396the F<AUTHORS> file in the Perl source distribution.
f5b73711 397
44691e6f
AB
398=head1 Reporting Bugs
399
e08634c5
SH
400If you find what you think is a bug, you might check the articles recently
401posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
402L<https://rt.perl.org/> . There may also be information at
403L<http://www.perl.org/> , the Perl Home Page.
44691e6f 404
e08634c5
SH
405If you believe you have an unreported bug, please run the L<perlbug> program
406included with your release. Be sure to trim your bug down to a tiny but
407sufficient test case. Your bug report, along with the output of C<perl -V>,
408will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
409
410If the bug you are reporting has security implications, which make it
e08634c5
SH
411inappropriate to send to a publicly archived mailing list, then please send it
412to perl5-security-report@perl.org. This points to a closed subscription
413unarchived mailing list, which includes all the core committers, who will be
414able to help assess the impact of issues, figure out a resolution, and help
f9001595 415co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
416platforms on which Perl is supported. Please only use this address for
417security issues in the Perl core, not for modules independently distributed on
418CPAN.
44691e6f
AB
419
420=head1 SEE ALSO
421
e08634c5
SH
422The F<Changes> file for an explanation of how to view exhaustive details on
423what changed.
44691e6f
AB
424
425The F<INSTALL> file for how to build Perl.
426
427The F<README> file for general stuff.
428
429The F<Artistic> and F<Copying> files for copyright information.
430
431=cut