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