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