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