This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
handy.h: Silence Solaris compiler warning
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
249950d7 3=for comment
c0f37554 4This has been completed up to 0aae26c14, 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
74968535 69=head2 Supports (I<almost>) Unicode 6.1
7620cb10
KW
70
71Besides the addition of whole new scripts, and new characters in
72existing scripts, this new version of Unicode, as always, makes some
73changes to existing characters. One change that may trip up some
74applications is that the General Category of two characters in the
75Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from
76Other_Symbol to Other_Punctuation. The same change has been made for
77a character in each of Tibetan, Ethiopic, and Aegean.
78The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE
79through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General
80Category changed from Other_Symbol to Other_Numeric. The Line Break
81property has changes for Hebrew and Japanese; and as a consequence of
82other changes in 6.1, the Perl regular expression construct C<\X> now
83works differently for some characters in Thai and Lao.
84
85New aliases (synonyms) have been defined for many property values;
86these, along with the previously existing ones, are all cross indexed in
87L<perluniprops>.
88
898b2fa7
KW
89The return value of C<charnames::viacode()> is affected by other
90changes:
91
92 Code point Old Name New Name
93 U+000A LINE FEED (LF) LINE FEED
94 U+000C FORM FEED (FF) FORM FEED
95 U+000D CARRIAGE RETURN (CR) CARRIAGE RETURN
96 U+0085 NEXT LINE (NEL) NEXT LINE
97 U+008E SINGLE-SHIFT 2 SINGLE-SHIFT-2
98 U+008F SINGLE-SHIFT 3 SINGLE-SHIFT-3
99 U+0091 PRIVATE USE 1 PRIVATE USE-1
100 U+0092 PRIVATE USE 2 PRIVATE USE-2
101 U+2118 SCRIPT CAPITAL P WEIERSTRASS ELLIPTIC FUNCTION
102
103Perl will accept any of these names as input, but
104C<charnames::viacode()> now returns the new name of each pair. The
105change for U+2118 is considered by Unicode to be a correction, that is
106the original name was a mistake (but again, it will remain forever valid
107to use it to refer to U+2118). But most of these changes are the
7620cb10
KW
108fallout of the mistake Unicode 6.0 made in naming a character used in
109Japanese cell phones to be "BELL", which conflicts with the long
110standing industry use of (and Unicode's recommendation to use) that name
111to mean the ASCII control character at U+0007. As a result, that name
112has been deprecated in Perl since v5.14; and any use of it will raise a
113warning message (unless turned off). The name "ALERT" is now the
114preferred name for this code point, with "BEL" being an acceptable short
115form. The name for the new cell phone character, at code point U+1F514,
116remains undefined in this version of Perl (hence we don't quite
117implement all of Unicode 6.1), but starting in v5.18, BELL will mean
118this character, and not U+0007.
119
120Unicode has taken steps to make sure that this sort of mistake does not
121happen again. The Standard now includes all the generally accepted
122names and abbreviations for control characters, whereas previously it
898b2fa7
KW
123didn't (though there were recommended names for most of them, which Perl
124used). This means that most of those recommended names are now
125officially in the Standard. Unicode did not recommend names for the
126four code points listed above between U+008E and U+008F, and in
127standardizing them Unicode subtly changed the names that Perl had
128previously given them, by replacing the final blank in each name by a
129hyphen. Unicode also officially accepts names that Perl had deprecated,
130such as FILE SEPARATOR. Now the only deprecated name is BELL.
131Finally, Perl now uses the new official names instead of the old
aafe1054
KW
132(now considered obsolete) names for the first four code points in the
133list above (the ones which have the parentheses in them).
898b2fa7
KW
134
135Now that the names have been placed in the Unicode standard, these kinds
136of changes should not happen again, though corrections, such as to
137U+2118, are still possible.
138
139Unicode also added some name abbreviations, which Perl now accepts:
7620cb10
KW
140SP for SPACE;
141TAB for CHARACTER TABULATION;
142NEW LINE, END OF LINE, NL, and EOL for LINE FEED;
143LOCKING-SHIFT ONE for SHIFT OUT;
144LOCKING-SHIFT ZERO for SHIFT IN;
145and ZWNBSP for ZERO WIDTH NO-BREAK SPACE.
146
147More details on this version of Unicode are provided in
148L<http://www.unicode.org/versions/Unicode6.1.0/>.
149
27f00e3d
KW
150=head2 Added C<is_utf8_char_buf()>
151
152This function is designed to replace the deprecated L</is_utf8_char()>
153function. It includes an extra parameter to make sure it doesn't read
154past the end of the input buffer.
155
c1e74734 156=head1 Security
711a3903 157
c1e74734
CBW
158XXX Any security-related notices go here. In particular, any security
159vulnerabilities closed should be noted here rather than in the
160L</Selected Bug Fixes> section.
711a3903 161
c1e74734 162[ List each security issue as a =head2 entry ]
6ba817f3 163
27f00e3d
KW
164=head2 Use C<is_utf8_char_buf()> and not C<is_utf8_char()>
165
166The latter function is now deprecated because its API is insufficient to
167guarantee that it doesn't read (up to 12 bytes in the worst case) beyond
168the end of its input string. See
169L<is_utf8_char_buf()|/Added is_utf8_char_buf()>.
170
c1e74734 171=head1 Incompatible Changes
6ba817f3 172
c1e74734 173XXX For a release on a stable branch, this section aspires to be:
6b339779 174
c1e74734
CBW
175 There are no changes intentionally incompatible with 5.XXX.XXX
176 If any exist, they are bugs, and we request that you submit a
177 report. See L</Reporting Bugs> below.
6b339779 178
c1e74734 179[ List each incompatible change as a =head2 entry ]
b240fc0f 180
249950d7
FC
181=head2 Special blocks called in void context
182
183Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
184called in void context. This avoids wasteful copying of the result of the
185last statement [perl #108794].
186
eff8c8ec
FC
187=head2 The C<overloading> pragma and regexp objects
188
189With C<no overloading>, regular expression objects returned by C<qr//> are
190now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
191expression itself [perl #108780].
192
84ecb73f
S
193=head2 Two XS typemap Entries removed
194
195Two presumably unused XS typemap entries have been removed from the
196core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
197a user of these, please see the instructions on how to regain them
198in L<perlxstypemap>.
199
7620cb10
KW
200=head2 Unicode 6.1 has incompatibilities with Unicode 6.0
201
202These are detailed in L</Supports (almost) Unicode 6.1> above.
203
290a3bf6
KW
204=head2 Changed returns for some properties in C<Unicode::UCD::prop_invmap()>
205
206The return values for C<prop_invmap> have been changed for some
207properties to make the returned lists significantly smaller. This
208allows those lists to be searched faster.
209
210This function was introduced earlier in the v5.15 series of releases,
211and the API will not be considered stable until v5.16.
212
213See L<Unicode::UCD/prop_invmap()> for details on the new interface.
214
d7c042c9
AB
215=head2 C<$$> and C<getppid()> no longer emulate POSIX semantics under LinuxThreads
216
217The POSIX emulation of C<$$> and C<getppid()> under the obsolete
218LinuxThreads implementation has been removed (the C<$$> emulation was
219actually removed in v5.15.0). This only impacts users of Linux 2.4 and
220users of Debian GNU/kFreeBSD up to and including 6.0, not the vast
221majority of Linux installations that use NPTL threads.
222
223This means that C<getppid()> like C<$$> is now always guaranteed to
224return the OS's idea of the current state of the process, not perl's
225cached version of it.
226
227See the documentation for L<$$|perlvar/$$> for details.
228
985213f2
AB
229=head2 C<< $< >>, C<< $> >>, C<$(> and C<$)> are no longer cached
230
231Similarly to the changes to C<$$> and C<getppid()> the internal
232caching of C<< $< >>, C<< $> >>, C<$(> and C<$)> has been removed.
233
234When we cached these values our idea of what they were would drift out
235of sync with reality if someone (e.g. someone embedding perl) called
236sete?[ug]id() without updating C<PL_e?[ug]id>. Having to deal with
237this complexity wasn't worth it given how cheap the C<gete?[ug]id()>
238system call is.
239
240This change will break a handful of CPAN modules that use the XS-level
241C<PL_uid>, C<PL_gid>, C<PL_euid> or C<PL_egid> variables.
242
243The fix for those breakages is to use C<PerlProc_gete?[ug]id()> to
244retrieve them (e.g. C<PerlProc_getuid()>), and not to assign to
245C<PL_e?[ug]id> if you change the UID/GID/EUID/EGID. There is no longer
246any need to do so since perl will always retrieve the up-to-date
247version of those values from the OS.
248
2e2b2571
KW
249=head2 Which Non-ASCII characters get quoted by C<quotemeta> and C<\Q> has changed
250
251This is unlikely to result in a real problem, as Perl does not attach
252special meaning to any non-ASCII character, so it is currently
253irrelevant which are quoted or not. This change fixes bug [perl #77654] and
254bring Perl's behavior more into line with Unicode's recommendations.
255See L<perlfunc/quotemeta>.
256
c1e74734 257=head1 Deprecations
b240fc0f 258
c1e74734
CBW
259XXX Any deprecated features, syntax, modules etc. should be listed here.
260In particular, deprecated modules should be listed here even if they are
261listed as an updated module in the L</Modules and Pragmata> section.
4e6ab4ad 262
c1e74734 263[ List each deprecation as a =head2 entry ]
4e6ab4ad 264
27f00e3d
KW
265=head2 C<is_utf8_char()>
266
267This function is deprecated because it could read beyond the end of the
268input string. Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()>
269instead.
270
c1e74734 271=head1 Performance Enhancements
79e10968 272
c1e74734
CBW
273XXX Changes which enhance performance without changing behaviour go here. There
274may well be none in a stable release.
79e10968 275
c1e74734 276[ List each enhancement as a =item entry ]
ea88c40c 277
c1e74734 278=over 4
9d055b1a
CBW
279
280=item *
281
c1e74734 282XXX
cadced9f 283
c1e74734 284=back
cadced9f 285
c1e74734 286=head1 Modules and Pragmata
cadced9f 287
c1e74734
CBW
288XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
289go here. If Module::CoreList is updated, generate an initial draft of the
290following sections using F<Porting/corelist-perldelta.pl>, which prints stub
291entries to STDOUT. Results can be pasted in place of the '=head2' entries
292below. A paragraph summary for important changes should then be added by hand.
293In an ideal world, dual-life modules would have a F<Changes> file that could be
294cribbed.
cadced9f 295
c1e74734 296[ Within each section, list entries as a =item entry ]
07feb684 297
c1e74734 298=head2 New Modules and Pragmata
cadced9f 299
c1e74734 300=over 4
632c5d30
NC
301
302=item *
303
2f987927
FC
304The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
305been moved out into the new L<PerlIO::mmap> module.
4e6e9b23 306
c1e74734 307=back
4e6e9b23 308
c1e74734 309=head2 Updated Modules and Pragmata
4e6e9b23 310
c1e74734 311=over 4
1887da8c
RS
312
313=item *
314
eeac62ad
FC
315L<arybase> has been upgraded from version 0.03 to version 0.04.
316
317List slices no longer modify items on the stack belonging to outer lists
318[perl #109570].
319
320=item *
321
197aacaf
FC
322L<B> has been upgraded from version 1.33 to version 1.34.
323
324C<B::COP> now has a C<stashflags> method, corresponding to a new internal
325field added in 5.15.4 [perl #108860].
326
327=item *
328
c0f37554
FC
329L<Carp> has been upgraded from version 1.24 to version 1.25.
330
331It now puts a dot after the file and line number, just like errors from
332C<die> [perl #106538].
333
334=item *
335
fed9e2bd 336L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
76f546a2
CBW
337
338=item *
339
fed9e2bd 340L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
589c1691
CBW
341
342=item *
343
fed9e2bd 344L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
422d6414
CBW
345
346=item *
347
2d1dec40
CBW
348L<CPAN::Meta> has been upgraded from version 2.113640 to version 2.120351.
349
350Work around a memory leak bug involving version objects in boolean context.
351
352=item *
353
ce09a8a1 354L<CPAN::Meta::YAML> has been upgraded from version 0.005 to version 0.007.
b3100a1d
CBW
355
356=item *
357
2364a08e
CBW
358L<CPANPLUS> has been upgraded from version 0.9116 to version 0.9118.
359
360=item *
361
89ddfa67
CBW
362L<CPANPLUS::Dist::Build> has been upgraded from version 0.60 to version 0.62.
363
364=item *
365
53095d08
NC
366L<Data::Dumper> has been upgraded from version 2.135_04 to version 2.135_05.
367
368=item *
369
b34385a6 370L<DB_File> has been upgraded from version 1.824 to version 1.826.
acb29889
CBW
371
372=item *
373
ce2c4022
NC
374L<diagnostics> has been upgraded from version 1.27 to version 1.28.
375
376When searching for F<perldiag.pod>, it no longer uses paths that were only
377relevant on Perl 5.004 and earlier.
378
379=item *
380
84ecb73f
S
381L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
382
383The new version comes with important tools for sharing typemaps between
384different CPAN distributions.
385
386=item *
387
a3cc0403
FC
388L<File::Copy> has been upgraded from version 2.21 to version 2.23.
389
390It no longer emits warnings when copying files with newlines in their names
391[perl #109104].
392
393=item *
394
eb96f3fa
CBW
395L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
396
397=item *
398
04ae1553
Z
399L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
400
401This avoids a new core warning.
402
403=item *
404
4402c0f3 405L<Module::Metadata> has been upgraded from version 1.000007 to version 1.000009.
75ff5956
CBW
406
407Adds C<provides> method to generate a CPAN META provides data structure
408correctly; use of C<package_versions_from_directory> is discouraged.
409
410=item *
411
a4a5e2bf
CBW
412L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402.
413
414=item *
415
843331c7
CBW
416L<perlfaq> has been upgraded from version 5.0150038 to version 5.0150039.
417
418=item *
419
812efae1
NC
420L<Pod::Functions> has been upgraded from version 1.04 to version 1.05.
421
422F<Functions.pm> is now generated at perl build time from annotations in
423F<perlfunc.pod>. This will ensure that L<Pod::Functions> and L<perlfunc>
424remain in synchronisation.
425
426=item *
427
1051d5b5 428L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
88c5c971 429
2a7afa74
NC
430=item *
431
ecd144ea
FC
432L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08.
433
434Its C<tkRunning> method now supports L<AnyEvent> event loops, and not just
435L<Tk>. A more general mechanism has been proposed, so this may be reverted
436before Perl 5.16 [perl #108470].
437
438=item *
439
9dea6244
CBW
440L<Socket> has been upgraded from version 1.97 to version 1.98.
441
442=item *
443
858dcda5
Z
444L<Time::HiRes> has been upgraded from version 1.9724 to version 1.9725.
445
694644e0 446C<Time::HiRes::stat()> no longer corrupts the Perl stack.
858dcda5
Z
447
448=item *
449
2a7afa74
NC
450L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
451
452The only change is to fix a formatting error in the Pod.
453
e9e4ee62
CBW
454=item *
455
456L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
457
c1e74734 458=back
c0504019 459
c1e74734 460=head2 Removed Modules and Pragmata
937a45d0 461
c1e74734 462=over 4
937a45d0 463
ef337e16
CBW
464=item *
465
cf6f994f 466XXX
ef337e16 467
7f28d7ed 468=back
679b54e7 469
52deee2e 470=head1 Documentation
3c7c5233 471
c1e74734
CBW
472XXX Changes to files in F<pod/> go here. Consider grouping entries by
473file and be sure to link to the appropriate page, e.g. L<perlfunc>.
a71d67b1 474
c1e74734 475=head2 New Documentation
cadced9f 476
c1e74734 477XXX Changes which create B<new> files in F<pod/> go here.
cadced9f 478
84ecb73f
S
479=head3 L<perlxstypemap>
480
481The new manual describes the XS typemapping mechanism in unprecedented
482detail and combines new documentation with information extracted from
483L<perlxs> and the previously unofficial list of all core typemaps.
484
c1e74734 485=head3 L<XXX>
cadced9f 486
c1e74734 487XXX Description of the purpose of the new file here
cadced9f 488
c1e74734 489=head2 Changes to Existing Documentation
cadced9f 490
c1e74734
CBW
491XXX Changes which significantly change existing files in F<pod/> go here.
492However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
493section.
cadced9f 494
c1e74734 495=head3 L<XXX>
7e7629fa 496
52deee2e 497=over 4
7e7629fa
FC
498
499=item *
500
c1e74734 501XXX Description of the change here
c2654555 502
52deee2e 503=back
85ca3be7 504
52deee2e 505=head1 Diagnostics
85ca3be7 506
52deee2e
DR
507The following additions or changes have been made to diagnostic output,
508including warnings and fatal error messages. For the complete list of
509diagnostic messages, see L<perldiag>.
7788a270 510
c1e74734
CBW
511XXX New or changed warnings emitted by the core's C<C> code go here. Also
512include any changes in L<perldiag> that reconcile it to the C<C> code.
6138a722 513
c1e74734
CBW
514[ Within each section, list entries as a =item entry that links to perldiag,
515 e.g.
a47fb3fe 516
c1e74734 517 =item *
4888c563 518
c1e74734
CBW
519 L<Invalid version object|perldiag/"Invalid version object">
520]
a3f52e2e 521
c1e74734 522=head2 New Diagnostics
52272450 523
c1e74734 524XXX Newly added diagnostic messages go here
52272450 525
c1e74734 526=head3 New Errors
a47fb3fe 527
0aaeb177 528=over 4
7ef25837 529
6d110ad0
FC
530=item *
531
c1e74734 532XXX L<message|perldiag/"message">
604a99bd 533
c1e74734 534=back
ea88c40c 535
c1e74734 536=head3 New Warnings
ea88c40c 537
c1e74734 538=over 4
ea88c40c
FC
539
540=item *
541
c1e74734 542XXX L<message|perldiag/"message">
ea88c40c 543
6d110ad0
FC
544=back
545
c1e74734
CBW
546=head2 Changes to Existing Diagnostics
547
548XXX Changes (i.e. rewording) of diagnostic messages go here
cadced9f
FC
549
550=over 4
551
552=item *
553
c1e74734 554XXX Describe change here
cadced9f
FC
555
556=back
557
0aaeb177 558=head1 Utility Changes
9cfd094e 559
c1e74734
CBW
560XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
561here. Most of these are built within the directories F<utils> and F<x2p>.
d7fbd56d 562
c1e74734
CBW
563[ List utility changes as a =head3 entry for each utility and =item
564entries for each change
565Use L<XXX> with program names to get proper documentation linking. ]
d7fbd56d 566
c1e74734 567=head3 L<XXX>
d7fbd56d 568
c1e74734 569=over 4
ba91b4f3 570
b18aa002
FC
571=item *
572
c1e74734 573XXX
b18aa002 574
52deee2e 575=back
ba91b4f3 576
52deee2e 577=head1 Configuration and Compilation
f4912a50 578
c1e74734
CBW
579XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
580go here. Any other changes to the Perl build process should be listed here.
581However, any platform-specific changes should be listed in the
582L</Platform Support> section, instead.
a3f52e2e 583
c1e74734 584[ List changes as a =item entry ].
a3f52e2e 585
0aaeb177 586=over 4
ad32999b 587
f4912a50 588=item *
ad32999b 589
c1e74734 590XXX
c15f899f 591
7f28d7ed 592=back
ad32999b 593
c1e74734 594=head1 Testing
39de7394 595
c1e74734
CBW
596XXX Any significant changes to the testing of a freshly built perl should be
597listed here. Changes which create B<new> files in F<t/> go here as do any
598large changes to the testing harness (e.g. when parallel testing was added).
599Changes to existing files in F<t/> aren't worth summarising, although the bugs
600that they represent may be covered elsewhere.
39de7394 601
c1e74734 602[ List each test improvement as a =item entry ]
39de7394 603
c1e74734 604=over 4
5dd80d85 605
52272450
FC
606=item *
607
f0bcc49a
NC
608F<t/porting/pending-author.t> has been added, to avoid the problem of
609C<make test> passing 100%, but the subsequent git commit causing
610F<t/porting/authors.t> to fail, because it uses a "new" e-mail address.
611
612This test is only run if one is building inside a git checkout, B<and> one
613has made local changes. Otherwise it's skipped.
614
615=item *
616
cf6f994f
NC
617F<t/porting/perlfunc.t> has been added, to test that changes to
618F<pod/perlfunc.pod> do not inadvertently break the build of L<Pod::Functions>.
52272450 619
84ecb73f
S
620=item *
621
622The test suite for typemaps has been extended to cover a larger fraction of
623the core typemaps.
624
52deee2e 625=back
5dd80d85 626
c1e74734 627=head1 Platform Support
52272450 628
c1e74734 629XXX Any changes to platform support should be listed in the sections below.
52272450 630
c1e74734
CBW
631[ Within the sections, list each platform as a =item entry with specific
632changes as paragraphs below it. ]
ad266194 633
c1e74734 634=head2 New Platforms
ad266194 635
c1e74734
CBW
636XXX List any platforms that this version of perl compiles on, that previous
637versions did not. These will either be enabled by new files in the F<hints/>
638directories, or new subdirectories and F<README> files at the top level of the
639source tree.
ad266194 640
c1e74734 641=over 4
838cf719 642
c1e74734 643=item XXX-some-platform
838cf719 644
c1e74734 645XXX
b00f6edb 646
c1e74734 647=back
b00f6edb 648
c1e74734 649=head2 Discontinued Platforms
7a3fd9ed 650
c1e74734 651XXX List any platforms that this version of perl no longer compiles on.
7a3fd9ed 652
c1e74734 653=over 4
1a50d74b 654
c1e74734 655=item XXX-some-platform
1a50d74b 656
c1e74734 657XXX
ea88c40c 658
c1e74734 659=back
ea88c40c 660
c1e74734 661=head2 Platform-Specific Notes
ea88c40c 662
c1e74734
CBW
663XXX List any changes for specific platforms. This could include configuration
664and compilation changes or changes in portability/compatibility. However,
665changes within modules for platforms should generally be listed in the
666L</Modules and Pragmata> section.
ea88c40c 667
c1e74734 668=over 4
ea88c40c 669
c1e74734 670=item XXX-some-platform
ea88c40c 671
c1e74734 672XXX
ea88c40c 673
c1e74734 674=back
ea88c40c 675
c1e74734 676=head1 Internal Changes
ea88c40c 677
c1e74734
CBW
678XXX Changes which affect the interface available to C<XS> code go here.
679Other significant internal changes for future core maintainers should
680be noted as well.
ea88c40c 681
c1e74734 682[ List each change as a =item entry ]
ea88c40c 683
c1e74734 684=over 4
ea88c40c
FC
685
686=item *
687
c1e74734 688XXX
ea88c40c 689
c1e74734 690=back
ea88c40c 691
c1e74734 692=head1 Selected Bug Fixes
ea88c40c 693
c1e74734
CBW
694XXX Important bug fixes in the core language are summarised here.
695Bug fixes in files in F<ext/> and F<lib/> are best summarised in
696L</Modules and Pragmata>.
ea88c40c 697
c1e74734 698[ List each fix as a =item entry ]
ea88c40c 699
c1e74734 700=over 4
ea88c40c
FC
701
702=item *
703
6025c6dd
RS
704C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
705by an overloaded object on the left-hand side.
ea88c40c 706
249950d7
FC
707=item *
708
709C<stat _> no longer warns about unopened filehandles [perl #71002].
710
711=item *
712
713C<stat> on an unopened filehandle now warns consistently, instead of
714skipping the warning at times.
715
716=item *
717
718A change in an earlier 5.15 release caused warning hints to propagate into
719C<do $file>. This has been fixed [rt.cpan.org #72767].
720
721=item *
722
723Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
724after assigning C<${ qr// }> to a hash element and locking it with
725L<Hash::Util>. This could result in double frees, crashes or erratic
726behaviour.
727
92c88ef1
FC
728=item *
729
730In 5.15.7, some typeglobs in the CORE namespace were made read-only by
731mistake. This has been fixed [rt.cpan.org #74289].
732
b1ea7742
FC
733=item *
734
735C<-t> now works when stacked with other filetest operators [perl #77388].
736
a1d95121
FC
737=item *
738
739Stacked filetest operators now only call FETCH once on a tied argument.
740
ff4ff6f3
FC
741=item *
742
743C</.*/g> would sometimes refuse to match at the end of a string that ends
744with "\n". This has been fixed [perl #109206].
745
a7bff800
FC
746=item *
747
ea317ccb
KW
748C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not
749under a differing locale). This fixes a regression introduced in 5.14
750in which the first expression could match characters outside of ASCII,
751such as the KELVIN SIGN.
752
753=item *
754
a7bff800
FC
755Method calls whose arguments were all surrounded with C<my()> or C<our()>
756(as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
757the subroutine. This would prevent lvalue methods from returning certain
758values. Due to lvalue fixes earlier in the 5.15.x series, it would also
759prevent non-lvalue methods from being called [perl #109264].
760
761=for comment
762This bug I<did> affect earlier stable releases. It is just the last
763sentence that does not apply to 5.14.
764
0aae26c1
FC
765=item *
766
767The C<SvPVutf8> C function no longer tries to modify its argument,
768resulting in errors [perl #108994].
769
770=item *
771
772C<SvPVutf8> now works properly with magical variables.
773
774=item *
775
776C<SvPVbyte> now works properly non-PVs.
777
07315176
KW
778=item *
779
67addccf
KW
780C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under
781C<use locale> when the platform supports that. Previously, they used
07315176
KW
782the platform's native character set.
783
5d103fec
KW
784=item *
785
786A regression introduced in 5.13.6 was fixed. This involved an inverted
787bracketed character class in a regular expression that consisted solely
788of a Unicode property, that property wasn't getting inverted outside the
789Latin1 range.
790
2e2b2571
KW
791=item *
792
793C<quotemeta> now quotes consistently the same non-ASCII characters under
794C<use feature 'unicode_strings'>, regardless of whether the string is
795encoded in UTF-8 or not, hence fixing the last vestiges (we hope) of the
796infamous L<perlunicode/The "Unicode Bug">. [perl #77654].
797
798Which of these code points is quoted has changed, based on Unicode's
799recommendations. See L<perlfunc/quotemeta> for details.
800
ea88c40c
FC
801=back
802
c1e74734 803=head1 Known Problems
ea88c40c 804
c1e74734
CBW
805XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
806tests that had to be C<TODO>ed for the release would be noted here, unless
807they were specific to a particular platform (see below).
ea88c40c 808
c1e74734
CBW
809This is a list of some significant unfixed bugs, which are regressions
810from either 5.XXX.XXX or 5.XXX.XXX.
ea88c40c 811
c1e74734 812[ List each fix as a =item entry ]
ea88c40c 813
c1e74734 814=over 4
18af289e 815
c1e74734 816=item *
18af289e 817
c1e74734 818XXX
1ac442bc 819
c1e74734 820=back
c0154fe2 821
c1e74734 822=head1 Obituary
1ac442bc 823
c1e74734
CBW
824XXX If any significant core contributor has died, we've added a short obituary
825here.
84b2a83e 826
52deee2e 827=head1 Acknowledgements
8fe05716 828
c1e74734
CBW
829XXX Generate this with:
830
831 perl Porting/acknowledgements.pl v5.15.7..HEAD
29cf780c 832
44691e6f
AB
833=head1 Reporting Bugs
834
835If you find what you think is a bug, you might check the articles
52deee2e
DR
836recently posted to the comp.lang.perl.misc newsgroup and the perl
837bug database at http://rt.perl.org/perlbug/ . There may also be
44691e6f
AB
838information at http://www.perl.org/ , the Perl Home Page.
839
840If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
841program included with your release. Be sure to trim your bug down
842to a tiny but sufficient test case. Your bug report, along with the
843output of C<perl -V>, will be sent off to perlbug@perl.org to be
844analysed by the Perl porting team.
44691e6f
AB
845
846If the bug you are reporting has security implications, which make it
52deee2e
DR
847inappropriate to send to a publicly archived mailing list, then please send
848it to perl5-security-report@perl.org. This points to a closed subscription
849unarchived mailing list, which includes
850all the core committers, who will be able
851to help assess the impact of issues, figure out a resolution, and help
852co-ordinate the release of patches to mitigate or fix the problem across all
853platforms on which Perl is supported. Please only use this address for
854security issues in the Perl core, not for modules independently
855distributed on CPAN.
44691e6f
AB
856
857=head1 SEE ALSO
858
52deee2e
DR
859The F<Changes> file for an explanation of how to view exhaustive details
860on what changed.
44691e6f
AB
861
862The F<INSTALL> file for how to build Perl.
863
864The F<README> file for general stuff.
865
866The F<Artistic> and F<Copying> files for copyright information.
867
868=cut