This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for parser crashes
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
2ff1ebfe
MH
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.21.9
c68523cb 9
238894db 10=head1 DESCRIPTION
c68523cb 11
2ff1ebfe 12This document describes differences between the 5.21.8 release and the 5.21.9
238894db 13release.
c68523cb 14
2ff1ebfe
MH
15If you are upgrading from an earlier release such as 5.21.7, first read
16L<perl5218delta>, which describes differences between 5.21.7 and 5.21.8.
2ec11c70 17
b5d4d3b9 18=head1 Notice
2ec11c70 19
2ff1ebfe 20XXX Any important notices here
67f2cc75 21
b5d4d3b9 22=head1 Core Enhancements
67f2cc75 23
2ff1ebfe
MH
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
25941dca 27
64935bc6
KW
28=head2 qr/\b{gcb}/ is now handled in regular expressions
29
30C<gcb> stands for Grapheme Cluster Boundary. It is a Unicode property
31that finds the boundary between sequences of characters that look like a
32single character to a native speaker of a language. Perl has long had
33the ability to deal with these through the C<\X> regular escape
34sequence. Now, there is an alternative way of handling these. See
35L<perlrebackslash/\b{}, \b, \B{}, \B> for details.
25941dca 36
ae3bb8ea
KW
37=head2 qr/\b{wb}/ is now handled in regular expressions
38
39C<wb> stands for Word Boundary. It is a Unicode property
40that finds the boundary between words. This is similar to the plain
41C<\b> (without braces) but is more suitable for natural language
42processing. It knows, for example that apostrophes can occur in the
43middle of words. See L<perlrebackslash/\b{}, \b, \B{}, \B> for details.
44
06ae2722
KW
45=head2 qr/\b{sb}/ is now handled in regular expressions
46
47C<sb> stands for Sentence Boundary. It is a Unicode property
48to aid in parsing natural language sentences.
49See L<perlrebackslash/\b{}, \b, \B{}, \B> for details.
156f41cf
FC
50
51=head2 New bitwise operators
52
53A new experimental facility has been added that makes the four standard
54bitwise operators (C<& | ^ ~>) treat their operands consistently as
55numbers, and introduces four new dotted operators (C<&. |. ^. ~.>) that
56treat their operands consistently as strings. The same applies to the
57assignment variants (C<&= |= ^= &.= |.= ^.=>).
58
59To use this, enable the "bitwise" feature and disable the
60"experimental::bitwise" warnings category. See L<perlop/Bitwise String
2bf83140 61Operators> for details. [perl #123466]
06ae2722 62
2ff1ebfe 63=head1 Security
25941dca 64
2ff1ebfe
MH
65XXX Any security-related notices go here. In particular, any security
66vulnerabilities closed should be noted here rather than in the
67L</Selected Bug Fixes> section.
25941dca 68
2ff1ebfe 69[ List each security issue as a =head2 entry ]
48c4d243 70
b5d4d3b9 71=head1 Incompatible Changes
ef8784b7 72
2ff1ebfe 73XXX For a release on a stable branch, this section aspires to be:
595f54ae 74
2ff1ebfe
MH
75 There are no changes intentionally incompatible with 5.XXX.XXX
76 If any exist, they are bugs, and we request that you submit a
77 report. See L</Reporting Bugs> below.
595f54ae 78
2ff1ebfe 79[ List each incompatible change as a =head2 entry ]
bba618d2 80
2ff1ebfe 81=head1 Deprecations
541e1e0d 82
2ff1ebfe 83XXX Any deprecated features, syntax, modules etc. should be listed here.
541e1e0d 84
2ff1ebfe 85=head2 Module removals
541e1e0d 86
2ff1ebfe 87XXX Remove this section if inapplicable.
541e1e0d 88
2ff1ebfe
MH
89The following modules will be removed from the core distribution in a
90future release, and will at that time need to be installed from CPAN.
91Distributions on CPAN which require these modules will need to list them as
92prerequisites.
541e1e0d 93
2ff1ebfe
MH
94The core versions of these modules will now issue C<"deprecated">-category
95warnings to alert you to this fact. To silence these deprecation warnings,
96install the modules in question from CPAN.
541e1e0d 97
2ff1ebfe
MH
98Note that these are (with rare exceptions) fine modules that you are encouraged
99to continue to use. Their disinclusion from core primarily hinges on their
100necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
101not usually on concerns over their design.
541e1e0d 102
2ff1ebfe 103=over
541e1e0d 104
2ff1ebfe 105=item XXX
541e1e0d 106
2ff1ebfe
MH
107XXX Note that deprecated modules should be listed here even if they are listed
108as an updated module in the L</Modules and Pragmata> section.
541e1e0d 109
2ff1ebfe 110=back
c196824d 111
2ff1ebfe 112[ List each other deprecation as a =head2 entry ]
541e1e0d 113
2ff1ebfe 114=head1 Performance Enhancements
541e1e0d 115
2ff1ebfe
MH
116XXX Changes which enhance performance without changing behaviour go here.
117There may well be none in a stable release.
541e1e0d 118
2ff1ebfe 119[ List each enhancement as a =item entry ]
541e1e0d 120
2ff1ebfe 121=over 4
541e1e0d
MH
122
123=item *
124
2ff1ebfe 125XXX
541e1e0d 126
2ff1ebfe 127=back
541e1e0d 128
2ff1ebfe 129=head1 Modules and Pragmata
541e1e0d 130
2ff1ebfe
MH
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>. A paragraph summary
134for important changes should then be added by hand. In an ideal world,
135dual-life modules would have a F<Changes> file that could be cribbed.
541e1e0d 136
2ff1ebfe 137[ Within each section, list entries as a =item entry ]
541e1e0d 138
2ff1ebfe 139=head2 New Modules and Pragmata
541e1e0d 140
2ff1ebfe 141=over 4
541e1e0d
MH
142
143=item *
144
2ff1ebfe 145XXX
541e1e0d 146
2ff1ebfe 147=back
541e1e0d 148
2ff1ebfe 149=head2 Updated Modules and Pragmata
541e1e0d 150
2ff1ebfe 151=over 4
541e1e0d
MH
152
153=item *
154
897dbee7
TC
155L<B> has been upgraded from version 1.55 to 1.56.
156
157=item *
158
65e96328 159L<bigint>, L<bignum>, L<bigrat> have been upgraded to version 0.39.
127a7155 160
65e96328
TC
161Document in CAVEATS that using strings as numbers won't always invoke
162the big number overloading, and how to invoke it. [perl #123064]
541e1e0d 163
9e8951cf
TC
164=item *
165
65e96328 166L<Devel::Peek> has been upgraded from version 1.21 to 1.22.
1b3da025 167
65e96328
TC
168=item *
169
170L<Encode> has been upgraded from version 2.67 to 2.68.
171
172Building in C++ mode on Windows now works.
1b3da025
TC
173
174=item *
175
8e0a272f
TC
176L<Errno> has been upgraded from version 1.22 to 1.23.
177
178Add C<-P> to the preprocessor command-line on GCC 5. GCC added extra
179line directives, breaking parsing of error code definitions. [perl
180#123784]
181
182=item *
183
0bbdc33c
TC
184L<Opcode> has been upgraded from version 1.31 to 1.32.
185
186=item *
187
9e8951cf
TC
188L<PerlIO::scalar> has been upgraded from version 0.21 to 0.22.
189
eca355c2 190Attempting to write at file positions impossible for the platform now
9e8951cf
TC
191fail early rather than wrapping at 4GB.
192
e5240100
SH
193=item *
194
8884fcd5
SH
195L<Win32> has been upgraded from version 0.49 to 0.51.
196
197GetOSName() now supports Windows 8.1, and building in C++ mode now works.
198
199=item *
200
e5240100
SH
201L<Win32API::File> has been upgraded from version 0.1201 to 0.1202
202
203Building in C++ mode now works.
204
3db719fe
JK
205=item *
206
207L<POSIX> has been upgraded from version 1.49 to 1.50.
208
c49582c3
JK
209=item *
210
211L<Benchmark> has been upgraded from version 1.19 to 1.20.
212
9024667a
KW
213=item *
214
215L<Unicode::UCD> has been upgraded from version 0.60 to 0.61.
31e72f27
KW
216
217=over 4
218
219=item *
220
9024667a
KW
221A new function L<property_values()|Unicode::UCD/prop_values()>
222has been added to return a given property's possible values.
223
31e72f27
KW
224=item *
225
12fee290
KW
226A new function L<charprop()|Unicode::UCD/charprop()>
227has been added to return the value of a given property for a given code
228point.
229
230=item *
231
3ba01ffb 232A new function L<charprops_all()|Unicode::UCD/charprops_all()>
40416981
KW
233has been added to return the values of all Unicode properties for a
234given code point.
235
236=item *
237
31e72f27
KW
238A bug has been fixed so that L<propaliases()|Unicode::UCD/prop_aliases()>
239returns the correct short and long names for the Perl extensions where
240it was incorrect.
241
0ce5e53e
KW
242=item *
243
5c1d8161
KW
244A bug has been fixed so that
245L<prop_value_aliases()|Unicode::UCD/prop_value_aliases()>
246returns C<undef> instead of a wrong result for properties that are Perl
247extensions.
248
249=item *
250
0ce5e53e
KW
251This module now works on EBCDIC platforms.
252
31e72f27
KW
253=back
254
2ff1ebfe 255=back
541e1e0d 256
2ff1ebfe 257=head2 Removed Modules and Pragmata
541e1e0d 258
2ff1ebfe 259=over 4
d676fe86
JK
260
261=item *
262
2ff1ebfe 263XXX
d2fff9f6 264
2ff1ebfe 265=back
d2fff9f6 266
2ff1ebfe 267=head1 Documentation
e329daf3 268
2ff1ebfe
MH
269XXX Changes to files in F<pod/> go here. Consider grouping entries by
270file and be sure to link to the appropriate page, e.g. L<perlfunc>.
e329daf3 271
2ff1ebfe 272=head2 New Documentation
e329daf3 273
2ff1ebfe 274XXX Changes which create B<new> files in F<pod/> go here.
ba31029d 275
2ff1ebfe 276=head3 L<XXX>
b045b8b5 277
2ff1ebfe 278XXX Description of the purpose of the new file here
541e1e0d 279
2ff1ebfe 280=head2 Changes to Existing Documentation
541e1e0d 281
2ff1ebfe
MH
282XXX Changes which significantly change existing files in F<pod/> go here.
283However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
284section.
541e1e0d 285
2ff1ebfe 286=head3 L<XXX>
541e1e0d 287
2ff1ebfe 288=over 4
aa67537d 289
4c7a0d98
DD
290=item *
291
2ff1ebfe 292XXX Description of the change here
4c7a0d98 293
b5d4d3b9 294=back
4c7a0d98 295
a5d66edf
JK
296=head3 L<perlfaq>
297
298=over 4
299
300=item *
301
302L<perlfaq> has been synchronized with version 5.021009 from CPAN.
303
304=back
305
9ce6583e 306=head1 Diagnostics
f348c3d8 307
9ce6583e
MH
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>.
f348c3d8 311
2ff1ebfe
MH
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.
314
9ce6583e 315=head2 New Diagnostics
f348c3d8 316
2ff1ebfe
MH
317XXX Newly added diagnostic messages go under here, separated into New Errors
318and New Warnings
319
9ce6583e 320=head3 New Errors
f348c3d8 321
b5d4d3b9 322=over 4
6ed80d55 323
60dde9d3 324=item *
f348c3d8 325
2ff1ebfe 326XXX L<message|perldiag/"message">
4dc623f0 327
b5d4d3b9 328=back
84d03adf 329
9ce6583e 330=head3 New Warnings
ff433f2d 331
9ce6583e 332=over 4
4cd408ba 333
9ce6583e 334=item *
6ed80d55 335
2ff1ebfe 336XXX L<message|perldiag/"message">
9ce6583e 337
2ff1ebfe 338=back
ab0b796c 339
2ff1ebfe 340=head2 Changes to Existing Diagnostics
8c6180a9 341
2ff1ebfe 342XXX Changes (i.e. rewording) of diagnostic messages go here
8c6180a9 343
2ff1ebfe 344=over 4
0561e60b 345
9ce6583e 346=item *
dd200dff 347
2ff1ebfe 348XXX Describe change here
9ce6583e 349
2ff1ebfe 350=back
73e793fc 351
2ff1ebfe 352=head1 Utility Changes
9ce6583e 353
2ff1ebfe
MH
354XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
355Most of these are built within the directory F<utils>.
73e793fc 356
2ff1ebfe
MH
357[ List utility changes as a =head2 entry for each utility and =item
358entries for each change
359Use L<XXX> with program names to get proper documentation linking. ]
613abc6d 360
2ff1ebfe 361=head2 L<XXX>
9ce6583e 362
2ff1ebfe 363=over 4
9ce6583e 364
b927b7e9
KW
365=item *
366
8e0a272f
TC
367F<h2ph> now handles hexadecimal constants in the compiler's predefined
368macro definitions, as visible in C<$Config{cppsymbols}>. [perl
369#123784]
db5cc9f9 370
2ff1ebfe 371=back
db5cc9f9 372
2ff1ebfe 373=head1 Configuration and Compilation
c877af1b 374
2ff1ebfe
MH
375XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
376go here. Any other changes to the Perl build process should be listed here.
377However, any platform-specific changes should be listed in the
378L</Platform Support> section, instead.
c877af1b 379
2ff1ebfe 380[ List changes as a =item entry ].
db5cc9f9 381
2ff1ebfe 382=over 4
db5cc9f9 383
acdfc3b6
KW
384=item *
385
2ff1ebfe 386XXX
db5cc9f9 387
b5d4d3b9 388=back
8c6180a9 389
2ff1ebfe 390=head1 Testing
780fcc9f 391
2ff1ebfe
MH
392XXX Any significant changes to the testing of a freshly built perl should be
393listed here. Changes which create B<new> files in F<t/> go here as do any
394large changes to the testing harness (e.g. when parallel testing was added).
395Changes to existing files in F<t/> aren't worth summarizing, although the bugs
396that they represent may be covered elsewhere.
40a81b59 397
2ff1ebfe 398[ List each test improvement as a =item entry ]
bb8c7e27 399
b5d4d3b9 400=over 4
83b69bfd
DD
401
402=item *
403
2ff1ebfe 404XXX
13adb056 405
b5d4d3b9 406=back
391823f2 407
2ff1ebfe 408=head1 Platform Support
6ff8f256 409
2ff1ebfe 410XXX Any changes to platform support should be listed in the sections below.
db98db4e 411
2ff1ebfe
MH
412[ Within the sections, list each platform as a =item entry with specific
413changes as paragraphs below it. ]
8818afe8 414
2ff1ebfe 415=head2 New Platforms
8af808bf 416
2ff1ebfe
MH
417XXX List any platforms that this version of perl compiles on, that previous
418versions did not. These will either be enabled by new files in the F<hints/>
419directories, or new subdirectories and F<README> files at the top level of the
420source tree.
8af808bf 421
2ff1ebfe 422=over 4
fdcaecb7 423
2ff1ebfe 424=item XXX-some-platform
fdcaecb7 425
2ff1ebfe 426XXX
2af7c6b6 427
4dc623f0 428=back
2af7c6b6 429
2ff1ebfe 430=head2 Discontinued Platforms
9e26817d 431
2ff1ebfe 432XXX List any platforms that this version of perl no longer compiles on.
70cee83f 433
b5d4d3b9 434=over 4
e5fbfbc1 435
2ff1ebfe 436=item XXX-some-platform
b4045391 437
2ff1ebfe 438XXX
b4045391 439
2ff1ebfe 440=back
b4045391 441
2ff1ebfe 442=head2 Platform-Specific Notes
8c847e66 443
2ff1ebfe
MH
444XXX List any changes for specific platforms. This could include configuration
445and compilation changes or changes in portability/compatibility. However,
446changes within modules for platforms should generally be listed in the
447L</Modules and Pragmata> section.
8c847e66 448
2ff1ebfe 449=over 4
d345f487 450
8b08c4b9 451=item Windows
d345f487 452
8b08c4b9
SH
453Perl can now be built in C++ mode on Windows by setting the makefile macro
454C<USE_CPLUSPLUS> to the value "define".
353075a0 455
5904c5c0
TC
456List form pipe open no longer falls back to the shell.
457
4dc623f0 458=back
353075a0 459
4dc623f0 460=head1 Internal Changes
9f122eef 461
2ff1ebfe
MH
462XXX Changes which affect the interface available to C<XS> code go here. Other
463significant internal changes for future core maintainers should be noted as
464well.
465
466[ List each change as a =item entry ]
467
b5d4d3b9 468=over 4
2ec11c70
DM
469
470=item *
471
2ff1ebfe 472XXX
2683609f 473
4dc623f0 474=back
c7f058f0 475
4dc623f0 476=head1 Selected Bug Fixes
0ef4323a 477
2ff1ebfe
MH
478XXX Important bug fixes in the core language are summarized here. Bug fixes in
479files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
00ba25b8 480
2ff1ebfe 481[ List each fix as a =item entry ]
567291b6 482
2ff1ebfe 483=over 4
436f6503 484
f44e0270
FC
485=item *
486
d536498f
TC
487The original visible value of C<$/> is now preserved when it is set to
488an invalid value. Previously if you set C<$/> to a reference to an
489array, for example, perl would produce a runtime error and not set
490C<PL_rs>, but perl code that checked C<$/> would see the array
491reference. [perl #123218]
ea13b07e 492
7dbd4c44
KW
493=item *
494
495In a regular expression pattern, a POSIX class, like C<[:ascii:]>, must
496be inside a bracketed character class, like C</qr[[:ascii:]]>. A
497warning is issued when something looking like a POSIX class is not
498inside a bracketed class. That warning wasn't getting generated when
499the POSIX class was negated: C<[:^ascii:]>. This is now fixed.
500
47c2f9f1
TC
501=item *
502
503Fix a couple of other size calculation overflows. [perl #123554]
504
5bd81aa7
TC
505=item *
506
507A bug introduced in 5.21.6, C<dump LABEL> acted the same as C<goto
508LABEL>. This has been fixed. [perl #123836]
509
bea370a8
FC
510=item *
511
512Perl 5.14.0 introduced a bug whereby C<eval { LABEL: }> would crash. This
513has been fixed. [perl #123652]
514
2bf83140
FC
515=item *
516
517Various crashes due to the parser getting confused by syntax errors have
518been fixed. [perl #123617] [perl #123737] [perl #123753] [perl #123677]
519
2ff1ebfe 520=back
ea13b07e 521
2ff1ebfe 522=head1 Known Problems
b65adbec 523
2ff1ebfe
MH
524XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
525tests that had to be C<TODO>ed for the release would be noted here. Unfixed
526platform specific bugs also go here.
b65adbec 527
2ff1ebfe 528[ List each fix as a =item entry ]
370c71c5 529
2ff1ebfe 530=over 4
b94c7836
FC
531
532=item *
533
2ff1ebfe 534XXX
439f6100 535
2ff1ebfe 536=back
439f6100 537
2ff1ebfe 538=head1 Errata From Previous Releases
e3e8f263 539
2ff1ebfe 540=over 4
e3e8f263 541
cb6cc22b
TC
542=item *
543
2ff1ebfe
MH
544XXX Add anything here that we forgot to add, or were mistaken about, in
545the perldelta of a previous release.
cb6cc22b 546
b5d4d3b9 547=back
fcfb7b86 548
2ff1ebfe 549=head1 Obituary
541e1e0d 550
2ff1ebfe
MH
551XXX If any significant core contributor has died, we've added a short obituary
552here.
541e1e0d 553
2ff1ebfe 554=head1 Acknowledgements
541e1e0d 555
2ff1ebfe 556XXX Generate this with:
01d42a22 557
2ff1ebfe 558 perl Porting/acknowledgements.pl v5.21.8..HEAD
f5b73711 559
44691e6f
AB
560=head1 Reporting Bugs
561
e08634c5
SH
562If you find what you think is a bug, you might check the articles recently
563posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 564https://rt.perl.org/ . There may also be information at
7ef8b31d 565http://www.perl.org/ , the Perl Home Page.
44691e6f 566
e08634c5
SH
567If you believe you have an unreported bug, please run the L<perlbug> program
568included with your release. Be sure to trim your bug down to a tiny but
569sufficient test case. Your bug report, along with the output of C<perl -V>,
570will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
571
572If the bug you are reporting has security implications, which make it
e08634c5
SH
573inappropriate to send to a publicly archived mailing list, then please send it
574to perl5-security-report@perl.org. This points to a closed subscription
575unarchived mailing list, which includes all the core committers, who will be
576able to help assess the impact of issues, figure out a resolution, and help
f9001595 577co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
578platforms on which Perl is supported. Please only use this address for
579security issues in the Perl core, not for modules independently distributed on
580CPAN.
44691e6f
AB
581
582=head1 SEE ALSO
583
e08634c5
SH
584The F<Changes> file for an explanation of how to view exhaustive details on
585what changed.
44691e6f
AB
586
587The F<INSTALL> file for how to build Perl.
588
589The F<README> file for general stuff.
590
591The F<Artistic> and F<Copying> files for copyright information.
592
593=cut