This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
6e943c120ca2f6bdb10579ebc38b71a41012ba6f
[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_utf8()>).  Only a couple of these were
493 documented until now;
494 and now they should be used in preference to calling the underlying
495 functions.  See L<perlapi/Character case changing>.
496
497 =back
498
499 =head1 Selected Bug Fixes
500
501 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
502 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
503
504 [ List each fix as a =item entry ]
505
506 =over 4
507
508 =item *
509
510 The OP allocation code now returns correctly aligned memory in all cases
511 for C<struct pmop>. Previously it could return memory only aligned to a
512 4-byte boundary, which is not correct for an ithreads build with 64 bit IVs
513 on some 32 bit platforms. Notably, this caused the build to fail completely
514 on sparc GNU/Linux. [RT #118055]
515
516 =item *
517
518 The debugger's C<man> command been fixed. It was broken in the v5.18.0
519 release. The C<man> command is aliased to the names C<doc> and C<perldoc> -
520 all now work again.
521
522 =item *
523
524 C<@_> is now correctly visible in the debugger, fixing a regression
525 introduced in v5.18.0's debugger. [RT #118169]
526
527 =item *
528
529 Evaluating large hashes in scalar context is now much faster, as the number
530 of used chains in the hash is now cached for larger hashes. Smaller hashes
531 continue not to store it and calculate it when needed, as this saves one IV.
532 That would be 1 IV overhead for every object built from a hash. [RT #114576]
533
534 =item *
535
536 Fixed a small number of regexp constructions that could either fail to
537 match or crash perl when the string being matched against was
538 allocated above the 2GB line on 32-bit systems. [RT #118175]
539
540 =item *
541
542 Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs that were
543 not visible at compile time were treated as lvalues and could be assigned
544 to, even when the subroutine was not an lvalue sub.  This has been fixed.
545 [RT #117947]
546
547 =item *
548
549 In Perl v5.18.0 dualvars that had an empty string for the string part but a
550 non-zero number for the number part starting being treated as true.  In
551 previous versions they were treated as false, the string representation
552 taking precedeence.  The old behaviour has been restored. [RT #118159]
553
554 =item *
555
556 Since Perl v5.12, inlining of constants that override built-in keywords of
557 the same name had countermanded C<use subs>, causing subsequent mentions of
558 the constant to use the built-in keyword instead.  This has been fixed.
559
560 =item *
561
562 Lexical constants (C<my sub a() { 42 }>) no longer crash when inlined.
563
564 =item *
565
566 Parameter prototypes attached to lexical subroutines are now respected when
567 compiling sub calls without parentheses.  Previously, the prototypes were
568 honoured only for calls I<with> parentheses. [RT #116735]
569
570 =item *
571
572 Syntax errors in lexical subroutines in combination with calls to the same
573 subroutines no longer cause crashes at compile time.
574
575 =item *
576
577 The warning produced by C<-l $handle> now applies to IO refs and globs, not
578 just to glob refs.  That warning is also now UTF8-clean. [RT #117595]
579
580 =item *
581
582 Various memory leaks involving the parsing of the C<(?[...])> regular
583 expression construct have been fixed.
584
585 =item *
586
587 C<(?[...])> now allows interpolation of precompiled patterns consisting of
588 C<(?[...])> with bracketed character classes inside (C<$pat =
589 S<qr/(?[ [a] ])/;> S</(?[ $pat ])/>>).  Formerly, the brackets would
590 confuse the regular expression parser.
591
592 =item *
593
594 The "Quantifier unexpected on zero-length expression" warning message could
595 appear twice starting in Perl v5.10 for a regular expression also
596 containing alternations (e.g., "a|b") triggering the trie optimisation.
597
598 =item *
599
600 C<delete local $ENV{nonexistent_env_var}> no longer leaks memory.
601
602 =item *
603
604 C<sort> and C<require> followed by a keyword prefixed with C<CORE::> now
605 treat it as a keyword, and not as a subroutine or module name. [RT #24482]
606
607 =item *
608
609 Through certain conundrums, it is possible to cause the current package to
610 be freed.  Certain operators (C<bless>, C<reset>, C<open>, C<eval>) could
611 not cope and would crash.  They have been made more resilient. [RT #117941]
612
613 =item *
614
615 Aliasing filehandles through glob-to-glob assignment would not update
616 internal method caches properly if a package of the same name as the
617 filehandle existed, resulting in filehandle method calls going to the
618 package instead.  This has been fixed.
619
620 =back
621
622 =head1 Known Problems
623
624 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
625 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
626 platform specific bugs also go here.
627
628 [ List each fix as a =item entry ]
629
630 =over 4
631
632 =item *
633
634 XXX
635
636 =back
637
638 =head1 Obituary
639
640 XXX If any significant core contributor has died, we've added a short obituary
641 here.
642
643 =head1 Acknowledgements
644
645 XXX Generate this with:
646
647   perl Porting/acknowledgements.pl v5.19.1..HEAD
648
649 =head1 Reporting Bugs
650
651 If you find what you think is a bug, you might check the articles recently
652 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
653 http://rt.perl.org/perlbug/ .  There may also be information at
654 http://www.perl.org/ , the Perl Home Page.
655
656 If you believe you have an unreported bug, please run the L<perlbug> program
657 included with your release.  Be sure to trim your bug down to a tiny but
658 sufficient test case.  Your bug report, along with the output of C<perl -V>,
659 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
660
661 If the bug you are reporting has security implications, which make it
662 inappropriate to send to a publicly archived mailing list, then please send it
663 to perl5-security-report@perl.org.  This points to a closed subscription
664 unarchived mailing list, which includes all the core committers, who will be
665 able to help assess the impact of issues, figure out a resolution, and help
666 co-ordinate the release of patches to mitigate or fix the problem across all
667 platforms on which Perl is supported.  Please only use this address for
668 security issues in the Perl core, not for modules independently distributed on
669 CPAN.
670
671 =head1 SEE ALSO
672
673 The F<Changes> file for an explanation of how to view exhaustive details on
674 what changed.
675
676 The F<INSTALL> file for how to build Perl.
677
678 The F<README> file for general stuff.
679
680 The F<Artistic> and F<Copying> files for copyright information.
681
682 =cut