This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
charnames: pod nits
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
249950d7 3=for comment
c0f37554 4This has been completed up to 0aae26c14, except for:
10c62b23 5803e389 rurban CYG17 utf8 paths
ff4ff6f3 6d9298c1 rurban mymalloc isn't thread safe
249950d7 7
44691e6f
AB
8=head1 NAME
9
c1e74734
CBW
10[ this is a template for a new perldelta file. Any text flagged as
11XXX needs to be processed before release. ]
ad32999b 12
c1e74734 13perldelta - what is new for perl v5.15.8
88c5c971 14
c1e74734 15=head1 DESCRIPTION
8f12b018 16
c1e74734
CBW
17This document describes differences between the 5.15.7 release and
18the 5.15.8 release.
8f12b018 19
c1e74734
CBW
20If you are upgrading from an earlier release such as 5.15.6, first read
21L<perl5157delta>, which describes differences between 5.15.6 and
225.15.7.
26afcec5 23
c1e74734 24=head1 Notice
8f12b018 25
c1e74734 26XXX Any important notices here
d7fbd56d 27
c1e74734 28=head1 Core Enhancements
d7fbd56d 29
c1e74734
CBW
30XXX New core language features go here. Summarise user-visible core language
31enhancements. Particularly prominent performance optimisations could go
32here, but most should go in the L</Performance Enhancements> section.
d7fbd56d 33
c1e74734 34[ List each enhancement as a =head2 entry ]
711a3903 35
66cbab2c
KW
36=head2 Improved ability to mix locales and Unicode, including UTF-8 locales
37
38An optional parameter has been added to C<use locale>
39
40 use locale ':not_characters';
41
42which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
43portions of the current locale. Instead, the character set is assumed
44to be Unicode. This allows locales and Unicode to be seamlessly mixed,
45including the increasingly frequent UTF-8 locales. When using this
46hybrid form of locales, the C<:locale> layer to the L<open> pragma can
47be used to interface with the file system, and there are CPAN modules
48available for ARGV and environment variable conversions.
49
50Full details are in L<perllocale>.
51
628253b8
BF
52=head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
53
54Unicode foldcase is an extension to lowercase that gives better results
55when comparing two strings case-insensitively. It has long been used
56internally in regular expression C</i> matching. Now it is available
57explicitly through the new C<fc> function call (enabled by
58S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
249950d7 59C<CORE::fc>) or through the new C<\F> sequence in double-quotish
628253b8
BF
60strings.
61
62Full details are in L<perlfunc/fc>.
63
10c62b23
FC
64=head2 C<_> in subroutine prototypes
65
66The C<_> character in subroutine prototypes is now allowed before C<@> or
67C<%>.
68
c1e74734 69=head1 Security
711a3903 70
c1e74734
CBW
71XXX Any security-related notices go here. In particular, any security
72vulnerabilities closed should be noted here rather than in the
73L</Selected Bug Fixes> section.
711a3903 74
c1e74734 75[ List each security issue as a =head2 entry ]
6ba817f3 76
c1e74734 77=head1 Incompatible Changes
6ba817f3 78
c1e74734 79XXX For a release on a stable branch, this section aspires to be:
6b339779 80
c1e74734
CBW
81 There are no changes intentionally incompatible with 5.XXX.XXX
82 If any exist, they are bugs, and we request that you submit a
83 report. See L</Reporting Bugs> below.
6b339779 84
c1e74734 85[ List each incompatible change as a =head2 entry ]
b240fc0f 86
249950d7
FC
87=head2 Special blocks called in void context
88
89Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
90called in void context. This avoids wasteful copying of the result of the
91last statement [perl #108794].
92
eff8c8ec
FC
93=head2 The C<overloading> pragma and regexp objects
94
95With C<no overloading>, regular expression objects returned by C<qr//> are
96now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
97expression itself [perl #108780].
98
84ecb73f
S
99=head2 Two XS typemap Entries removed
100
101Two presumably unused XS typemap entries have been removed from the
102core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
103a user of these, please see the instructions on how to regain them
104in L<perlxstypemap>.
105
c1e74734 106=head1 Deprecations
b240fc0f 107
c1e74734
CBW
108XXX Any deprecated features, syntax, modules etc. should be listed here.
109In particular, deprecated modules should be listed here even if they are
110listed as an updated module in the L</Modules and Pragmata> section.
4e6ab4ad 111
c1e74734 112[ List each deprecation as a =head2 entry ]
4e6ab4ad 113
c1e74734 114=head1 Performance Enhancements
79e10968 115
c1e74734
CBW
116XXX Changes which enhance performance without changing behaviour go here. There
117may well be none in a stable release.
79e10968 118
c1e74734 119[ List each enhancement as a =item entry ]
ea88c40c 120
c1e74734 121=over 4
9d055b1a
CBW
122
123=item *
124
c1e74734 125XXX
cadced9f 126
c1e74734 127=back
cadced9f 128
c1e74734 129=head1 Modules and Pragmata
cadced9f 130
c1e74734
CBW
131XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
132go here. If Module::CoreList is updated, generate an initial draft of the
133following sections using F<Porting/corelist-perldelta.pl>, which prints stub
134entries to STDOUT. Results can be pasted in place of the '=head2' entries
135below. A paragraph summary for important changes should then be added by hand.
136In an ideal world, dual-life modules would have a F<Changes> file that could be
137cribbed.
cadced9f 138
c1e74734 139[ Within each section, list entries as a =item entry ]
07feb684 140
c1e74734 141=head2 New Modules and Pragmata
cadced9f 142
c1e74734 143=over 4
632c5d30
NC
144
145=item *
146
2f987927
FC
147The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
148been moved out into the new L<PerlIO::mmap> module.
4e6e9b23 149
c1e74734 150=back
4e6e9b23 151
c1e74734 152=head2 Updated Modules and Pragmata
4e6e9b23 153
c1e74734 154=over 4
1887da8c
RS
155
156=item *
157
eeac62ad
FC
158L<arybase> has been upgraded from version 0.03 to version 0.04.
159
160List slices no longer modify items on the stack belonging to outer lists
161[perl #109570].
162
163=item *
164
197aacaf
FC
165L<B> has been upgraded from version 1.33 to version 1.34.
166
167C<B::COP> now has a C<stashflags> method, corresponding to a new internal
168field added in 5.15.4 [perl #108860].
169
170=item *
171
c0f37554
FC
172L<Carp> has been upgraded from version 1.24 to version 1.25.
173
174It now puts a dot after the file and line number, just like errors from
175C<die> [perl #106538].
176
177=item *
178
df697508 179L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
76f546a2
CBW
180
181=item *
182
ecea5ab2 183L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
589c1691
CBW
184
185=item *
186
8dcc3739 187L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
422d6414
CBW
188
189=item *
190
2d1dec40
CBW
191L<CPAN::Meta> has been upgraded from version 2.113640 to version 2.120351.
192
193Work around a memory leak bug involving version objects in boolean context.
194
195=item *
196
b34385a6 197L<DB_File> has been upgraded from version 1.824 to version 1.826.
acb29889
CBW
198
199=item *
200
ce2c4022
NC
201L<diagnostics> has been upgraded from version 1.27 to version 1.28.
202
203When searching for F<perldiag.pod>, it no longer uses paths that were only
204relevant on Perl 5.004 and earlier.
205
206=item *
207
84ecb73f
S
208L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
209
210The new version comes with important tools for sharing typemaps between
211different CPAN distributions.
212
213=item *
214
a3cc0403
FC
215L<File::Copy> has been upgraded from version 2.21 to version 2.23.
216
217It no longer emits warnings when copying files with newlines in their names
218[perl #109104].
219
220=item *
221
eb96f3fa
CBW
222L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
223
224=item *
225
04ae1553
Z
226L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
227
228This avoids a new core warning.
229
230=item *
231
1051d5b5 232L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
88c5c971 233
2a7afa74
NC
234=item *
235
ecd144ea
FC
236L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08.
237
238Its C<tkRunning> method now supports L<AnyEvent> event loops, and not just
239L<Tk>. A more general mechanism has been proposed, so this may be reverted
240before Perl 5.16 [perl #108470].
241
242=item *
243
858dcda5
Z
244L<Time::HiRes> has been upgraded from version 1.9724 to version 1.9725.
245
694644e0 246C<Time::HiRes::stat()> no longer corrupts the Perl stack.
858dcda5
Z
247
248=item *
249
2a7afa74
NC
250L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
251
252The only change is to fix a formatting error in the Pod.
253
e9e4ee62
CBW
254=item *
255
256L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
257
c1e74734 258=back
c0504019 259
c1e74734 260=head2 Removed Modules and Pragmata
937a45d0 261
c1e74734 262=over 4
937a45d0 263
ef337e16
CBW
264=item *
265
c1e74734 266XXX
ef337e16 267
7f28d7ed 268=back
679b54e7 269
52deee2e 270=head1 Documentation
3c7c5233 271
c1e74734
CBW
272XXX Changes to files in F<pod/> go here. Consider grouping entries by
273file and be sure to link to the appropriate page, e.g. L<perlfunc>.
a71d67b1 274
c1e74734 275=head2 New Documentation
cadced9f 276
c1e74734 277XXX Changes which create B<new> files in F<pod/> go here.
cadced9f 278
84ecb73f
S
279=head3 L<perlxstypemap>
280
281The new manual describes the XS typemapping mechanism in unprecedented
282detail and combines new documentation with information extracted from
283L<perlxs> and the previously unofficial list of all core typemaps.
284
c1e74734 285=head3 L<XXX>
cadced9f 286
c1e74734 287XXX Description of the purpose of the new file here
cadced9f 288
c1e74734 289=head2 Changes to Existing Documentation
cadced9f 290
c1e74734
CBW
291XXX Changes which significantly change existing files in F<pod/> go here.
292However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
293section.
cadced9f 294
c1e74734 295=head3 L<XXX>
7e7629fa 296
52deee2e 297=over 4
7e7629fa
FC
298
299=item *
300
c1e74734 301XXX Description of the change here
c2654555 302
52deee2e 303=back
85ca3be7 304
52deee2e 305=head1 Diagnostics
85ca3be7 306
52deee2e
DR
307The following additions or changes have been made to diagnostic output,
308including warnings and fatal error messages. For the complete list of
309diagnostic messages, see L<perldiag>.
7788a270 310
c1e74734
CBW
311XXX New or changed warnings emitted by the core's C<C> code go here. Also
312include any changes in L<perldiag> that reconcile it to the C<C> code.
6138a722 313
c1e74734
CBW
314[ Within each section, list entries as a =item entry that links to perldiag,
315 e.g.
a47fb3fe 316
c1e74734 317 =item *
4888c563 318
c1e74734
CBW
319 L<Invalid version object|perldiag/"Invalid version object">
320]
a3f52e2e 321
c1e74734 322=head2 New Diagnostics
52272450 323
c1e74734 324XXX Newly added diagnostic messages go here
52272450 325
c1e74734 326=head3 New Errors
a47fb3fe 327
0aaeb177 328=over 4
7ef25837 329
6d110ad0
FC
330=item *
331
c1e74734 332XXX L<message|perldiag/"message">
604a99bd 333
c1e74734 334=back
ea88c40c 335
c1e74734 336=head3 New Warnings
ea88c40c 337
c1e74734 338=over 4
ea88c40c
FC
339
340=item *
341
c1e74734 342XXX L<message|perldiag/"message">
ea88c40c 343
6d110ad0
FC
344=back
345
c1e74734
CBW
346=head2 Changes to Existing Diagnostics
347
348XXX Changes (i.e. rewording) of diagnostic messages go here
cadced9f
FC
349
350=over 4
351
352=item *
353
c1e74734 354XXX Describe change here
cadced9f
FC
355
356=back
357
0aaeb177 358=head1 Utility Changes
9cfd094e 359
c1e74734
CBW
360XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
361here. Most of these are built within the directories F<utils> and F<x2p>.
d7fbd56d 362
c1e74734
CBW
363[ List utility changes as a =head3 entry for each utility and =item
364entries for each change
365Use L<XXX> with program names to get proper documentation linking. ]
d7fbd56d 366
c1e74734 367=head3 L<XXX>
d7fbd56d 368
c1e74734 369=over 4
ba91b4f3 370
b18aa002
FC
371=item *
372
c1e74734 373XXX
b18aa002 374
52deee2e 375=back
ba91b4f3 376
52deee2e 377=head1 Configuration and Compilation
f4912a50 378
c1e74734
CBW
379XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
380go here. Any other changes to the Perl build process should be listed here.
381However, any platform-specific changes should be listed in the
382L</Platform Support> section, instead.
a3f52e2e 383
c1e74734 384[ List changes as a =item entry ].
a3f52e2e 385
0aaeb177 386=over 4
ad32999b 387
f4912a50 388=item *
ad32999b 389
c1e74734 390XXX
c15f899f 391
7f28d7ed 392=back
ad32999b 393
c1e74734 394=head1 Testing
39de7394 395
c1e74734
CBW
396XXX Any significant changes to the testing of a freshly built perl should be
397listed here. Changes which create B<new> files in F<t/> go here as do any
398large changes to the testing harness (e.g. when parallel testing was added).
399Changes to existing files in F<t/> aren't worth summarising, although the bugs
400that they represent may be covered elsewhere.
39de7394 401
c1e74734 402[ List each test improvement as a =item entry ]
39de7394 403
c1e74734 404=over 4
5dd80d85 405
52272450
FC
406=item *
407
c1e74734 408XXX
52272450 409
84ecb73f
S
410=item *
411
412The test suite for typemaps has been extended to cover a larger fraction of
413the core typemaps.
414
52deee2e 415=back
5dd80d85 416
c1e74734 417=head1 Platform Support
52272450 418
c1e74734 419XXX Any changes to platform support should be listed in the sections below.
52272450 420
c1e74734
CBW
421[ Within the sections, list each platform as a =item entry with specific
422changes as paragraphs below it. ]
ad266194 423
c1e74734 424=head2 New Platforms
ad266194 425
c1e74734
CBW
426XXX List any platforms that this version of perl compiles on, that previous
427versions did not. These will either be enabled by new files in the F<hints/>
428directories, or new subdirectories and F<README> files at the top level of the
429source tree.
ad266194 430
c1e74734 431=over 4
838cf719 432
c1e74734 433=item XXX-some-platform
838cf719 434
c1e74734 435XXX
b00f6edb 436
c1e74734 437=back
b00f6edb 438
c1e74734 439=head2 Discontinued Platforms
7a3fd9ed 440
c1e74734 441XXX List any platforms that this version of perl no longer compiles on.
7a3fd9ed 442
c1e74734 443=over 4
1a50d74b 444
c1e74734 445=item XXX-some-platform
1a50d74b 446
c1e74734 447XXX
ea88c40c 448
c1e74734 449=back
ea88c40c 450
c1e74734 451=head2 Platform-Specific Notes
ea88c40c 452
c1e74734
CBW
453XXX List any changes for specific platforms. This could include configuration
454and compilation changes or changes in portability/compatibility. However,
455changes within modules for platforms should generally be listed in the
456L</Modules and Pragmata> section.
ea88c40c 457
c1e74734 458=over 4
ea88c40c 459
c1e74734 460=item XXX-some-platform
ea88c40c 461
c1e74734 462XXX
ea88c40c 463
c1e74734 464=back
ea88c40c 465
c1e74734 466=head1 Internal Changes
ea88c40c 467
c1e74734
CBW
468XXX Changes which affect the interface available to C<XS> code go here.
469Other significant internal changes for future core maintainers should
470be noted as well.
ea88c40c 471
c1e74734 472[ List each change as a =item entry ]
ea88c40c 473
c1e74734 474=over 4
ea88c40c
FC
475
476=item *
477
c1e74734 478XXX
ea88c40c 479
c1e74734 480=back
ea88c40c 481
c1e74734 482=head1 Selected Bug Fixes
ea88c40c 483
c1e74734
CBW
484XXX Important bug fixes in the core language are summarised here.
485Bug fixes in files in F<ext/> and F<lib/> are best summarised in
486L</Modules and Pragmata>.
ea88c40c 487
c1e74734 488[ List each fix as a =item entry ]
ea88c40c 489
c1e74734 490=over 4
ea88c40c
FC
491
492=item *
493
6025c6dd
RS
494C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
495by an overloaded object on the left-hand side.
ea88c40c 496
249950d7
FC
497=item *
498
499C<stat _> no longer warns about unopened filehandles [perl #71002].
500
501=item *
502
503C<stat> on an unopened filehandle now warns consistently, instead of
504skipping the warning at times.
505
506=item *
507
508A change in an earlier 5.15 release caused warning hints to propagate into
509C<do $file>. This has been fixed [rt.cpan.org #72767].
510
511=item *
512
513Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
514after assigning C<${ qr// }> to a hash element and locking it with
515L<Hash::Util>. This could result in double frees, crashes or erratic
516behaviour.
517
92c88ef1
FC
518=item *
519
520In 5.15.7, some typeglobs in the CORE namespace were made read-only by
521mistake. This has been fixed [rt.cpan.org #74289].
522
b1ea7742
FC
523=item *
524
525C<-t> now works when stacked with other filetest operators [perl #77388].
526
a1d95121
FC
527=item *
528
529Stacked filetest operators now only call FETCH once on a tied argument.
530
ff4ff6f3
FC
531=item *
532
533C</.*/g> would sometimes refuse to match at the end of a string that ends
534with "\n". This has been fixed [perl #109206].
535
a7bff800
FC
536=item *
537
538Method calls whose arguments were all surrounded with C<my()> or C<our()>
539(as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
540the subroutine. This would prevent lvalue methods from returning certain
541values. Due to lvalue fixes earlier in the 5.15.x series, it would also
542prevent non-lvalue methods from being called [perl #109264].
543
544=for comment
545This bug I<did> affect earlier stable releases. It is just the last
546sentence that does not apply to 5.14.
547
0aae26c1
FC
548=item *
549
550The C<SvPVutf8> C function no longer tries to modify its argument,
551resulting in errors [perl #108994].
552
553=item *
554
555C<SvPVutf8> now works properly with magical variables.
556
557=item *
558
559C<SvPVbyte> now works properly non-PVs.
560
ea88c40c
FC
561=back
562
c1e74734 563=head1 Known Problems
ea88c40c 564
c1e74734
CBW
565XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
566tests that had to be C<TODO>ed for the release would be noted here, unless
567they were specific to a particular platform (see below).
ea88c40c 568
c1e74734
CBW
569This is a list of some significant unfixed bugs, which are regressions
570from either 5.XXX.XXX or 5.XXX.XXX.
ea88c40c 571
c1e74734 572[ List each fix as a =item entry ]
ea88c40c 573
c1e74734 574=over 4
18af289e 575
c1e74734 576=item *
18af289e 577
c1e74734 578XXX
1ac442bc 579
c1e74734 580=back
c0154fe2 581
c1e74734 582=head1 Obituary
1ac442bc 583
c1e74734
CBW
584XXX If any significant core contributor has died, we've added a short obituary
585here.
84b2a83e 586
52deee2e 587=head1 Acknowledgements
8fe05716 588
c1e74734
CBW
589XXX Generate this with:
590
591 perl Porting/acknowledgements.pl v5.15.7..HEAD
29cf780c 592
44691e6f
AB
593=head1 Reporting Bugs
594
595If you find what you think is a bug, you might check the articles
52deee2e
DR
596recently posted to the comp.lang.perl.misc newsgroup and the perl
597bug database at http://rt.perl.org/perlbug/ . There may also be
44691e6f
AB
598information at http://www.perl.org/ , the Perl Home Page.
599
600If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
601program included with your release. Be sure to trim your bug down
602to a tiny but sufficient test case. Your bug report, along with the
603output of C<perl -V>, will be sent off to perlbug@perl.org to be
604analysed by the Perl porting team.
44691e6f
AB
605
606If the bug you are reporting has security implications, which make it
52deee2e
DR
607inappropriate to send to a publicly archived mailing list, then please send
608it to perl5-security-report@perl.org. This points to a closed subscription
609unarchived mailing list, which includes
610all the core committers, who will be able
611to help assess the impact of issues, figure out a resolution, and help
612co-ordinate the release of patches to mitigate or fix the problem across all
613platforms on which Perl is supported. Please only use this address for
614security issues in the Perl core, not for modules independently
615distributed on CPAN.
44691e6f
AB
616
617=head1 SEE ALSO
618
52deee2e
DR
619The F<Changes> file for an explanation of how to view exhaustive details
620on what changed.
44691e6f
AB
621
622The F<INSTALL> file for how to build Perl.
623
624The F<README> file for general stuff.
625
626The F<Artistic> and F<Copying> files for copyright information.
627
628=cut