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