This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document and test the phase-change probe
[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
90a3c601
CBW
148L<CGI> has been upgraded from version 3.54 to version 3.55
149
150[THINGS THAT MAY BREAK YOUR CODE]
151
152C<url()> was fixed to return C<PATH_INFO> when it is explicitly requested
153with either the path=>1 or path_info=>1 flag.
154
155If your code is running under mod_rewrite (or compatible) and you are calling C<self_url()> or
156you are calling C<url()> and passing path_info=>1, These methods will actually be
157returning C<PATH_INFO> now, as you have explicitly requested, or has C<self_url()>
158has requested on your behalf.
159
160The C<PATH_INFO> has been omitted in such URLs since the issue was introduced
161in the 3.12 release in December, 2005.
162
163This bug is so old your application may have come to depend on it or
164workaround it. Check for application before upgrading to this release.
165
166Examples of affected method calls:
167
168 $q->url(-absolute => 1, -query => 1, -path_info => 1 )
169 $q->url(-path=>1)
170 $q->url(-full=>1,-path=>1)
171 $q->url(-rewrite=>1,-path=>1)
172 $q->self_url();
173
174=item *
175
cd272cae 176L<Compress::Raw::Bzip2> has been upgraded from version 2.035 to version 2.037
1d5c9fb0
CBW
177
178=item *
179
98a34606 180L<Compress::Raw::Zlib> has been upgraded from version 2.035 to version 2.037
bc771c2e
CBW
181
182Added offset parameter to CRC32
183
184=item *
185
101c03fa 186L<Compress::Zlib> has been upgraded from version 2.035 to version 2.037
529174d6
CBW
187
188IO::Compress::Zip and IO::Uncompress::Unzip now have support for LZMA (method 14).
101c03fa
CBW
189There is a fix for a CRC issue in IO::Compress::Unzip and it supports Streamed
190Stored context now. And fixed a Zip64 issue in
529174d6
CBW
191IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
192
193=item *
194
17f2f4a8
CBW
195L<CPANPLUS> has been upgraded from version 0.9105 to version 0.9106
196
197=item *
198
4b5789fe
CBW
199L<ExtUtils::MakeMaker> has been upgraded from version 6.57_05 to version 6.58
200
201=item *
202
508236ce
CBW
203L<IPC::Cmd> has been upgraded from version 0.70 to version 0.72
204
205Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
206using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
207
208=item *
209
c69a30ec
CBW
210L<Locale::Codes> has been upgraded from version 3.16 to version 3.17
211
212Added Language Extension codes (langext) and Language Variation codes
213(langvar) as defined in the IANA language registry.
214
215Added language codes from ISO 639-5
216
217Added language/script codes from the IANA language subtag
218registry
219
220Fixed an uninitialized value warning. RT 67438
221
222Fixed the return value for the all_XXX_codes and all_XXX_names functions. RT 69100
223
224Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to
225allow for cleaner future additions. The original four modules (Locale::Language,
226Locale::Currency, Locale::Country, Locale::Script) will continue to work, but
227all new sets of codes will be added in the Locale::Codes namespace.
228
229=item *
230
bb3abb05
FC
231L<attributes> has been upgraded from version 0.14 to 0.15, as part of the
232lvalue attribute warnings fix. See L</Selected Bug Fixes>, below.
2c389f6c 233
7c420290
NC
234=item *
235
236L<Math::BigInt::FastCalc> has been upgraded from version 0.28 to version 0.29.
237
238The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
239performance under ithreads.
240
0cb4637e
CBW
241=item *
242
5aeca1f7
CBW
243L<Pod::Simple> has been upgraded from version 3.16 to version 3.17
244
245=item *
246
0cb4637e
CBW
247L<Unicode::Collate> has been upgraded from version 0.76 to version 0.77
248
249Applied [perl #93470] silencing compiler warnings with -Wwrite-strings
250
00f02a57
CBW
251=item *
252
253L<Win32API::File> has been upgraded from version 0.1101 to version 0.1200
254
255Added SetStdHandle and GetStdHandle functions
256
8b00e523
NC
257=item *
258
259L<threads> has been upgraded from version 1.83 to 1.84
260
261An unused variable was removed from the XS code.
262
e8e35311
FC
263=back
264
0890f1a5 265=head2 Removed Modules and Pragmata
bdb9ba77 266
0890f1a5 267=over 4
bdb9ba77
DG
268
269=item *
270
17d5d82d
FR
271Perl 4-era .pl libraries
272
273Perl used to bundle a handful of library files that predate Perl 5. Most of
274these files, which have been deprecated since version 5.14.0, have now been
275removed. If your code still relies on these libraries, you can install them
276again from C<Perl4::CoreLibs> on CPAN.
bdb9ba77
DG
277
278=back
279
0890f1a5 280=head1 Documentation
f5938650 281
0890f1a5
FC
282XXX Changes to files in F<pod/> go here. Consider grouping entries by
283file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f5938650 284
0890f1a5 285=head2 New Documentation
f5938650 286
0890f1a5 287XXX Changes which create B<new> files in F<pod/> go here.
f5938650 288
2b679393 289=head3 L<perldtrace>
bdb9ba77 290
2b679393
SM
291L<perldtrace> describes Perl's DTrace support, listing the provided probes
292and gives examples of their use.
bdb9ba77 293
0890f1a5
FC
294=head2 Changes to Existing Documentation
295
296XXX Changes which significantly change existing files in F<pod/> go here.
297However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
298section.
f5938650 299
0890f1a5 300=head3 L<XXX>
6693394d 301
0890f1a5 302=over 4
6693394d
FC
303
304=item *
305
0890f1a5 306XXX Description of the change here
6693394d
FC
307
308=back
309
34dc2ec0 310=head1 Diagnostics
b7188eb5 311
34dc2ec0
DM
312The following additions or changes have been made to diagnostic output,
313including warnings and fatal error messages. For the complete list of
314diagnostic messages, see L<perldiag>.
44691e6f 315
0890f1a5
FC
316XXX New or changed warnings emitted by the core's C<C> code go here. Also
317include any changes in L<perldiag> that reconcile it to the C<C> code.
2c389f6c 318
0890f1a5
FC
319[ Within each section, list entries as a =item entry that links to perldiag,
320 e.g.
2c389f6c 321
0890f1a5 322 =item *
b7188eb5 323
0890f1a5
FC
324 L<Invalid version object|perldiag/"Invalid version object">
325]
5076a392 326
0890f1a5 327=head2 New Diagnostics
5076a392 328
0890f1a5 329XXX Newly added diagnostic messages go here
e8e35311 330
0890f1a5 331=head3 New Errors
5076a392 332
34dc2ec0 333=over 4
5076a392 334
e8e35311 335=item *
5076a392 336
0890f1a5 337XXX L<message|perldiag/"message">
a0ed52f4 338
bdb9ba77 339=back
bdab33d1 340
0890f1a5 341=head3 New Warnings
d430b8e7 342
0890f1a5 343=over 4
5076a392 344
bdb9ba77 345=item *
5076a392 346
0890f1a5 347XXX L<message|perldiag/"message">
5076a392 348
bdb9ba77 349=back
e8e35311 350
0890f1a5 351=head2 Changes to Existing Diagnostics
42a91c97 352
0890f1a5 353XXX Changes (i.e. rewording) of diagnostic messages go here
6693394d 354
34dc2ec0 355=over 4
42a91c97 356
6693394d 357=item *
42a91c97 358
0890f1a5 359XXX Describe change here
42a91c97 360
34dc2ec0 361=back
42a91c97 362
0890f1a5 363=head1 Utility Changes
69c6927c 364
0890f1a5
FC
365XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
366here. Most of these are built within the directories F<utils> and F<x2p>.
69c6927c 367
0890f1a5
FC
368[ List utility changes as a =head3 entry for each utility and =item
369entries for each change
370Use L<XXX> with program names to get proper documentation linking. ]
c13a5c80 371
0890f1a5 372=head3 L<XXX>
c13a5c80 373
0890f1a5 374=over 4
bdab33d1 375
571f0e86
NC
376=item *
377
0890f1a5 378XXX
384e62c0
DG
379
380=back
381
0890f1a5 382=head1 Configuration and Compilation
cdc10f43 383
0890f1a5
FC
384XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
385go here. Any other changes to the Perl build process should be listed here.
386However, any platform-specific changes should be listed in the
387L</Platform Support> section, instead.
cdc10f43 388
0890f1a5 389[ List changes as a =item entry ].
bdab33d1 390
34dc2ec0 391=over 4
d430b8e7
FC
392
393=item *
394
0890f1a5 395XXX
bdab33d1
DG
396
397=back
398
0890f1a5 399=head1 Testing
bdab33d1 400
0890f1a5
FC
401XXX Any significant changes to the testing of a freshly built perl should be
402listed here. Changes which create B<new> files in F<t/> go here as do any
403large changes to the testing harness (e.g. when parallel testing was added).
404Changes to existing files in F<t/> aren't worth summarising, although the bugs
405that they represent may be covered elsewhere.
f5938650 406
0890f1a5 407[ List each test improvement as a =item entry ]
f5938650 408
0890f1a5 409=over 4
f5938650
FC
410
411=item *
412
2b679393
SM
413F<t/run/dtrace.t> was added to test Perl's DTrace support. This
414test will only be run if your Perl was built with C<-Dusedtrace>
415and if calling C<dtrace> actually lets you instrument code. This
416generally requires being run as root, so this test file is primarily
417intended for use by the dtrace subcommittee of p5p.
f5938650
FC
418
419=back
2fbb14a0 420
0890f1a5 421=head1 Platform Support
975dff8c 422
0890f1a5 423XXX Any changes to platform support should be listed in the sections below.
975dff8c 424
0890f1a5
FC
425[ Within the sections, list each platform as a =item entry with specific
426changes as paragraphs below it. ]
975dff8c 427
0890f1a5 428=head2 New Platforms
975dff8c 429
0890f1a5
FC
430XXX List any platforms that this version of perl compiles on, that previous
431versions did not. These will either be enabled by new files in the F<hints/>
432directories, or new subdirectories and F<README> files at the top level of the
433source tree.
975dff8c 434
0890f1a5 435=over 4
975dff8c 436
0890f1a5 437=item XXX-some-platform
975dff8c 438
0890f1a5 439XXX
975dff8c
FC
440
441=back
442
0890f1a5 443=head2 Discontinued Platforms
da507230 444
0890f1a5 445XXX List any platforms that this version of perl no longer compiles on.
da507230 446
0890f1a5 447=over 4
fad4a2e4 448
0890f1a5 449=item XXX-some-platform
4dbb339a 450
0890f1a5 451XXX
4dbb339a 452
975dff8c
FC
453=back
454
0890f1a5 455=head2 Platform-Specific Notes
6693394d 456
0890f1a5
FC
457XXX List any changes for specific platforms. This could include configuration
458and compilation changes or changes in portability/compatibility. However,
459changes within modules for platforms should generally be listed in the
460L</Modules and Pragmata> section.
6693394d 461
0890f1a5 462=over 4
6693394d 463
0890f1a5 464=item XXX-some-platform
6693394d 465
0890f1a5 466XXX
6693394d
FC
467
468=back
469
0890f1a5 470=head1 Internal Changes
6693394d 471
0890f1a5
FC
472XXX Changes which affect the interface available to C<XS> code go here.
473Other significant internal changes for future core maintainers should
474be noted as well.
bdab33d1 475
0890f1a5 476[ List each change as a =item entry ]
f5938650 477
0890f1a5 478=over 4
f5938650
FC
479
480=item *
481
0890f1a5 482XXX
f5938650 483
0890f1a5 484=back
25aa614d 485
0890f1a5 486=head1 Selected Bug Fixes
87d00a71 487
0890f1a5
FC
488XXX Important bug fixes in the core language are summarised here.
489Bug fixes in files in F<ext/> and F<lib/> are best summarised in
490L</Modules and Pragmata>.
87d00a71 491
0890f1a5 492[ List each fix as a =item entry ]
87d00a71 493
0890f1a5 494=over 4
87d00a71 495
da507230
FC
496=item *
497
fff96ff7
FC
498Applying the :lvalue attribute to subroutine that is already defined does
499not work properly, as the attribute changes the way the sub is compiled.
500Hence, Perl 5.12 began warning when an attempt is made to apply the
501attribute to an already defined sub. In such cases, the attribute is
502discarded.
503
504But the change in 5.12 missed the case where custom attributes are also
505present: that case still silently and ineffectively applied the attribute.
506That omission has now been corrected. C<sub foo :lvalue :Whatever> (when
507C<foo> is already defined) now warns about the :lvalue attribute, and does
508not apply it.
da507230 509
bb3abb05
FC
510L<attributes.pm|attributes> has likewise been updated to warn and not apply
511the attribute.
512
d25b0d7b
FC
513=item *
514
4bee03f8
FC
515=for comment
516Not necessary for perl5160delta
517
d25b0d7b
FC
518The remaining discrepancies between explicit and implicit return from
519lvalue subroutines have been resolved. They mainly involved which error
520message to display when a read-only value is returned in lvalue context.
521Also, returning a PADTMP (the result of most built-ins, like C<index>) in
522lvalue context is now forbidden for explicit return, as it always has been
523for implicit return. This is not a regression from 5.14, as all the cases
524in which it could happen where previously syntax errors.
525
4bee03f8
FC
526=item *
527
528=for comment
529Not necessary for perl5160delta
530
531Explicitly returning a tied C<my> variable from an lvalue subroutine in
532list lvalue context used to clear the variable before the assignment could
533happen. This is something that was missed when explicit return was made to
534work in 5.15.0.
535
d9463c66
FC
536=item *
537
538=for comment
539Not necessary for perl5160delta
540
541A minor memory leak, introduced in 5.15.0, has been fixed. It would occur
542when a hash is freed that has had its current iterator deleted
543[perl #93454].
544
7c4c6e7c
FC
545=item *
546
547The C<prototype> function now returns a prototype (the empty string) for
548the C<__FILE__>, C<__LINE__> and C<__PACKAGE__> directives, instead of
549dying, as they are indistinguishable syntactically from nullary functions
550like C<time>.
551
777d9014
FC
552=item *
553
554A bug affecting lvalue context propagation through nested lvalue subroutine
555calls has been fixed. Previously, returning a value in nested rvalue
556context would be treated as lvalue context by the inner subroutine call,
557resulting in some values (such as read-only values) being rejected.
558
42a91c97
FC
559=back
560
c71a852f 561=head1 Known Problems
44691e6f 562
0890f1a5
FC
563XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
564tests that had to be C<TODO>ed for the release would be noted here, unless
565they were specific to a particular platform (see below).
bda24d5c 566
0890f1a5
FC
567This is a list of some significant unfixed bugs, which are regressions
568from either 5.XXX.XXX or 5.XXX.XXX.
bda24d5c 569
0890f1a5 570[ List each fix as a =item entry ]
bdb9ba77 571
0890f1a5 572=over 4
014fb485 573
d8e9570c
DG
574=item *
575
0890f1a5 576XXX
d8e9570c 577
bdb9ba77 578=back
014fb485 579
0890f1a5
FC
580=head1 Obituary
581
582XXX If any significant core contributor has died, we've added a short obituary
583here.
44691e6f 584
44691e6f
AB
585=head1 Acknowledgements
586
0890f1a5 587XXX The list of people to thank goes here.
29cf780c 588
44691e6f
AB
589=head1 Reporting Bugs
590
591If you find what you think is a bug, you might check the articles
34dc2ec0 592recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
593bug database at http://rt.perl.org/perlbug/ . There may also be
594information at http://www.perl.org/ , the Perl Home Page.
595
596If you believe you have an unreported bug, please run the L<perlbug>
597program included with your release. Be sure to trim your bug down
598to a tiny but sufficient test case. Your bug report, along with the
599output of C<perl -V>, will be sent off to perlbug@perl.org to be
600analysed by the Perl porting team.
601
602If the bug you are reporting has security implications, which make it
603inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 604it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
605unarchived mailing list, which includes
606all the core committers, who will be able
44691e6f
AB
607to help assess the impact of issues, figure out a resolution, and help
608co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
609platforms on which Perl is supported. Please only use this address for
610security issues in the Perl core, not for modules independently
44691e6f
AB
611distributed on CPAN.
612
613=head1 SEE ALSO
614
615The F<Changes> file for an explanation of how to view exhaustive details
616on what changed.
617
618The F<INSTALL> file for how to build Perl.
619
620The F<README> file for general stuff.
621
622The F<Artistic> and F<Copying> files for copyright information.
623
624=cut