This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlhist: added entry for 5.23.5
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
b6af474d 5perldelta - what is new for perl v5.23.5
eabfc7bc 6
2cfe9b50 7=head1 DESCRIPTION
eabfc7bc 8
b6af474d 9This document describes differences between the 5.23.4 release and the 5.23.5
2cfe9b50 10release.
eabfc7bc 11
b6af474d
SH
12If you are upgrading from an earlier release such as 5.23.3, first read
13L<perl5234delta>, which describes differences between 5.23.3 and 5.23.4.
a43707ab 14
b6af474d 15=head1 Performance Enhancements
f83db990 16
83144be3 17=over 4
f83db990 18
83144be3 19=item *
f83db990 20
83144be3
A
21Faster addition, subtraction and multiplication.
22
23Since 5.8.0, arithmetic became slower due to the need to support
2464-bit integers. To deal with 64-bit integers, a lot more corner
25cases need to be checked, which adds time. We now detect common
26cases where there is no need to check for those corner cases,
27and special-case them.
f83db990
SH
28
29=item *
30
83144be3
A
31Faster preincrement, predecrement, postincrement, postdecrement.
32
33By internally splitting the functions which handled multiple
34cases into different functions.
f83db990 35
b6af474d 36=back
f83db990 37
b6af474d 38=head1 Modules and Pragmata
f83db990 39
a8c28920 40=head2 Updated Modules and Pragmata
f83db990 41
a8c28920 42=over 4
f83db990 43
a8c28920 44=item *
f83db990 45
a8c28920 46L<arybase> has been upgraded from version 0.10 to 0.11.
f83db990
SH
47
48=item *
49
a8c28920 50L<B> has been upgraded from version 1.60 to 1.61.
f83db990 51
a8c28920 52=item *
f83db990 53
a8c28920 54L<base> has been upgraded from version 2.22 to 2.22_01.
f83db990 55
a8c28920
A
56Better handling of attempts to load non-existent modules.
57Improvements to fields.pm documentation. L<base> now requires v5.8.0.
f83db990
SH
58
59=item *
60
a8c28920 61L<Carp> has been upgraded from version 1.37 to 1.38.
f83db990 62
a8c28920
A
63Improvements when working with older perls.
64
65=item *
f83db990 66
a8c28920 67L<Config::Perl::V> has been upgraded from version 0.24 to 0.25.
f83db990 68
a8c28920
A
69=item *
70
71L<Devel::Peek> has been upgraded from version 1.22 to 1.23.
72
73=item *
74
75L<Dumpvalue> has been upgraded from version 1.17 to 1.18.
76
77=item *
78
79L<DynaLoader> has been upgraded from version 1.35 to 1.36.
80
81=item *
82
83L<fields> has been upgraded from version 2.17 to 2.22_01.
84
85=item *
86
87L<File::Find> has been upgraded from version 1.31 to 1.32.
88
89Handles empty directory lists.
90
91=item *
92
93L<File::Spec> has been upgraded from version 3.58 to 3.59.
94
95=item *
96
97L<Getopt::Long> has been upgraded from version 2.47 to 2.48.
98
99Fixes an issue with C<< gnu_compat >>
100
101=item *
102
103L<Hash::Util::FieldHash> has been upgraded from version 1.17 to 1.18.
104
105=item *
106
107L<IPC::Open3> has been upgraded from version 1.19 to 1.20.
108
109Include the error message on C<< exec() >> failure.
110
111=item *
112
113L<Math::BigInt> has been upgraded from version 1.999704 to 1.999710.
114
115=item *
116
117L<Math::BigInt::FastCalc> has been upgraded from version 0.34 to 0.37.
118
119=item *
120
121L<Module::CoreList> has been upgraded from version 5.20151020 to 5.20151120.
122
123=item *
124
125L<Module::Metadata> has been upgraded from version 1.000029 to 1.000030.
126
127Temp dirs cleaned up during tests. More accurately mark tests as TODO, so as to have a quieter and less confusing test run without passing TODO tests.
128
129=item *
130
131L<PerlIO::encoding> has been upgraded from version 0.22 to 0.23.
132
133=item *
134
135L<PerlIO::mmap> has been upgraded from version 0.014 to 0.015.
136
137=item *
138
139L<PerlIO::scalar> has been upgraded from version 0.23 to 0.24.
140
141=item *
142
143L<PerlIO::via> has been upgraded from version 0.15 to 0.16.
144
145=item *
146
147L<Pod::Simple> has been upgraded from version 3.30 to 3.32.
148
149Switched debugging output from C<< STDOUT >> to C<< STDERR >>.
150
151Added C<< errata_seen() >> to make POD errors easily accessible.
152
153Simplified the detection of case-insensitivity in Pod::Simple::Search.
154
155Fixed C<< Use of uninitialized value $1 in lc >> warning in
156Pod::Simple::Search.
157
158If C<< @INC >> includes the current directory symbol, C<.>, the
159C<< survey() >> method of C<< Pod::Simple::Search >> no longer excludes
160it from its list of directories to search. Instead, The C<< survey() >> and
161C<< find() >> methods now both exclude duplicate directories from C<< @INC >>
162(RT #102344).
163
164Moved source repository and updated links to new perl-pod GitHub
165organization: L<https://github.com/perl-pod/pod-simple>.
166
167Improved repository links and added GitHub issue tracking link to
168the distribution metadata.
169
170Switched from C<< File::Spec >>'s C<< catdir >> to C<< catfile >>
171for path names, to fix failures on VMS. Also now use Unix path semantics
172where they're not required to be platform-specific. (RT #105511).
173
174Improved the example use of the C<< html_encode_chars() >> method in
175the C<< Pod::Simple::XHTML >> documentation.
176
177=item *
178
179L<POSIX> has been upgraded from version 1.58 to 1.59.
180
181=item *
182
183L<Thread::Queue> has been upgraded from version 3.06 to 3.07.
184
185=item *
186
187L<threads> has been upgraded from version 2.03 to 2.04.
188
189=item *
190
191L<threads::shared> has been upgraded from version 1.48 to 1.49.
192
193=item *
194
195L<Tie::Scalar> has been upgraded from version 1.03 to 1.04.
196
197=item *
198
199L<Time::HiRes> has been upgraded from version 1.9727_02 to 1.9728.
200
201=item *
202
203L<Time::Piece> has been upgraded from version 1.30 to 1.31.
204
205=item *
206
207L<Unicode::Normalize> has been upgraded from version 1.21 to 1.23.
f83db990
SH
208
209=item *
210
a8c28920 211L<XSLoader> has been upgraded from version 0.20 to 0.21.
f83db990 212
b6af474d 213=back
f83db990 214
b6af474d 215=head1 Diagnostics
f83db990 216
b6af474d
SH
217The following additions or changes have been made to diagnostic output,
218including warnings and fatal error messages. For the complete list of
219diagnostic messages, see L<perldiag>.
f83db990 220
b6af474d 221=head2 New Diagnostics
f83db990 222
b6af474d 223=head3 New Errors
b26bd9b0
PM
224
225=over 4
eabfc7bc 226
0dafb1ce 227=item *
eabfc7bc 228
702e1efd 229L<<< Sequence (?... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Sequence (?... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
5ea25977 230
b26bd9b0 231=back
5ea25977 232
b6af474d 233=head2 Changes to Existing Diagnostics
a43707ab 234
b26bd9b0 235=over 4
5ea25977
MH
236
237=item *
238
83144be3
A
239When running out of memory during an attempt the increase the stack
240size, previously, perl would die using the cryptic message
241C<< panic: av_extend_guts() negative count (-9223372036854775681) >>.
242This has been fixed to show the prettier message:
243L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend" >>
f282dc56 244
b26bd9b0 245=back
f282dc56 246
33c85a9f 247=head1 Configuration and Compilation
b26bd9b0 248
b6af474d 249=over 4
cf73ceda 250
f282dc56
MH
251=item *
252
c2f55187
RS
253C<Configure> now acts as if the C<-O> option is always passed, allowing command
254line options to override saved configuration. This should eliminate confusion
255when command line options are ignored for no obvious reason. C<-O> is now
256permitted, but ignored.
cf73ceda 257
83144be3 258=item *
0b8e4842 259
83144be3
A
260Some filesystem stat symbols which were not used by the Perl core
261were removed in an earlier commit. However, since these symbols
262turned out to be used by at least one CPAN module, these symbols
263have been restored.
4b951711 264
83144be3 265=item *
f83db990 266
83144be3
A
267C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
268not used by C<< PPPort.pm >>, only by its test files.
f83db990
SH
269
270=item *
271
83144be3
A
272It is now possible to specify which compilation date to show on
273C<< perl -V >> output, by setting the macro C<< PERL_BUILD_DATE >>.
f83db990
SH
274
275=back
276
b6af474d 277=head1 Platform Support
f83db990 278
83144be3 279=head2 Platform-Specific Notes
0517ed38 280
b6af474d 281=over 4
0517ed38 282
83144be3 283=item Win32
6937817d 284
83144be3 285Win32 does now a parallel build with C++.
0517ed38 286
83144be3 287=item Tru64
8ca2a5d6 288
83144be3
A
289Workaround where Tru64 balks when prototypes are listed as
290C<< PERL_STATIC_INLINE >>, but where the test is build with
291C<< -DPERL_NO_INLINE_FUNCTIONS >>.
0517ed38 292
b26bd9b0 293=back
f4240379 294
b26bd9b0 295=head1 Internal Changes
f4240379 296
b6af474d 297=over 4
d89ea360 298
0efe3111
DM
299=item *
300
83144be3 301C<< sv_ref() >> is now part of the API.
0efe3111 302
d89ea360
DD
303=back
304
b26bd9b0 305=head1 Selected Bug Fixes
eabfc7bc 306
b6af474d 307=over 4
8ca3d7d7
KW
308
309=item *
310
7195e5da
KW
311C<\b{sb}> works much better. In Perl v5.22.0, this new construct didn't
312seem to give the expected results, yet passed all the tests in the
313extensive suite furnished by Unicode. It turns out that it was because
314these were short input strings, and the failures had to do with longer
315inputs. This was fixed in Perl 5.23.4, but the improvement was not
316noticed until after that was released, so is included here now.
0efe3111 317
a82f4918
KW
318=item *
319
320Certain syntax errors in
321L<perlrecharclass/Extended Bracketed Character Classes> caused panics
322instead of the proper error message. This has now been fixed. [perl
323#126481]
324
83144be3 325=item *
f83db990 326
83144be3
A
327An earlier commit added a message when a quantifier in a regular
328expression was useless, but then caused the parser to skip it;
329this caused the surplus quantifier to be silently ignored, instead
c2e36526 330of throwing an error. This is now fixed. [perl #126253]
f83db990 331
83144be3 332=item *
f83db990 333
83144be3
A
334The switch to building non-XS modules last in win32/makefile.mk (introduced
335by design as part of the changes to enable parallel building) caused the
336build of POSIX to break due to problems with the version module. This
337is now fixed.
f83db990 338
133117f5
KW
339=item *
340
83144be3 341Improved parsing of hex float constants.
133117f5 342
83144be3 343=item *
9a7bb2f7 344
83144be3
A
345Fixed an issue with C<< pack >> where C<< pack "H" >> (and C<< pack "h" >>)
346could read past the source when given a non-utf8 source, and a utf8 target.
347[perl #126325]
5a74572e 348
b26bd9b0 349=item *
5a74572e 350
83144be3
A
351Fixed several cases where perl would abort due to a segmentation fault,
352or a C-level assert. [perl #126615], [perl #126602], [perl #126193].
5a74572e 353
b26bd9b0 354=back
5a74572e 355
b6af474d 356=head1 Acknowledgements
04924b39 357
b6af474d 358XXX Generate this with:
04924b39 359
b6af474d 360 perl Porting/acknowledgements.pl v5.23.4..HEAD
f5b73711 361
44691e6f
AB
362=head1 Reporting Bugs
363
e08634c5
SH
364If you find what you think is a bug, you might check the articles recently
365posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
366L<https://rt.perl.org/> . There may also be information at
367L<http://www.perl.org/> , the Perl Home Page.
44691e6f 368
e08634c5
SH
369If you believe you have an unreported bug, please run the L<perlbug> program
370included with your release. Be sure to trim your bug down to a tiny but
371sufficient test case. Your bug report, along with the output of C<perl -V>,
372will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
373
374If the bug you are reporting has security implications, which make it
e08634c5
SH
375inappropriate to send to a publicly archived mailing list, then please send it
376to perl5-security-report@perl.org. This points to a closed subscription
377unarchived mailing list, which includes all the core committers, who will be
378able to help assess the impact of issues, figure out a resolution, and help
f9001595 379co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
380platforms on which Perl is supported. Please only use this address for
381security issues in the Perl core, not for modules independently distributed on
382CPAN.
44691e6f
AB
383
384=head1 SEE ALSO
385
e08634c5
SH
386The F<Changes> file for an explanation of how to view exhaustive details on
387what changed.
44691e6f
AB
388
389The F<INSTALL> file for how to build Perl.
390
391The F<README> file for general stuff.
392
393The F<Artistic> and F<Copying> files for copyright information.
394
395=cut