This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 88c342510b9
[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.19.8
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.19.7 release and the 5.19.8
13 release.
14
15 If you are upgrading from an earlier release such as 5.19.6, first read
16 L<perl5197delta>, which describes differences between 5.19.6 and 5.19.7.
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 New C<\p{Unicode}> regular expression pattern property
29
30 This is a synonym for C<\p{Any}> and matches the set of Unicode-defined
31 code points 0 - 0x10FFFF.
32
33 =head1 Security
34
35 XXX Any security-related notices go here.  In particular, any security
36 vulnerabilities closed should be noted here rather than in the
37 L</Selected Bug Fixes> section.
38
39 [ List each security issue as a =head2 entry ]
40
41 =head1 Incompatible Changes
42
43 =head2 C<do> can no longer be used to call subroutines
44
45 The C<do SUBROUTINE(LIST)> form has resulted in a deprecation warning
46 since Perl v5.0.0, and is now a syntax error.
47
48 =head2 C<\p{}>, C<\P{}> matching has changed for non-Unicode code
49 points.
50
51 C<\p{}> and C<\P{}> are defined by Unicode only on Unicode-defined code
52 points (C<U+0000> through C<U+10FFFF>).  Their behavior on matching
53 these legal Unicode code points is unchanged, but there are changes for
54 code points C<0x110000> and above.  Previously, Perl treated the result
55 of matching C<\p{}> and C<\P{}> against these as C<undef>, which
56 translates into "false".  For C<\P{}>, this was then complemented into
57 "true".  A warning was supposed to be raised when this happened.
58 However, various optimizations could prevent the warning, and the
59 results were often counter-intuitive, with both a match and its seeming
60 complement being false.  Now all non-Unicode code points are treated as
61 typical unassigned Unicode code points.  This generally is more
62 Do-What-I-Mean.  A warning is raised only if the results are arguably
63 different from a strict Unicode approach, and from what Perl used to do.
64 Code that needs to be strictly Unicode compliant can make this warning
65 fatal, and then Perl always raises the warning.
66
67 Details are in L<perlunicode/Beyond Unicode code points>.
68
69 =head2 C<\p{All}> has been expanded to match all possible code points
70
71 The Perl-defined regular expression pattern element C<\p{All}>, unused
72 on CPAN, used to match just the Unicode code points; now it matches all
73 possible code points; that is, it is equivalent to C<qr/./s>.  Thus
74 C<\p{All}> is no longer synonymous with C<\p{Any}>, which continues to
75 match just the Unicode code points, as Unicode says it should.
76
77 =head1 Deprecations
78
79 XXX Any deprecated features, syntax, modules etc. should be listed here.
80
81 =head2 Module removals
82
83 XXX Remove this section if inapplicable.
84
85 The following modules will be removed from the core distribution in a
86 future release, and will at that time need to be installed from CPAN.
87 Distributions on CPAN which require these modules will need to list them as
88 prerequisites.
89
90 The core versions of these modules will now issue C<"deprecated">-category
91 warnings to alert you to this fact.  To silence these deprecation warnings,
92 install the modules in question from CPAN.
93
94 Note that these are (with rare exceptions) fine modules that you are encouraged
95 to continue to use.  Their disinclusion from core primarily hinges on their
96 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
97 not usually on concerns over their design.
98
99 =over
100
101 XXX Note that deprecated modules should be listed here even if they are listed
102 as an updated module in the L</Modules and Pragmata> section.
103
104 =back
105
106 [ List each other deprecation as a =head2 entry ]
107
108 =head1 Performance Enhancements
109
110 XXX Changes which enhance performance without changing behaviour go here.
111 There may well be none in a stable release.
112
113 [ List each enhancement as a =item entry ]
114
115 =over 4
116
117 =item *
118
119 XXX
120
121 =back
122
123 =head1 Modules and Pragmata
124
125 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
126 go here.  If Module::CoreList is updated, generate an initial draft of the
127 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
128 for important changes should then be added by hand.  In an ideal world,
129 dual-life modules would have a F<Changes> file that could be cribbed.
130
131 [ Within each section, list entries as a =item entry ]
132
133 =head2 New Modules and Pragmata
134
135 =over 4
136
137 =item *
138
139 XXX
140
141 =back
142
143 =head2 Updated Modules and Pragmata
144
145 =over 4
146
147 =item *
148
149 L<base> has been upgraded from version 2.20 to 2.21.
150
151 The stricter load failure tests added in 2.20 now allow for
152 C<${^LAST_FH}> being set.
153
154 =item *
155
156 L<Encode> has been upgraded from version 2.56 to 2.57.
157
158 UTF-8 is no longer used in the C source (which some compilers didn't like), and
159 some POD errors have been fixed in the documentation.
160
161 =item *
162
163 The libnet module collection has been upgraded from version 1.23 to 1.24.
164
165 The handling of CRLF characters in L<Net::FTP> has been fixed.
166
167 =item *
168
169 L<IO::Socket::UNIX> has been upgraded from version 1.25 to 1.26.
170
171 Removed a warning about an ancient behaviour change and filled out the
172 SYNOPSIS. [perl #120981]
173
174 =item *
175
176 L<perl5db.pl> has been upgraded from version 1.42 to 1.43
177
178 Fix a crash in tab completion, where available. [perl #120827]
179
180 The debugger tests no longer open two handles to the same output file,
181 making them more robust. [perl #118817]
182
183 =back
184
185 =head2 Removed Modules and Pragmata
186
187 =over 4
188
189 =item *
190
191 XXX
192
193 =back
194
195 =head1 Documentation
196
197 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
198 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
199
200 =head2 New Documentation
201
202 XXX Changes which create B<new> files in F<pod/> go here.
203
204 =head3 L<XXX>
205
206 XXX Description of the purpose of the new file here
207
208 =head2 Changes to Existing Documentation
209
210 XXX Changes which significantly change existing files in F<pod/> go here.
211 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
212 section.
213
214 =head3 L<XXX>
215
216 =over 4
217
218 =item *
219
220 XXX Description of the change here
221
222 =back
223
224 =head1 Diagnostics
225
226 The following additions or changes have been made to diagnostic output,
227 including warnings and fatal error messages.  For the complete list of
228 diagnostic messages, see L<perldiag>.
229
230 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
231 include any changes in L<perldiag> that reconcile it to the C<C> code.
232
233 =head2 New Diagnostics
234
235 XXX Newly added diagnostic messages go under here, separated into New Errors
236 and New Warnings
237
238 =head3 New Errors
239
240 =over 4
241
242 =item *
243
244 XXX L<message|perldiag/"message">
245
246 =back
247
248 =head3 New Warnings
249
250 =over 4
251
252 =item *
253
254 %s on a reference is now experimental
255
256 The "auto-deref" feature is now experimental.
257
258 Starting in v5.14.0, it was possible to use push, pop, keys, and other
259 built-in functions not only on aggregate types, but on references to
260 them.  The feature was not deployed to its original intended
261 specification, and now may become redundant to postfix dereferencing.
262 It has always been categorized as an experimental feature, and in
263 v5.20.0 is carries a warning as such.
264
265 Warnings will now be issued at compile time when these operations are
266 detected.
267
268   no if $] >= 5.01908, warnings => "experimental::autoderef";
269
270 Consider, though, replacing the use of these features, as they may
271 change behavior again before becoming stable.
272
273 =item *
274
275 L<Matched non-Unicode code point 0x%X against Unicode property; may not be portable|perldiag/"Matched non-Unicode code point 0x%X against Unicode property; may not be portable">.
276 This replaces the message "Code point 0x%X is not Unicode, all \p{}
277 matches fail; all \P{} matches succeed".
278
279 =back
280
281 =head2 Changes to Existing Diagnostics
282
283 XXX Changes (i.e. rewording) of diagnostic messages go here
284
285 =over 4
286
287 =item *
288
289 XXX Describe change here
290
291 =back
292
293 =head1 Utility Changes
294
295 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
296 Most of these are built within the directories F<utils> and F<x2p>.
297
298 [ List utility changes as a =head3 entry for each utility and =item
299 entries for each change
300 Use L<XXX> with program names to get proper documentation linking. ]
301
302 =head3 L<perlbug>
303
304 =over 4
305
306 =item *
307
308 F<perlbug> now has a C<-p> option for attaching patches with a bug report.
309
310 =item *
311
312 F<perlbug> now does input in the encoding of the current locale and
313 output raw.
314
315 =back
316
317 =head1 Configuration and Compilation
318
319 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
320 go here.  Any other changes to the Perl build process should be listed here.
321 However, any platform-specific changes should be listed in the
322 L</Platform Support> section, instead.
323
324 [ List changes as a =item entry ].
325
326 =over 4
327
328 =item *
329
330 Distinct library basenames with C<d_libname_unique>.
331
332 When compiling perl with this option, the library files for XS modules are
333 named something "unique" -- for example, Hash/Util/Util.so becomes
334 Hash/Util/PL_Hash__Util.so.  This behavior is similar to what currently
335 happens on VMS, and serves as groundwork for the Android port.
336
337 =item *
338
339 C<sysroot> option to indicate the logical root directory under gcc and clang.
340
341 When building with this option set, both Configure and the compilers search
342 for all headers and libraries under this new sysroot, instead of /.
343
344 This is a huge time saver if cross-compiling, but can also help
345 on native builds if your toolchain's files have non-standard locations.
346
347 =back
348
349 =head1 Testing
350
351 XXX Any significant changes to the testing of a freshly built perl should be
352 listed here.  Changes which create B<new> files in F<t/> go here as do any
353 large changes to the testing harness (e.g. when parallel testing was added).
354 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
355 that they represent may be covered elsewhere.
356
357 [ List each test improvement as a =item entry ]
358
359 =over 4
360
361 =item *
362
363 XXX
364
365 =back
366
367 =head1 Platform Support
368
369 XXX Any changes to platform support should be listed in the sections below.
370
371 [ Within the sections, list each platform as a =item entry with specific
372 changes as paragraphs below it. ]
373
374 =over 4
375
376 =item *
377
378 Code related to supporting C<sfio> has been removed.
379
380 Perl 5.004 added support to use the native API of C<sfio>, AT&T's Safe/Fast
381 I/O library. This code still built with v5.8.0, albeit with many regression
382 tests failing, but was inadvertently broken before the v5.8.1 release,
383 meaning that it has not worked on any version of Perl released since then.
384 In over a decade we have received no bug reports about this, hence it is clear
385 that no-one is using this functionality on any version of Perl that is still
386 supported to any degree.
387
388 =back
389
390 =head2 New Platforms
391
392 XXX List any platforms that this version of perl compiles on, that previous
393 versions did not.  These will either be enabled by new files in the F<hints/>
394 directories, or new subdirectories and F<README> files at the top level of the
395 source tree.
396
397 =over 4
398
399 =item XXX-some-platform
400
401 XXX
402
403 =back
404
405 =head2 Discontinued Platforms
406
407 XXX List any platforms that this version of perl no longer compiles on.
408
409 =over 4
410
411 =item XXX-some-platform
412
413 XXX
414
415 =back
416
417 =head2 Platform-Specific Notes
418
419 XXX List any changes for specific platforms.  This could include configuration
420 and compilation changes or changes in portability/compatibility.  However,
421 changes within modules for platforms should generally be listed in the
422 L</Modules and Pragmata> section.
423
424 =over 4
425
426 =item Cygwin
427
428 recv() on a connected handle would populate the returned sender
429 address with whatever happened to be in the working buffer.  recv()
430 now uses a workaround similar to the Win32 recv() wrapper and returns
431 an empty string when recvfrom(2) doesn't modify the supplied address
432 length. [perl #118843]
433
434 =back
435
436 =head1 Internal Changes
437
438 XXX Changes which affect the interface available to C<XS> code go here.  Other
439 significant internal changes for future core maintainers should be noted as
440 well.
441
442 [ List each change as a =item entry ]
443
444 =over 4
445
446 =item newATTRSUB is now a macro
447
448 The public API newATTRSUB was previously a macro to the private
449 function Perl_newATTRSUB. Function Perl_newATTRSUB has been removed. newATTRSUB
450 is now macro to a different internal function.
451
452 =item Changes in warnings raised by C<utf8n_to_uvchr()>
453
454 This bottom level function decodes the first character of a UTF-8 string
455 into a code point.  It is accessible to C<XS> level code, but it's
456 discouraged from using it directly.  There are higher level functions
457 that call this that should be used instead, such as
458 L<perlapi/utf8_to_uvchr_buf>.  For completeness though, this documents
459 some changes to it.  Now, tests for malformations are done before any
460 tests for other potential issues.  One of those issues involves code
461 points so large that they have never appeared in any official standard
462 (the current standard has scaled back the highest acceptable code point
463 from earlier versions).  It is possible (though not done in CPAN) to
464 warn and/or forbid these code points, while accepting smaller code
465 points that are still above the legal Unicode maximum.  The warning
466 message for this now includes the code point if representable on the
467 machine.  Previously it always displayed raw bytes, which is what it
468 still does for non-representable code points.
469
470 =back
471
472 =head1 Selected Bug Fixes
473
474 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
475 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
476
477 [ List each fix as a =item entry ]
478
479 =over 4
480
481 =item *
482
483 In v5.19.6, C<do CORE()> was inadvertently changed from being interpreted
484 as do-file (i.e., C<do +CORE()>) to do-sub (i.e., C<&CORE()>).  It has now
485 been changed back.
486
487 =item *
488
489 v5.19.7 inadvertently caused freed scalars to be passed to subroutines in
490 @INC it contained multiple subs.  This has been fixed. [perl #120657]
491
492 =item *
493
494 Individually-tied elements of @INC (as in C<tie $INC[0]...>) are now
495 handled correctly.  Formerly, whether a sub returned by such a tied element
496 would be treated as a sub depended on whether a FETCH had occurred
497 previously.
498
499 =item *
500
501 C<getc> on a byte-sized handle after the same C<getc> operator had been
502 used on a utf8 handle used to treat the bytes as utf8, resulting in erratic
503 behavior (e.g., malformed UTF-8 warnings).
504
505 =back
506
507 =head1 Known Problems
508
509 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
510 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
511 platform specific bugs also go here.
512
513 [ List each fix as a =item entry ]
514
515 =over 4
516
517 =item *
518
519 XXX
520
521 =back
522
523 =head1 Obituary
524
525 XXX If any significant core contributor has died, we've added a short obituary
526 here.
527
528 =head1 Acknowledgements
529
530 XXX Generate this with:
531
532   perl Porting/acknowledgements.pl v5.19.7..HEAD
533
534 =head1 Reporting Bugs
535
536 If you find what you think is a bug, you might check the articles recently
537 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
538 https://rt.perl.org/ .  There may also be information at
539 http://www.perl.org/ , the Perl Home Page.
540
541 If you believe you have an unreported bug, please run the L<perlbug> program
542 included with your release.  Be sure to trim your bug down to a tiny but
543 sufficient test case.  Your bug report, along with the output of C<perl -V>,
544 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
545
546 If the bug you are reporting has security implications, which make it
547 inappropriate to send to a publicly archived mailing list, then please send it
548 to perl5-security-report@perl.org.  This points to a closed subscription
549 unarchived mailing list, which includes all the core committers, who will be
550 able to help assess the impact of issues, figure out a resolution, and help
551 co-ordinate the release of patches to mitigate or fix the problem across all
552 platforms on which Perl is supported.  Please only use this address for
553 security issues in the Perl core, not for modules independently distributed on
554 CPAN.
555
556 =head1 SEE ALSO
557
558 The F<Changes> file for an explanation of how to view exhaustive details on
559 what changed.
560
561 The F<INSTALL> file for how to build Perl.
562
563 The F<README> file for general stuff.
564
565 The F<Artistic> and F<Copying> files for copyright information.
566
567 =cut