This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for File::Spec->tmpdir and changing env (#88940)
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.19.1
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.19.0 release and the 5.19.1
13 release.
14
15 =head1 Notice
16
17 XXX Any important notices here
18
19 =head1 Core Enhancements
20
21 XXX New core language features go here.  Summarize user-visible core language
22 enhancements.  Particularly prominent performance optimisations could go
23 here, but most should go in the L</Performance Enhancements> section.
24
25 [ List each enhancement as a =head2 entry ]
26
27 =head1 Security
28
29 XXX Any security-related notices go here.  In particular, any security
30 vulnerabilities closed should be noted here rather than in the
31 L</Selected Bug Fixes> section.
32
33 [ List each security issue as a =head2 entry ]
34
35 =head1 Incompatible Changes
36
37 XXX For a release on a stable branch, this section aspires to be:
38
39     There are no changes intentionally incompatible with 5.XXX.XXX
40     If any exist, they are bugs, and we request that you submit a
41     report.  See L</Reporting Bugs> below.
42
43 [ List each incompatible change as a =head2 entry ]
44
45 =head1 Deprecations
46
47 XXX Any deprecated features, syntax, modules etc. should be listed here.
48
49 =head2 Module removals
50
51 XXX Remove this section if inapplicable.
52
53 The following modules will be removed from the core distribution in a future
54 release, and will at that time need to be installed from CPAN. Distributions
55 on CPAN which require these modules will need to list them as prerequisites.
56
57 The core versions of these modules will now issue C<"deprecated">-category
58 warnings to alert you to this fact. To silence these deprecation warnings,
59 install the modules in question from CPAN.
60
61 Note that these are (with rare exceptions) fine modules that you are encouraged
62 to continue to use. Their disinclusion from core primarily hinges on their
63 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
64 not usually on concerns over their design.
65
66 XXX Note that deprecated modules should be listed here even if they are listed
67 as an updated module in the L</Modules and Pragmata> section.
68
69 =over
70
71 =item *
72
73 L<DB> has been updated from 1.05 to 1.06 and L<perl5db.pl> from 1.39_10
74 to 1.40.  The call depth allowed by default in the debugger is now 1000
75 rather than 100.
76
77 =back
78
79 [ List each other deprecation as a =head2 entry ]
80
81 =head1 Performance Enhancements
82
83 XXX Changes which enhance performance without changing behaviour go here.
84 There may well be none in a stable release.
85
86 [ List each enhancement as a =item entry ]
87
88 =over 4
89
90 =item *
91
92 Perl has a new copy-on-write mechanism that avoids the need to copy the
93 internal string buffer when assigning from one scalar to another. This
94 makes copying large strings appear much faster.  Modifying one of the two
95 (or more) strings after an assignment will force a copy internally. This
96 makes it unnecessary to pass strings by reference for efficiency.
97
98 This feature was already available in 5.18.0, but wasn't enabled by
99 default. It is the default now, and so you no longer need build perl with
100 the F<Configure> argument:
101
102     -Accflags=PERL_NEW_COPY_ON_WRITE
103
104 It can be disabled (for now) in a perl build with:
105
106     -Accflags=PERL_NO_COW
107
108 =back
109
110 =head1 Modules and Pragmata
111
112 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
113 go here.  If Module::CoreList is updated, generate an initial draft of the
114 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
115 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
116 below.  A paragraph summary for important changes should then be added by hand.
117 In an ideal world, dual-life modules would have a F<Changes> file that could be
118 cribbed.
119
120 [ Within each section, list entries as a =item entry ]
121
122 =head2 New Modules and Pragmata
123
124 =over 4
125
126 =item *
127
128 XXX
129
130 =back
131
132 =head2 Updated Modules and Pragmata
133
134 =over 4
135
136 =item *
137
138 B::Deparse has been upgraded from version 1.20 to 1.21.
139
140 C<foreach my $lexical> is now deparsed correctly with the B<-p> option.
141 [RT #117081]
142
143 The B<-l> option no longer puts form feeds in the middle of a line when
144 outputting C<map> and C<grep> blocks. [RT #117311]
145
146 Elements of C<%#>, such as C<$# {foo}> and C<${#}{foo}> are now deparsed
147 correctly. [RT #117531]
148
149 =item *
150
151 File::Spec has been upgraded from version 3.40 to 3.41.
152
153 C<tmpdir> now respects changes to environment variables from which the
154 temporary directory is derived. [RT #88940]
155
156 =item *
157
158 Test::Harness has been upgraded from version 3.26 to 3.28
159
160 Memory usage is dramatically reduced. t/harness now uses about 10% of the
161 memory used by 3.26 and earlier.
162
163 C<PERL5LIB> is always propagated to a test's C<@INC>, even under C<-T>.
164
165 =item *
166
167 Unicode::UCD has been upgraded from version 0.51 to 0.52.
168
169 A function, L<Unicode::UCD/search_invlist()> is now available to do
170 search an inversion list or map for a code point.
171
172 =back
173
174 =head2 Removed Modules and Pragmata
175
176 =over 4
177
178 =item *
179
180 XXX
181
182 =back
183
184 =head1 Documentation
185
186 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
187 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
188
189 =head2 New Documentation
190
191 XXX Changes which create B<new> files in F<pod/> go here.
192
193 =head3 L<XXX>
194
195 XXX Description of the purpose of the new file here
196
197 =head2 Changes to Existing Documentation
198
199 XXX Changes which significantly change existing files in F<pod/> go here.
200 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
201 section.
202
203 =head3 L<perltrap>
204
205 =over 4
206
207 =item *
208
209 There is now a L<JavaScript|perltrap/JavaScript Traps> section.
210
211 =back
212
213 =head1 Diagnostics
214
215 The following additions or changes have been made to diagnostic output,
216 including warnings and fatal error messages.  For the complete list of
217 diagnostic messages, see L<perldiag>.
218
219 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
220 include any changes in L<perldiag> that reconcile it to the C<C> code.
221
222 =head2 New Diagnostics
223
224 XXX Newly added diagnostic messages go under here, separated into New Errors
225 and New Warnings
226
227 =head3 New Errors
228
229 =over 4
230
231 =item *
232
233 XXX L<message|perldiag/"message">
234
235 =back
236
237 =head3 New Warnings
238
239 =over 4
240
241 =item *
242
243 L<A sequence of multiple spaces in a charnames alias definition is deprecated|perldiag/"A sequence of multiple spaces in a charnames alias definition is deprecated">
244
245 L<Trailing white-space in a charnames alias definition is deprecated|perldiag/"Trailing white-space in a charnames alias definition is deprecated">
246
247 These two deprecation warnings involving C<\N{...}> were incorrectly
248 implemented.  They did not warn by default (now they do) and could not be
249 made fatal via C<use warnings FATAL => 'deprecated'> (now they can).
250
251 =back
252
253 =head2 Changes to Existing Diagnostics
254
255 XXX Changes (i.e. rewording) of diagnostic messages go here
256
257 =over 4
258
259 =item *
260
261 XXX Describe change here
262
263 =back
264
265 =head1 Utility Changes
266
267 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
268 Most of these are built within the directories F<utils> and F<x2p>.
269
270 [ List utility changes as a =head3 entry for each utility and =item
271 entries for each change
272 Use L<XXX> with program names to get proper documentation linking. ]
273
274 =head3 F<bisect.pl> enhancements
275
276 The git bisection tool F<Porting/bisect.pl> has had many enhancements.
277
278 =over 4
279
280 =item *
281
282 Can optionally run the test case with a timeout.
283
284 =item *
285
286 Can now run in-place in a clean git checkout.
287
288 =item *
289
290 Can run the test case under C<valgrind>.
291
292 =item *
293
294 Can apply user supplied patches and fixes to the source checkout before
295 building.
296
297 =item *
298
299 Now has fixups to enable building several more historical ranges of bleadperl,
300 which can be useful for pinpointing the origins of bugs or behaviour changes.
301
302 =back
303
304 It is provided as part of the source distribution but not installed because
305 it is not self-contained as it relies on being run from within a git
306 checkout. Note also that it makes no attempt to fix tests, correct runtime
307 bugs or make something useful to install - its purpose is to make minimal
308 changes to get any historical revision of interest to build and run as close
309 as possible to "as-was", and thereby make C<git bisect> easy to use.
310
311 =head1 Configuration and Compilation
312
313 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
314 go here.  Any other changes to the Perl build process should be listed here.
315 However, any platform-specific changes should be listed in the
316 L</Platform Support> section, instead.
317
318 [ List changes as a =item entry ].
319
320 =over 4
321
322 =item *
323
324 XXX
325
326 =back
327
328 =head1 Testing
329
330 XXX Any significant changes to the testing of a freshly built perl should be
331 listed here.  Changes which create B<new> files in F<t/> go here as do any
332 large changes to the testing harness (e.g. when parallel testing was added).
333 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
334 that they represent may be covered elsewhere.
335
336 [ List each test improvement as a =item entry ]
337
338 =over 4
339
340 =item *
341
342 XXX
343
344 =back
345
346 =head1 Platform Support
347
348 XXX Any changes to platform support should be listed in the sections below.
349
350 [ Within the sections, list each platform as a =item entry with specific
351 changes as paragraphs below it. ]
352
353 =head2 New Platforms
354
355 XXX List any platforms that this version of perl compiles on, that previous
356 versions did not.  These will either be enabled by new files in the F<hints/>
357 directories, or new subdirectories and F<README> files at the top level of the
358 source tree.
359
360 =over 4
361
362 =item XXX-some-platform
363
364 XXX
365
366 =back
367
368 =head2 Discontinued Platforms
369
370 XXX List any platforms that this version of perl no longer compiles on.
371
372 =over 4
373
374 =item XXX-some-platform
375
376 XXX
377
378 =back
379
380 =head2 Platform-Specific Notes
381
382 XXX List any changes for specific platforms.  This could include configuration
383 and compilation changes or changes in portability/compatibility.  However,
384 changes within modules for platforms should generally be listed in the
385 L</Modules and Pragmata> section.
386
387 =over 4
388
389 =item Mixed-endian platforms
390
391 The code supporting C<pack> and C<unpack> operations on mixed endian
392 platforms has been removed. We believe that Perl has long been unable to
393 build on mixed endian architectures (such as PDP-11s), so we don't think
394 that this change will affect any platforms which are able to build v5.18.0.
395
396 =back
397
398 =head1 Internal Changes
399
400 XXX Changes which affect the interface available to C<XS> code go here.  Other
401 significant internal changes for future core maintainers should be noted as
402 well.
403
404 =over 4
405
406 =item *
407
408 Perl's new copy-on-write mechanism  (which is now enabled by default),
409 allows any C<SvPOK> scalar to be automatically upgraded to a copy-on-write
410 scalar when copied. A reference count on the string buffer is stored in
411 the string buffer itself.
412
413 For example:
414
415     $ perl -MDevel::Peek -e'$a="abc"; $b = $a; Dump $a; Dump $b'
416     SV = PV(0x260cd80) at 0x2620ad8
417       REFCNT = 1
418       FLAGS = (POK,IsCOW,pPOK)
419       PV = 0x2619bc0 "abc"\0
420       CUR = 3
421       LEN = 16
422       COW_REFCNT = 1
423     SV = PV(0x260ce30) at 0x2620b20
424       REFCNT = 1
425       FLAGS = (POK,IsCOW,pPOK)
426       PV = 0x2619bc0 "abc"\0
427       CUR = 3
428       LEN = 16
429       COW_REFCNT = 1
430
431 Note that both scalars share the same PV buffer and have a COW_REFCNT
432 greater than zero.
433
434 This means that XS code which wishes to modify the C<SvPVX()> buffer of an
435 SV should call C<SvPV_force()> or similar first, to ensure a valid (and
436 unshared) buffer, and to call C<SvSETMAGIC()> afterwards. This in fact has
437 always been the case (for example hash keys were already copy-on-write);
438 this change just spreads the COW behaviour to a wider variety of SVs.
439
440 One important difference is that before 5.18.0, shared hash-key scalars
441 used to have the C<SvREADONLY> flag set; this is no longer the case.
442
443 This new behaviour can still be disabled by running F<Configure> with
444 B<-Accflags=-DPERL_NO_COW>.  This option will probably be removed in Perl
445 5.22.
446
447 =item *
448
449 C<PL_sawampersand> is now a constant.  The switch this variable provided
450 (to enable/disable the pre-match copy depending on whether C<$&> had been
451 seen) has been removed and replaced with copy-on-write, eliminating a few
452 bugs.
453
454 The previous behaviour can still be enabled by running F<Configure> with
455 B<-Accflags=-DPERL_SAWAMPERSAND>.
456
457 =item *
458
459 The functions C<my_swap>, C<my_htonl> and C<my_ntohl> have been removed.
460 It is unclear why these functions were ever marked as I<A>, part of the
461 API. XS code can't call them directly, as it can't rely on them being
462 compiled. Unsurprisingly, no code on CPAN references them.
463
464 =item *
465
466 The signature of the C<Perl_re_intuit_start()> regex function has changed;
467 the function pointer C<intuit> in the regex engine plugin structure
468 has also changed accordingly. A new parameter, C<strbeg> has been added;
469 this has the same meaning as the same-named parameter in
470 C<Perl_regexec_flags>. Previously intuit would try to guess the start of
471 the string from the passed SV (if any), and would sometimes get it wrong
472 (e.g. with an overloaded SV).
473
474 =back
475
476 =head1 Selected Bug Fixes
477
478 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
479 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
480
481 [ List each fix as a =item entry ]
482
483 =over 4
484
485 =item *
486
487 The OP allocation code now returns correctly aligned memory in all cases
488 for C<struct pmop>. Previously it could return memory only aligned to a
489 4-byte boundary, which is not correct for an ithreads build with 64 bit IVs
490 on some 32 bit platforms. Notably, this caused the build to fail completely
491 on sparc GNU/Linux. [RT #118055]
492
493 =item *
494
495 The debugger's C<man> command been fixed. It was broken in the v5.18.0
496 release. The C<man> command is aliased to the names C<doc> and C<perldoc> -
497 all now work again.
498
499 =item *
500
501 Evaluating large hashes in scalar context is now much faster, as the number
502 of used chains in the hash is now cached for larger hashes. Smaller hashes
503 continue not to store it and calculate it when needed, as this saves one IV.
504 That would be 1 IV overhead for every object built from a hash. [RT #114576]
505
506 =item *
507
508 Fixed a small number of regexp constructions that could either fail to
509 match or crash perl when the string being matched against was
510 allocated above the 2GB line on 32-bit systems. [RT #118175]
511
512 =item *
513
514 Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs that were
515 not visible at compile time were treated as lvalues and could be assigned
516 to, even when the subroutine was not an lvalue sub.  This has been fixed.
517 [RT #117947]
518
519 =item *
520
521 In Perl v5.18.0 dualvars that had an empty string for the string part but a
522 non-zero number for the number part starting being treated as true.  In
523 previous versions they were treated as false, the string representation
524 taking precedeence.  The old behaviour has been restored. [RT #118159]
525
526 =item *
527
528 Since Perl v5.12, inlining of constants that override built-in keywords of
529 the same name had countermanded C<use subs>, causing subsequent mentions of
530 the constant to use the built-in keyword instead.  This has been fixed.
531
532 =item *
533
534 Lexical constants (C<my sub a() { 42 }>) no longer crash when inlined.
535
536 =item *
537
538 Parameter prototypes attached to lexical subroutines are now respected when
539 compiling sub calls without parentheses.  Previously, the prototypes were
540 honoured only for calls I<with> parentheses. [RT #116735]
541
542 =item *
543
544 Syntax errors in lexical subroutines in combination with calls to the same
545 subroutines no longer cause crashes at compile time.
546
547 =item *
548
549 The warning produced by C<-l $handle> now applies to IO refs and globs, not
550 just to glob refs.  That warning is also now UTF8-clean. [RT #117595]
551
552 =item *
553
554 Various memory leaks involving the parsing of the C<(?[...])> regular
555 expression construct have been fixed.
556
557 =item *
558
559 C<(?[...])> now allows interpolation of precompiled patterns consisting of
560 (?[...])> with bracket character classes inside (C<$pat =
561 S<qr/(?[ [a] ])/;> S</(?[ $pat ])/>>).  Formerly, the brackets would
562 confuse the regular expression parser.
563
564 =item *
565
566 C<delete local $ENV{nonexistent_env_var}> no longer leaks memory.
567
568 =item *
569
570 C<sort> and C<require> followed by a keyword prefixed with C<CORE::> now
571 treat it as a keyword, and not as a subroutine or module name. [RT #24482]
572
573 =item *
574
575 Through certain conundrums, it is possible to cause the current package to
576 be freed.  Certain operators (C<bless>, C<reset>, C<open>, C<eval>) could
577 not cope and would crash.  They have been made more resilient. [RT #117941]
578
579 =item *
580
581 Aliasing filehandles through glob-to-glob assignment would not update
582 internal method caches properly if a package of the same name as the
583 filehandle existed, resulting in filehandle method calls going to the
584 package instead.  This has been fixed.
585
586 =back
587
588 =head1 Known Problems
589
590 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
591 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
592 platform specific bugs also go here.
593
594 [ List each fix as a =item entry ]
595
596 =over 4
597
598 =item *
599
600 XXX
601
602 =back
603
604 =head1 Obituary
605
606 XXX If any significant core contributor has died, we've added a short obituary
607 here.
608
609 =head1 Acknowledgements
610
611 XXX Generate this with:
612
613   perl Porting/acknowledgements.pl v5.19.1..HEAD
614
615 =head1 Reporting Bugs
616
617 If you find what you think is a bug, you might check the articles recently
618 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
619 http://rt.perl.org/perlbug/ .  There may also be information at
620 http://www.perl.org/ , the Perl Home Page.
621
622 If you believe you have an unreported bug, please run the L<perlbug> program
623 included with your release.  Be sure to trim your bug down to a tiny but
624 sufficient test case.  Your bug report, along with the output of C<perl -V>,
625 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
626
627 If the bug you are reporting has security implications, which make it
628 inappropriate to send to a publicly archived mailing list, then please send it
629 to perl5-security-report@perl.org.  This points to a closed subscription
630 unarchived mailing list, which includes all the core committers, who will be
631 able to help assess the impact of issues, figure out a resolution, and help
632 co-ordinate the release of patches to mitigate or fix the problem across all
633 platforms on which Perl is supported.  Please only use this address for
634 security issues in the Perl core, not for modules independently distributed on
635 CPAN.
636
637 =head1 SEE ALSO
638
639 The F<Changes> file for an explanation of how to view exhaustive details on
640 what changed.
641
642 The F<INSTALL> file for how to build Perl.
643
644 The F<README> file for general stuff.
645
646 The F<Artistic> and F<Copying> files for copyright information.
647
648 =cut