This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix two podchecker errors on perlunicode.pod
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
0890f1a5
FC
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
6e925ecb 7
0890f1a5 8perldelta - what is new for perl v5.15.1
f5938650 9
0890f1a5 10=head1 DESCRIPTION
760696b8 11
0890f1a5
FC
12This document describes differences between the 5.15.1 release and
13the 5.15.0 release.
760696b8 14
0890f1a5
FC
15If you are upgrading from an earlier release such as 5.14.0, first read
16L<perl5150delta>, which describes differences between 5.14.0 and
175.15.0.
760696b8 18
0890f1a5 19=head1 Notice
760696b8 20
0890f1a5 21XXX Any important notices here
6693394d 22
0890f1a5 23=head1 Core Enhancements
6693394d 24
0890f1a5
FC
25XXX New core language features go here. Summarise user-visible core language
26enhancements. Particularly prominent performance optimisations could go
27here, but most should go in the L</Performance Enhancements> section.
6693394d 28
0890f1a5 29[ List each enhancement as a =head2 entry ]
6693394d 30
5cd408a2
EB
31=head2 C<splice()> doesn't warn when truncating
32
33You can now limit the size of an array using C<splice(@a,MAX_LEN)> without
34worrying about warnings.
35
062678b2
FC
36=head2 The C<\$> prototype accepts any scalar lvalue
37
38The C<\$> and C<\[$]> subroutine prototypes now accept any scalar lvalue
39argument. Previously they only accepted scalars beginning with C<$> and
40hash and array elements. This change makes them consistent with the way
41the built-in C<read> and C<recv> functions (among others) parse their
42arguments. This means that one can override the built-in functions with
43custom subroutines that parse their arguments the same way.
44
0890f1a5 45=head1 Security
6693394d 46
0890f1a5
FC
47XXX Any security-related notices go here. In particular, any security
48vulnerabilities closed should be noted here rather than in the
49L</Selected Bug Fixes> section.
b7188eb5 50
0890f1a5 51[ List each security issue as a =head2 entry ]
e8e35311 52
0890f1a5 53=head1 Incompatible Changes
2c389f6c 54
0890f1a5 55XXX For a release on a stable branch, this section aspires to be:
760696b8 56
307f4217
NC
57 There are no changes intentionally incompatible with 5.XXX.XXX
58 If any exist, they are bugs and reports are welcome.
760696b8 59
0890f1a5 60[ List each incompatible change as a =head2 entry ]
760696b8 61
0890f1a5 62=head1 Deprecations
760696b8 63
0890f1a5
FC
64XXX Any deprecated features, syntax, modules etc. should be listed here.
65In particular, deprecated modules should be listed here even if they are
66listed as an updated module in the L</Modules and Pragmata> section.
760696b8 67
0890f1a5 68[ List each deprecation as a =head2 entry ]
760696b8 69
0890f1a5 70=head1 Performance Enhancements
760696b8 71
0890f1a5
FC
72XXX Changes which enhance performance without changing behaviour go here. There
73may well be none in a stable release.
760696b8 74
0890f1a5 75[ List each enhancement as a =item entry ]
6693394d
FC
76
77=over 4
78
79=item *
80
8ca8a454 81The implementation of C<s///r> makes one fewer copy of the scalar's value.
6693394d 82
bfafcb9a
NC
83=item *
84
85If a studied scalar is C<split> with a regex, the engine will now take
86advantage of the C<study> data.
87
6693394d
FC
88=back
89
0890f1a5 90=head1 Modules and Pragmata
bdb9ba77 91
0890f1a5
FC
92XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
93go here. If Module::CoreList is updated, generate an initial draft of the
94following sections using F<Porting/corelist-perldelta.pl>, which prints stub
95entries to STDOUT. Results can be pasted in place of the '=head2' entries
96below. A paragraph summary for important changes should then be added by hand.
97In an ideal world, dual-life modules would have a F<Changes> file that could be
98cribbed.
bdb9ba77 99
0890f1a5 100[ Within each section, list entries as a =item entry ]
bdb9ba77 101
0890f1a5 102=head2 New Modules and Pragmata
6693394d 103
0890f1a5 104=over 4
6693394d
FC
105
106=item *
107
0890f1a5 108XXX
6693394d
FC
109
110=back
111
0890f1a5 112=head2 Updated Modules and Pragmata
760696b8 113
0890f1a5 114=over 4
760696b8
FC
115
116=item *
117
cd272cae 118L<Compress::Raw::Bzip2> has been upgraded from version 2.035 to version 2.037
1d5c9fb0
CBW
119
120=item *
121
98a34606 122L<Compress::Raw::Zlib> has been upgraded from version 2.035 to version 2.037
bc771c2e
CBW
123
124Added offset parameter to CRC32
125
126=item *
127
101c03fa 128L<Compress::Zlib> has been upgraded from version 2.035 to version 2.037
529174d6
CBW
129
130IO::Compress::Zip and IO::Uncompress::Unzip now have support for LZMA (method 14).
101c03fa
CBW
131There is a fix for a CRC issue in IO::Compress::Unzip and it supports Streamed
132Stored context now. And fixed a Zip64 issue in
529174d6
CBW
133IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
134
135=item *
136
508236ce
CBW
137L<IPC::Cmd> has been upgraded from version 0.70 to version 0.72
138
139Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
140using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
141
142=item *
143
bb3abb05
FC
144L<attributes> has been upgraded from version 0.14 to 0.15, as part of the
145lvalue attribute warnings fix. See L</Selected Bug Fixes>, below.
2c389f6c 146
7c420290
NC
147=item *
148
149L<Math::BigInt::FastCalc> has been upgraded from version 0.28 to version 0.29.
150
151The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
152performance under ithreads.
153
e8e35311
FC
154=back
155
0890f1a5 156=head2 Removed Modules and Pragmata
bdb9ba77 157
0890f1a5 158=over 4
bdb9ba77
DG
159
160=item *
161
0890f1a5 162XXX
bdb9ba77
DG
163
164=back
165
0890f1a5 166=head1 Documentation
f5938650 167
0890f1a5
FC
168XXX Changes to files in F<pod/> go here. Consider grouping entries by
169file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f5938650 170
0890f1a5 171=head2 New Documentation
f5938650 172
0890f1a5 173XXX Changes which create B<new> files in F<pod/> go here.
f5938650 174
0890f1a5 175=head3 L<XXX>
bdb9ba77 176
0890f1a5 177XXX Description of the purpose of the new file here
bdb9ba77 178
0890f1a5
FC
179=head2 Changes to Existing Documentation
180
181XXX Changes which significantly change existing files in F<pod/> go here.
182However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
183section.
f5938650 184
0890f1a5 185=head3 L<XXX>
6693394d 186
0890f1a5 187=over 4
6693394d
FC
188
189=item *
190
0890f1a5 191XXX Description of the change here
6693394d
FC
192
193=back
194
34dc2ec0 195=head1 Diagnostics
b7188eb5 196
34dc2ec0
DM
197The following additions or changes have been made to diagnostic output,
198including warnings and fatal error messages. For the complete list of
199diagnostic messages, see L<perldiag>.
44691e6f 200
0890f1a5
FC
201XXX New or changed warnings emitted by the core's C<C> code go here. Also
202include any changes in L<perldiag> that reconcile it to the C<C> code.
2c389f6c 203
0890f1a5
FC
204[ Within each section, list entries as a =item entry that links to perldiag,
205 e.g.
2c389f6c 206
0890f1a5 207 =item *
b7188eb5 208
0890f1a5
FC
209 L<Invalid version object|perldiag/"Invalid version object">
210]
5076a392 211
0890f1a5 212=head2 New Diagnostics
5076a392 213
0890f1a5 214XXX Newly added diagnostic messages go here
e8e35311 215
0890f1a5 216=head3 New Errors
5076a392 217
34dc2ec0 218=over 4
5076a392 219
e8e35311 220=item *
5076a392 221
0890f1a5 222XXX L<message|perldiag/"message">
a0ed52f4 223
bdb9ba77 224=back
bdab33d1 225
0890f1a5 226=head3 New Warnings
d430b8e7 227
0890f1a5 228=over 4
5076a392 229
bdb9ba77 230=item *
5076a392 231
0890f1a5 232XXX L<message|perldiag/"message">
5076a392 233
bdb9ba77 234=back
e8e35311 235
0890f1a5 236=head2 Changes to Existing Diagnostics
42a91c97 237
0890f1a5 238XXX Changes (i.e. rewording) of diagnostic messages go here
6693394d 239
34dc2ec0 240=over 4
42a91c97 241
6693394d 242=item *
42a91c97 243
0890f1a5 244XXX Describe change here
42a91c97 245
34dc2ec0 246=back
42a91c97 247
0890f1a5 248=head1 Utility Changes
69c6927c 249
0890f1a5
FC
250XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
251here. Most of these are built within the directories F<utils> and F<x2p>.
69c6927c 252
0890f1a5
FC
253[ List utility changes as a =head3 entry for each utility and =item
254entries for each change
255Use L<XXX> with program names to get proper documentation linking. ]
c13a5c80 256
0890f1a5 257=head3 L<XXX>
c13a5c80 258
0890f1a5 259=over 4
bdab33d1 260
571f0e86
NC
261=item *
262
0890f1a5 263XXX
384e62c0
DG
264
265=back
266
0890f1a5 267=head1 Configuration and Compilation
cdc10f43 268
0890f1a5
FC
269XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
270go here. Any other changes to the Perl build process should be listed here.
271However, any platform-specific changes should be listed in the
272L</Platform Support> section, instead.
cdc10f43 273
0890f1a5 274[ List changes as a =item entry ].
bdab33d1 275
34dc2ec0 276=over 4
d430b8e7
FC
277
278=item *
279
0890f1a5 280XXX
bdab33d1
DG
281
282=back
283
0890f1a5 284=head1 Testing
bdab33d1 285
0890f1a5
FC
286XXX Any significant changes to the testing of a freshly built perl should be
287listed here. Changes which create B<new> files in F<t/> go here as do any
288large changes to the testing harness (e.g. when parallel testing was added).
289Changes to existing files in F<t/> aren't worth summarising, although the bugs
290that they represent may be covered elsewhere.
f5938650 291
0890f1a5 292[ List each test improvement as a =item entry ]
f5938650 293
0890f1a5 294=over 4
f5938650
FC
295
296=item *
297
0890f1a5 298XXX
f5938650
FC
299
300=back
2fbb14a0 301
0890f1a5 302=head1 Platform Support
975dff8c 303
0890f1a5 304XXX Any changes to platform support should be listed in the sections below.
975dff8c 305
0890f1a5
FC
306[ Within the sections, list each platform as a =item entry with specific
307changes as paragraphs below it. ]
975dff8c 308
0890f1a5 309=head2 New Platforms
975dff8c 310
0890f1a5
FC
311XXX List any platforms that this version of perl compiles on, that previous
312versions did not. These will either be enabled by new files in the F<hints/>
313directories, or new subdirectories and F<README> files at the top level of the
314source tree.
975dff8c 315
0890f1a5 316=over 4
975dff8c 317
0890f1a5 318=item XXX-some-platform
975dff8c 319
0890f1a5 320XXX
975dff8c
FC
321
322=back
323
0890f1a5 324=head2 Discontinued Platforms
da507230 325
0890f1a5 326XXX List any platforms that this version of perl no longer compiles on.
da507230 327
0890f1a5 328=over 4
fad4a2e4 329
0890f1a5 330=item XXX-some-platform
4dbb339a 331
0890f1a5 332XXX
4dbb339a 333
975dff8c
FC
334=back
335
0890f1a5 336=head2 Platform-Specific Notes
6693394d 337
0890f1a5
FC
338XXX List any changes for specific platforms. This could include configuration
339and compilation changes or changes in portability/compatibility. However,
340changes within modules for platforms should generally be listed in the
341L</Modules and Pragmata> section.
6693394d 342
0890f1a5 343=over 4
6693394d 344
0890f1a5 345=item XXX-some-platform
6693394d 346
0890f1a5 347XXX
6693394d
FC
348
349=back
350
0890f1a5 351=head1 Internal Changes
6693394d 352
0890f1a5
FC
353XXX Changes which affect the interface available to C<XS> code go here.
354Other significant internal changes for future core maintainers should
355be noted as well.
bdab33d1 356
0890f1a5 357[ List each change as a =item entry ]
f5938650 358
0890f1a5 359=over 4
f5938650
FC
360
361=item *
362
0890f1a5 363XXX
f5938650 364
0890f1a5 365=back
25aa614d 366
0890f1a5 367=head1 Selected Bug Fixes
87d00a71 368
0890f1a5
FC
369XXX Important bug fixes in the core language are summarised here.
370Bug fixes in files in F<ext/> and F<lib/> are best summarised in
371L</Modules and Pragmata>.
87d00a71 372
0890f1a5 373[ List each fix as a =item entry ]
87d00a71 374
0890f1a5 375=over 4
87d00a71 376
da507230
FC
377=item *
378
fff96ff7
FC
379Applying the :lvalue attribute to subroutine that is already defined does
380not work properly, as the attribute changes the way the sub is compiled.
381Hence, Perl 5.12 began warning when an attempt is made to apply the
382attribute to an already defined sub. In such cases, the attribute is
383discarded.
384
385But the change in 5.12 missed the case where custom attributes are also
386present: that case still silently and ineffectively applied the attribute.
387That omission has now been corrected. C<sub foo :lvalue :Whatever> (when
388C<foo> is already defined) now warns about the :lvalue attribute, and does
389not apply it.
da507230 390
bb3abb05
FC
391L<attributes.pm|attributes> has likewise been updated to warn and not apply
392the attribute.
393
d25b0d7b
FC
394=item *
395
4bee03f8
FC
396=for comment
397Not necessary for perl5160delta
398
d25b0d7b
FC
399The remaining discrepancies between explicit and implicit return from
400lvalue subroutines have been resolved. They mainly involved which error
401message to display when a read-only value is returned in lvalue context.
402Also, returning a PADTMP (the result of most built-ins, like C<index>) in
403lvalue context is now forbidden for explicit return, as it always has been
404for implicit return. This is not a regression from 5.14, as all the cases
405in which it could happen where previously syntax errors.
406
4bee03f8
FC
407=item *
408
409=for comment
410Not necessary for perl5160delta
411
412Explicitly returning a tied C<my> variable from an lvalue subroutine in
413list lvalue context used to clear the variable before the assignment could
414happen. This is something that was missed when explicit return was made to
415work in 5.15.0.
416
d9463c66
FC
417=item *
418
419=for comment
420Not necessary for perl5160delta
421
422A minor memory leak, introduced in 5.15.0, has been fixed. It would occur
423when a hash is freed that has had its current iterator deleted
424[perl #93454].
425
42a91c97
FC
426=back
427
c71a852f 428=head1 Known Problems
44691e6f 429
0890f1a5
FC
430XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
431tests that had to be C<TODO>ed for the release would be noted here, unless
432they were specific to a particular platform (see below).
bda24d5c 433
0890f1a5
FC
434This is a list of some significant unfixed bugs, which are regressions
435from either 5.XXX.XXX or 5.XXX.XXX.
bda24d5c 436
0890f1a5 437[ List each fix as a =item entry ]
bdb9ba77 438
0890f1a5 439=over 4
014fb485 440
d8e9570c
DG
441=item *
442
0890f1a5 443XXX
d8e9570c 444
bdb9ba77 445=back
014fb485 446
0890f1a5
FC
447=head1 Obituary
448
449XXX If any significant core contributor has died, we've added a short obituary
450here.
44691e6f 451
44691e6f
AB
452=head1 Acknowledgements
453
0890f1a5 454XXX The list of people to thank goes here.
29cf780c 455
44691e6f
AB
456=head1 Reporting Bugs
457
458If you find what you think is a bug, you might check the articles
34dc2ec0 459recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
460bug database at http://rt.perl.org/perlbug/ . There may also be
461information at http://www.perl.org/ , the Perl Home Page.
462
463If you believe you have an unreported bug, please run the L<perlbug>
464program included with your release. Be sure to trim your bug down
465to a tiny but sufficient test case. Your bug report, along with the
466output of C<perl -V>, will be sent off to perlbug@perl.org to be
467analysed by the Perl porting team.
468
469If the bug you are reporting has security implications, which make it
470inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 471it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
472unarchived mailing list, which includes
473all the core committers, who will be able
44691e6f
AB
474to help assess the impact of issues, figure out a resolution, and help
475co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
476platforms on which Perl is supported. Please only use this address for
477security issues in the Perl core, not for modules independently
44691e6f
AB
478distributed on CPAN.
479
480=head1 SEE ALSO
481
482The F<Changes> file for an explanation of how to view exhaustive details
483on what changed.
484
485The F<INSTALL> file for how to build Perl.
486
487The F<README> file for general stuff.
488
489The F<Artistic> and F<Copying> files for copyright information.
490
491=cut