This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for the SvIsCOW fix
[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
82aed44a
KW
51=head2 The Unicode C<Script_Extensions> property is now supported.
52
53New in Unicode 6.0, this is an improved C<Script> property. Details
54are in L<perlunicode/Scripts>.
55
2b679393
SM
56=head2 DTrace probes for interpreter phase change
57
58The C<phase-change> probes will fire when the interpreter's phase
59changes, which tracks the C<${^GLOBAL_PHASE}> variable. C<arg0> is
60the new phase name; C<arg1> is the old one. This is useful mostly
61for limiting your instrumentation to one or more of: compile time,
62run time, destruct time.
63
0890f1a5 64=head1 Security
6693394d 65
0890f1a5
FC
66XXX Any security-related notices go here. In particular, any security
67vulnerabilities closed should be noted here rather than in the
68L</Selected Bug Fixes> section.
b7188eb5 69
0890f1a5 70[ List each security issue as a =head2 entry ]
e8e35311 71
0890f1a5 72=head1 Incompatible Changes
2c389f6c 73
0890f1a5 74XXX For a release on a stable branch, this section aspires to be:
760696b8 75
307f4217
NC
76 There are no changes intentionally incompatible with 5.XXX.XXX
77 If any exist, they are bugs and reports are welcome.
760696b8 78
0890f1a5 79[ List each incompatible change as a =head2 entry ]
760696b8 80
0890f1a5 81=head1 Deprecations
760696b8 82
0890f1a5
FC
83XXX Any deprecated features, syntax, modules etc. should be listed here.
84In particular, deprecated modules should be listed here even if they are
85listed as an updated module in the L</Modules and Pragmata> section.
760696b8 86
0890f1a5 87[ List each deprecation as a =head2 entry ]
760696b8 88
0890f1a5 89=head1 Performance Enhancements
760696b8 90
0890f1a5
FC
91XXX Changes which enhance performance without changing behaviour go here. There
92may well be none in a stable release.
760696b8 93
0890f1a5 94[ List each enhancement as a =item entry ]
6693394d
FC
95
96=over 4
97
98=item *
99
f199eb7b 100The implementation of C<s///r> makes one less copy of the scalar's value.
6693394d 101
bfafcb9a
NC
102=item *
103
104If a studied scalar is C<split> with a regex, the engine will now take
105advantage of the C<study> data.
106
72de20cd
NC
107=item *
108
109C<study> now uses considerably less memory for shorter strings. Strings shorter
110than 65535 characters use roughly half the memory than previously, strings
111shorter than 255 characters use roughly one quarter of the memory.
112
93905212
FC
113=item *
114
115Recursive calls to lvalue subroutines in lvalue scalar context use less
116memory.
117
6693394d
FC
118=back
119
0890f1a5 120=head1 Modules and Pragmata
bdb9ba77 121
0890f1a5
FC
122XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
123go here. If Module::CoreList is updated, generate an initial draft of the
124following sections using F<Porting/corelist-perldelta.pl>, which prints stub
125entries to STDOUT. Results can be pasted in place of the '=head2' entries
126below. A paragraph summary for important changes should then be added by hand.
127In an ideal world, dual-life modules would have a F<Changes> file that could be
128cribbed.
bdb9ba77 129
0890f1a5 130[ Within each section, list entries as a =item entry ]
bdb9ba77 131
0890f1a5 132=head2 New Modules and Pragmata
6693394d 133
0890f1a5 134=over 4
6693394d
FC
135
136=item *
137
0890f1a5 138XXX
6693394d
FC
139
140=back
141
0890f1a5 142=head2 Updated Modules and Pragmata
760696b8 143
0890f1a5 144=over 4
760696b8
FC
145
146=item *
147
061abd48 148L<ExtUtils::ParseXS> has been upgraded from version 2.2210 to version 3.00_01.
259925f6
SM
149
150Much of L<ExtUtils::ParseXS>, the module behind the XS compiler C<xsubpp>,
151was rewritten and cleaned up. It has been made somewhat more extensible
152and now finally uses strictures.
153
154The logic for parsing, merging, and dumping XS typemaps was extracted
155from C<ExtUtils::ParseXS> into a module of its own, L<ExtUtils::Typemaps>.
156C<ExtUtils::Typemaps> offers an interface to typemap handling outside of
157the scope of the XS compiler itself.
158
159As a first use case of the improved API an extensibility, typemaps can now
160be included inline into XS code with a HEREDOC-like syntax:
161
162 TYPEMAP: <<END_TYPEMAP
163 MyType T_IV
164 END_TYPEMAP
165
166=item *
167
90a3c601
CBW
168L<CGI> has been upgraded from version 3.54 to version 3.55
169
170[THINGS THAT MAY BREAK YOUR CODE]
171
172C<url()> was fixed to return C<PATH_INFO> when it is explicitly requested
173with either the path=>1 or path_info=>1 flag.
174
175If your code is running under mod_rewrite (or compatible) and you are calling C<self_url()> or
176you are calling C<url()> and passing path_info=>1, These methods will actually be
177returning C<PATH_INFO> now, as you have explicitly requested, or has C<self_url()>
178has requested on your behalf.
179
180The C<PATH_INFO> has been omitted in such URLs since the issue was introduced
181in the 3.12 release in December, 2005.
182
183This bug is so old your application may have come to depend on it or
184workaround it. Check for application before upgrading to this release.
185
186Examples of affected method calls:
187
188 $q->url(-absolute => 1, -query => 1, -path_info => 1 )
189 $q->url(-path=>1)
190 $q->url(-full=>1,-path=>1)
191 $q->url(-rewrite=>1,-path=>1)
192 $q->self_url();
193
194=item *
195
cd272cae 196L<Compress::Raw::Bzip2> has been upgraded from version 2.035 to version 2.037
1d5c9fb0
CBW
197
198=item *
199
98a34606 200L<Compress::Raw::Zlib> has been upgraded from version 2.035 to version 2.037
bc771c2e
CBW
201
202Added offset parameter to CRC32
203
204=item *
205
101c03fa 206L<Compress::Zlib> has been upgraded from version 2.035 to version 2.037
529174d6
CBW
207
208IO::Compress::Zip and IO::Uncompress::Unzip now have support for LZMA (method 14).
101c03fa
CBW
209There is a fix for a CRC issue in IO::Compress::Unzip and it supports Streamed
210Stored context now. And fixed a Zip64 issue in
529174d6
CBW
211IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
212
213=item *
214
09127a34 215L<CPANPLUS> has been upgraded from version 0.9105 to version 0.9107
17f2f4a8
CBW
216
217=item *
218
4b5789fe
CBW
219L<ExtUtils::MakeMaker> has been upgraded from version 6.57_05 to version 6.58
220
221=item *
222
508236ce
CBW
223L<IPC::Cmd> has been upgraded from version 0.70 to version 0.72
224
225Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
226using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
227
228=item *
229
c69a30ec
CBW
230L<Locale::Codes> has been upgraded from version 3.16 to version 3.17
231
232Added Language Extension codes (langext) and Language Variation codes
233(langvar) as defined in the IANA language registry.
234
235Added language codes from ISO 639-5
236
237Added language/script codes from the IANA language subtag
238registry
239
240Fixed an uninitialized value warning. RT 67438
241
242Fixed the return value for the all_XXX_codes and all_XXX_names functions. RT 69100
243
244Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to
245allow for cleaner future additions. The original four modules (Locale::Language,
246Locale::Currency, Locale::Country, Locale::Script) will continue to work, but
247all new sets of codes will be added in the Locale::Codes namespace.
248
249=item *
250
bb3abb05
FC
251L<attributes> has been upgraded from version 0.14 to 0.15, as part of the
252lvalue attribute warnings fix. See L</Selected Bug Fixes>, below.
2c389f6c 253
7c420290
NC
254=item *
255
256L<Math::BigInt::FastCalc> has been upgraded from version 0.28 to version 0.29.
257
258The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
259performance under ithreads.
260
0cb4637e
CBW
261=item *
262
5aeca1f7
CBW
263L<Pod::Simple> has been upgraded from version 3.16 to version 3.17
264
265=item *
266
0cb4637e
CBW
267L<Unicode::Collate> has been upgraded from version 0.76 to version 0.77
268
269Applied [perl #93470] silencing compiler warnings with -Wwrite-strings
270
00f02a57
CBW
271=item *
272
273L<Win32API::File> has been upgraded from version 0.1101 to version 0.1200
274
275Added SetStdHandle and GetStdHandle functions
276
8b00e523
NC
277=item *
278
279L<threads> has been upgraded from version 1.83 to 1.84
280
281An unused variable was removed from the XS code.
282
e8e35311
FC
283=back
284
0890f1a5 285=head2 Removed Modules and Pragmata
bdb9ba77 286
0890f1a5 287=over 4
bdb9ba77
DG
288
289=item *
290
17d5d82d
FR
291Perl 4-era .pl libraries
292
293Perl used to bundle a handful of library files that predate Perl 5. Most of
294these files, which have been deprecated since version 5.14.0, have now been
295removed. If your code still relies on these libraries, you can install them
296again from C<Perl4::CoreLibs> on CPAN.
bdb9ba77
DG
297
298=back
299
0890f1a5 300=head1 Documentation
f5938650 301
0890f1a5
FC
302XXX Changes to files in F<pod/> go here. Consider grouping entries by
303file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f5938650 304
0890f1a5 305=head2 New Documentation
f5938650 306
0890f1a5 307XXX Changes which create B<new> files in F<pod/> go here.
f5938650 308
2b679393 309=head3 L<perldtrace>
bdb9ba77 310
2b679393
SM
311L<perldtrace> describes Perl's DTrace support, listing the provided probes
312and gives examples of their use.
bdb9ba77 313
0890f1a5
FC
314=head2 Changes to Existing Documentation
315
316XXX Changes which significantly change existing files in F<pod/> go here.
317However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
318section.
f5938650 319
0890f1a5 320=head3 L<XXX>
6693394d 321
0890f1a5 322=over 4
6693394d
FC
323
324=item *
325
0890f1a5 326XXX Description of the change here
6693394d 327
259925f6
SM
328=item *
329
330L<perlxs> was extended with documentation on inline typemaps.
331
6693394d
FC
332=back
333
34dc2ec0 334=head1 Diagnostics
b7188eb5 335
34dc2ec0
DM
336The following additions or changes have been made to diagnostic output,
337including warnings and fatal error messages. For the complete list of
338diagnostic messages, see L<perldiag>.
44691e6f 339
0890f1a5
FC
340XXX New or changed warnings emitted by the core's C<C> code go here. Also
341include any changes in L<perldiag> that reconcile it to the C<C> code.
2c389f6c 342
0890f1a5
FC
343[ Within each section, list entries as a =item entry that links to perldiag,
344 e.g.
2c389f6c 345
0890f1a5 346 =item *
b7188eb5 347
0890f1a5
FC
348 L<Invalid version object|perldiag/"Invalid version object">
349]
5076a392 350
0890f1a5 351=head2 New Diagnostics
5076a392 352
0890f1a5 353XXX Newly added diagnostic messages go here
e8e35311 354
0890f1a5 355=head3 New Errors
5076a392 356
34dc2ec0 357=over 4
5076a392 358
e8e35311 359=item *
5076a392 360
0890f1a5 361XXX L<message|perldiag/"message">
a0ed52f4 362
bdb9ba77 363=back
bdab33d1 364
0890f1a5 365=head3 New Warnings
d430b8e7 366
0890f1a5 367=over 4
5076a392 368
bdb9ba77 369=item *
5076a392 370
0890f1a5 371XXX L<message|perldiag/"message">
5076a392 372
bdb9ba77 373=back
e8e35311 374
0890f1a5 375=head2 Changes to Existing Diagnostics
42a91c97 376
0890f1a5 377XXX Changes (i.e. rewording) of diagnostic messages go here
6693394d 378
34dc2ec0 379=over 4
42a91c97 380
6693394d 381=item *
42a91c97 382
0890f1a5 383XXX Describe change here
42a91c97 384
34dc2ec0 385=back
42a91c97 386
0890f1a5 387=head1 Utility Changes
69c6927c 388
0890f1a5
FC
389XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
390here. Most of these are built within the directories F<utils> and F<x2p>.
69c6927c 391
0890f1a5
FC
392[ List utility changes as a =head3 entry for each utility and =item
393entries for each change
394Use L<XXX> with program names to get proper documentation linking. ]
c13a5c80 395
0890f1a5 396=head3 L<XXX>
c13a5c80 397
0890f1a5 398=over 4
bdab33d1 399
571f0e86
NC
400=item *
401
0890f1a5 402XXX
384e62c0
DG
403
404=back
405
0890f1a5 406=head1 Configuration and Compilation
cdc10f43 407
0890f1a5
FC
408XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
409go here. Any other changes to the Perl build process should be listed here.
410However, any platform-specific changes should be listed in the
411L</Platform Support> section, instead.
cdc10f43 412
0890f1a5 413[ List changes as a =item entry ].
bdab33d1 414
34dc2ec0 415=over 4
d430b8e7
FC
416
417=item *
418
0890f1a5 419XXX
bdab33d1
DG
420
421=back
422
0890f1a5 423=head1 Testing
bdab33d1 424
0890f1a5
FC
425XXX Any significant changes to the testing of a freshly built perl should be
426listed here. Changes which create B<new> files in F<t/> go here as do any
427large changes to the testing harness (e.g. when parallel testing was added).
428Changes to existing files in F<t/> aren't worth summarising, although the bugs
429that they represent may be covered elsewhere.
f5938650 430
0890f1a5 431[ List each test improvement as a =item entry ]
f5938650 432
0890f1a5 433=over 4
f5938650
FC
434
435=item *
436
2b679393
SM
437F<t/run/dtrace.t> was added to test Perl's DTrace support. This
438test will only be run if your Perl was built with C<-Dusedtrace>
439and if calling C<dtrace> actually lets you instrument code. This
440generally requires being run as root, so this test file is primarily
441intended for use by the dtrace subcommittee of p5p.
f5938650
FC
442
443=back
2fbb14a0 444
0890f1a5 445=head1 Platform Support
975dff8c 446
0890f1a5 447XXX Any changes to platform support should be listed in the sections below.
975dff8c 448
0890f1a5
FC
449[ Within the sections, list each platform as a =item entry with specific
450changes as paragraphs below it. ]
975dff8c 451
0890f1a5 452=head2 New Platforms
975dff8c 453
0890f1a5
FC
454XXX List any platforms that this version of perl compiles on, that previous
455versions did not. These will either be enabled by new files in the F<hints/>
456directories, or new subdirectories and F<README> files at the top level of the
457source tree.
975dff8c 458
0890f1a5 459=over 4
975dff8c 460
0890f1a5 461=item XXX-some-platform
975dff8c 462
0890f1a5 463XXX
975dff8c
FC
464
465=back
466
0890f1a5 467=head2 Discontinued Platforms
da507230 468
0890f1a5 469XXX List any platforms that this version of perl no longer compiles on.
da507230 470
0890f1a5 471=over 4
fad4a2e4 472
0890f1a5 473=item XXX-some-platform
4dbb339a 474
0890f1a5 475XXX
4dbb339a 476
975dff8c
FC
477=back
478
0890f1a5 479=head2 Platform-Specific Notes
6693394d 480
0890f1a5
FC
481XXX List any changes for specific platforms. This could include configuration
482and compilation changes or changes in portability/compatibility. However,
483changes within modules for platforms should generally be listed in the
484L</Modules and Pragmata> section.
6693394d 485
0890f1a5 486=over 4
6693394d 487
0890f1a5 488=item XXX-some-platform
6693394d 489
0890f1a5 490XXX
6693394d
FC
491
492=back
493
0890f1a5 494=head1 Internal Changes
6693394d 495
0890f1a5
FC
496XXX Changes which affect the interface available to C<XS> code go here.
497Other significant internal changes for future core maintainers should
498be noted as well.
bdab33d1 499
0890f1a5 500[ List each change as a =item entry ]
f5938650 501
0890f1a5 502=over 4
f5938650
FC
503
504=item *
505
0890f1a5 506XXX
f5938650 507
0890f1a5 508=back
25aa614d 509
0890f1a5 510=head1 Selected Bug Fixes
87d00a71 511
0890f1a5
FC
512XXX Important bug fixes in the core language are summarised here.
513Bug fixes in files in F<ext/> and F<lib/> are best summarised in
514L</Modules and Pragmata>.
87d00a71 515
0890f1a5 516[ List each fix as a =item entry ]
87d00a71 517
0890f1a5 518=over 4
87d00a71 519
da507230
FC
520=item *
521
fff96ff7
FC
522Applying the :lvalue attribute to subroutine that is already defined does
523not work properly, as the attribute changes the way the sub is compiled.
524Hence, Perl 5.12 began warning when an attempt is made to apply the
525attribute to an already defined sub. In such cases, the attribute is
526discarded.
527
528But the change in 5.12 missed the case where custom attributes are also
529present: that case still silently and ineffectively applied the attribute.
530That omission has now been corrected. C<sub foo :lvalue :Whatever> (when
531C<foo> is already defined) now warns about the :lvalue attribute, and does
532not apply it.
da507230 533
bb3abb05
FC
534L<attributes.pm|attributes> has likewise been updated to warn and not apply
535the attribute.
536
d25b0d7b
FC
537=item *
538
4bee03f8
FC
539=for comment
540Not necessary for perl5160delta
541
d25b0d7b
FC
542The remaining discrepancies between explicit and implicit return from
543lvalue subroutines have been resolved. They mainly involved which error
544message to display when a read-only value is returned in lvalue context.
545Also, returning a PADTMP (the result of most built-ins, like C<index>) in
546lvalue context is now forbidden for explicit return, as it always has been
547for implicit return. This is not a regression from 5.14, as all the cases
548in which it could happen where previously syntax errors.
549
4bee03f8
FC
550=item *
551
552=for comment
553Not necessary for perl5160delta
554
555Explicitly returning a tied C<my> variable from an lvalue subroutine in
556list lvalue context used to clear the variable before the assignment could
557happen. This is something that was missed when explicit return was made to
558work in 5.15.0.
559
d9463c66
FC
560=item *
561
562=for comment
563Not necessary for perl5160delta
564
565A minor memory leak, introduced in 5.15.0, has been fixed. It would occur
566when a hash is freed that has had its current iterator deleted
567[perl #93454].
568
7c4c6e7c
FC
569=item *
570
571The C<prototype> function now returns a prototype (the empty string) for
572the C<__FILE__>, C<__LINE__> and C<__PACKAGE__> directives, instead of
573dying, as they are indistinguishable syntactically from nullary functions
574like C<time>.
575
777d9014
FC
576=item *
577
578A bug affecting lvalue context propagation through nested lvalue subroutine
579calls has been fixed. Previously, returning a value in nested rvalue
580context would be treated as lvalue context by the inner subroutine call,
581resulting in some values (such as read-only values) being rejected.
582
df5b44bd
FC
583=item *
584
585Some core bugs affecting L<Hash::Util> have been fixed: locking a hash
586element that is a glob copy no longer causes subsequent assignment to it to
587corrupt the glob, and unlocking a hash element that holds a copy-on-write
588scalar no longer causes modifications to that scalar to modify other
589scalars that were sharing the same string buffer.
590
e22e289d
FC
591=item *
592
593The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs,
594such as those created by:
595
596 $hash{elem} = *foo;
597 Hash::Util::lock_value %hash, 'elem';
598
599It used to return true.
600
42a91c97
FC
601=back
602
c71a852f 603=head1 Known Problems
44691e6f 604
0890f1a5
FC
605XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
606tests that had to be C<TODO>ed for the release would be noted here, unless
607they were specific to a particular platform (see below).
bda24d5c 608
0890f1a5
FC
609This is a list of some significant unfixed bugs, which are regressions
610from either 5.XXX.XXX or 5.XXX.XXX.
bda24d5c 611
0890f1a5 612[ List each fix as a =item entry ]
bdb9ba77 613
0890f1a5 614=over 4
014fb485 615
d8e9570c
DG
616=item *
617
0890f1a5 618XXX
d8e9570c 619
bdb9ba77 620=back
014fb485 621
0890f1a5
FC
622=head1 Obituary
623
624XXX If any significant core contributor has died, we've added a short obituary
625here.
44691e6f 626
44691e6f
AB
627=head1 Acknowledgements
628
0890f1a5 629XXX The list of people to thank goes here.
29cf780c 630
44691e6f
AB
631=head1 Reporting Bugs
632
633If you find what you think is a bug, you might check the articles
34dc2ec0 634recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
635bug database at http://rt.perl.org/perlbug/ . There may also be
636information at http://www.perl.org/ , the Perl Home Page.
637
638If you believe you have an unreported bug, please run the L<perlbug>
639program included with your release. Be sure to trim your bug down
640to a tiny but sufficient test case. Your bug report, along with the
641output of C<perl -V>, will be sent off to perlbug@perl.org to be
642analysed by the Perl porting team.
643
644If the bug you are reporting has security implications, which make it
645inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 646it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
647unarchived mailing list, which includes
648all the core committers, who will be able
44691e6f
AB
649to help assess the impact of issues, figure out a resolution, and help
650co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
651platforms on which Perl is supported. Please only use this address for
652security issues in the Perl core, not for modules independently
44691e6f
AB
653distributed on CPAN.
654
655=head1 SEE ALSO
656
657The F<Changes> file for an explanation of how to view exhaustive details
658on what changed.
659
660The F<INSTALL> file for how to build Perl.
661
662The F<README> file for general stuff.
663
664The F<Artistic> and F<Copying> files for copyright information.
665
666=cut