This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
update perldelta for some modules and pragmas upgrades
[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<attributes> has been upgraded from version 0.25 to 0.26.
156
157 =item *
158
159 L<B> has been upgraded from version 1.55 to 1.56.
160
161 =item *
162
163 L<B::Debug> has been upgraded from version 1.22 to 1.23.
164
165 =item *
166
167 L<Benchmark> has been upgraded from version 1.19 to 1.20.
168
169 =item *
170
171 L<bigint>, L<bignum>, L<bigrat> have been upgraded to version 0.39.
172
173 Document in CAVEATS that using strings as numbers won't always invoke
174 the big number overloading, and how to invoke it.  [perl #123064]
175
176 =item *
177
178 L<Carp> has been upgraded from version 1.34 to 1.35.
179
180 =item *
181
182 L<Config::Perl::V> has been upgraded from version 0.22 to 0.23.
183
184 =item *
185
186 L<CPAN::Meta::Requirements> has been upgraded from version 2.131 to 2.132
187
188 =item *
189
190 L<Devel::Peek> has been upgraded from version 1.21 to 1.22.
191
192 =item *
193
194 L<Encode> has been upgraded from version 2.67 to 2.70.
195
196 Building in C++ mode on Windows now works.
197
198 =item *
199
200 L<Errno> has been upgraded from version 1.22 to 1.23.
201
202 Add C<-P> to the preprocessor command-line on GCC 5.  GCC added extra
203 line directives, breaking parsing of error code definitions.  [perl
204 #123784]
205
206 =item *
207
208 L<HTTP::Tiny> has been upgraded from version 0.053 to 0.054.
209
210 =item *
211
212 L<Opcode> has been upgraded from version 1.31 to 1.32.
213
214 =item *
215
216 L<Perl::OSType> has been upgraded from version 1.007 to 1.008.
217
218 =item *
219
220 L<PerlIO::scalar> has been upgraded from version 0.21 to 0.22.
221
222 Attempting to write at file positions impossible for the platform now
223 fail early rather than wrapping at 4GB.
224
225 =item *
226
227 L<Pod::Parser> has been upgraded from version 1.62 to 1.63.
228
229 =item *
230
231 L<Pod::Perldoc> has been upgraded from version 3.24 to 3.25.
232
233 =item *
234
235 L<POSIX> has been upgraded from version 1.49 to 1.51.
236
237 =item *
238
239 L<re> has been upgraded from version 0.30 to 0.31.
240
241 =item *
242
243 L<Socket> has been upgraded from version 2.016 to 2.018.
244
245 =item *
246
247 L<Test::Simple> has been upgraded from version 1.301001_097 to 1.301001_098.
248
249 =item *
250
251 L<Win32> has been upgraded from version 0.49 to 0.51.
252
253 GetOSName() now supports Windows 8.1, and building in C++ mode now works.
254
255 =item *
256
257 L<Win32API::File> has been upgraded from version 0.1201 to 0.1202
258
259 Building in C++ mode now works.
260
261 =item *
262
263 L<Unicode::Collate> has been upgraded from version 1.10 to 1.11.
264
265 =item *
266
267 L<Unicode::UCD> has been upgraded from version 0.60 to 0.61.
268
269 =over 4
270
271 =item *
272
273 A new function L<property_values()|Unicode::UCD/prop_values()>
274 has been added to return a given property's possible values.
275
276 =item *
277
278 A new function L<charprop()|Unicode::UCD/charprop()>
279 has been added to return the value of a given property for a given code
280 point.
281
282 =item *
283
284 A new function L<charprops_all()|Unicode::UCD/charprops_all()>
285 has been added to return the values of all Unicode properties for a
286 given code point.
287
288 =item *
289
290 A bug has been fixed so that L<propaliases()|Unicode::UCD/prop_aliases()>
291 returns the correct short and long names for the Perl extensions where
292 it was incorrect.
293
294 =item *
295
296 A bug has been fixed so that
297 L<prop_value_aliases()|Unicode::UCD/prop_value_aliases()>
298 returns C<undef> instead of a wrong result for properties that are Perl
299 extensions.
300
301 =item *
302
303 This module now works on EBCDIC platforms.
304
305 =back
306
307 =back
308
309 =head2 Removed Modules and Pragmata
310
311 =over 4
312
313 =item *
314
315 XXX
316
317 =back
318
319 =head1 Documentation
320
321 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
322 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
323
324 =head2 New Documentation
325
326 XXX Changes which create B<new> files in F<pod/> go here.
327
328 =head3 L<XXX>
329
330 XXX Description of the purpose of the new file here
331
332 =head2 Changes to Existing Documentation
333
334 XXX Changes which significantly change existing files in F<pod/> go here.
335 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
336 section.
337
338 =head3 L<XXX>
339
340 =over 4
341
342 =item *
343
344 XXX Description of the change here
345
346 =back
347
348 =head3 L<perlfaq>
349
350 =over 4
351
352 =item *
353
354 L<perlfaq> has been synchronized with version 5.021009 from CPAN.
355
356 =back
357
358 =head1 Diagnostics
359
360 The following additions or changes have been made to diagnostic output,
361 including warnings and fatal error messages.  For the complete list of
362 diagnostic messages, see L<perldiag>.
363
364 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
365 include any changes in L<perldiag> that reconcile it to the C<C> code.
366
367 =head2 New Diagnostics
368
369 XXX Newly added diagnostic messages go under here, separated into New Errors
370 and New Warnings
371
372 =head3 New Errors
373
374 =over 4
375
376 =item *
377
378 XXX L<message|perldiag/"message">
379
380 =back
381
382 =head3 New Warnings
383
384 =over 4
385
386 =item *
387
388 XXX L<message|perldiag/"message">
389
390 =back
391
392 =head2 Changes to Existing Diagnostics
393
394 XXX Changes (i.e. rewording) of diagnostic messages go here
395
396 =over 4
397
398 =item *
399
400 XXX Describe change here
401
402 =back
403
404 =head1 Utility Changes
405
406 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
407 Most of these are built within the directory F<utils>.
408
409 [ List utility changes as a =head2 entry for each utility and =item
410 entries for each change
411 Use L<XXX> with program names to get proper documentation linking. ]
412
413 =head2 L<XXX>
414
415 =over 4
416
417 =item *
418
419 F<h2ph> now handles hexadecimal constants in the compiler's predefined
420 macro definitions, as visible in C<$Config{cppsymbols}>.  [perl
421 #123784]
422
423 =back
424
425 =head1 Configuration and Compilation
426
427 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
428 go here.  Any other changes to the Perl build process should be listed here.
429 However, any platform-specific changes should be listed in the
430 L</Platform Support> section, instead.
431
432 [ List changes as a =item entry ].
433
434 =over 4
435
436 =item *
437
438 XXX
439
440 =back
441
442 =head1 Testing
443
444 XXX Any significant changes to the testing of a freshly built perl should be
445 listed here.  Changes which create B<new> files in F<t/> go here as do any
446 large changes to the testing harness (e.g. when parallel testing was added).
447 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
448 that they represent may be covered elsewhere.
449
450 [ List each test improvement as a =item entry ]
451
452 =over 4
453
454 =item *
455
456 XXX
457
458 =back
459
460 =head1 Platform Support
461
462 =over 4
463
464 =item Windows
465
466 In release 5.21.8 compiling on VC with dmake was broken. Fixed.
467
468 =back
469
470 =head2 New Platforms
471
472 XXX List any platforms that this version of perl compiles on, that previous
473 versions did not.  These will either be enabled by new files in the F<hints/>
474 directories, or new subdirectories and F<README> files at the top level of the
475 source tree.
476
477 =over 4
478
479 =item XXX-some-platform
480
481 XXX
482
483 =back
484
485 =head2 Discontinued Platforms
486
487 XXX List any platforms that this version of perl no longer compiles on.
488
489 =over 4
490
491 =item XXX-some-platform
492
493 XXX
494
495 =back
496
497 =head2 Platform-Specific Notes
498
499 XXX List any changes for specific platforms.  This could include configuration
500 and compilation changes or changes in portability/compatibility.  However,
501 changes within modules for platforms should generally be listed in the
502 L</Modules and Pragmata> section.
503
504 =over 4
505
506 =item Windows
507
508 Perl can now be built in C++ mode on Windows by setting the makefile macro
509 C<USE_CPLUSPLUS> to the value "define".
510
511 List form pipe open no longer falls back to the shell.
512
513 =back
514
515 =head1 Internal Changes
516
517 XXX Changes which affect the interface available to C<XS> code go here.  Other
518 significant internal changes for future core maintainers should be noted as
519 well.
520
521 [ List each change as a =item entry ]
522
523 =over 4
524
525 =item *
526
527 XXX
528
529 =back
530
531 =head1 Selected Bug Fixes
532
533 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
534 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
535
536 [ List each fix as a =item entry ]
537
538 =over 4
539
540 =item *
541
542 The original visible value of C<$/> is now preserved when it is set to
543 an invalid value.  Previously if you set C<$/> to a reference to an
544 array, for example, perl would produce a runtime error and not set
545 C<PL_rs>, but perl code that checked C<$/> would see the array
546 reference.  [perl #123218]
547
548 =item *
549
550 In a regular expression pattern, a POSIX class, like C<[:ascii:]>, must
551 be inside a bracketed character class, like C</qr[[:ascii:]]>.  A
552 warning is issued when something looking like a POSIX class is not
553 inside a bracketed class.  That warning wasn't getting generated when
554 the POSIX class was negated: C<[:^ascii:]>.  This is now fixed.
555
556 =item *
557
558 Fix a couple of other size calculation overflows.  [perl #123554]
559
560 =item *
561
562 A bug introduced in 5.21.6, C<dump LABEL> acted the same as C<goto
563 LABEL>.  This has been fixed.  [perl #123836]
564
565 =item *
566
567 Perl 5.14.0 introduced a bug whereby C<eval { LABEL: }> would crash.  This
568 has been fixed.  [perl #123652]
569
570 =item *
571
572 Various crashes due to the parser getting confused by syntax errors have
573 been fixed.  [perl #123617] [perl #123737] [perl #123753] [perl #123677]
574
575 =item *
576
577 Code like C</$a[/> used to read the next line of input and treat it as
578 though it came immediately after the opening bracket.  Some invalid code
579 consequently would parse and run, but some code caused crashes, so this is
580 now disallowed.  [perl #123712]
581
582 =back
583
584 =head1 Known Problems
585
586 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
587 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
588 platform specific bugs also go here.
589
590 [ List each fix as a =item entry ]
591
592 =over 4
593
594 =item *
595
596 XXX
597
598 =back
599
600 =head1 Errata From Previous Releases
601
602 =over 4
603
604 =item *
605
606 XXX Add anything here that we forgot to add, or were mistaken about, in
607 the perldelta of a previous release.
608
609 =back
610
611 =head1 Obituary
612
613 XXX If any significant core contributor has died, we've added a short obituary
614 here.
615
616 =head1 Acknowledgements
617
618 XXX Generate this with:
619
620   perl Porting/acknowledgements.pl v5.21.8..HEAD
621
622 =head1 Reporting Bugs
623
624 If you find what you think is a bug, you might check the articles recently
625 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
626 https://rt.perl.org/ .  There may also be information at
627 http://www.perl.org/ , the Perl Home Page.
628
629 If you believe you have an unreported bug, please run the L<perlbug> program
630 included with your release.  Be sure to trim your bug down to a tiny but
631 sufficient test case.  Your bug report, along with the output of C<perl -V>,
632 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
633
634 If the bug you are reporting has security implications, which make it
635 inappropriate to send to a publicly archived mailing list, then please send it
636 to perl5-security-report@perl.org.  This points to a closed subscription
637 unarchived mailing list, which includes all the core committers, who will be
638 able to help assess the impact of issues, figure out a resolution, and help
639 co-ordinate the release of patches to mitigate or fix the problem across all
640 platforms on which Perl is supported.  Please only use this address for
641 security issues in the Perl core, not for modules independently distributed on
642 CPAN.
643
644 =head1 SEE ALSO
645
646 The F<Changes> file for an explanation of how to view exhaustive details on
647 what changed.
648
649 The F<INSTALL> file for how to build Perl.
650
651 The F<README> file for general stuff.
652
653 The F<Artistic> and F<Copying> files for copyright information.
654
655 =cut