This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
f608decb5df2b13e4a26bb935c60f1cde37125c9
[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.17.8
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.17.7 release and the 5.17.8
13 release.
14
15 If you are upgrading from an earlier release such as 5.17.6, first read
16 L<perl5177delta>, which describes differences between 5.17.6 and 5.17.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 [ List each enhancement as a =head2 entry ]
29
30 =head2 Regular Expression Set Operations
31
32 This is an experimental feature to allow matching against the the union,
33 intersection, etc., of sets of code points, similar to
34 L<Unicode::Regex::Set>.  It can also be used to extend C</x> processing
35 to [bracketed] character classes, and as a replacement of user-defined
36 properties, allowing more complex expressions than they do.  See
37 L<perlre/(?[ ])>.
38
39 =head1 Security
40
41 XXX Any security-related notices go here.  In particular, any security
42 vulnerabilities closed should be noted here rather than in the
43 L</Selected Bug Fixes> section.
44
45 [ List each security issue as a =head2 entry ]
46
47 =head1 Incompatible Changes
48
49 XXX For a release on a stable branch, this section aspires to be:
50
51     There are no changes intentionally incompatible with 5.XXX.XXX
52     If any exist, they are bugs, and we request that you submit a
53     report.  See L</Reporting Bugs> below.
54
55 [ List each incompatible change as a =head2 entry ]
56
57 =head1 Deprecations
58
59 XXX Any deprecated features, syntax, modules etc. should be listed here.  In
60 particular, deprecated modules should be listed here even if they are listed as
61 an updated module in the L</Modules and Pragmata> section.
62
63 [ List each deprecation as a =head2 entry ]
64
65 =head2 Various XS-callable functions are now deprecated
66
67 All the functions used to classify characters will be removed from a
68 future version of Perl, and should not be used.  With participating C
69 compilers (e.g., gcc), compiling any file that uses any of these will
70 generate a warning.  These were not intended for public use; there are
71 equivalent, faster, macros for most of them.
72 See L<perlapi/Character classes>.  The complete list (including some
73 that were deprecated in 5.17.7) is:
74 C<is_uni_alnum>, C<is_uni_alnumc>, C<is_uni_alnumc_lc>,
75 C<is_uni_alnum_lc>, C<is_uni_alpha>, C<is_uni_alpha_lc>,
76 C<is_uni_ascii>, C<is_uni_ascii_lc>, C<is_uni_blank>,
77 C<is_uni_blank_lc>, C<is_uni_cntrl>, C<is_uni_cntrl_lc>,
78 C<is_uni_digit>, C<is_uni_digit_lc>, C<is_uni_graph>,
79 C<is_uni_graph_lc>, C<is_uni_idfirst>, C<is_uni_idfirst_lc>,
80 C<is_uni_lower>, C<is_uni_lower_lc>, C<is_uni_print>,
81 C<is_uni_print_lc>, C<is_uni_punct>, C<is_uni_punct_lc>,
82 C<is_uni_space>, C<is_uni_space_lc>, C<is_uni_upper>,
83 C<is_uni_upper_lc>, C<is_uni_xdigit>, C<is_uni_xdigit_lc>,
84 C<is_utf8_alnum>, C<is_utf8_alnumc>, C<is_utf8_alpha>,
85 C<is_utf8_ascii>, C<is_utf8_blank>, C<is_utf8_char>,
86 C<is_utf8_cntrl>, C<is_utf8_digit>, C<is_utf8_graph>,
87 C<is_utf8_idcont>, C<is_utf8_idfirst>, C<is_utf8_lower>,
88 C<is_utf8_mark>, C<is_utf8_perl_space>, C<is_utf8_perl_word>,
89 C<is_utf8_posix_digit>, C<is_utf8_print>, C<is_utf8_punct>,
90 C<is_utf8_space>, C<is_utf8_upper>, C<is_utf8_xdigit>,
91 C<is_utf8_xidcont>, C<is_utf8_xidfirst>.
92
93 In addition these three functions that have never worked properly are
94 deprecated:
95 C<to_uni_lower_lc>, C<to_uni_title_lc>, and C<to_uni_upper_lc>.
96
97 =head2 Certain rare uses of backslashes within regexes are now deprectated
98
99 There are three pairs of characters that Perl recognizes as
100 metacharacters in regular expression patterns: C<{}>, C<[]>, and C<()>.
101 These can be used as well to delimit patterns, as in:
102
103  m{foo}
104  s(foo)(bar)
105
106 Since they are metacharacters, they have special meaning to regular
107 expression patterns, and it turns out that you can't turn off that
108 special meaning by the normal means of preceding them with a backslash,
109 if you use them, paired, within a pattern delimitted by them.  For
110 example, in
111
112  m{foo\{1,3\}}
113
114 the backslashes do not change the behavior, and this matches
115 S<C<"f o">> followed by one to three more occurrences of C<"o">.
116
117 Usages like this, where they are interpreted as metacharacters, are
118 exceedingly rare; we think there are none, for example, in all of CPAN.
119 Hence, this deprecation should affect very little code.  It does give
120 notice, however, that any such code needs to change, which will in turn
121 allow us to change the behavior in future Perl versions so that the
122 backslashes do have an effect, and without fear that we are silently
123 breaking any existing code.
124
125 =head1 Performance Enhancements
126
127 XXX Changes which enhance performance without changing behaviour go here.
128 There may well be none in a stable release.
129
130 [ List each enhancement as a =item entry ]
131
132 =over 4
133
134 =item *
135
136 XXX
137
138 =back
139
140 =head1 Modules and Pragmata
141
142 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
143 go here.  If Module::CoreList is updated, generate an initial draft of the
144 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
145 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
146 below.  A paragraph summary for important changes should then be added by hand.
147 In an ideal world, dual-life modules would have a F<Changes> file that could be
148 cribbed.
149
150 [ Within each section, list entries as a =item entry ]
151
152 =head2 New Modules and Pragmata
153
154 =over 4
155
156 =item *
157
158 XXX
159
160 =back
161
162 =head2 Updated Modules and Pragmata
163
164 =over 4
165
166 =item *
167
168 L<XXX> has been upgraded from version A.xx to B.yy.
169
170 =back
171
172 =head2 Removed Modules and Pragmata
173
174 =over 4
175
176 =item *
177
178 XXX
179
180 =back
181
182 =head1 Documentation
183
184 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
185 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
186
187 =head2 New Documentation
188
189 XXX Changes which create B<new> files in F<pod/> go here.
190
191 =head3 L<XXX>
192
193 XXX Description of the purpose of the new file here
194
195 =head2 Changes to Existing Documentation
196
197 XXX Changes which significantly change existing files in F<pod/> go here.
198 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
199 section.
200
201 =head3 L<XXX>
202
203 =over 4
204
205 =item *
206
207 XXX Description of the change here
208
209 =back
210
211 =head1 Diagnostics
212
213 The following additions or changes have been made to diagnostic output,
214 including warnings and fatal error messages.  For the complete list of
215 diagnostic messages, see L<perldiag>.
216
217 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
218 include any changes in L<perldiag> that reconcile it to the C<C> code.
219
220 =head2 New Diagnostics
221
222 XXX Newly added diagnostic messages go under here, separated into New Errors
223 and New Warnings
224
225 =head3 New Errors
226
227 =over 4
228
229 =item *
230
231 XXX L<message|perldiag/"message">
232
233 =back
234
235 =head3 New Warnings
236
237 =over 4
238
239 =item *
240
241 L<'%s' resolved to '\o{%s}%d'|perldiag/"'%s' resolved to '\o{%s}%d'">
242
243 =item *
244
245 XXX L<message|perldiag/"message">
246
247
248 =back
249
250 =head2 Changes to Existing Diagnostics
251
252 XXX Changes (i.e. rewording) of diagnostic messages go here
253
254 =over 4
255
256 =item *
257
258 XXX Describe change here
259
260 =back
261
262 =head1 Utility Changes
263
264 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
265 Most of these are built within the directories F<utils> and F<x2p>.
266
267 [ List utility changes as a =head3 entry for each utility and =item
268 entries for each change
269 Use L<XXX> with program names to get proper documentation linking. ]
270
271 =head3 L<XXX>
272
273 =over 4
274
275 =item *
276
277 XXX
278
279 =back
280
281 =head1 Configuration and Compilation
282
283 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
284 go here.  Any other changes to the Perl build process should be listed here.
285 However, any platform-specific changes should be listed in the
286 L</Platform Support> section, instead.
287
288 [ List changes as a =item entry ].
289
290 =over 4
291
292 =item *
293
294 XXX
295
296 =back
297
298 =head1 Testing
299
300 XXX Any significant changes to the testing of a freshly built perl should be
301 listed here.  Changes which create B<new> files in F<t/> go here as do any
302 large changes to the testing harness (e.g. when parallel testing was added).
303 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
304 that they represent may be covered elsewhere.
305
306 [ List each test improvement as a =item entry ]
307
308 =over 4
309
310 =item *
311
312 XXX
313
314 =back
315
316 =head1 Platform Support
317
318 XXX Any changes to platform support should be listed in the sections below.
319
320 [ Within the sections, list each platform as a =item entry with specific
321 changes as paragraphs below it. ]
322
323 =head2 New Platforms
324
325 XXX List any platforms that this version of perl compiles on, that previous
326 versions did not.  These will either be enabled by new files in the F<hints/>
327 directories, or new subdirectories and F<README> files at the top level of the
328 source tree.
329
330 =over 4
331
332 =item XXX-some-platform
333
334 XXX
335
336 =back
337
338 =head2 Discontinued Platforms
339
340 =over 4
341
342 =item Rhapsody
343
344 Support for Rhapsody has been removed.
345
346 =back
347
348 =head2 Platform-Specific Notes
349
350 XXX List any changes for specific platforms.  This could include configuration
351 and compilation changes or changes in portability/compatibility.  However,
352 changes within modules for platforms should generally be listed in the
353 L</Modules and Pragmata> section.
354
355 =over 4
356
357 =item Windows
358
359 Perl can now be built using Microsoft's Visual C++ 2012 compiler by specifying
360 CCTYPE=MSVC110 (or MSVC110FREE if you are using the free Express edition for
361 Windows Desktop) in F<win32/Makefile>.
362
363 =back
364
365 =head1 Internal Changes
366
367 XXX Changes which affect the interface available to C<XS> code go here.  Other
368 significant internal changes for future core maintainers should be noted as
369 well.
370
371 [ List each change as a =item entry ]
372
373 =over 4
374
375 =item *
376
377 XXX
378
379 =back
380
381 =head1 Selected Bug Fixes
382
383 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
384 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
385
386 [ List each fix as a =item entry ]
387
388 =over 4
389
390 =item *
391
392 A bug in the core typemap caused any C types that map to the T_BOOL core
393 typemap entry to not be set, updated, or modified when the T_BOOL variable was
394 used in an OUTPUT: section with an exception for RETVAL. T_BOOL in an INPUT:
395 section was not affected. Using a T_BOOL return type for an XSUB (RETVAL)
396 was not affected. A side effect of fixing this bug is, if a T_BOOL is specified
397 in the OUTPUT: section (which previous did nothing to the SV), and a read only
398 SV (literal) is passed to the XSUB, croaks like "Modification of a read-only
399 value attempted" will happen. [perl #115796]
400
401 =item *
402
403 On many platforms, providing a directory name as the script name caused perl
404 to do nothing and report success.  It should now universally report an error
405 and exit nonzero. [perl #61362]
406
407 =back
408
409 =head1 Known Problems
410
411 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
412 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
413 platform specific bugs also go here.
414
415 [ List each fix as a =item entry ]
416
417 =over 4
418
419 =item *
420
421 XXX
422
423 =back
424
425 =head1 Obituary
426
427 XXX If any significant core contributor has died, we've added a short obituary
428 here.
429
430 =head1 Acknowledgements
431
432 XXX Generate this with:
433
434   perl Porting/acknowledgements.pl v5.17.7..HEAD
435
436 =head1 Reporting Bugs
437
438 If you find what you think is a bug, you might check the articles recently
439 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
440 http://rt.perl.org/perlbug/ .  There may also be information at
441 http://www.perl.org/ , the Perl Home Page.
442
443 If you believe you have an unreported bug, please run the L<perlbug> program
444 included with your release.  Be sure to trim your bug down to a tiny but
445 sufficient test case.  Your bug report, along with the output of C<perl -V>,
446 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
447
448 If the bug you are reporting has security implications, which make it
449 inappropriate to send to a publicly archived mailing list, then please send it
450 to perl5-security-report@perl.org.  This points to a closed subscription
451 unarchived mailing list, which includes all the core committers, who will be
452 able to help assess the impact of issues, figure out a resolution, and help
453 co-ordinate the release of patches to mitigate or fix the problem across all
454 platforms on which Perl is supported.  Please only use this address for
455 security issues in the Perl core, not for modules independently distributed on
456 CPAN.
457
458 =head1 SEE ALSO
459
460 The F<Changes> file for an explanation of how to view exhaustive details on
461 what changed.
462
463 The F<INSTALL> file for how to build Perl.
464
465 The F<README> file for general stuff.
466
467 The F<Artistic> and F<Copying> files for copyright information.
468
469 =cut