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