This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove references to compat3.sym and interp.sym, deleted over 10 years ago.
[perl5.git] / pod / perldelta.pod
CommitLineData
3a5c9134
CBW
1=encoding utf8
2
3=head1 NAME
4
9f7a72d0
Z
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
3a5c9134 7
9f7a72d0 8perldelta - what is new for perl v5.13.9
15e6cdd9 9
9f7a72d0 10=head1 DESCRIPTION
f6166f76 11
9f7a72d0
Z
12This document describes differences between the 5.13.8 release and
13the 5.13.9 release.
0d157ee2 14
9f7a72d0
Z
15If you are upgrading from an earlier release such as 5.13.7, first read
16L<perl5138delta>, which describes differences between 5.13.7 and
175.13.8.
0d157ee2 18
9f7a72d0 19=head1 Notice
0d157ee2 20
9f7a72d0 21XXX Any important notices here
0d157ee2 22
9f7a72d0 23=head1 Core Enhancements
0d157ee2 24
9f7a72d0
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.
0d157ee2 28
086325d8
KW
29[ List each enhancement as a =head2 entry ]
30
cfaf538b
KW
31=head2 New regular expression modifier C</a>
32
33The C</a> regular expression modifier restricts C<\s> to match precisely
34the five characters C<[ \f\n\r\t]>, C<\d> to match precisely the 10
35characters C<[0-9]>, C<\w> to match precisely the 63 characters
36C<[A-Za-z0-9_]>, and the Posix (C<[[:posix:]]>) character classes to
37match only the appropriate ASCII characters. The complements, of
38course, match everything but; and C<\b> and C<\B> are correspondingly
39affected. Otherwise, C</a> behaves like the C</u> modifier, in that
40case-insensitive matching uses Unicode semantics; for example, "k" will
41match the Unicode C<\N{KELVIN SIGN}> under C</i> matching, and code
42points in the Latin1 range, above ASCII will have Unicode semantics when
43it comes to case-insensitive matching. Like its cousins (C</u>, C</l>,
44and C</d>), and in spite of the terminology, C</a> in 5.14 will not
45actually be able to be used as a suffix at the end of a regular
46expression (this restriction is planned to be lifted in 5.16). It must
47occur either as an infix modifier, such as C<(?a:...)> or (C<(?a)...>,
48or it can be turned on within the lexical scope of C<use re '/a'>.
49Turning on C</a> turns off the other "character set" modifiers.
50
086325d8
KW
51=head2 Any unsigned value can be encoded as a character
52
6d4f9cf2 53With this release, Perl is adopting a model that any unsigned value can
086325d8
KW
54be treated as a code point and encoded internally (as utf8) without
55warnings -- not just the code points that are legal in Unicode.
56However, unless utf8 warnings have been
6d4f9cf2
KW
57explicitly lexically turned off, outputting or performing a
58Unicode-defined operation (such as upper-casing) on such a code point
59will generate a warning. Attempting to input these using strict rules
60(such as with the C<:encoding('UTF-8')> layer) will continue to fail.
61Prior to this release the handling was very inconsistent, and incorrect
62in places. Also, the Unicode non-characters, some of which previously were
63erroneously considered illegal in places by Perl, contrary to the Unicode
64standard, are now always legal internally. But inputting or outputting
65them will work the same as for the non-legal Unicode code points, as the
66Unicode standard says they are illegal for "open interchange".
67
0d157ee2 68
9f7a72d0 69=head1 Security
0d157ee2 70
9f7a72d0
Z
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.
bd8e866d 74
9f7a72d0 75[ List each security issue as a =head2 entry ]
bd8e866d 76
3a5c9134
CBW
77=head1 Incompatible Changes
78
9f7a72d0 79XXX For a release on a stable branch, this section aspires to be:
3a5c9134 80
9f7a72d0
Z
81 There are no changes intentionally incompatible with 5.XXX.XXX. If any
82 exist, they are bugs and reports are welcome.
3a5c9134 83
9f7a72d0 84[ List each incompatible change as a =head2 entry ]
d66e82e8 85
3a5c9134
CBW
86=head1 Deprecations
87
9f7a72d0
Z
88XXX Any deprecated features, syntax, modules etc. should be listed here.
89In particular, deprecated modules should be listed here even if they are
90listed as an updated module in the L</Modules and Pragmata> section.
5609d5f9 91
9f7a72d0 92[ List each deprecation as a =head2 entry ]
5609d5f9 93
9f7a72d0 94=head1 Performance Enhancements
5609d5f9 95
9f7a72d0
Z
96XXX Changes which enhance performance without changing behaviour go here. There
97may well be none in a stable release.
5609d5f9 98
9f7a72d0 99[ List each enhancement as a =item entry ]
3a5c9134
CBW
100
101=over 4
102
103=item *
104
9f7a72d0 105XXX
e1165778 106
9f7a72d0 107=back
121e1895 108
9f7a72d0 109=head1 Modules and Pragmata
2638c0ff 110
9f7a72d0
Z
111XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
112go here. If Module::CoreList is updated, generate an initial draft of the
113following sections using F<Porting/corelist-perldelta.pl>, which prints stub
114entries to STDOUT. Results can be pasted in place of the '=head2' entries
115below. A paragraph summary for important changes should then be added by hand.
116In an ideal world, dual-life modules would have a F<Changes> file that could be
117cribbed.
2638c0ff 118
9f7a72d0 119[ Within each section, list entries as a =item entry ]
17096837 120
9f7a72d0 121=head2 New Modules and Pragmata
2638c0ff 122
9f7a72d0 123=over 4
17096837 124
e1165778
Z
125=item *
126
e8a07a12
DG
127L<CPAN::Meta::YAML> 0.002 has been added as a dual-life module. It supports a
128subset of YAML sufficient for reading and writing META.yml and MYMETA.yml files
129included with CPAN distributions or generated by the module installation
130toolchain. It should not be used for any other general YAML parsing or
131generation task.
17096837 132
935c8d19
DG
133=item *
134
435aa301 135L<HTTP::Tiny> 0.009 has been added as a dual-life module. It is a very
a3ab329f
DG
136small, simple HTTP/1.1 client designed for simple GET requests and file
137mirroring. It has has been added to enable CPAN.pm and CPANPLUS to
138"bootstrap" HTTP access to CPAN using pure Perl without relying on external
139binaries like F<curl> or F<wget>.
140
141=item *
142
6cf6332a 143L<Module::Metadata> 1.000003 has been added as a dual-life module. It gathers
e8b333e6
DG
144package and POD information from Perl module files. It is a standalone module
145based on Module::Build::ModuleInfo for use by other module installation
146toolchain components. Module::Build::ModuleInfo has been deprecated in
147favor of this module instead.
148
149=item *
150
935c8d19
DG
151L<Perl::OSType> 1.002 has been added as a dual-life module. It maps Perl
152operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic types
153with standardized names (e.g. "Unix" or "Windows"). It has been refactored
154out of Module::Build and ExtUtils::CBuilder and consolidates such mappings into
155a single location for easier maintenance.
156
9f7a72d0 157=back
e1165778 158
9f7a72d0 159=head2 Updated Modules and Pragmata
f295f417 160
9f7a72d0 161=over 4
17096837 162
f295f417
FC
163=item *
164
6447e912
CBW
165C<Archive::Extract> has been upgraded from version 0.46 to 0.48
166
167=item *
168
89ae55b4
CBW
169C<Archive::Tar> has been upgraded from version 1.74 to 1.76
170
171=item *
172
2a1594f6
CBW
173C<CGI> has been upgraded from version 3.50 to 3.51
174
175=item *
5ebf8416
CBW
176
177C<Compress::Raw::Bzip2> has been upgraded from version 2.031 to 2.033
178
179=item *
e2f1db54
CBW
180
181C<Compress::Raw::Zlib> has been upgraded from version 2.030 to 2.033
182
183=item *
2a1594f6 184
a52237f3
DG
185C<CPAN> has been upgraded from version 1.94_62 to 1.94_63
186
187=item *
188
f1aaabf8
CBW
189C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011
190
191=item *
192
ae0f8eee
CBW
193C<CPANPLUS::Dist::Build> has been upgraded from version 0.50 to 0.52
194
195=item *
196
197C<DB_File> has been upgraded from version 1.820 to 1.821
deb99cce
CBW
198
199=item *
200
6d4f9cf2
KW
201C<Encode> has been upgraded from version 2.40 to 2.42.
202Now, all 66 Unicode non-characters are treated the same way U+FFFF has
203always been treated; if it was disallowed, all 66 are disallowed; if it
204warned, all 66 warn.
50afc8f8
CBW
205
206=item *
207
eee47ba6 208C<File::Fetch> has been upgraded from version 0.28 to 0.32
f37ee46a
CBW
209
210=item *
211
cd0c0e65
CBW
212C<IO::Compress> has been upgraded from version 2.030 to 2.033
213
214=item *
215
f37ee46a
CBW
216C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
217
ac066c2a
CBW
218=item *
219
b5ce1198
CBW
220C<Log::Message> has been upgraded from version 0.02 to 0.04
221
222=item *
223
ae0f8eee 224C<Module::Load::Conditional> has been upgraded from version 0.38 to 0.40
4fc94532
CBW
225
226=item *
227
ae0f8eee 228C<Object::Accessor> has been upgraded from version 0.36 to 0.38
0019012a
CBW
229
230=item *
231
ae0f8eee 232C<Params::Check> has been upgraded from version 0.26 to 0.28
8cb3aa53
CBW
233
234=item *
235
9c88a88b
CBW
236C<Pod::LaTeX> has been upgraded from version 0.58 to 0.59
237
238=item *
239
6df88f97 240C<Term::UI> has been upgraded from version 0.20 to 0.24
8e1e0801
CBW
241
242=item *
243
f5d41534
CBW
244C<threads> has been upgraded from version 1.81_03 to 1.82
245
246=item *
247
248C<threads::shared> has been upgraded from version 1.35 to 1.36
249
250=item *
251
23046b7e 252C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
17096837 253
788ba0f4
CBW
254=item *
255
cac3df65 256C<Unicode::Collate> has been upgraded from version 0.68 to 0.71
0532e1ae
CBW
257
258This also sees the switch from using the pure-perl version of this
259module to the XS version.
260
261=item *
262
788ba0f4
CBW
263C<Unicode::Normalize> has been upgraded from version 1.07 to 1.10
264
9f7a72d0 265=back
e1165778 266
9f7a72d0 267=head2 Removed Modules and Pragmata
b373eab8 268
9f7a72d0 269=over 4
b373eab8
FC
270
271=item *
272
9f7a72d0 273XXX
b6ae81ab 274
9f7a72d0 275=back
ca88a729 276
9f7a72d0 277=head1 Documentation
17096837 278
9f7a72d0
Z
279XXX Changes to files in F<pod/> go here. Consider grouping entries by
280file and be sure to link to the appropriate page, e.g. L<perlfunc>.
b6ae81ab 281
9f7a72d0 282=head2 New Documentation
e1165778 283
9f7a72d0 284XXX Changes which create B<new> files in F<pod/> go here.
17096837 285
9f7a72d0 286=head3 L<XXX>
e1165778 287
9f7a72d0 288XXX Description of the purpose of the new file here
e1165778 289
9f7a72d0 290=head2 Changes to Existing Documentation
17096837 291
9f7a72d0
Z
292XXX Changes which significantly change existing files in F<pod/> go here.
293However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
294section.
e1165778 295
9f7a72d0 296=head3 L<XXX>
d4238815 297
9f7a72d0 298=over 4
17096837 299
d4238815
FC
300=item *
301
9f7a72d0 302XXX Description of the change here
e1165778 303
9f7a72d0 304=back
17096837 305
9f7a72d0 306=head1 Diagnostics
17096837 307
9f7a72d0
Z
308The following additions or changes have been made to diagnostic output,
309including warnings and fatal error messages. For the complete list of
310diagnostic messages, see L<perldiag>.
e1165778 311
9f7a72d0
Z
312XXX New or changed warnings emitted by the core's C<C> code go here. Also
313include any changes in L<perldiag> that reconcile it to the C<C> code.
68adb2b0 314
9f7a72d0 315[ Within each section, list entries as a =item entry ]
17096837 316
9f7a72d0 317=head2 New Diagnostics
3a5c9134 318
9f7a72d0 319XXX Newly added diagnostic messages go here
17096837 320
9f7a72d0 321=over 4
17096837 322
c2e0289e
FC
323=item *
324
9f7a72d0 325XXX
17096837 326
9f7a72d0 327=back
e6f1cc4d 328
9f7a72d0 329=head2 Changes to Existing Diagnostics
e1165778 330
9f7a72d0 331XXX Changes (i.e. rewording) of diagnostic messages go here
17096837 332
9f7a72d0 333=over 4
17096837 334
e1165778
Z
335=item *
336
9f7a72d0 337XXX
17096837 338
3a5c9134
CBW
339=back
340
9f7a72d0 341=head1 Utility Changes
e1165778 342
9f7a72d0
Z
343XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
344here. Most of these are built within the directories F<utils> and F<x2p>.
e1165778 345
9f7a72d0
Z
346[ List utility changes as a =head3 entry for each utility and =item
347entries for each change
348Use L<XXX> with program names to get proper documentation linking. ]
e1165778 349
9f7a72d0 350=head3 L<XXX>
e1165778 351
9f7a72d0 352=over 4
e1165778
Z
353
354=item *
355
9f7a72d0 356XXX
e1165778 357
9f7a72d0 358=back
e1165778 359
9f7a72d0 360=head1 Configuration and Compilation
e1165778 361
9f7a72d0
Z
362XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
363go here. Any other changes to the Perl build process should be listed here.
364However, any platform-specific changes should be listed in the
365L</Platform Support> section, instead.
e1165778 366
9f7a72d0 367[ List changes as a =item entry ].
e1165778 368
9f7a72d0 369=over 4
3a5c9134
CBW
370
371=item *
372
9f7a72d0 373XXX
3a5c9134
CBW
374
375=back
376
9f7a72d0 377=head1 Testing
3a5c9134 378
9f7a72d0
Z
379XXX Any significant changes to the testing of a freshly built perl should be
380listed here. Changes which create B<new> files in F<t/> go here as do any
381large changes to the testing harness (e.g. when parallel testing was added).
382Changes to existing files in F<t/> aren't worth summarising, although the bugs
383that they represent may be covered elsewhere.
3a5c9134 384
9f7a72d0 385[ List each test improvement as a =item entry ]
3a5c9134 386
3a5c9134
CBW
387=over 4
388
389=item *
390
9f7a72d0 391XXX
3a5c9134
CBW
392
393=back
394
9f7a72d0 395=head1 Platform Support
3a5c9134 396
9f7a72d0 397XXX Any changes to platform support should be listed in the sections below.
3a5c9134 398
9f7a72d0
Z
399[ Within the sections, list each platform as a =item entry with specific
400changes as paragraphs below it. ]
3a5c9134 401
9f7a72d0 402=head2 New Platforms
3a5c9134 403
9f7a72d0
Z
404XXX List any platforms that this version of perl compiles on, that previous
405versions did not. These will either be enabled by new files in the F<hints/>
406directories, or new subdirectories and F<README> files at the top level of the
407source tree.
3a5c9134 408
3a5c9134
CBW
409=over 4
410
9f7a72d0 411=item XXX-some-platform
3a5c9134 412
9f7a72d0 413XXX
51bed910 414
3a5c9134
CBW
415=back
416
9f7a72d0
Z
417=head2 Discontinued Platforms
418
419XXX List any platforms that this version of perl no longer compiles on.
3a5c9134 420
3a5c9134
CBW
421=over 4
422
9f7a72d0 423=item XXX-some-platform
3a5c9134 424
9f7a72d0 425XXX
3a5c9134
CBW
426
427=back
428
3a5c9134
CBW
429=head2 Platform-Specific Notes
430
9f7a72d0
Z
431XXX List any changes for specific platforms. This could include configuration
432and compilation changes or changes in portability/compatibility. However,
433changes within modules for platforms should generally be listed in the
434L</Modules and Pragmata> section.
3a5c9134 435
9f7a72d0 436=over 4
3a5c9134 437
9f7a72d0 438=item XXX-some-platform
fb3a2d89 439
9f7a72d0 440XXX
fb3a2d89 441
3a5c9134
CBW
442=back
443
444=head1 Internal Changes
445
9f7a72d0
Z
446XXX Changes which affect the interface available to C<XS> code go here.
447Other significant internal changes for future core maintainers should
448be noted as well.
3a5c9134 449
9f7a72d0 450[ List each test improvement as a =item entry ]
3a5c9134 451
9f7a72d0 452=over 4
3a5c9134 453
c61b6d0f
FC
454=item *
455
0a0e3cc5
NC
456The opcode bodies for C<chop> and C<chomp> and for C<schop> and C<schomp> have
457been merged. The implementation functions C<Perl_do_chop()> and
458C<Perl_do_chomp()>, never part of the public API, have been merged and moved to
459a static function in F<pp.c>. This shrinks the perl binary slightly, and should
460not affect any code outside the core (unless it is relying on the order of side
461effects when C<chomp> is passed a I<list> of values).
c61b6d0f 462
6d4f9cf2
KW
463=item *
464
465Some of the flags parameters to the uvuni_to_utf8_flags() and
466utf8n_to_uvuni() have changed. This is a result of Perl now allowing
467internal storage and manipulation of code points that are problematic
468in some situations. Hence, the default actions for these functions has
469been complemented to allow these code points. The new flags are
470documented in L<perlapi>. Code that requires the problematic code
471points to be rejected needs to change to use these flags. Some flag
472names are retained for backward source compatibility, though they do
473nothing, as they are now the default. However the flags
474C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and
475C<UNICODE_IS_ILLEGAL> have been removed, as they stem from a
476fundamentally broken model of how the Unicode non-character code points
477should be handled, which is now described in
478L<perlunicode/Non-character code points>. See also L</Selected Bug Fixes>.
479
a62b1201
KW
480=item *
481
482Certain shared flags in the C<pmop.op_pmflags> and C<regexp.extflags>
483structures have been removed. These are: C<Rxf_Pmf_LOCALE>,
484C<Rxf_Pmf_UNICODE>, and C<PMf_LOCALE>. Instead there are encodes and
485three static in-line functions for accessing the information:
486C<get_regex_charset()>, C<set_regex_charset()>, and C<get_regex_charset_name()>,
487which are defined in the places where the orginal flags were.
488
3a5c9134
CBW
489=back
490
491=head1 Selected Bug Fixes
492
9f7a72d0
Z
493XXX Important bug fixes in the core language are summarised here.
494Bug fixes in files in F<ext/> and F<lib/> are best summarised in
495L</Modules and Pragmata>.
b373eab8 496
9f7a72d0 497[ List each fix as a =item entry ]
b373eab8 498
9f7a72d0 499=over 4
4c9d53d5 500
0c7420e7
FC
501=item *
502
6d4f9cf2
KW
503The handling of Unicode non-characters has changed.
504Previously they were mostly considered illegal, except that only one of
505the 66 of them was known about in places. The Unicode standard
506considers them legal, but forbids the "open interchange" of them.
507This is part of the change to allow the internal use of any code point
508(see L</Core Enhancements>). Together, these changes resolve
509L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>,
510L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>,
511L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>,
512L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446>
0c7420e7 513
9f7a72d0 514=back
460c4bfb 515
9f7a72d0 516=head1 Known Problems
460c4bfb 517
9f7a72d0
Z
518XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
519tests that had to be C<TODO>ed for the release would be noted here, unless
520they were specific to a particular platform (see below).
26de4ac8 521
9f7a72d0
Z
522This is a list of some significant unfixed bugs, which are regressions
523from either 5.XXX.XXX or 5.XXX.XXX.
26de4ac8 524
9f7a72d0 525[ List each fix as a =item entry ]
ab7fb400 526
9f7a72d0 527=over 4
ab7fb400 528
836d5805
Z
529=item *
530
9f7a72d0 531XXX
836d5805 532
3a5c9134
CBW
533=back
534
9f7a72d0 535=head1 Obituary
3a5c9134 536
9f7a72d0
Z
537XXX If any significant core contributor has died, we've added a short obituary
538here.
b0c3724f 539
9f7a72d0 540=head1 Acknowledgements
b0c3724f 541
9f7a72d0 542XXX The list of people to thank goes here.
3a5c9134
CBW
543
544=head1 Reporting Bugs
545
546If you find what you think is a bug, you might check the articles
547recently posted to the comp.lang.perl.misc newsgroup and the perl
548bug database at http://rt.perl.org/perlbug/ . There may also be
549information at http://www.perl.org/ , the Perl Home Page.
550
551If you believe you have an unreported bug, please run the L<perlbug>
552program included with your release. Be sure to trim your bug down
553to a tiny but sufficient test case. Your bug report, along with the
554output of C<perl -V>, will be sent off to perlbug@perl.org to be
555analysed by the Perl porting team.
556
557If the bug you are reporting has security implications, which make it
558inappropriate to send to a publicly archived mailing list, then please send
559it to perl5-security-report@perl.org. This points to a closed subscription
560unarchived mailing list, which includes all the core committers, who be able
561to help assess the impact of issues, figure out a resolution, and help
562co-ordinate the release of patches to mitigate or fix the problem across all
563platforms on which Perl is supported. Please only use this address for
564security issues in the Perl core, not for modules independently
565distributed on CPAN.
566
567=head1 SEE ALSO
568
569The F<Changes> file for an explanation of how to view exhaustive details
570on what changed.
571
572The F<INSTALL> file for how to build Perl.
573
574The F<README> file for general stuff.
575
576The F<Artistic> and F<Copying> files for copyright information.
577
578=cut