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