This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for c3970b8037
[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<Encode> has been upgraded from version 2.56 to 2.57.
150
151 UTF-8 is no longer used in the C source (which some compilers didn't like), and
152 some POD errors have been fixed in the documentation.
153
154 =item *
155
156 The libnet module collection has been upgraded from version 1.23 to 1.24.
157
158 The handling of CRLF characters in L<Net::FTP> has been fixed.
159
160 =item *
161
162 L<perl5db.pl> has been upgraded from version 1.42 to 1.43
163
164 Fix a crash in tab completion, where available. [perl #120827]
165
166 =back
167
168 =head2 Removed Modules and Pragmata
169
170 =over 4
171
172 =item *
173
174 XXX
175
176 =back
177
178 =head1 Documentation
179
180 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
181 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
182
183 =head2 New Documentation
184
185 XXX Changes which create B<new> files in F<pod/> go here.
186
187 =head3 L<XXX>
188
189 XXX Description of the purpose of the new file here
190
191 =head2 Changes to Existing Documentation
192
193 XXX Changes which significantly change existing files in F<pod/> go here.
194 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
195 section.
196
197 =head3 L<XXX>
198
199 =over 4
200
201 =item *
202
203 XXX Description of the change here
204
205 =back
206
207 =head1 Diagnostics
208
209 The following additions or changes have been made to diagnostic output,
210 including warnings and fatal error messages.  For the complete list of
211 diagnostic messages, see L<perldiag>.
212
213 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
214 include any changes in L<perldiag> that reconcile it to the C<C> code.
215
216 =head2 New Diagnostics
217
218 XXX Newly added diagnostic messages go under here, separated into New Errors
219 and New Warnings
220
221 =head3 New Errors
222
223 =over 4
224
225 =item *
226
227 XXX L<message|perldiag/"message">
228
229 =back
230
231 =head3 New Warnings
232
233 =over 4
234
235 =item *
236
237 XXX L<message|perldiag/"message">
238
239 =item *
240
241 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">.
242 This replaces the message "Code point 0x%X is not Unicode, all \p{}
243 matches fail; all \P{} matches succeed".
244
245 =back
246
247 =head2 Changes to Existing Diagnostics
248
249 XXX Changes (i.e. rewording) of diagnostic messages go here
250
251 =over 4
252
253 =item *
254
255 XXX Describe change here
256
257 =back
258
259 =head1 Utility Changes
260
261 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
262 Most of these are built within the directories F<utils> and F<x2p>.
263
264 [ List utility changes as a =head3 entry for each utility and =item
265 entries for each change
266 Use L<XXX> with program names to get proper documentation linking. ]
267
268 =head3 L<XXX>
269
270 =over 4
271
272 =item *
273
274 XXX
275
276 =back
277
278 =head1 Configuration and Compilation
279
280 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
281 go here.  Any other changes to the Perl build process should be listed here.
282 However, any platform-specific changes should be listed in the
283 L</Platform Support> section, instead.
284
285 [ List changes as a =item entry ].
286
287 =over 4
288
289 =item *
290
291 Distinct library basenames with C<d_libname_unique>.
292
293 When compiling perl with this option, the library files for XS modules are
294 named something "unique" -- for example, Hash/Util/Util.so becomes
295 Hash/Util/PL_Hash__Util.so.  This behavior is similar to what currently
296 happens on VMS, and serves as groundwork for the Android port.
297
298 =back
299
300 =head1 Testing
301
302 XXX Any significant changes to the testing of a freshly built perl should be
303 listed here.  Changes which create B<new> files in F<t/> go here as do any
304 large changes to the testing harness (e.g. when parallel testing was added).
305 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
306 that they represent may be covered elsewhere.
307
308 [ List each test improvement as a =item entry ]
309
310 =over 4
311
312 =item *
313
314 XXX
315
316 =back
317
318 =head1 Platform Support
319
320 XXX Any changes to platform support should be listed in the sections below.
321
322 [ Within the sections, list each platform as a =item entry with specific
323 changes as paragraphs below it. ]
324
325 =over 4
326
327 =item *
328
329 Code related to supporting C<sfio> has been removed.
330
331 Perl 5.004 added support to use the native API of C<sfio>, AT&T's Safe/Fast
332 I/O library. This code still built with v5.8.0, albeit with many regression
333 tests failing, but was inadvertently broken before the v5.8.1 release,
334 meaning that it has not worked on any version of Perl released since then.
335 In over a decade we have received no bug reports about this, hence it is clear
336 that no-one is using this functionality on any version of Perl that is still
337 supported to any degree.
338
339 =back
340
341 =head2 New Platforms
342
343 XXX List any platforms that this version of perl compiles on, that previous
344 versions did not.  These will either be enabled by new files in the F<hints/>
345 directories, or new subdirectories and F<README> files at the top level of the
346 source tree.
347
348 =over 4
349
350 =item XXX-some-platform
351
352 XXX
353
354 =back
355
356 =head2 Discontinued Platforms
357
358 XXX List any platforms that this version of perl no longer compiles on.
359
360 =over 4
361
362 =item XXX-some-platform
363
364 XXX
365
366 =back
367
368 =head2 Platform-Specific Notes
369
370 XXX List any changes for specific platforms.  This could include configuration
371 and compilation changes or changes in portability/compatibility.  However,
372 changes within modules for platforms should generally be listed in the
373 L</Modules and Pragmata> section.
374
375 =over 4
376
377 =item XXX-some-platform
378
379 XXX
380
381 =back
382
383 =head1 Internal Changes
384
385 XXX Changes which affect the interface available to C<XS> code go here.  Other
386 significant internal changes for future core maintainers should be noted as
387 well.
388
389 [ List each change as a =item entry ]
390
391 =over 4
392
393 =item newATTRSUB is now a macro
394
395 The public API newATTRSUB was previously a macro to the private
396 function Perl_newATTRSUB. Function Perl_newATTRSUB has been removed. newATTRSUB
397 is now macro to a different internal function.
398
399 =item Changes in warnings raised by C<utf8n_to_uvchr()>
400
401 This bottom level function decodes the first character of a UTF-8 string
402 into a code point.  It is accessible to C<XS> level code, but it's
403 discouraged from using it directly.  There are higher level functions
404 that call this that should be used instead, such as
405 L<perlapi/utf8_to_uvchr_buf>.  For completeness though, this documents
406 some changes to it.  Now, tests for malformations are done before any
407 tests for other potential issues.  One of those issues involves code
408 points so large that they have never appeared in any official standard
409 (the current standard has scaled back the highest acceptable code point
410 from earlier versions).  It is possible (though not done in CPAN) to
411 warn and/or forbid these code points, while accepting smaller code
412 points that are still above the legal Unicode maximum.  The warning
413 message for this now includes the code point if representable on the
414 machine.  Previously it always displayed raw bytes, which is what it
415 still does for non-representable code points.
416
417 =back
418
419 =head1 Selected Bug Fixes
420
421 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
422 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
423
424 [ List each fix as a =item entry ]
425
426 =over 4
427
428 =item *
429
430 XXX
431
432 =back
433
434 =head1 Known Problems
435
436 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
437 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
438 platform specific bugs also go here.
439
440 [ List each fix as a =item entry ]
441
442 =over 4
443
444 =item *
445
446 XXX
447
448 =back
449
450 =head1 Obituary
451
452 XXX If any significant core contributor has died, we've added a short obituary
453 here.
454
455 =head1 Acknowledgements
456
457 XXX Generate this with:
458
459   perl Porting/acknowledgements.pl v5.19.7..HEAD
460
461 =head1 Reporting Bugs
462
463 If you find what you think is a bug, you might check the articles recently
464 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
465 https://rt.perl.org/ .  There may also be information at
466 http://www.perl.org/ , the Perl Home Page.
467
468 If you believe you have an unreported bug, please run the L<perlbug> program
469 included with your release.  Be sure to trim your bug down to a tiny but
470 sufficient test case.  Your bug report, along with the output of C<perl -V>,
471 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
472
473 If the bug you are reporting has security implications, which make it
474 inappropriate to send to a publicly archived mailing list, then please send it
475 to perl5-security-report@perl.org.  This points to a closed subscription
476 unarchived mailing list, which includes all the core committers, who will be
477 able to help assess the impact of issues, figure out a resolution, and help
478 co-ordinate the release of patches to mitigate or fix the problem across all
479 platforms on which Perl is supported.  Please only use this address for
480 security issues in the Perl core, not for modules independently distributed on
481 CPAN.
482
483 =head1 SEE ALSO
484
485 The F<Changes> file for an explanation of how to view exhaustive details on
486 what changed.
487
488 The F<INSTALL> file for how to build Perl.
489
490 The F<README> file for general stuff.
491
492 The F<Artistic> and F<Copying> files for copyright information.
493
494 =cut