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