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