This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Typos, POD errors, etc.
[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) create 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 E<lt>-- 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 E<lt>-- 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 E<lt>-- 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 =item Win32
259
260 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
261 an "INTERNAL COMPILER ERROR" message.  [perl #126045]
262
263 =back
264
265 =head1 Internal Changes
266
267 =over 4
268
269 =item *
270
271 The implementation of perl's context stack system, and its internal API,
272 have been heavily reworked. Note that no significant changes have been
273 made to any external APIs, but XS code which relies on such internal
274 details may need to be fixed. The main changes are:
275
276 =over 4
277
278 =item *
279
280 The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
281 inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
282 function args rather than implicitly relying on local vars such as
283 C<gimme> and C<newsp> being available. Also their functionality has
284 changed: in particular, C<cx_popblock()> no longer decrements
285 C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
286 involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
287 documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
288 details on how to use them.
289
290 =item *
291
292 Various macros, which now consistently have a CX_ prefix, have been added:
293
294   CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
295
296 or renamed:
297
298   CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
299
300 =item *
301
302 C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
303 C<pp_enter*> and C<pp_leave*> no longer do
304
305   ENTER; SAVETMPS; ....; LEAVE
306
307 =item *
308
309 C<cx_popblock()> now also restores C<PL_curpm>.
310
311 =item *
312
313 In C<dounwind()> for every context type, the current savestack frame is
314 now processed before each context is popped; formerly this was only done
315 for sub-like context frames. This action has been removed from
316 C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
317 must be called before C<cx_popsub()> etc.
318
319 C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
320 (formerly it only did the C<cx_popsub()> etc. actions on each frame).
321
322 =item *
323
324 The temps stack is now freed on scope exit; previously, temps created
325 during the last statement of a block wouldn't be freed until the next
326 C<nextstate> following the block (apart from an existing hack that did
327 this for recursive subs in scalar context); and in something like
328 C<f(g())>, the temps created by the last statement in C<g()> would
329 formerly not be freed until the statement following the return from
330 C<f()>.
331
332 =item *
333
334 Most values that were saved on the savestack on scope entry are now
335 saved in suitable new fields in the context struct, and saved and
336 restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
337 faster.
338
339 =item *
340
341 Various context struct fields have been added, removed or modified.
342
343 =item *
344
345 The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
346 considerably tidied up, including removing the C<argarray> field from the
347 context struct, and extracting out some common (but rarely used) code into
348 a separate function, C<clear_defarray()>. Also, useful subsets of
349 C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
350 gathered into the new functions C<cx_popsub_args()> and
351 C<cx_popsub_common()>.
352
353 =item *
354
355 C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
356 of the C<pp_leave*>'s to process return args.
357
358 =item *
359
360 C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
361 C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
362
363 =item *
364
365 Some variables formerly declared by C<dMULTICALL> (but not documented) have
366 been removed.
367
368 =back
369
370 =back
371
372 =head1 Selected Bug Fixes
373
374 =over 4
375
376 =item *
377
378 Line numbers larger than 2**31-1 but less than 2**32 are no longer
379 returned by caller() as negative numbers.  [perl #126991]
380
381 =item *
382
383 C<< unless ( I<assignment> ) >> now properly warns when syntax
384 warnings are enabled.  [perl #127122]
385
386 =item *
387
388 Setting an C<ISA> glob to an array reference now properly adds
389 C<isaelem> magic to any existing elements.  Previously modifying such
390 an element would not update the ISA cache, so method calls would call
391 the wrong function.  Perl would also crash if the C<ISA> glob was
392 destroyed, since new code added in 5.23.7 would try to release the
393 C<isaelem> magic from the elements.  [perl #127351]
394
395 =item *
396
397 If a here-doc was found while parsing another operator, the parser had
398 already read end of file, and the here-doc was not terminated, perl
399 could produce an assertion or a segmentation fault.  This now reliably
400 complains about the unterminated here-doc.  [perl #125540]
401
402 =item *
403
404 untie() would sometimes return the last value returned by the UNTIE()
405 handler as well as it's normal value, messing up the stack.  [perl
406 #126621]
407
408 =item *
409
410 Fixed an operator precedence problem when C< castflags & 2> is true.
411 [perl #127474]
412
413 =item *
414
415 Caching of DESTROY methods could result in a non-pointer or a
416 non-STASH stored in the SvSTASH() slot of a stash, breaking the B
417 STASH() method.  The DESTROY method is now cached in the MRO metadata
418 for the stash.  [perl #126410]
419
420 =item *
421
422 The AUTOLOAD method is now called when searching for a DESTROY method,
423 and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
424
425 =item *
426
427 Avoid parsing beyond the end of the buffer when processing a C<#line>
428 directive with no filename.  [perl #127334]
429
430 =item *
431
432 Perl now raises a warning when a regular expression pattern looks like
433 it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
434 there was some slight defect in its specification which causes it to
435 instead be treated as a regular bracketed character class.  An example
436 would be missing the second colon in the above like this:
437 C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
438 The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
439 C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
440 meaning, and now a warning is raised.  No warning is raised unless the
441 specification is very close to one of the 14 legal POSIX classes.  (See
442 L<perlrecharclass/POSIX Character Classes>.)
443 [perl #8904]
444
445 =item *
446
447 Certain regex patterns involving a complemented POSIX class in an
448 inverted bracketed character class, and matching something else
449 optionally would improperly fail to match.  An example of one that could
450 fail is C</qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
451 [perl #127537]
452
453 =item *
454
455 Perl 5.22 added support to the C99 hexadecimal floating point notation,
456 but sometimes misparses hex floats. This had been fixed.
457 [perl #127183]
458
459 =back
460
461 =head1 Acknowledgements
462
463 Perl 5.23.8 represents approximately 4 weeks of development since Perl 5.23.7
464 and contains approximately 30,000 lines of changes across 350 files from 23
465 authors.
466
467 Excluding auto-generated files, documentation and release tools, there were
468 approximately 14,000 lines of changes to 210 .pm, .t, .c and .h files.
469
470 Perl continues to flourish into its third decade thanks to a vibrant community
471 of users and developers. The following people are known to have contributed the
472 improvements that became Perl 5.23.8:
473
474 Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari
475 MannsÃ¥ker, Daniel Dragan, David Mitchell, Ed J, Herbert Breunung, H.Merijn
476 Brand, James E Keenan, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Niko
477 Tyni, Pip Cet, Ricardo Signes, Sawyer X, Sisyphus, Stevan Little, Steve Hay,
478 Todd Rinaldo, Tom Hukins, Tony Cook.
479
480 The list above is almost certainly incomplete as it is automatically generated
481 from version control history. In particular, it does not include the names of
482 the (very much appreciated) contributors who reported issues to the Perl bug
483 tracker.
484
485 Many of the changes included in this version originated in the CPAN modules
486 included in Perl's core. We're grateful to the entire CPAN community for
487 helping Perl to flourish.
488
489 For a more complete list of all of Perl's historical contributors, please see
490 the F<AUTHORS> file in the Perl source distribution.
491
492 =head1 Reporting Bugs
493
494 If you find what you think is a bug, you might check the articles recently
495 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
496 L<https://rt.perl.org/> .  There may also be information at
497 L<http://www.perl.org/> , the Perl Home Page.
498
499 If you believe you have an unreported bug, please run the L<perlbug> program
500 included with your release.  Be sure to trim your bug down to a tiny but
501 sufficient test case.  Your bug report, along with the output of C<perl -V>,
502 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
503
504 If the bug you are reporting has security implications, which make it
505 inappropriate to send to a publicly archived mailing list, then please send it
506 to perl5-security-report@perl.org.  This points to a closed subscription
507 unarchived mailing list, which includes all the core committers, who will be
508 able to help assess the impact of issues, figure out a resolution, and help
509 co-ordinate the release of patches to mitigate or fix the problem across all
510 platforms on which Perl is supported.  Please only use this address for
511 security issues in the Perl core, not for modules independently distributed on
512 CPAN.
513
514 =head1 SEE ALSO
515
516 The F<Changes> file for an explanation of how to view exhaustive details on
517 what changed.
518
519 The F<INSTALL> file for how to build Perl.
520
521 The F<README> file for general stuff.
522
523 The F<Artistic> and F<Copying> files for copyright information.
524
525 =cut