This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Two AUTHORS fixes
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
5438d4b8
Z
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
f5938650 7
5438d4b8 8perldelta - what is new for perl v5.15.2
760696b8 9
5438d4b8 10=head1 DESCRIPTION
5cd408a2 11
5438d4b8
Z
12This document describes differences between the 5.15.1 release and
13the 5.15.2 release.
5cd408a2 14
5438d4b8
Z
15If you are upgrading from an earlier release such as 5.15.0, first read
16L<perl5151delta>, which describes differences between 5.15.0 and
175.15.1.
062678b2 18
5438d4b8 19=head1 Notice
062678b2 20
5438d4b8 21XXX Any important notices here
4185c919 22
5438d4b8 23=head1 Core Enhancements
4185c919 24
5438d4b8
Z
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.
82aed44a 28
5438d4b8 29[ List each enhancement as a =head2 entry ]
82aed44a 30
0afed34d
FC
31=head2 Subroutines in the CORE namespace
32
33Many Perl keywords are now available as subroutines in the CORE namespace.
34These cannot be called through references or via C<&foo> syntax yet, but
35must be called as barewords. In other words, you can now do this:
36
37 BEGIN { *entangle = \&CORE::tie }
38 entangle $variable, $package, @args;
39
0bbad748
FC
40This currently works for overridable keywords other than C<dump> and the
41infix operators.
0afed34d
FC
42
43Work is under way to allow these subroutines to be called through
44references.
45
135c0b08
FC
46=head2 C<__FILE__()> Syntax
47
48The C<__FILE__>, C<__LINE__> and C<__PACKAGE__> tokens can now be written
49with an empty pair of parentheses after them. This makes them parse the
50same way as C<time>, C<fork> and other built-in functions.
51
5438d4b8 52=head1 Security
2b679393 53
5438d4b8
Z
54XXX Any security-related notices go here. In particular, any security
55vulnerabilities closed should be noted here rather than in the
56L</Selected Bug Fixes> section.
2b679393 57
5438d4b8 58[ List each security issue as a =head2 entry ]
7818c927 59
5438d4b8 60=head1 Incompatible Changes
7818c927 61
5438d4b8 62XXX For a release on a stable branch, this section aspires to be:
760696b8 63
5438d4b8
Z
64 There are no changes intentionally incompatible with 5.XXX.XXX
65 If any exist, they are bugs and reports are welcome.
6693394d 66
5438d4b8 67[ List each incompatible change as a =head2 entry ]
6693394d 68
7b2b001e
FC
69=head2 C<UNIVERSAL::VERSION> now returns $VERSION
70
71C<UNIVERSAL::VERSION> now return whatever is in $VERSION, instead of
72returning $VERSION converted to a version object and then to a string.
73As a result, it no longer parses the version when called without arguments,
74so it no longer dies in that case for malformed versions. This allows
75custom version number parsers to use C<< ->VERSION >> to retrieve the
76version number, as was the case in Perl 5.8 [perl #95544].
77
5438d4b8 78=head1 Deprecations
92c695db 79
5438d4b8
Z
80XXX Any deprecated features, syntax, modules etc. should be listed here.
81In particular, deprecated modules should be listed here even if they are
82listed as an updated module in the L</Modules and Pragmata> section.
92c695db 83
5438d4b8 84[ List each deprecation as a =head2 entry ]
6693394d 85
5438d4b8 86=head1 Performance Enhancements
bfafcb9a 87
5438d4b8
Z
88XXX Changes which enhance performance without changing behaviour go here. There
89may well be none in a stable release.
bfafcb9a 90
5438d4b8 91[ List each enhancement as a =item entry ]
72de20cd 92
5438d4b8 93=over 4
72de20cd 94
93905212
FC
95=item *
96
5438d4b8 97XXX
93905212 98
6693394d
FC
99=back
100
0890f1a5 101=head1 Modules and Pragmata
bdb9ba77 102
5438d4b8
Z
103XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
104go here. If Module::CoreList is updated, generate an initial draft of the
105following sections using F<Porting/corelist-perldelta.pl>, which prints stub
106entries to STDOUT. Results can be pasted in place of the '=head2' entries
107below. A paragraph summary for important changes should then be added by hand.
108In an ideal world, dual-life modules would have a F<Changes> file that could be
109cribbed.
110
111[ Within each section, list entries as a =item entry ]
112
0890f1a5 113=head2 New Modules and Pragmata
6693394d 114
0890f1a5 115=over 4
6693394d
FC
116
117=item *
118
5438d4b8 119XXX
6693394d
FC
120
121=back
122
0890f1a5 123=head2 Updated Modules and Pragmata
760696b8 124
0890f1a5 125=over 4
760696b8
FC
126
127=item *
128
115ff745
NC
129L<B> has been upgraded from version 1.30 to version 1.31
130
131The XS code has changed slightly, as it was too tightly coupled to
987f2729
RU
132the contents of the header F<embedvar.h>. Documentation in L<B::Terse>
133and L<B::Xref> has been improved, hence their versions have been increased.
115ff745
NC
134
135=item *
136
4ea805df
CBW
137L<CPAN> has been upgraded from version 1.9600 to version 1.9800
138
139=item *
140
1ba7a2fb
CBW
141L<CPANPLUS> has been upgraded from version 0.9108 to version 0.9109
142
143Fixed support for v-strings and x.y.z versions with v5.8.4
144
145=item *
146
730e5b5b
CBW
147L<CPAN::Meta> has been upgraded from version 2.110930_001 to version 2.112150
148
149Stringify any objects encountered during conversion.
150
151Clarified that file paths in the 'provides' section must be in
152Unix-style (i.e. forward slashes)
153
154=item *
155
37adef70 156L<DB_File> has been upgraded from version 1.822 to version 1.824
a30cae0b
CBW
157
158Will now croak if attempt to freeze/thaw DB_File object [RT #69985]
159
160=item *
161
e46d9735
CBW
162L<Encode> has been upgraded from version 2.43 to version 2.44
163
164Addressed 'decode_xs n-byte heap-overflow' security bug in Unicode.xs
165
166=item *
167
57126352
DG
168L<ExtUtils::Install> has been upgraded from version 1.56 to version 1.57.
169
170There is no change to ExtUtils::Install other than the version number
171increase, but L<ExtUtils::Installed> has been upgraded from version 1.999_001
c493c0a1 172to version 1.999002 and a new C<skip_cwd> attribute has been added.
259925f6 173
6252d2e2
NC
174=item *
175
9840cdee
CBW
176L<ExtUtils::MakeMaker> has been upgraded from version 6.58 to version 6.59
177
178=item *
179
7b2b001e
FC
180L<IPC::Open3> has been upgraded from version 1.11 to 1.12.
181
182C<open3> with "-" for the program name works once more. This was broken in
183version 1.06 (and hence in Perl 5.14.0) [perl #95748].
184
185=item *
186
2df9265e
DG
187L<Module::Build> has been upgraded from version 0.3800 to version 0.39_01.
188
189Pod to HTML internals changed to support revisions to Pod::Html in core.
190Also fixes some minor bugs. [rt.cpan.org #68585] [rt.cpan.org #67893]
191[rt.cpan.org #67008]
192
193=item *
194
83b32788
CBW
195L<Module::Load> has been upgraded from version 0.18 to version 0.20
196
197=item *
198
4eb81ef2
CBW
199L<Module::Metadata> has been upgraded from version 1.000004 to version 1.000005
200
201Added C<new_from_handle()> method.
202
203=item *
204
cc48f4fe 205L<Params::Check> has been upgraded from version 0.28 to version 0.32
82eefd8a
CBW
206
207=item *
208
5213914c 209L<PerlIO::via> has been upgraded from version 0.11 to version 0.12.
6252d2e2
NC
210
211The only change is a correction in the documentation.
212
5213914c
CBW
213=item *
214
215L<Term::ANSIColor> has been upgraded from version 3.00 to version 3.01
216
217Only interpret an initial array reference as a list of colors, not any initial
218reference, allowing the colored function to work properly on objects with
219stringification defined.
220
17609435
CBW
221=item *
222
223L<Unicode::Collate> has been upgraded from version 0.77 to version 0.78
224
69f26f52
CBW
225=item *
226
227L<Unicode::Normalize> has been upgraded from version 1.12 to version 1.13
228
5438d4b8 229=back
77ccfaeb 230
5438d4b8 231=head2 Removed Modules and Pragmata
508236ce 232
5438d4b8 233=over 4
508236ce
CBW
234
235=item *
236
5438d4b8 237XXX
c69a30ec 238
5438d4b8 239=back
c69a30ec 240
5438d4b8 241=head1 Documentation
c69a30ec 242
5438d4b8
Z
243XXX Changes to files in F<pod/> go here. Consider grouping entries by
244file and be sure to link to the appropriate page, e.g. L<perlfunc>.
7c420290 245
5438d4b8 246=head2 New Documentation
7c420290 247
5438d4b8 248XXX Changes which create B<new> files in F<pod/> go here.
0cb4637e 249
5438d4b8 250=head3 L<XXX>
7818c927 251
5438d4b8 252XXX Description of the purpose of the new file here
7818c927 253
5438d4b8 254=head2 Changes to Existing Documentation
dd413713 255
5438d4b8
Z
256XXX Changes which significantly change existing files in F<pod/> go here.
257However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
258section.
7818c927 259
5438d4b8 260=head3 L<XXX>
7818c927 261
5438d4b8 262=over 4
7818c927
FC
263
264=item *
265
5438d4b8 266XXX Description of the change here
5aeca1f7 267
5438d4b8 268=back
5aeca1f7 269
5438d4b8 270=head1 Diagnostics
0cb4637e 271
5438d4b8
Z
272The following additions or changes have been made to diagnostic output,
273including warnings and fatal error messages. For the complete list of
274diagnostic messages, see L<perldiag>.
0cb4637e 275
5438d4b8
Z
276XXX New or changed warnings emitted by the core's C<C> code go here. Also
277include any changes in L<perldiag> that reconcile it to the C<C> code.
00f02a57 278
5438d4b8
Z
279[ Within each section, list entries as a =item entry that links to perldiag,
280 e.g.
00f02a57 281
5438d4b8 282 =item *
00f02a57 283
5438d4b8
Z
284 L<Invalid version object|perldiag/"Invalid version object">
285]
8b00e523 286
5438d4b8 287=head2 New Diagnostics
4abaf918 288
5438d4b8 289XXX Newly added diagnostic messages go here
4abaf918 290
5438d4b8 291=head3 New Errors
4abaf918 292
5438d4b8 293=over 4
4abaf918
Z
294
295=item *
296
0afed34d
FC
297L<&CORE::%s cannot be called directly|perldiag/"&CORE::%s cannot be called directly">
298
299(F) You tried to call a subroutine in the C<CORE::> namespace
300with C<&foo> syntax or through a reference. The subroutines
301in this package cannot yet be called that way, but must be
302called as barewords. Something like this will work:
303
304 BEGIN { *shove = \&CORE::push; }
305 shove @array, 1,2,3; # pushes on to @array
8b00e523 306
e8e35311
FC
307=back
308
5438d4b8 309=head3 New Warnings
bdb9ba77 310
0890f1a5 311=over 4
bdb9ba77
DG
312
313=item *
314
5438d4b8 315XXX L<message|perldiag/"message">
bdb9ba77
DG
316
317=back
318
5438d4b8 319=head2 Changes to Existing Diagnostics
7818c927 320
5438d4b8 321XXX Changes (i.e. rewording) of diagnostic messages go here
0890f1a5 322
0890f1a5 323=over 4
6693394d
FC
324
325=item *
326
5438d4b8 327XXX Describe change here
259925f6 328
5438d4b8 329=back
7818c927 330
5438d4b8 331=head1 Utility Changes
7818c927 332
5438d4b8
Z
333XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
334here. Most of these are built within the directories F<utils> and F<x2p>.
7818c927 335
5438d4b8
Z
336[ List utility changes as a =head3 entry for each utility and =item
337entries for each change
338Use L<XXX> with program names to get proper documentation linking. ]
7818c927 339
71449ad0 340=head3 L<perlivp>
b908e258 341
5438d4b8 342=over 4
b908e258
Z
343
344=item *
345
71449ad0
DG
346Fixed a bug whereby other perls under the current directory could cause
347false positive failures.
348
349=item *
350
351Tests for .ph files have been removed, as these test have been optional since
3522005 and .ph files are no longer generated during installation.
b908e258 353
6693394d
FC
354=back
355
5438d4b8 356=head1 Configuration and Compilation
b7188eb5 357
5438d4b8
Z
358XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
359go here. Any other changes to the Perl build process should be listed here.
360However, any platform-specific changes should be listed in the
361L</Platform Support> section, instead.
44691e6f 362
5438d4b8 363[ List changes as a =item entry ].
42a91c97 364
34dc2ec0 365=over 4
42a91c97 366
6693394d 367=item *
42a91c97 368
60a5fae4
NC
369F<makedef.pl> has been refactored. This should have no noticeable affect on
370any of the platforms that use it as part of their build (AIX, VMS, Win32).
42a91c97 371
34dc2ec0 372=back
42a91c97 373
0890f1a5 374=head1 Testing
bdab33d1 375
5438d4b8
Z
376XXX Any significant changes to the testing of a freshly built perl should be
377listed here. Changes which create B<new> files in F<t/> go here as do any
378large changes to the testing harness (e.g. when parallel testing was added).
379Changes to existing files in F<t/> aren't worth summarising, although the bugs
380that they represent may be covered elsewhere.
f5938650 381
5438d4b8 382[ List each test improvement as a =item entry ]
1fcb0052 383
5438d4b8 384=over 4
1fcb0052 385
b908e258
Z
386=item *
387
5438d4b8 388XXX
b908e258 389
f5938650 390=back
2fbb14a0 391
0890f1a5 392=head1 Platform Support
975dff8c 393
5438d4b8 394XXX Any changes to platform support should be listed in the sections below.
6693394d 395
5438d4b8
Z
396[ Within the sections, list each platform as a =item entry with specific
397changes as paragraphs below it. ]
6693394d 398
9cfd094e
MB
399=over 4
400
401=item HP-UX PA-RISC/64 now supports gcc-4.x
402
403A fix to correct the socketsize now makes the test suite pass on HP-UX
404PA-RISC for 64bitall builds.
405
406=back
407
5438d4b8 408=head2 New Platforms
1fcb0052 409
5438d4b8
Z
410XXX List any platforms that this version of perl compiles on, that previous
411versions did not. These will either be enabled by new files in the F<hints/>
412directories, or new subdirectories and F<README> files at the top level of the
413source tree.
6693394d 414
0890f1a5 415=over 4
f5938650 416
5438d4b8 417=item XXX-some-platform
c62f68e3 418
5438d4b8 419XXX
f5938650 420
0890f1a5 421=back
25aa614d 422
5438d4b8 423=head2 Discontinued Platforms
87d00a71 424
5438d4b8 425XXX List any platforms that this version of perl no longer compiles on.
87d00a71 426
5438d4b8 427=over 4
da507230 428
5438d4b8 429=item XXX-some-platform
fff96ff7 430
5438d4b8 431XXX
da507230 432
5438d4b8 433=back
bb3abb05 434
5438d4b8 435=head2 Platform-Specific Notes
d25b0d7b 436
5438d4b8
Z
437XXX List any changes for specific platforms. This could include configuration
438and compilation changes or changes in portability/compatibility. However,
439changes within modules for platforms should generally be listed in the
440L</Modules and Pragmata> section.
d25b0d7b 441
5438d4b8 442=over 4
4bee03f8 443
5438d4b8 444=item XXX-some-platform
4bee03f8 445
5438d4b8 446XXX
d9463c66 447
5438d4b8 448=back
d9463c66 449
5438d4b8 450=head1 Internal Changes
7c4c6e7c 451
5438d4b8
Z
452XXX Changes which affect the interface available to C<XS> code go here.
453Other significant internal changes for future core maintainers should
454be noted as well.
7c4c6e7c 455
5438d4b8 456[ List each change as a =item entry ]
777d9014 457
5438d4b8 458=over 4
95f7e41f
FC
459
460=item *
461
115ff745
NC
462F<embedvar.h> has been simplified, and one level of macro indirection for
463PL_* variables has been removed for the default (non-multiplicity)
464configuration. PERLVAR*() macros now directly expand their arguments to
465tokens such as C<PL_defgv>, instead of expanding to C<PL_Idefgv>, with
466F<embedvar.h> defining a macro to map C<PL_Idefgv> to C<PL_defgv>. XS code
467which has unwarranted chumminess with the implementation may need updating.
df5b44bd 468
5438d4b8 469=back
df5b44bd 470
5438d4b8 471=head1 Selected Bug Fixes
e22e289d 472
5438d4b8
Z
473XXX Important bug fixes in the core language are summarised here.
474Bug fixes in files in F<ext/> and F<lib/> are best summarised in
475L</Modules and Pragmata>.
7818c927 476
5438d4b8 477[ List each fix as a =item entry ]
7818c927 478
5438d4b8 479=over 4
7818c927
FC
480
481=item *
482
f79aa60b
FC
483Locking a subroutine (via C<lock &sub>) is no longer a compile-time error
484for regular subs. For lvalue subroutines, it no longer tries to return the
485sub as a scalar, resulting in strange side effects like C<ref \$_>
486returning "CODE" in some instances.
487
488C<lock &sub> is now a run-time error if L<threads::shared> is loaded (a
489no-op otherwise), but that may be rectified in a future version.
7818c927 490
3fdd840f
FC
491=item *
492
a67abb3a
FC
493The prototypes of several built-in functions--C<getprotobynumber>, C<lock>,
494C<not> and C<select>--have been corrected, or at least are now closer to
495reality than before.
3fdd840f 496
7ffa7e75
FC
497=item *
498
499Most dereferencing operators (C<${}>, etc.) used to call C<FETCH> twice on
500a tied operand when doing a symbolic dereference (looking up a variable by
501name, which is not permitted under C<use strict 'refs'>). Only C<&{}> did
502not have this problem. This has been fixed.
503
862b2c43
FC
504=item *
505
506A minor regression introduced in 5.15.0 has been fixed. Dereferencing a
507magical mortal (e.g., the return value of C<delete> on a tied hash element)
508explicitly returned from a subroutine called recursively was not calling
509C<FETCH>. This would affect code like C<@{ foo() }> where the C<foo> sub
510contains C<return delete $hash{elem}> and is calling itself.
511
c973bd4f
KW
512=item *
513
514A panic involving the combination of the regular expression modifiers
515C</aa> and the C<\b> escape sequence introduced in 5.14.0 has been
516fixed [perl #95964].
517
a6cefd81
TC
518=item *
519
520stat() would always return the inode number as an IV, even when the
521original was unsigned, or too large to fit in an IV. stat() now
522returns the inode number as the type that would best preserve the
523original value. [perl #84590]
524
c4499eff
KW
525=item *
526
527The combination of the regular expression modifiers C</aa> and the C<\b>
528and C<\B> escape sequences did not work properly on UTF-8 encoded
529strings. All non-ASCII characters under C</aa> should be treated as
530non-word characters, but what was happening was that Unicode rules were
531used to determine wordness/non-wordness for non-ASCII characters. This
532is now fixed [perl #95968].
533
5438d4b8 534=back
c62f68e3 535
5438d4b8 536=head1 Known Problems
c62f68e3 537
5438d4b8
Z
538XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
539tests that had to be C<TODO>ed for the release would be noted here, unless
540they were specific to a particular platform (see below).
c62f68e3 541
5438d4b8
Z
542This is a list of some significant unfixed bugs, which are regressions
543from either 5.XXX.XXX or 5.XXX.XXX.
e22e289d 544
5438d4b8 545[ List each fix as a =item entry ]
e22e289d 546
5438d4b8 547=over 4
e22e289d 548
b908e258
Z
549=item *
550
5438d4b8 551XXX
4ec40670 552
5438d4b8 553=back
4ec40670 554
5438d4b8 555=head1 Obituary
b908e258 556
5438d4b8
Z
557XXX If any significant core contributor has died, we've added a short obituary
558here.
42a91c97 559
44691e6f
AB
560=head1 Acknowledgements
561
f1c1ecab 562XXX Generate this with:
5438d4b8
Z
563
564 perl Porting/acknowledgements.pl v5.15.1..HEAD
29cf780c 565
44691e6f
AB
566=head1 Reporting Bugs
567
568If you find what you think is a bug, you might check the articles
34dc2ec0 569recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
570bug database at http://rt.perl.org/perlbug/ . There may also be
571information at http://www.perl.org/ , the Perl Home Page.
572
573If you believe you have an unreported bug, please run the L<perlbug>
574program included with your release. Be sure to trim your bug down
575to a tiny but sufficient test case. Your bug report, along with the
576output of C<perl -V>, will be sent off to perlbug@perl.org to be
577analysed by the Perl porting team.
578
579If the bug you are reporting has security implications, which make it
580inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 581it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
582unarchived mailing list, which includes
583all the core committers, who will be able
44691e6f
AB
584to help assess the impact of issues, figure out a resolution, and help
585co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
586platforms on which Perl is supported. Please only use this address for
587security issues in the Perl core, not for modules independently
44691e6f
AB
588distributed on CPAN.
589
590=head1 SEE ALSO
591
592The F<Changes> file for an explanation of how to view exhaustive details
593on what changed.
594
595The F<INSTALL> file for how to build Perl.
596
597The F<README> file for general stuff.
598
599The F<Artistic> and F<Copying> files for copyright information.
600
601=cut