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