This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: entry for qr/\87/ bug fix
[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
6 XXX needs to be processed before release. ]
7
8 perldelta - what is new for perl v5.17.1
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.17.0 release and
13 the 5.17.1 release.
14
15 If you are upgrading from an earlier release such as 5.16.0, first read
16 L<perl5170delta>, which describes differences between 5.16.0 and
17 5.17.0.
18
19 =head1 Notice
20
21 XXX Any important notices here
22
23 =head1 Core Enhancements
24
25 XXX New core language features go here. Summarise user-visible core language
26 enhancements. Particularly prominent performance optimisations could go
27 here, but most should go in the L</Performance Enhancements> section.
28
29 [ List each enhancement as a =head2 entry ]
30
31 =head2 More CORE:: subs
32
33 Several more built-in functions have been added as subroutines to the
34 CORE:: namespace, namely, those non-overridable keywords that can be
35 implemented without custom parsers: C<defined>, C<delete>, C<exists>,
36 C<glob>, C<pos>, C<protoytpe>, C<scalar>, C<split>, C<study>, C<undef>,
37
38 As some of these have prototypes, C<prototype('CORE::...')> has been
39 changed not to make a distinction between overridable and non-overridable
40 keywords.  This is to make C<prototype('CORE::pos')> consistent with
41 C<prototype(&CORE::pos)>.
42
43 =head1 Security
44
45 XXX Any security-related notices go here.  In particular, any security
46 vulnerabilities closed should be noted here rather than in the
47 L</Selected Bug Fixes> section.
48
49 [ List each security issue as a =head2 entry ]
50
51 =head1 Incompatible Changes
52
53 XXX For a release on a stable branch, this section aspires to be:
54
55     There are no changes intentionally incompatible with 5.XXX.XXX
56     If any exist, they are bugs, and we request that you submit a
57     report.  See L</Reporting Bugs> below.
58
59 =head2 C</(?{})/> and C</(??{}> have been heavily reworked.
60
61 The implementation of this feature has been almost completely written.
62 Although its main intent is is to fix bugs, some behaviours, especially
63 related to the scope of lexical variables, will have changed.  This is
64 described more fully in the L</Selected Bug Fixes> section.
65
66 =head2 C<\N{BELL}> now refers to U+1F514 instead of U+0007
67
68 Unicode 6.0 reused the name "BELL" for a different code point than it
69 traditionally had meant.  Since Perl v5.14, use of this name still
70 referred to U+0007, but would raise a deprecated warning.  Now, "BELL"
71 refers to U+1F514, and the name for U+0007 is "ALERT".  All the
72 functions in L<charnames> have been correspondingly updated.
73
74 =head2 Alphanumeric operators must now be separated from the closing
75 delimter of regular expressions
76
77 You may no longer write something like:
78
79  m/a/and 1
80
81 Instead you must write
82
83  m/a/ and 1
84
85 with whitespace separating the operator from the closing delimiter of
86 the regular expression.  Not having whitespace has resulted in a
87 deprecated warning since Perl v5.14.0.
88
89 =head1 Deprecations
90
91 XXX Any deprecated features, syntax, modules etc. should be listed here.
92 In particular, deprecated modules should be listed here even if they are
93 listed as an updated module in the L</Modules and Pragmata> section.
94
95 [ List each deprecation as a =head2 entry ]
96
97 =head1 Performance Enhancements
98
99 XXX Changes which enhance performance without changing behaviour go here. There
100 may well be none in a stable release.
101
102 [ List each enhancement as a =item entry ]
103
104 =over 4
105
106 =item *
107
108 XXX
109
110 =back
111
112 =head1 Modules and Pragmata
113
114 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
115 go here.  If Module::CoreList is updated, generate an initial draft of the
116 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
117 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
118 below.  A paragraph summary for important changes should then be added by hand.
119 In an ideal world, dual-life modules would have a F<Changes> file that could be
120 cribbed.
121
122 [ Within each section, list entries as a =item entry ]
123
124 =head2 New Modules and Pragmata
125
126 =over 4
127
128 =item *
129
130 XXX
131
132 =back
133
134 =head2 Updated Modules and Pragmata
135
136 =over 4
137
138 =item *
139
140 L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
141
142 Manifest files are now correctly embedded for those versions of VC++ which
143 make use of them.
144
145 =item *
146
147 L<B> has been upgraded from version 1.35 to 1.36.
148
149 C<B::COP::stashlen> has been replaced with C<B::COP::stashoff>.
150
151 C<B::COP::stashpv> now supports UTF8 package names and embedded nulls.
152
153 =item *
154
155 L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
156
157 It no longer fails when trying to embed manifests on Windows
158 [perl #111782, #111798].
159
160 =item *
161
162 L<File::DosGlob> has been upgraded from version 1.07 to 1.08.
163
164 There are no visible changes, only minor internal refactorings.
165
166 =item *
167
168 L<File::Spec::Unix> has been upgraded from version 3.39_02 to 3.39_03.
169
170 C<abs2rel> could produce incorrect results when given two relative paths or
171 the root directory twice [perl #111510].
172
173 =item *
174
175 L<IO> has been upgraded from version 1.25_06 to 1.25_07.
176
177 C<sync()> can now be called on read-only file handles [perl #64772].
178
179 =item *
180
181 L<Pod::Html> has been upgraded from version 1.15_02 to 1.16.
182
183 The option C<--libpods> has been re-instated. It is deprecated, and its use
184 does nothing other than issue a warning that it is no longer supported.
185
186 =item *
187
188 L<Unicode::UCD> has been upgraded from version 0.43 to 0.44.
189
190 This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
191 that returns all the casefolds.
192
193 =item *
194
195 L<Scalar::Util> has been upgraded from version 1.23 to version 1.25.
196
197 =back
198
199 =head2 Removed Modules and Pragmata
200
201 =over 4
202
203 =item *
204
205 XXX
206
207 =back
208
209 =head1 Documentation
210
211 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
212 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
213
214 =head2 New Documentation
215
216 XXX Changes which create B<new> files in F<pod/> go here.
217
218 =head3 L<XXX>
219
220 XXX Description of the purpose of the new file here
221
222 =head2 Changes to Existing Documentation
223
224 XXX Changes which significantly change existing files in F<pod/> go here.
225 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
226 section.
227
228 =head3 L<perlfaq>
229
230 =over 4
231
232 =item *
233
234 L<perlfaq> has been synchronised with version 5.0150040 from C<CPAN>.
235
236 =back
237
238 =head1 Diagnostics
239
240 The following additions or changes have been made to diagnostic output,
241 including warnings and fatal error messages.  For the complete list of
242 diagnostic messages, see L<perldiag>.
243
244 XXX New or changed warnings emitted by the core's C<C> code go here. Also
245 include any changes in L<perldiag> that reconcile it to the C<C> code.
246
247 [ Within each section, list entries as a =item entry that links to perldiag,
248   e.g.
249
250   =item *
251
252   L<Invalid version object|perldiag/"Invalid version object">
253 ]
254
255 =head2 New Diagnostics
256
257 XXX Newly added diagnostic messages go here
258
259 =head3 New Errors
260
261 =over 4
262
263 =item *
264
265 XXX L<message|perldiag/"message">
266
267 =back
268
269 =head3 New Warnings
270
271 =over 4
272
273 =item *
274
275 XXX L<message|perldiag/"message">
276
277 =back
278
279 =head2 Changes to Existing Diagnostics
280
281 XXX Changes (i.e. rewording) of diagnostic messages go here
282
283 =over 4
284
285 =item *
286
287 XXX Describe change here
288
289 =back
290
291 =head2 Removals of Diagnostics
292
293 =over 4
294
295 =item *
296
297 The "Runaway prototype" warning that occurs in bizarre cases has been
298 removed as being unhelpful and inconsistent.
299
300 =item *
301
302 The "Not a format reference" error has been removed, as the only case in
303 which it could be triggered was a bug.
304
305 =back
306
307 =head1 Utility Changes
308
309 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
310 here. 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 L<XXX>
317
318 =over 4
319
320 =item *
321
322 XXX
323
324 =back
325
326 =head1 Configuration and Compilation
327
328 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
329 go here.  Any other changes to the Perl build process should be listed here.
330 However, any platform-specific changes should be listed in the
331 L</Platform Support> section, instead.
332
333 [ List changes as a =item entry ].
334
335 =over 4
336
337 =item *
338
339 XXX
340
341 =back
342
343 =head1 Testing
344
345 XXX Any significant changes to the testing of a freshly built perl should be
346 listed here.  Changes which create B<new> files in F<t/> go here as do any
347 large changes to the testing harness (e.g. when parallel testing was added).
348 Changes to existing files in F<t/> aren't worth summarising, although the bugs
349 that they represent may be covered elsewhere.
350
351 [ List each test improvement as a =item entry ]
352
353 =over 4
354
355 =item *
356
357 XXX
358
359 =back
360
361 =head1 Platform Support
362
363 XXX Any changes to platform support should be listed in the sections below.
364
365 [ Within the sections, list each platform as a =item entry with specific
366 changes as paragraphs below it. ]
367
368 =head2 New Platforms
369
370 XXX List any platforms that this version of perl compiles on, that previous
371 versions did not. These will either be enabled by new files in the F<hints/>
372 directories, or new subdirectories and F<README> files at the top level of the
373 source tree.
374
375 =over 4
376
377 =item XXX-some-platform
378
379 XXX
380
381 =back
382
383 =head2 Discontinued Platforms
384
385 XXX List any platforms that this version of perl no longer compiles on.
386
387 =over 4
388
389 =item XXX-some-platform
390
391 XXX
392
393 =back
394
395 =head2 Platform-Specific Notes
396
397 XXX List any changes for specific platforms. This could include configuration
398 and compilation changes or changes in portability/compatibility.  However,
399 changes within modules for platforms should generally be listed in the
400 L</Modules and Pragmata> section.
401
402 =over 4
403
404 =item Win32
405
406 C<link> on Win32 now attempts to set C<$!> to more appropriate values
407 based on the Win32 API error code. [perl #112272]
408
409 =back
410
411 =head1 Internal Changes
412
413 XXX Changes which affect the interface available to C<XS> code go here.
414 Other significant internal changes for future core maintainers should
415 be noted as well.
416
417 [ List each change as a =item entry ]
418
419 =over 4
420
421 =item *
422
423 The C<study> function was made a no-op in 5.16.  It was simply disabled via
424 a C<return> statement; the code was left in place.  Now the code supporting
425 what C<study> used to do has been removed.
426
427 =item *
428
429 Under threaded perls, there is no longer a separate PV allocated for every
430 COP to store its package name (C<< cop->stashpv >>).  Instead, there is an
431 offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
432 holds stash pointers.
433
434 =item *
435
436 In the pluggable regex API, the C<regexp_engine> struct has acquired a new
437 field C<op_comp>, which is currently just for perl's internal use, and
438 should be initialised to NULL by other regexp plugin modules.
439
440 =back
441
442 =head1 Selected Bug Fixes
443
444 XXX Important bug fixes in the core language are summarised here.
445 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
446 L</Modules and Pragmata>.
447
448 [ List each fix as a =item entry ]
449
450 =over 4
451
452 =item *
453
454 The implementation of code blocks in regular expressions, such as C<(?{})>
455 and C<(??{})> has been heavily reworked to eliminate a whole slew of bugs.
456 The main user-visible changes are:
457
458 =over 4
459
460 =item *
461
462 Code blocks within patterns are now parsed in the same pass as the
463 surrounding code; in particular it is no longer necessary to have balanced
464 braces: this now works:
465
466     /(?{  $x='{'  })/
467
468 This means that this error message is longer generated:
469
470     Sequence (?{...}) not terminated or not {}-balanced in regex
471
472 but a new error may be seen:
473
474     Sequence (?{...}) not terminated with ')'
475
476 In addition, literal code blocks within run-time patterns are only
477 compiled once, at perl compile-time:
478
479     for my $p (...) {
480         # this 'FOO' block of code is compiled once,
481         # at the same time as the surrounding 'for' loop
482         /$p{(?{FOO;})/;
483     }
484
485 =item *
486
487 Lexical variables are now sane as regards scope, recursion and closure
488 behaviour. In particular, C</A(?{B})C/> behaves (from a closure viewpoint)
489 exactly like C</A/ && do { B } && /C/>, while  C<qr/A(?{B})C/> is like
490 C<sub {/A/ && do { B } && /C/}>. So this code now works how you might
491 expect, creating three regexes that match 0, 1, and 2:
492
493     for my $i (0..2) {
494         push @r, qr/^(??{$i})$/;
495     }
496     "1" =~ $r[1]; # matches
497
498 =item *
499
500 The C<use re 'eval'> pragma is now  only required for code blocks defined
501 at runtime; in particular in the following, the text of the $r pattern is
502 still interpolated into the new pattern and recompiled, but the individual
503 compiled code-blocks within $r are reused rather than being recompiled,
504 and C<use re 'eval'> isn't needed any more:
505
506     my $r = qr/abc(?{....})def/;
507     /xyz$r/;
508
509 =item *
510
511 Flow control operators no longer crash. Each code block runs in a new
512 dynamic scope, so C<next> etc. will not see any enclosing loops and
513 C<caller> will not see any calling subroutines. C<return> returns a value
514 from the code block, not from any enclosing subroutine.
515
516 =item *
517
518 Perl normally caches the compilation of run-time patterns, and doesn't
519 recompile if the pattern hasn't changed; but this is now disabled if
520 required for the correct behaviour of closures; for example:
521
522     my $code = '(??{$x})';
523     for my $x (1..3) {
524         # recompile to see fresh value of $x each time
525         $x =~ /$code/;
526     }
527
528
529 =item *
530
531 The C</msix> and C<(?msix)> etc. flags are now propagated into the return
532 value from C<(??{})>; this now works:
533
534     "AB" =~ /a(??{'b'})/i;
535
536 =item *
537
538 Warnings and errors will appear to come from the surrounding code (or for
539 run-time code blocks, from an eval) rather than from an C<re_eval>:
540
541     use re 'eval'; $c = '(?{ warn "foo" })'; /$c/;
542     /(?{ warn "foo" })/;
543
544 formerly gave:
545
546     foo at (re_eval 1) line 1.
547     foo at (re_eval 2) line 1.
548
549 and now gives:
550
551     foo at (eval 1) line 1.
552     foo at /some/prog line 2.
553
554 =back
555
556 =item *
557
558 Perl now works as well as can be expected on all releases of Unicode so
559 far.  In v5.16, it worked on Unicodes 6.0 and 6.1, but there were
560 various bugs for earlier releases; the older the release the more
561 problems.
562
563 =item *
564
565 C<vec> no longer produces "uninitialized" warnings in lvalue context
566 [perl #9423].
567
568 =item *
569
570 An optimisation involving fixed strings in regular expressions could cause
571 a severe performance penalty in edge cases.  This has been fixed
572 [perl #76546].
573
574 =item *
575
576 The "Can't find an opnumber" message that C<prototype> produces when passed
577 a string like "CORE::nonexistent_keyword" is now passes UTF8 and embedded
578 nulls through unchanged [perl #97478].
579
580 =item *
581
582 C<prototype> now treats magical variables like C<$1> the same way as
583 non-magical variables when checking for the CORE:: prefix, instead of
584 treating them as subroutine names.
585
586 =item *
587
588 Under threaded perls, a run-time code block in a regular expression could
589 corrupt the package name stored in the op tree, resulting in bad reads
590 in C<caller>, and possibly crashes [perl #113060].
591
592 =item *
593
594 Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
595 closure) no longer results in a copy of the subroutine (or assertion
596 failures on debugging builds).
597
598 =item *
599
600 C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
601 the current package has been assigned over (as in
602 C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
603
604 =item *
605
606 If a package is deleted by code that it calls, it is possible for C<caller>
607 to see a stack frame belonging to that deleted package.  C<caller> could
608 crash if the stash's memory address was reused for a scalar and a
609 substitution was performed on the same scalar [perl #113486].
610
611 =item *
612
613 C<UNIVERSAL::can> no longer treats its first argument differently
614 depending on whether it is a string or number internally.
615
616 =item *
617
618 C<open> with "<&" for the mode checks to see whether the third argument is
619 a number, in determining whether to treat it as a file descriptor or a
620 handle name.  Magical variables like C<$1> were always failing the numeric
621 check and being treated as handle names.
622
623 =item *
624
625 C<warn>'s handling of magical variables (C<$1>, ties) has undergone several
626 fixes.  FETCH is only called once now on a tied argument or a tied C<$@>
627 [perl #97480].  Tied variables returning objects that stringify as "" are
628 no longer ignored.  A tied C<$@> that happened to return a reference the
629 I<previous> time is was used is no longer ignored.
630
631 =item *
632
633 C<warn ""> now treats C<$@> with a number in it the same way, regardless of
634 whether it happened via C<$@=3> or C<$@="3">.  It used to ignore the
635 former.  Now it appends "\t...caught", as it has always done with
636 C<$@="3">.
637
638 =item *
639
640 Numeric operators on magical variables (e.g., S<C<$1 + 1>>) used to use
641 floating point operations even where integer operations were more appropriate, resulting in loss of accuracy on 64-bit platforms
642 [perl #109542].
643
644 =item *
645
646 Unary negation no longer treats a string as a number if the string happened
647 to be used as a number some time.  So, if $x contains the string "dogs",
648 C<-$x> returns "-dogs" even if C<$y=0+$x> has happened at some point.
649
650 =item *
651
652 In Perl 5.14, C<-'-10'> was fixed to return "10", not "+10".  But magical
653 variables (C<$1>, ties) were not fixed till now [perl #57706].
654
655 =item *
656
657 Unary negation now treats strings consistently, regardless of the internal
658 UTF8 flag.
659
660 =item *
661
662 A regression introduced in Perl v5.16.0 involving
663 C<tr/I<SEARCHLIST>/I<REPLACEMENTLIST>/> has been fixed.  Only the first
664 instance is supposed to be meaningful if a character appears more than
665 once in C<I<SEARCHLIST>>.  Under some circumstances, the final instance
666 was overriding all earlier ones.  [perl #113584]
667
668 =item *
669
670 Regular expressions like C<qr/\87/> previously silently inserted a NUL
671 character, thus matching as if it had been written C<qr/\00087/>.  Now it
672 matchs as if it had been written as C<qr/87/>, with a message that the
673 sequence C<"\8"> is unrecognized.
674
675 =back
676
677 =head1 Known Problems
678
679 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
680 tests that had to be C<TODO>ed for the release would be noted here, unless
681 they were specific to a particular platform (see below).
682
683 This is a list of some significant unfixed bugs, which are regressions
684 from either 5.XXX.XXX or 5.XXX.XXX.
685
686 [ List each fix as a =item entry ]
687
688 =over 4
689
690 =item *
691
692 XXX
693
694 =back
695
696 =head1 Obituary
697
698 XXX If any significant core contributor has died, we've added a short obituary
699 here.
700
701 =head1 Acknowledgements
702
703 XXX Generate this with:
704
705   perl Porting/acknowledgements.pl v5.17.0..HEAD
706
707 =head1 Reporting Bugs
708
709 If you find what you think is a bug, you might check the articles
710 recently posted to the comp.lang.perl.misc newsgroup and the perl
711 bug database at http://rt.perl.org/perlbug/ .  There may also be
712 information at http://www.perl.org/ , the Perl Home Page.
713
714 If you believe you have an unreported bug, please run the L<perlbug>
715 program included with your release.  Be sure to trim your bug down
716 to a tiny but sufficient test case.  Your bug report, along with the
717 output of C<perl -V>, will be sent off to perlbug@perl.org to be
718 analysed by the Perl porting team.
719
720 If the bug you are reporting has security implications, which make it
721 inappropriate to send to a publicly archived mailing list, then please send
722 it to perl5-security-report@perl.org. This points to a closed subscription
723 unarchived mailing list, which includes
724 all the core committers, who will be able
725 to help assess the impact of issues, figure out a resolution, and help
726 co-ordinate the release of patches to mitigate or fix the problem across all
727 platforms on which Perl is supported. Please only use this address for
728 security issues in the Perl core, not for modules independently
729 distributed on CPAN.
730
731 =head1 SEE ALSO
732
733 The F<Changes> file for an explanation of how to view exhaustive details
734 on what changed.
735
736 The F<INSTALL> file for how to build Perl.
737
738 The F<README> file for general stuff.
739
740 The F<Artistic> and F<Copying> files for copyright information.
741
742 =cut