Commit | Line | Data |
---|---|---|
b6af474d SH |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5234delta - 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 | Some regressions from Perl 5.20 have 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 | L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404> | |
429 | ||
430 | =item * | |
431 | ||
432 | Another problem with | |
433 | L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> | |
434 | constructs has been fixed wherein things like C<\c]> could cause panics. | |
435 | L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181> | |
436 | ||
437 | =item * | |
438 | ||
439 | Some problems with attempting to extend the perl stack to around 2G or 4G | |
440 | entries have been fixed. This was particularly an issue on 32-bit perls built | |
441 | to use 64-bit integers, and was easily noticeable with the list repetition | |
442 | operator, e.g. | |
443 | ||
444 | @a = (1) x $big_number | |
445 | ||
446 | Formerly perl may have crashed, depending on the exact value of C<$big_number>; | |
447 | now it will typically raise an exception. | |
448 | L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937> | |
449 | ||
450 | =item * | |
451 | ||
452 | In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if | |
453 | the condition is C<(?!)> then perl failed the match outright instead of | |
454 | matching the no-pattern. This has been fixed. | |
455 | L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222> | |
456 | ||
457 | =item * | |
458 | ||
459 | The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional | |
460 | argument and set C<REGERROR>/C<REGMARK> appropriately as well. | |
461 | L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186> | |
462 | ||
463 | =item * | |
464 | ||
465 | Several bugs, including a segmentation fault, have been fixed with the bounds | |
466 | checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>, | |
467 | C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>. All the C<\B{}> ones now match an empty | |
468 | string; none of the C<\b{}> ones do. | |
469 | L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319> | |
470 | ||
471 | =back | |
472 | ||
473 | =head1 Errata From Previous Releases | |
474 | ||
475 | =over 4 | |
476 | ||
477 | =item * | |
478 | ||
479 | (This was actually done in Perl 5.23.2, but the perldelta entry got missed.) | |
480 | The way that C<OP_AASSIGN> handles assignment with potentially common values | |
481 | (e.g. C<($a,$b) = ($b, $a)> has changed. In particular the C<OPpASSIGN_COMMON> | |
482 | flag has been replaced with three more specific flags: | |
483 | ||
484 | OPpASSIGN_COMMON_AGG | |
485 | OPpASSIGN_COMMON_RC1 | |
486 | OPpASSIGN_COMMON_SCALAR | |
487 | ||
488 | and the runtime now sometimes does a mark and sweep using the C<SVf_BREAK> to | |
489 | detect common elements. | |
490 | ||
491 | =back | |
492 | ||
493 | =head1 Acknowledgements | |
494 | ||
495 | Perl 5.23.4 represents approximately 4 weeks of development since Perl 5.23.3 | |
496 | and contains approximately 21,000 lines of changes across 360 files from 21 | |
497 | authors. | |
498 | ||
499 | Excluding auto-generated files, documentation and release tools, there were | |
500 | approximately 15,000 lines of changes to 250 .pm, .t, .c and .h files. | |
501 | ||
502 | Perl continues to flourish into its third decade thanks to a vibrant community | |
503 | of users and developers. The following people are known to have contributed | |
504 | the improvements that became Perl 5.23.4: | |
505 | ||
506 | Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel | |
507 | Dragan, David Mitchell, Doug Bell, Father Chrysostomos, H.Merijn Brand, Jarkko | |
508 | Hietaniemi, Karen Etheridge, Karl Williamson, Nicholas Clark, Peter Martini, | |
509 | Rafael Garcia-Suarez, Reini Urban, Ricardo Signes, Steve Hay, Tony Cook, Victor | |
510 | Adam, Vincent Pit, Yves Orton. | |
511 | ||
512 | The list above is almost certainly incomplete as it is automatically generated | |
513 | from version control history. In particular, it does not include the names of | |
514 | the (very much appreciated) contributors who reported issues to the Perl bug | |
515 | tracker. | |
516 | ||
517 | Many of the changes included in this version originated in the CPAN modules | |
518 | included in Perl's core. We're grateful to the entire CPAN community for | |
519 | helping Perl to flourish. | |
520 | ||
521 | For a more complete list of all of Perl's historical contributors, please see | |
522 | the F<AUTHORS> file in the Perl source distribution. | |
523 | ||
524 | =head1 Reporting Bugs | |
525 | ||
526 | If you find what you think is a bug, you might check the articles recently | |
527 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
528 | L<https://rt.perl.org/> . There may also be information at | |
529 | L<http://www.perl.org/> , the Perl Home Page. | |
530 | ||
531 | If you believe you have an unreported bug, please run the L<perlbug> program | |
532 | included with your release. Be sure to trim your bug down to a tiny but | |
533 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
534 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
535 | ||
536 | If the bug you are reporting has security implications, which make it | |
537 | inappropriate to send to a publicly archived mailing list, then please send it | |
538 | to perl5-security-report@perl.org. This points to a closed subscription | |
539 | unarchived mailing list, which includes all the core committers, who will be | |
540 | able to help assess the impact of issues, figure out a resolution, and help | |
541 | co-ordinate the release of patches to mitigate or fix the problem across all | |
542 | platforms on which Perl is supported. Please only use this address for | |
543 | security issues in the Perl core, not for modules independently distributed on | |
544 | CPAN. | |
545 | ||
546 | =head1 SEE ALSO | |
547 | ||
548 | The F<Changes> file for an explanation of how to view exhaustive details on | |
549 | what changed. | |
550 | ||
551 | The F<INSTALL> file for how to build Perl. | |
552 | ||
553 | The F<README> file for general stuff. | |
554 | ||
555 | The F<Artistic> and F<Copying> files for copyright information. | |
556 | ||
557 | =cut |