This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update perldelta module versions (Porting/corelist-perldelta.pl)
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.23.8
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.23.7 release and the 5.23.8
10 release.
11
12 If you are upgrading from an earlier release such as 5.23.6, first read
13 L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7.
14
15 =head1 Core Enhancements
16
17 =head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
18
19 When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
20 C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
21 included in the hash passed to the handler, if supported by the
22 platform.
23
24 =head1 Security
25
26 =head2 Set proper umask before calling C<mkstemp(3)>
27
28 In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
29 and restoring it afterwards. This wrongfully tells open(2) to strip
30 the owner read and write bits from the given mode before applying it,
31 rather than the intended negation of leaving only those bits in place.
32
33 Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
34 glibc) createa a file with permissions 0066, leaving world read and
35 write permissions regardless of current umask.
36
37 This has been fixed by using umask 0177 instead. [perl #127322]
38
39 =head1 Incompatible Changes
40
41 =head2 C<qr/\N{}/> now disallowed under C<use re "strict">
42
43 An empty C<\N{}> makes no sense, but for backwards compatibility is
44 silently accepted as doing nothing.  But now this is a fatal error under
45 the experimental feature L<re/'strict' mode>.
46
47 =head1 Performance Enhancements
48
49 =over 4
50
51 =item *
52
53 The overhead of scope entry and exit has been considerably reduced, so
54 for example subroutine calls, loops and basic blocks are all faster now.
55 This empty function call now takes about a third less time to execute:
56
57     sub f{} f();
58
59 =item *
60
61 On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
62 exist, is now 3.5x faster on a SSD (or any drive) than before.
63
64 =back
65
66 =head1 Modules and Pragmata
67
68 =head2 Updated Modules and Pragmata
69
70 =over 4
71
72 =item *
73
74 F<cpan/podlators/> has been upgraded from version 4.04 to 4.06.
75
76 =item *
77
78 The PathTools module collection has been upgraded from version 3.62
79 to 3.63.
80
81 =item *
82
83 L<DynaLoader> has been upgraded from version 1.37 to 1.38.
84
85 DynaLoader now always looks for bootstrap files having the same base name as
86 the module for which the bootstrap code is being run. Previously, and only on
87 platforms that use C<mod2fname> to produce unique loadable library names,
88 L<DynaLoader> would look for the bootstrap file using a base name that matched
89 the loadable library and not find it.
90
91 =item *
92
93 L<Encode> has been upgraded from version 2.78 to 2.80.
94
95 =item *
96
97 L<ExtUtils::CBuilder> has been upgraded from version 0.280224 to 0.280225.
98
99 =item *
100
101 L<ExtUtils::MakeMaker> has been upgraded from version 7.10 to 7.10_01.
102
103 =item *
104
105 L<File::Spec> has been upgraded from version 3.62 to 3.63.
106
107 =item *
108
109 L<IPC::SysV> has been upgraded from version 2.04 to 2.05.
110
111 =item *
112
113 L<Module::CoreList> has been upgraded from version 5.20160120 to 5.20160121.
114
115 =item *
116
117 L<ODBM_File> has been upgraded from version 1.12 to 1.13.
118
119 =item *
120
121 L<PerlIO::encoding> has been upgraded from version 0.23 to 0.24.
122
123 =item *
124
125 L<POSIX> has been upgraded from version 1.59 to 1.63.
126
127 It can now export constants for the C<code> value in the hash passed to the
128 L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
129
130 These previously deprecated functions are now removed: C<isalnum>,
131 C<isalpha>, C<iscntrl>, C<isdigit>, C<isgraph>, C<islower>, C<isprint>,
132 C<ispunct>, C<isspace>, C<isupper>, and C<isxdigit>.
133
134 =item *
135
136 L<Storable> has been upgraded from version 2.54 to 2.55.
137
138 =item *
139
140 L<Time::HiRes> has been upgraded from version 1.9728 to 1.9730.
141
142 It can now export Linux-specific and FreeBSD-specific C<clock_gettime()>
143 constants. It also now has emulation for OS X C<clock_nanosleep()>,
144 C<clock_gettime()>, and C<clock_getres()>.
145
146 =back
147
148 =head1 Documentation
149
150 =head2 Changes to Existing Documentation
151
152 =head3 L<perlguts>
153
154 =over 4
155
156 =item *
157
158 A new section has been added, L<perlguts/"Dynamic Scope and the Context
159 Stack">, which explains how the perl context stack works.
160
161 =back
162
163 =head3 L<perlmodlib>
164
165 =over 4
166
167 =item *
168
169 We now recommend contacting the module-authors list or PAUSE in seeking
170 guidance on the naming of modules.
171
172 =back
173
174 =head1 Diagnostics
175
176 The following additions or changes have been made to diagnostic output,
177 including warnings and fatal error messages.  For the complete list of
178 diagnostic messages, see L<perldiag>.
179
180 =head2 New Diagnostics
181
182 =head3 New Errors
183
184 =over 4
185
186 =item *
187
188 L<Sequence (?PE<lt>... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
189 |perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
190
191 =item *
192
193 L<Sequence (?PE<gt>... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
194 |perldiag/Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>>
195
196 =item *
197
198 L<Empty \%c in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
199 |perldiag/Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>>
200
201 =back
202
203 =head3 New Warnings
204
205 =over 4
206
207 =item *
208
209 L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
210 perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
211
212 =back
213
214 =head1 Configuration and Compilation
215
216 =over 4
217
218 =item *
219
220 The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
221
222 =item *
223
224 You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
225
226 =item *
227
228 Bison 3.0 is now supported.
229
230 =back
231
232 =head1 Platform Support
233
234 =head2 Platform-Specific Notes
235
236 =over 4
237
238 =item VMS
239
240 =over
241
242 =item *
243
244 For those C<%ENV> elements based on the CRTL environ array, we've always
245 preserved case when setting them but did look-ups only after upcasing the
246 key first, which made lower- or mixed-case entries go missing. This problem
247 has been corrected by making C<%ENV> elements derived from the environ array
248 case-sensitive on look-up as well as case-preserving on store.
249
250 =item *
251
252 Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
253 considered logical names, but now consider all sources of C<%ENV> as
254 determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
255
256 =back
257
258 =back
259
260 =head2 Platform-Specific Notes
261
262 =over 4
263
264 =item Win32
265
266 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
267 an "INTERNAL COMPILER ERROR" message.  [perl #126045]
268
269 =back
270
271 =head1 Internal Changes
272
273 =over 4
274
275 =item *
276
277 The implementation of perl's context stack system, and its internal API,
278 have been heavily reworked. Note that no significant changes have been
279 made to any external APIs, but XS code which relies on such internal
280 details may need to be fixed. The main changes are:
281
282 =over 4
283
284 =item *
285
286 The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
287 inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
288 function args rather than implicitly relying on local vars such as
289 C<gimme> and C<newsp> being available. Also their functionality has
290 changed: in particular, C<cx_popblock()> no longer decrements
291 C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
292 involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
293 documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
294 details on how to use them.
295
296 =item *
297
298 Various macros, which now consistently have a CX_ prefix, have been added:
299
300   CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
301
302 or renamed:
303
304   CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
305
306 =item *
307
308 C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
309 CMpp_enter*> and C<pp_leave*> no longer do
310
311   ENTER; SAVETMPS; ....; LEAVE
312
313 =item *
314
315 C<cx_popblock()> now also restores C<PL_curpm>.
316
317 =item *
318
319 In C<dounwind()> for every context type, the current savestack frame is
320 now processed before each context is popped; formerly this was only done
321 for sub-like context frames. This action has been removed from
322 C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
323 must be called before C<cx_popsub()> etc.
324
325 C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
326 (formerly it only did the C<cx_popsub()> etc. actions on each frame).
327
328 =item *
329
330 The temps stack is now freed on scope exit; previously, temps created
331 during the last statement of a block wouldn't be freed until the next
332 C<nextstate> following the block (apart from an existing hack that did
333 this for recursive subs in scalar context); and in something like
334 C<f(g())>, the temps created by the last statement in C<g()> would
335 formerly not be freed until the statement following the return from
336 C<f()>.
337
338 =item *
339
340 Most values that were saved on the savestack on scope entry are now
341 saved in suitable new fields in the context struct, and saved and
342 restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
343 faster.
344
345 =item *
346
347 Various context struct fields have been added, removed or modified.
348
349 =item *
350
351 The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
352 considerably tidied up, including removing the C<argarray> field from the
353 context struct, and extracting out some common (but rarely used) code into
354 a separate function, C<clear_defarray()>. Also, useful subsets of
355 C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
356 gathered into the new functions C<cx_popsub_args()> and
357 C<cx_popsub_common()>.
358
359 =item *
360
361 C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
362 of the C<pp_leave*>'s to process return args.
363
364 =item *
365
366 C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
367 C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
368
369 =item *
370
371 Some variables formerly declared by C<dMULTICALL> (but not documented) have
372 been removed.
373
374 =back
375
376 =back
377
378 =head1 Selected Bug Fixes
379
380 =over 4
381
382 =item *
383
384 Line numbers larger than 2**31-1 but less than 2**32 are no longer
385 returned by caller() as negative numbers.  [perl #126991]
386
387 =item *
388
389 C<< unless ( I<assignment> ) >> now properly warns when syntax
390 warnings are enabled.  [perl #127122]
391
392 =item *
393
394 Setting an C<ISA> glob to an array reference now properly adds
395 C<isaelem> magic to any existing elements.  Previously modifying such
396 an element would not update the ISA cache, so method calls would call
397 the wrong function.  Perl would also crash if the C<ISA> glob was
398 destroyed, since new code added in 5.23.7 would try to release the
399 C<isaelem> magic from the elements.  [perl #127351]
400
401 =item *
402
403 If a here-doc was found while parsing another operator, the parser had
404 already read end of file, and the here-doc was not terminated, perl
405 could produce an assertion or a segmentation fault.  This now reliably
406 complains about the unterminated here-doc.  [perl #125540]
407
408 =item *
409
410 untie() would sometimes return the last value returned by the UNTIE()
411 handler as well as it's normal value, messing up the stack.  [perl
412 #126621]
413
414 =item *
415
416 Fixed an operator precedence problem when C< castflags & 2> is true.
417 [perl #127474]
418
419 =item *
420
421 Caching of DESTROY methods could result in a non-pointer or a
422 non-STASH stored in the SvSTASH() slot of a stash, breaking the B
423 STASH() method.  The DESTROY method is now cached in the MRO metadata
424 for the stash.  [perl #126410]
425
426 =item *
427
428 The AUTOLOAD method is now called when searching for a DESTROY method,
429 and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
430
431 =item *
432
433 Avoid parsing beyond the end of the buffer when processing a C<#line>
434 directive with no filename.  [perl #127334]
435
436 =item *
437
438 Perl now raises a warning when a regular expression pattern looks like
439 it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
440 there was some slight defect in its specification which causes it to
441 instead be treated as a regular bracketed character class.  An example
442 would be missing the second colon in the above like this:
443 C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
444 The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
445 C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
446 meaning, and now a warning is raised.  No warning is raised unless the
447 specification is very close to one of the 14 legal POSIX classes.  (See
448 L<perlrecharclass/POSIX Character Classes>.)
449 [perl #8904]
450
451 =item *
452
453 Certain regex patterns involving a complemented POSIX class in an
454 inverted bracketed character class, and matching something else
455 optionally would improperly fail to match.  An example of one that could
456 fail is C</qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
457 [perl #127537]
458
459 =item *
460
461 Perl 5.22 added support to the C99 hexadecimal floating point notation,
462 but sometimes misparses hex floats. This had been fixed.
463 [perl #127183]
464
465 =back
466
467 =head1 Acknowledgements
468
469 Perl 5.23.8 represents approximately 4 weeks of development since Perl 5.23.7
470 and contains approximately 30,000 lines of changes across 350 files from 23
471 authors.
472
473 Excluding auto-generated files, documentation and release tools, there were
474 approximately 14,000 lines of changes to 210 .pm, .t, .c and .h files.
475
476 Perl continues to flourish into its third decade thanks to a vibrant community
477 of users and developers. The following people are known to have contributed the
478 improvements that became Perl 5.23.8:
479
480 Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
481 MannsÃ¥ker, Daniel Dragan, David Mitchell, Ed J, Herbert Breunung, H.Merijn
482 Brand, James E Keenan, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Niko
483 Tyni, Pip Cet, Ricardo Signes, Sawyer X, Sisyphus, Stevan Little, Steve Hay,
484 Todd Rinaldo, Tom Hukins, Tony Cook.
485
486 The list above is almost certainly incomplete as it is automatically generated
487 from version control history. In particular, it does not include the names of
488 the (very much appreciated) contributors who reported issues to the Perl bug
489 tracker.
490
491 Many of the changes included in this version originated in the CPAN modules
492 included in Perl's core. We're grateful to the entire CPAN community for
493 helping Perl to flourish.
494
495 For a more complete list of all of Perl's historical contributors, please see
496 the F<AUTHORS> file in the Perl source distribution.
497
498 =head1 Reporting Bugs
499
500 If you find what you think is a bug, you might check the articles recently
501 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
502 L<https://rt.perl.org/> .  There may also be information at
503 L<http://www.perl.org/> , the Perl Home Page.
504
505 If you believe you have an unreported bug, please run the L<perlbug> program
506 included with your release.  Be sure to trim your bug down to a tiny but
507 sufficient test case.  Your bug report, along with the output of C<perl -V>,
508 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
509
510 If the bug you are reporting has security implications, which make it
511 inappropriate to send to a publicly archived mailing list, then please send it
512 to perl5-security-report@perl.org.  This points to a closed subscription
513 unarchived mailing list, which includes all the core committers, who will be
514 able to help assess the impact of issues, figure out a resolution, and help
515 co-ordinate the release of patches to mitigate or fix the problem across all
516 platforms on which Perl is supported.  Please only use this address for
517 security issues in the Perl core, not for modules independently distributed on
518 CPAN.
519
520 =head1 SEE ALSO
521
522 The F<Changes> file for an explanation of how to view exhaustive details on
523 what changed.
524
525 The F<INSTALL> file for how to build Perl.
526
527 The F<README> file for general stuff.
528
529 The F<Artistic> and F<Copying> files for copyright information.
530
531 =cut