This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove boilerplate stuff from perldelta
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
b26bd9b0 5perldelta - what is new for perl v5.23.4
eabfc7bc 6
2cfe9b50 7=head1 DESCRIPTION
eabfc7bc 8
b26bd9b0 9This document describes differences between the 5.23.3 release and the 5.23.4
2cfe9b50 10release.
eabfc7bc 11
b26bd9b0
PM
12If you are upgrading from an earlier release such as 5.23.2, first read
13L<perl5233delta>, which describes differences between 5.23.2 and 5.23.3.
a43707ab 14
b26bd9b0 15=head1 Incompatible Changes
a43707ab 16
9ff1a054
RS
17=head2 Lexical $_ has been removed
18
a6d3278e
SH
19C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
20with no obvious solution. In Perl 5.18.0, it was made experimental on the
9ff1a054
RS
21theory that it would either be removed or redesigned in a less confusing (but
22backward-incompatible) way. Over the following years, no alternatives were
23proposed. The feature has now been removed and will fail to compile.
0ba9d88c 24
d6b89212
KW
25=head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
26
a6d3278e
SH
27The experimental Extended Bracketed Character Classes can contain regular
28bracketed character classes within them. These differ from regular ones in
29that white space is generally ignored, unless escaped by preceding it with a
30backslash. The white space that is ignored is now limited to just tab C<\t>
31and SPACE characters. Previously, it was any white space. See
d6b89212
KW
32L<perlrecharclass/Extended Bracketed Character Classes>.
33
b26bd9b0 34=head1 Performance Enhancements
fc4c3cec 35
b26bd9b0 36=over 4
a43707ab 37
0dafb1ce 38=item *
5ea25977 39
f83db990
SH
40C</fixed-substr/> has been made much faster.
41
42On platforms with a libc memchr() implementation which makes good use of
43underlying hardware support, patterns which include fixed substrings will now
44often be much faster; for example with glibc on on a recent x86_64 CPU, this:
45
46 $s = "a" x 1000 . "wxyz";
47 $s =~ /wxyz/ for 1..30000
48
49is now about 7 times faster. On systems with slow memchr(), e.g. 32-bit ARM
50Raspberry Pi, there will be a small or little speedup. Conversely, some
51pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
52times slower on the rPi, 1.5x slower on x86_64.
fc4c3cec 53
b26bd9b0 54=back
fc4c3cec 55
b26bd9b0 56=head1 Modules and Pragmata
eabfc7bc 57
b26bd9b0 58=head2 Updated Modules and Pragmata
5ea25977 59
b26bd9b0 60=over 4
80e86009 61
0dafb1ce 62=item *
80e86009 63
f83db990
SH
64L<B> has been upgraded from version 1.59 to 1.60.
65
66=item *
67
68L<bignum> has been upgraded from version 0.40 to 0.41.
69
70=item *
71
72L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
73
74=item *
75
76L<Compress::Raw::Zlib> has been upgraded from version 2.068_01 to 2.069.
77
78=item *
79
80L<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
81
82=item *
83
84L<DynaLoader> has been upgraded from version 1.34 to 1.35.
85
86=item *
87
88L<Encode> has been upgraded from version 2.77 to 2.78.
89
90=item *
91
92L<experimental> has been upgraded from version 0.014 to 0.016.
93
94=item *
95
96L<ExtUtils::CBuilder> has been upgraded from version 0.280223 to 0.280224.
97
98=item *
99
100L<File::Path> has been upgraded from version 2.11 to 2.12.
101
102=item *
103
104L<if> has been upgraded from version 0.0605 to 0.0606.
105
106=item *
107
108L<IO> has been upgraded from version 1.35 to 1.36.
109
110For an IO::Poll object C<$poll> with no file handles yet in it,
111C<$poll->poll(10)> now sleeps for up to 10 seconds anyway instead of returning
1120 immediately.
113L<[cpan #25049]|https://rt.cpan.org/Ticket/Display.html?id=25049>
114
115=item *
116
117L<IO-Compress> has been upgraded from version 2.068 to 2.069.
118
119=item *
120
121L<Math::BigInt> has been upgraded from version 1.999701 to 1.999704.
122
123=item *
124
125L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.34.
126
127=item *
128
129L<Module::CoreList> has been upgraded from version 5.20150920 to 5.20151020.
130
131=item *
132
133L<Module::Metadata> has been upgraded from version 1.000027 to 1.000029.
134
135=item *
136
137L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
138
139=item *
140
141L<PerlIO::encoding> has been upgraded from version 0.21 to 0.22.
142
143PerlIO::encoding objects are now properly duplicated.
144L<[perl #31923]|https://rt.perl.org/Ticket/Display.html?id=31923>
145
146=item *
147
148L<POSIX> has been upgraded from version 1.57 to 1.58.
149
150If C<POSIX::strerror> was passed C<$!> as its argument then it accidentally
151cleared C<$!>. This has been fixed.
152L<[perl #126229]|https://rt.perl.org/Ticket/Display.html?id=126229>
153
154=item *
155
156L<Socket> has been upgraded from version 2.020_01 to 2.020_02.
157
158Various fixes have been applied to inet_pton for the benefit of MS VC++ builds
159on Windows. In particular, this restores the build with MS VC++ 6.0.
160
161=item *
162
163L<Unicode::Normalize> has been upgraded from version 1.19 to 1.21.
164
165=item *
166
167L<warnings> has been upgraded from version 1.33 to 1.35.
168
169The C<warnings::enabled> example now actually uses C<warnings::enabled>.
170L<[perl #126051]|https://rt.perl.org/Ticket/Display.html?id=126051>
5ea25977 171
b26bd9b0 172=back
5ea25977 173
b26bd9b0 174=head1 Documentation
0dd5b0dc 175
b26bd9b0 176=head2 Changes to Existing Documentation
cf73ceda 177
f83db990
SH
178=head3 L<perlapi>
179
180=over 4
181
182=item *
183
184The process of using undocumented globals has been documented, namely, that one
185should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
186first to get the go-ahead for documenting and using an undocumented function or
187global variable.
188
189=back
190
191=head3 L<perlsub>
192
193=over 4
194
195=item *
196
197Updated to note that anonymous subroutines can have signatures.
198
199=back
200
201=head3 L<perltie>
b26bd9b0
PM
202
203=over 4
eabfc7bc 204
0dafb1ce 205=item *
eabfc7bc 206
f83db990
SH
207The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
208
209=back
210
211=head3 L<perlvar>
212
213=over 4
214
215=item *
216
217The specific true value of C<$!{E...}> is now documented, noting that it is
218subject to change and not guaranteed.
5ea25977 219
b26bd9b0 220=back
5ea25977 221
b26bd9b0 222=head1 Diagnostics
5ea25977 223
b26bd9b0
PM
224The following additions or changes have been made to diagnostic output,
225including warnings and fatal error messages. For the complete list of
226diagnostic messages, see L<perldiag>.
5ea25977 227
b26bd9b0 228=head2 New Diagnostics
a43707ab 229
b26bd9b0 230=head3 New Errors
0dafb1ce 231
b26bd9b0 232=over 4
5ea25977
MH
233
234=item *
235
163a633c 236L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
dc013420 237
4003ea29
KW
238=item *
239
240L<perldiag/"Illegal user-defined property name">
241
cf73ceda 242=back
dc013420 243
b26bd9b0 244=head2 Changes to Existing Diagnostics
0dafb1ce 245
0dafb1ce 246=over 4
a43707ab 247
0dafb1ce
PM
248=item *
249
a0c8eb51
TC
250L<"Can't modify non-lvalue subroutine call of &%s"|perldiag/"Can't modify non-lvalue subroutine call of &%s">
251
a6d3278e
SH
252This error now reports the name of the non-lvalue subroutine you attempted to
253use as an lvalue.
f282dc56 254
b26bd9b0 255=back
f282dc56 256
33c85a9f 257=head1 Configuration and Compilation
b26bd9b0
PM
258
259=over 4
cf73ceda 260
0dafb1ce 261=item *
cf73ceda 262
c2d4ebc6
DD
263Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
264C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
a6d3278e 265the interpreter, since Perl 5.17.10. This has been fixed.
cf73ceda 266
f282dc56
MH
267=item *
268
f83db990
SH
269If you had F<Configure> hints for C<d_procselfexe> or C<procselfexe>, they were
270probably broken by the AmigaOS changes in Perl 5.23.3. This has been now
271fixed.
272L<[perl #126152]|https://rt.perl.org/Ticket/Display.html?id=126152>
cf73ceda
MH
273
274=back
275
b26bd9b0 276=head1 Platform Support
0b8e4842 277
0dafb1ce 278=head2 Platform-Specific Notes
b7b593d8 279
fc4c3cec 280=over 4
4b951711 281
f83db990 282=item IRIX
4b951711 283
f83db990
SH
284=over
285
286=item *
287
288Under some circumstances IRIX stdio fgetc() and fread() set the errno to
289C<ENOENT>, which made no sense according to either IRIX or POSIX docs. Errno
290is now cleared in such cases.
291L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
292
293=item *
294
295Problems when multiplying long doubles by infinity have been fixed.
296L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
297
298=back
299
300=item MacOS X
301
302=over
303
304=item *
305
306Until now OS X builds of perl have specified a link target of 10.3 (Panther,
3072003) but have not specified a compiler target. From now on, builds of perl on
308OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
309version and specify that as the explicit build target in both compiler and
310linker flags, thus preserving binary compatibility for extensions built later
311regardless of changes in OS X, SDK, or compiler and linker versions. To
312override the default value used in the build and preserved in the flags,
313specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
314perl, where 10.N is the version of OS X you wish to target. In OS X 10.5 or
315earlier there is no change to the behavior present when those systems were
316current; the link target is still OS X 10.3 and there is no explicit compiler
317target.
318
319=back
320
321=item VMS
322
323=over
324
325=item *
326
327Perl now implements its own C<killpg> by scanning for processes in the
328specified process group, which may not mean exactly the same thing as a Unix
329process group, but allows us to send a signal to a parent (or master) process
330and all of its sub-processes. At the perl level, this means we can now send a
331negative pid like so:
332
333 kill SIGKILL, -$pid;
334
335to signal all processes in the same group as C<$pid>.
336
337=back
cf73ceda 338
0517ed38
DD
339=item Win32
340
341=over
342
343=item *
344
6937817d 345A new build option C<USE_NO_REGISTRY> has been added to the makefiles. This
a6d3278e
SH
346option is off by default, meaning the default is to do Windows registry
347lookups. This option stops Perl from looking inside the registry for anything.
348For what values are looked up in the registry see L<perlwin32>. Internally, in
349C, the name of this option is C<WIN32_NO_REGISTRY>.
6937817d
DD
350
351=item *
352
0517ed38 353The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
a6d3278e
SH
354C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
355vars starting with C<PERL> has changed. Previously, the 2 keys were checked
356for entries at all times through Perl processes life time even if they did not
357exist. For performance reasons, now, if the root key (i.e.
0517ed38
DD
358C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
359not exist at process start time, it will not be checked again for C<%ENV>
360override entries for the remainder of the Perl processes life. This more
a6d3278e
SH
361closely matches Unix behaviour in that the environment is copied or inherited
362on startup and changing the variable in the parent process or another process
363or editing <.bashrc> will not change the environmental variable in other
364existing, running, processes.
0517ed38 365
8ca2a5d6
DD
366=item *
367
368One glob fetch was removed for each C<-X> or C<stat> call whether done from
a6d3278e
SH
369Perl code or internally from Perl's C code. The glob being looked up was
370C<${^WIN32_SLOPPY_STAT}> which is a special variable. This makes C<-X> and
8ca2a5d6
DD
371C<stat> slightly faster.
372
373=item *
374
a6d3278e
SH
375During miniperl's process startup, during the build process, 4 to 8 IO calls
376related to the process starting F<.pl> and the F<buildcustomize.pl> file were
377removed from the code opening and executing the first 1 or 2 F<.pl> files.
8ca2a5d6 378
0517ed38
DD
379=back
380
b26bd9b0 381=back
f4240379 382
b26bd9b0 383=head1 Internal Changes
f4240379 384
b26bd9b0 385=over 4
d89ea360
DD
386
387=item *
388
a6d3278e
SH
389L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>. It
390previously has always returned C<0> since Perl 5.000 stable but that was
fa7a1e49
DD
391undocumented. Although C<sv_backoff> is marked as public API, XS code is not
392expected to be impacted since the proper API call would be through public API
393C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
394C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
395meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
d89ea360 396
0efe3111
DM
397=item *
398
a6d3278e
SH
399The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
400with integer truncation and wrapping. In particular, some casts formerly used
401within the macros have been removed. This means for example that passing an
402unsigned nitems arg is likely to raise a compiler warning now (it's always been
403documented to require a signed value; formerly int, lately SSize_t).
0efe3111 404
d89ea360
DD
405=back
406
b26bd9b0 407=head1 Selected Bug Fixes
eabfc7bc 408
fc4c3cec 409=over 4
eabfc7bc 410
73d6481e 411=item *
eabfc7bc 412
a6d3278e
SH
413There were places in regular expression patterns where comments (C<(?#...)>)
414weren't allowed, but should have been. This is now fixed.
415L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
cf73ceda 416
5a55ed33
KW
417=item *
418
a6d3278e
SH
419A regression from perl Perl 5.20 has been fixed, in which some syntax errors in
420L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
421within regular expression patterns could cause a segfault instead of a proper
422error message.
423L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
5a55ed33 424
0efe3111
DM
425=item *
426
427Some problems with attempting to extend the perl stack to around 2G or 4G
a6d3278e
SH
428entries have been fixed. This was particularly an issue on 32-bit perls built
429to use 64-bit integers, and was easily noticeable with the list repetition
430operator, e.g.
0efe3111
DM
431
432 @a = (1) x $big_number
433
a6d3278e
SH
434Formerly perl may have crashed, depending on the exact value of C<$big_number>;
435now it will typically raise an exception.
436L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
0efe3111 437
f83db990
SH
438=item *
439
440In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
441the condition is C<(?!)> then perl failed the match outright instead of
442matching the no-pattern. This has been fixed.
443L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
444
445=item *
446
447The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
448argument and set C<REGERROR/REGMARK> appropriately as well.
449L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
450
b26bd9b0 451=back
9a7bb2f7 452
b26bd9b0 453=head1 Errata From Previous Releases
5ea25977 454
b26bd9b0 455=over 4
5a74572e 456
b26bd9b0 457=item *
5a74572e 458
a6d3278e
SH
459(This was actually done in Perl 5.23.2, but the perldelta entry got missed.)
460The way that C<OP_AASSIGN> handles assignment with potentially common values
461(e.g. C<($a,$b) = ($b, $a)> has changed. In particular the C<OPpASSIGN_COMMON>
462flag has been replaced with three more specific flags:
463
464 OPpASSIGN_COMMON_AGG
465 OPpASSIGN_COMMON_RC1
466 OPpASSIGN_COMMON_SCALAR
467
468and the runtime now sometimes does a mark and sweep using the C<SVf_BREAK> to
469detect common elements.
5a74572e 470
b26bd9b0 471=back
5a74572e 472
b26bd9b0 473=head1 Acknowledgements
5a74572e 474
b26bd9b0 475XXX Generate this with:
5a74572e 476
b26bd9b0 477 perl Porting/acknowledgements.pl v5.23.3..HEAD
f5b73711 478
44691e6f
AB
479=head1 Reporting Bugs
480
e08634c5
SH
481If you find what you think is a bug, you might check the articles recently
482posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
483L<https://rt.perl.org/> . There may also be information at
484L<http://www.perl.org/> , the Perl Home Page.
44691e6f 485
e08634c5
SH
486If you believe you have an unreported bug, please run the L<perlbug> program
487included with your release. Be sure to trim your bug down to a tiny but
488sufficient test case. Your bug report, along with the output of C<perl -V>,
489will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
490
491If the bug you are reporting has security implications, which make it
e08634c5
SH
492inappropriate to send to a publicly archived mailing list, then please send it
493to perl5-security-report@perl.org. This points to a closed subscription
494unarchived mailing list, which includes all the core committers, who will be
495able to help assess the impact of issues, figure out a resolution, and help
f9001595 496co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
497platforms on which Perl is supported. Please only use this address for
498security issues in the Perl core, not for modules independently distributed on
499CPAN.
44691e6f
AB
500
501=head1 SEE ALSO
502
e08634c5
SH
503The F<Changes> file for an explanation of how to view exhaustive details on
504what changed.
44691e6f
AB
505
506The F<INSTALL> file for how to build Perl.
507
508The F<README> file for general stuff.
509
510The F<Artistic> and F<Copying> files for copyright information.
511
512=cut