This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for the various typemap and ParseXS related changes
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
249950d7 3=for comment
a7bff800 4This has been completed up to 8dcc3739, except for:
10c62b23 5803e389 rurban CYG17 utf8 paths
ff4ff6f3 6d9298c1 rurban mymalloc isn't thread safe
249950d7 7
44691e6f
AB
8=head1 NAME
9
c1e74734
CBW
10[ this is a template for a new perldelta file. Any text flagged as
11XXX needs to be processed before release. ]
ad32999b 12
c1e74734 13perldelta - what is new for perl v5.15.8
88c5c971 14
c1e74734 15=head1 DESCRIPTION
8f12b018 16
c1e74734
CBW
17This document describes differences between the 5.15.7 release and
18the 5.15.8 release.
8f12b018 19
c1e74734
CBW
20If you are upgrading from an earlier release such as 5.15.6, first read
21L<perl5157delta>, which describes differences between 5.15.6 and
225.15.7.
26afcec5 23
c1e74734 24=head1 Notice
8f12b018 25
c1e74734 26XXX Any important notices here
d7fbd56d 27
c1e74734 28=head1 Core Enhancements
d7fbd56d 29
c1e74734
CBW
30XXX New core language features go here. Summarise user-visible core language
31enhancements. Particularly prominent performance optimisations could go
32here, but most should go in the L</Performance Enhancements> section.
d7fbd56d 33
c1e74734 34[ List each enhancement as a =head2 entry ]
711a3903 35
66cbab2c
KW
36=head2 Improved ability to mix locales and Unicode, including UTF-8 locales
37
38An optional parameter has been added to C<use locale>
39
40 use locale ':not_characters';
41
42which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
43portions of the current locale. Instead, the character set is assumed
44to be Unicode. This allows locales and Unicode to be seamlessly mixed,
45including the increasingly frequent UTF-8 locales. When using this
46hybrid form of locales, the C<:locale> layer to the L<open> pragma can
47be used to interface with the file system, and there are CPAN modules
48available for ARGV and environment variable conversions.
49
50Full details are in L<perllocale>.
51
628253b8
BF
52=head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
53
54Unicode foldcase is an extension to lowercase that gives better results
55when comparing two strings case-insensitively. It has long been used
56internally in regular expression C</i> matching. Now it is available
57explicitly through the new C<fc> function call (enabled by
58S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
249950d7 59C<CORE::fc>) or through the new C<\F> sequence in double-quotish
628253b8
BF
60strings.
61
62Full details are in L<perlfunc/fc>.
63
10c62b23
FC
64=head2 C<_> in subroutine prototypes
65
66The C<_> character in subroutine prototypes is now allowed before C<@> or
67C<%>.
68
c1e74734 69=head1 Security
711a3903 70
c1e74734
CBW
71XXX Any security-related notices go here. In particular, any security
72vulnerabilities closed should be noted here rather than in the
73L</Selected Bug Fixes> section.
711a3903 74
c1e74734 75[ List each security issue as a =head2 entry ]
6ba817f3 76
c1e74734 77=head1 Incompatible Changes
6ba817f3 78
c1e74734 79XXX For a release on a stable branch, this section aspires to be:
6b339779 80
c1e74734
CBW
81 There are no changes intentionally incompatible with 5.XXX.XXX
82 If any exist, they are bugs, and we request that you submit a
83 report. See L</Reporting Bugs> below.
6b339779 84
c1e74734 85[ List each incompatible change as a =head2 entry ]
b240fc0f 86
249950d7
FC
87=head2 Special blocks called in void context
88
89Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
90called in void context. This avoids wasteful copying of the result of the
91last statement [perl #108794].
92
eff8c8ec
FC
93=head2 The C<overloading> pragma and regexp objects
94
95With C<no overloading>, regular expression objects returned by C<qr//> are
96now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
97expression itself [perl #108780].
98
84ecb73f
S
99=head2 Two XS typemap Entries removed
100
101Two presumably unused XS typemap entries have been removed from the
102core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
103a user of these, please see the instructions on how to regain them
104in L<perlxstypemap>.
105
c1e74734 106=head1 Deprecations
b240fc0f 107
c1e74734
CBW
108XXX Any deprecated features, syntax, modules etc. should be listed here.
109In particular, deprecated modules should be listed here even if they are
110listed as an updated module in the L</Modules and Pragmata> section.
4e6ab4ad 111
c1e74734 112[ List each deprecation as a =head2 entry ]
4e6ab4ad 113
c1e74734 114=head1 Performance Enhancements
79e10968 115
c1e74734
CBW
116XXX Changes which enhance performance without changing behaviour go here. There
117may well be none in a stable release.
79e10968 118
c1e74734 119[ List each enhancement as a =item entry ]
ea88c40c 120
c1e74734 121=over 4
9d055b1a
CBW
122
123=item *
124
c1e74734 125XXX
cadced9f 126
c1e74734 127=back
cadced9f 128
c1e74734 129=head1 Modules and Pragmata
cadced9f 130
c1e74734
CBW
131XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
132go here. If Module::CoreList is updated, generate an initial draft of the
133following sections using F<Porting/corelist-perldelta.pl>, which prints stub
134entries to STDOUT. Results can be pasted in place of the '=head2' entries
135below. A paragraph summary for important changes should then be added by hand.
136In an ideal world, dual-life modules would have a F<Changes> file that could be
137cribbed.
cadced9f 138
c1e74734 139[ Within each section, list entries as a =item entry ]
07feb684 140
c1e74734 141=head2 New Modules and Pragmata
cadced9f 142
c1e74734 143=over 4
632c5d30
NC
144
145=item *
146
c1e74734 147XXX
4e6e9b23 148
c1e74734 149=back
4e6e9b23 150
c1e74734 151=head2 Updated Modules and Pragmata
4e6e9b23 152
c1e74734 153=over 4
1887da8c
RS
154
155=item *
156
197aacaf
FC
157L<B> has been upgraded from version 1.33 to version 1.34.
158
159C<B::COP> now has a C<stashflags> method, corresponding to a new internal
160field added in 5.15.4 [perl #108860].
161
162=item *
163
df697508 164L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
76f546a2
CBW
165
166=item *
167
ecea5ab2 168L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
589c1691
CBW
169
170=item *
171
8dcc3739 172L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
422d6414
CBW
173
174=item *
175
b34385a6 176L<DB_File> has been upgraded from version 1.824 to version 1.826.
acb29889
CBW
177
178=item *
179
ce2c4022
NC
180L<diagnostics> has been upgraded from version 1.27 to version 1.28.
181
182When searching for F<perldiag.pod>, it no longer uses paths that were only
183relevant on Perl 5.004 and earlier.
184
185=item *
186
84ecb73f
S
187L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
188
189The new version comes with important tools for sharing typemaps between
190different CPAN distributions.
191
192=item *
193
eb96f3fa
CBW
194L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
195
196=item *
197
04ae1553
Z
198L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
199
200This avoids a new core warning.
201
202=item *
203
1051d5b5 204L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
88c5c971 205
2a7afa74
NC
206=item *
207
858dcda5
Z
208L<Time::HiRes> has been upgraded from version 1.9724 to version 1.9725.
209
694644e0 210C<Time::HiRes::stat()> no longer corrupts the Perl stack.
858dcda5
Z
211
212=item *
213
2a7afa74
NC
214L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
215
216The only change is to fix a formatting error in the Pod.
217
c1e74734 218=back
c0504019 219
c1e74734 220=head2 Removed Modules and Pragmata
937a45d0 221
c1e74734 222=over 4
937a45d0 223
ef337e16
CBW
224=item *
225
c1e74734 226XXX
ef337e16 227
7f28d7ed 228=back
679b54e7 229
52deee2e 230=head1 Documentation
3c7c5233 231
c1e74734
CBW
232XXX Changes to files in F<pod/> go here. Consider grouping entries by
233file and be sure to link to the appropriate page, e.g. L<perlfunc>.
a71d67b1 234
c1e74734 235=head2 New Documentation
cadced9f 236
c1e74734 237XXX Changes which create B<new> files in F<pod/> go here.
cadced9f 238
84ecb73f
S
239=head3 L<perlxstypemap>
240
241The new manual describes the XS typemapping mechanism in unprecedented
242detail and combines new documentation with information extracted from
243L<perlxs> and the previously unofficial list of all core typemaps.
244
c1e74734 245=head3 L<XXX>
cadced9f 246
c1e74734 247XXX Description of the purpose of the new file here
cadced9f 248
c1e74734 249=head2 Changes to Existing Documentation
cadced9f 250
c1e74734
CBW
251XXX Changes which significantly change existing files in F<pod/> go here.
252However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
253section.
cadced9f 254
c1e74734 255=head3 L<XXX>
7e7629fa 256
52deee2e 257=over 4
7e7629fa
FC
258
259=item *
260
c1e74734 261XXX Description of the change here
c2654555 262
52deee2e 263=back
85ca3be7 264
52deee2e 265=head1 Diagnostics
85ca3be7 266
52deee2e
DR
267The following additions or changes have been made to diagnostic output,
268including warnings and fatal error messages. For the complete list of
269diagnostic messages, see L<perldiag>.
7788a270 270
c1e74734
CBW
271XXX New or changed warnings emitted by the core's C<C> code go here. Also
272include any changes in L<perldiag> that reconcile it to the C<C> code.
6138a722 273
c1e74734
CBW
274[ Within each section, list entries as a =item entry that links to perldiag,
275 e.g.
a47fb3fe 276
c1e74734 277 =item *
4888c563 278
c1e74734
CBW
279 L<Invalid version object|perldiag/"Invalid version object">
280]
a3f52e2e 281
c1e74734 282=head2 New Diagnostics
52272450 283
c1e74734 284XXX Newly added diagnostic messages go here
52272450 285
c1e74734 286=head3 New Errors
a47fb3fe 287
0aaeb177 288=over 4
7ef25837 289
6d110ad0
FC
290=item *
291
c1e74734 292XXX L<message|perldiag/"message">
604a99bd 293
c1e74734 294=back
ea88c40c 295
c1e74734 296=head3 New Warnings
ea88c40c 297
c1e74734 298=over 4
ea88c40c
FC
299
300=item *
301
c1e74734 302XXX L<message|perldiag/"message">
ea88c40c 303
6d110ad0
FC
304=back
305
c1e74734
CBW
306=head2 Changes to Existing Diagnostics
307
308XXX Changes (i.e. rewording) of diagnostic messages go here
cadced9f
FC
309
310=over 4
311
312=item *
313
c1e74734 314XXX Describe change here
cadced9f
FC
315
316=back
317
0aaeb177 318=head1 Utility Changes
9cfd094e 319
c1e74734
CBW
320XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
321here. Most of these are built within the directories F<utils> and F<x2p>.
d7fbd56d 322
c1e74734
CBW
323[ List utility changes as a =head3 entry for each utility and =item
324entries for each change
325Use L<XXX> with program names to get proper documentation linking. ]
d7fbd56d 326
c1e74734 327=head3 L<XXX>
d7fbd56d 328
c1e74734 329=over 4
ba91b4f3 330
b18aa002
FC
331=item *
332
c1e74734 333XXX
b18aa002 334
52deee2e 335=back
ba91b4f3 336
52deee2e 337=head1 Configuration and Compilation
f4912a50 338
c1e74734
CBW
339XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
340go here. Any other changes to the Perl build process should be listed here.
341However, any platform-specific changes should be listed in the
342L</Platform Support> section, instead.
a3f52e2e 343
c1e74734 344[ List changes as a =item entry ].
a3f52e2e 345
0aaeb177 346=over 4
ad32999b 347
f4912a50 348=item *
ad32999b 349
c1e74734 350XXX
c15f899f 351
7f28d7ed 352=back
ad32999b 353
c1e74734 354=head1 Testing
39de7394 355
c1e74734
CBW
356XXX Any significant changes to the testing of a freshly built perl should be
357listed here. Changes which create B<new> files in F<t/> go here as do any
358large changes to the testing harness (e.g. when parallel testing was added).
359Changes to existing files in F<t/> aren't worth summarising, although the bugs
360that they represent may be covered elsewhere.
39de7394 361
c1e74734 362[ List each test improvement as a =item entry ]
39de7394 363
c1e74734 364=over 4
5dd80d85 365
52272450
FC
366=item *
367
c1e74734 368XXX
52272450 369
84ecb73f
S
370=item *
371
372The test suite for typemaps has been extended to cover a larger fraction of
373the core typemaps.
374
52deee2e 375=back
5dd80d85 376
c1e74734 377=head1 Platform Support
52272450 378
c1e74734 379XXX Any changes to platform support should be listed in the sections below.
52272450 380
c1e74734
CBW
381[ Within the sections, list each platform as a =item entry with specific
382changes as paragraphs below it. ]
ad266194 383
c1e74734 384=head2 New Platforms
ad266194 385
c1e74734
CBW
386XXX List any platforms that this version of perl compiles on, that previous
387versions did not. These will either be enabled by new files in the F<hints/>
388directories, or new subdirectories and F<README> files at the top level of the
389source tree.
ad266194 390
c1e74734 391=over 4
838cf719 392
c1e74734 393=item XXX-some-platform
838cf719 394
c1e74734 395XXX
b00f6edb 396
c1e74734 397=back
b00f6edb 398
c1e74734 399=head2 Discontinued Platforms
7a3fd9ed 400
c1e74734 401XXX List any platforms that this version of perl no longer compiles on.
7a3fd9ed 402
c1e74734 403=over 4
1a50d74b 404
c1e74734 405=item XXX-some-platform
1a50d74b 406
c1e74734 407XXX
ea88c40c 408
c1e74734 409=back
ea88c40c 410
c1e74734 411=head2 Platform-Specific Notes
ea88c40c 412
c1e74734
CBW
413XXX List any changes for specific platforms. This could include configuration
414and compilation changes or changes in portability/compatibility. However,
415changes within modules for platforms should generally be listed in the
416L</Modules and Pragmata> section.
ea88c40c 417
c1e74734 418=over 4
ea88c40c 419
c1e74734 420=item XXX-some-platform
ea88c40c 421
c1e74734 422XXX
ea88c40c 423
c1e74734 424=back
ea88c40c 425
c1e74734 426=head1 Internal Changes
ea88c40c 427
c1e74734
CBW
428XXX Changes which affect the interface available to C<XS> code go here.
429Other significant internal changes for future core maintainers should
430be noted as well.
ea88c40c 431
c1e74734 432[ List each change as a =item entry ]
ea88c40c 433
c1e74734 434=over 4
ea88c40c
FC
435
436=item *
437
c1e74734 438XXX
ea88c40c 439
c1e74734 440=back
ea88c40c 441
c1e74734 442=head1 Selected Bug Fixes
ea88c40c 443
c1e74734
CBW
444XXX Important bug fixes in the core language are summarised here.
445Bug fixes in files in F<ext/> and F<lib/> are best summarised in
446L</Modules and Pragmata>.
ea88c40c 447
c1e74734 448[ List each fix as a =item entry ]
ea88c40c 449
c1e74734 450=over 4
ea88c40c
FC
451
452=item *
453
6025c6dd
RS
454C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
455by an overloaded object on the left-hand side.
ea88c40c 456
249950d7
FC
457=item *
458
459C<stat _> no longer warns about unopened filehandles [perl #71002].
460
461=item *
462
463C<stat> on an unopened filehandle now warns consistently, instead of
464skipping the warning at times.
465
466=item *
467
468A change in an earlier 5.15 release caused warning hints to propagate into
469C<do $file>. This has been fixed [rt.cpan.org #72767].
470
471=item *
472
473Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
474after assigning C<${ qr// }> to a hash element and locking it with
475L<Hash::Util>. This could result in double frees, crashes or erratic
476behaviour.
477
92c88ef1
FC
478=item *
479
480In 5.15.7, some typeglobs in the CORE namespace were made read-only by
481mistake. This has been fixed [rt.cpan.org #74289].
482
b1ea7742
FC
483=item *
484
485C<-t> now works when stacked with other filetest operators [perl #77388].
486
a1d95121
FC
487=item *
488
489Stacked filetest operators now only call FETCH once on a tied argument.
490
ff4ff6f3
FC
491=item *
492
493C</.*/g> would sometimes refuse to match at the end of a string that ends
494with "\n". This has been fixed [perl #109206].
495
a7bff800
FC
496=item *
497
498Method calls whose arguments were all surrounded with C<my()> or C<our()>
499(as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
500the subroutine. This would prevent lvalue methods from returning certain
501values. Due to lvalue fixes earlier in the 5.15.x series, it would also
502prevent non-lvalue methods from being called [perl #109264].
503
504=for comment
505This bug I<did> affect earlier stable releases. It is just the last
506sentence that does not apply to 5.14.
507
ea88c40c
FC
508=back
509
c1e74734 510=head1 Known Problems
ea88c40c 511
c1e74734
CBW
512XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
513tests that had to be C<TODO>ed for the release would be noted here, unless
514they were specific to a particular platform (see below).
ea88c40c 515
c1e74734
CBW
516This is a list of some significant unfixed bugs, which are regressions
517from either 5.XXX.XXX or 5.XXX.XXX.
ea88c40c 518
c1e74734 519[ List each fix as a =item entry ]
ea88c40c 520
c1e74734 521=over 4
18af289e 522
c1e74734 523=item *
18af289e 524
c1e74734 525XXX
1ac442bc 526
c1e74734 527=back
c0154fe2 528
c1e74734 529=head1 Obituary
1ac442bc 530
c1e74734
CBW
531XXX If any significant core contributor has died, we've added a short obituary
532here.
84b2a83e 533
52deee2e 534=head1 Acknowledgements
8fe05716 535
c1e74734
CBW
536XXX Generate this with:
537
538 perl Porting/acknowledgements.pl v5.15.7..HEAD
29cf780c 539
44691e6f
AB
540=head1 Reporting Bugs
541
542If you find what you think is a bug, you might check the articles
52deee2e
DR
543recently posted to the comp.lang.perl.misc newsgroup and the perl
544bug database at http://rt.perl.org/perlbug/ . There may also be
44691e6f
AB
545information at http://www.perl.org/ , the Perl Home Page.
546
547If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
548program included with your release. Be sure to trim your bug down
549to a tiny but sufficient test case. Your bug report, along with the
550output of C<perl -V>, will be sent off to perlbug@perl.org to be
551analysed by the Perl porting team.
44691e6f
AB
552
553If the bug you are reporting has security implications, which make it
52deee2e
DR
554inappropriate to send to a publicly archived mailing list, then please send
555it to perl5-security-report@perl.org. This points to a closed subscription
556unarchived mailing list, which includes
557all the core committers, who will be able
558to help assess the impact of issues, figure out a resolution, and help
559co-ordinate the release of patches to mitigate or fix the problem across all
560platforms on which Perl is supported. Please only use this address for
561security issues in the Perl core, not for modules independently
562distributed on CPAN.
44691e6f
AB
563
564=head1 SEE ALSO
565
52deee2e
DR
566The F<Changes> file for an explanation of how to view exhaustive details
567on what changed.
44691e6f
AB
568
569The F<INSTALL> file for how to build Perl.
570
571The F<README> file for general stuff.
572
573The F<Artistic> and F<Copying> files for copyright information.
574
575=cut