This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Resurrect PerlIO-related typemap tests.
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 8dcc3739, except for:
5 803e389 rurban  CYG17 utf8 paths
6 d9298c1 rurban  mymalloc isn't thread safe
7
8 =head1 NAME
9
10 [ this is a template for a new perldelta file. Any text flagged as
11 XXX needs to be processed before release. ]
12
13 perldelta - what is new for perl v5.15.8
14
15 =head1 DESCRIPTION
16
17 This document describes differences between the 5.15.7 release and
18 the 5.15.8 release.
19
20 If you are upgrading from an earlier release such as 5.15.6, first read
21 L<perl5157delta>, which describes differences between 5.15.6 and
22 5.15.7.
23
24 =head1 Notice
25
26 XXX Any important notices here
27
28 =head1 Core Enhancements
29
30 XXX New core language features go here. Summarise user-visible core language
31 enhancements. Particularly prominent performance optimisations could go
32 here, but most should go in the L</Performance Enhancements> section.
33
34 [ List each enhancement as a =head2 entry ]
35
36 =head2 Improved ability to mix locales and Unicode, including UTF-8 locales
37
38 An optional parameter has been added to C<use locale>
39
40  use locale ':not_characters';
41
42 which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
43 portions of the current locale.  Instead, the character set is assumed
44 to be Unicode.  This allows locales and Unicode to be seamlessly mixed,
45 including the increasingly frequent UTF-8 locales.  When using this
46 hybrid form of locales, the C<:locale> layer to the L<open> pragma can
47 be used to interface with the file system, and there are CPAN modules
48 available for ARGV and environment variable conversions.
49
50 Full details are in L<perllocale>.
51
52 =head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
53
54 Unicode foldcase is an extension to lowercase that gives better results
55 when comparing two strings case-insensitively.  It has long been used
56 internally in regular expression C</i> matching.  Now it is available
57 explicitly through the new C<fc> function call (enabled by
58 S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
59 C<CORE::fc>) or through the new C<\F> sequence in double-quotish
60 strings.
61
62 Full details are in L<perlfunc/fc>.
63
64 =head2 C<_> in subroutine prototypes
65
66 The C<_> character in subroutine prototypes is now allowed before C<@> or
67 C<%>.
68
69 =head1 Security
70
71 XXX Any security-related notices go here.  In particular, any security
72 vulnerabilities closed should be noted here rather than in the
73 L</Selected Bug Fixes> section.
74
75 [ List each security issue as a =head2 entry ]
76
77 =head1 Incompatible Changes
78
79 XXX For a release on a stable branch, this section aspires to be:
80
81     There are no changes intentionally incompatible with 5.XXX.XXX
82     If any exist, they are bugs, and we request that you submit a
83     report.  See L</Reporting Bugs> below.
84
85 [ List each incompatible change as a =head2 entry ]
86
87 =head2 Special blocks called in void context
88
89 Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
90 called in void context.  This avoids wasteful copying of the result of the
91 last statement [perl #108794].
92
93 =head2 The C<overloading> pragma and regexp objects
94
95 With C<no overloading>, regular expression objects returned by C<qr//> are
96 now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
97 expression itself [perl #108780].
98
99 =head2 Two XS typemap Entries removed
100
101 Two presumably unused XS typemap entries have been removed from the
102 core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
103 a user of these, please see the instructions on how to regain them
104 in L<perlxstypemap>.
105
106 =head1 Deprecations
107
108 XXX Any deprecated features, syntax, modules etc. should be listed here.
109 In particular, deprecated modules should be listed here even if they are
110 listed as an updated module in the L</Modules and Pragmata> section.
111
112 [ List each deprecation as a =head2 entry ]
113
114 =head1 Performance Enhancements
115
116 XXX Changes which enhance performance without changing behaviour go here. There
117 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>, which prints stub
134 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
135 below.  A paragraph summary for important changes should then be added by hand.
136 In an ideal world, dual-life modules would have a F<Changes> file that could be
137 cribbed.
138
139 [ Within each section, list entries as a =item entry ]
140
141 =head2 New Modules and Pragmata
142
143 =over 4
144
145 =item *
146
147 XXX
148
149 =back
150
151 =head2 Updated Modules and Pragmata
152
153 =over 4
154
155 =item *
156
157 L<B> has been upgraded from version 1.33 to version 1.34.
158
159 C<B::COP> now has a C<stashflags> method, corresponding to a new internal
160 field added in 5.15.4 [perl #108860].
161
162 =item *
163
164 L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
165
166 =item *
167
168 L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
169
170 =item *
171
172 L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
173
174 =item *
175
176 L<DB_File> has been upgraded from version 1.824 to version 1.826.
177
178 =item *
179
180 L<diagnostics> has been upgraded from version 1.27 to version 1.28.
181
182 When searching for F<perldiag.pod>, it no longer uses paths that were only
183 relevant on Perl 5.004 and earlier.
184
185 =item *
186
187 L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
188
189 The new version comes with important tools for sharing typemaps between
190 different CPAN distributions.
191
192 =item *
193
194 L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
195
196 =item *
197
198 L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
199
200 This avoids a new core warning.
201
202 =item *
203
204 L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
205
206 =item *
207
208 L<Time::HiRes>  has been upgraded from version 1.9724 to version 1.9725.
209
210 C<Time::HiRes::stat()> no longer corrupts the Perl stack.
211
212 =item *
213
214 L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
215
216 The only change is to fix a formatting error in the Pod.
217
218 =back
219
220 =head2 Removed Modules and Pragmata
221
222 =over 4
223
224 =item *
225
226 XXX
227
228 =back
229
230 =head1 Documentation
231
232 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
233 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
234
235 =head2 New Documentation
236
237 XXX Changes which create B<new> files in F<pod/> go here.
238
239 =head3 L<perlxstypemap>
240
241 The new manual describes the XS typemapping mechanism in unprecedented
242 detail and combines new documentation with information extracted from
243 L<perlxs> and the previously unofficial list of all core typemaps.
244
245 =head3 L<XXX>
246
247 XXX Description of the purpose of the new file here
248
249 =head2 Changes to Existing Documentation
250
251 XXX Changes which significantly change existing files in F<pod/> go here.
252 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
253 section.
254
255 =head3 L<XXX>
256
257 =over 4
258
259 =item *
260
261 XXX Description of the change here
262
263 =back
264
265 =head1 Diagnostics
266
267 The following additions or changes have been made to diagnostic output,
268 including warnings and fatal error messages.  For the complete list of
269 diagnostic messages, see L<perldiag>.
270
271 XXX New or changed warnings emitted by the core's C<C> code go here. Also
272 include any changes in L<perldiag> that reconcile it to the C<C> code.
273
274 [ Within each section, list entries as a =item entry that links to perldiag,
275   e.g.
276
277   =item *
278
279   L<Invalid version object|perldiag/"Invalid version object">
280 ]
281
282 =head2 New Diagnostics
283
284 XXX Newly added diagnostic messages go here
285
286 =head3 New Errors
287
288 =over 4
289
290 =item *
291
292 XXX L<message|perldiag/"message">
293
294 =back
295
296 =head3 New Warnings
297
298 =over 4
299
300 =item *
301
302 XXX L<message|perldiag/"message">
303
304 =back
305
306 =head2 Changes to Existing Diagnostics
307
308 XXX Changes (i.e. rewording) of diagnostic messages go here
309
310 =over 4
311
312 =item *
313
314 XXX Describe change here
315
316 =back
317
318 =head1 Utility Changes
319
320 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
321 here. Most of these are built within the directories F<utils> and F<x2p>.
322
323 [ List utility changes as a =head3 entry for each utility and =item
324 entries for each change
325 Use L<XXX> with program names to get proper documentation linking. ]
326
327 =head3 L<XXX>
328
329 =over 4
330
331 =item *
332
333 XXX
334
335 =back
336
337 =head1 Configuration and Compilation
338
339 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
340 go here.  Any other changes to the Perl build process should be listed here.
341 However, any platform-specific changes should be listed in the
342 L</Platform Support> section, instead.
343
344 [ List changes as a =item entry ].
345
346 =over 4
347
348 =item *
349
350 XXX
351
352 =back
353
354 =head1 Testing
355
356 XXX Any significant changes to the testing of a freshly built perl should be
357 listed here.  Changes which create B<new> files in F<t/> go here as do any
358 large changes to the testing harness (e.g. when parallel testing was added).
359 Changes to existing files in F<t/> aren't worth summarising, although the bugs
360 that they represent may be covered elsewhere.
361
362 [ List each test improvement as a =item entry ]
363
364 =over 4
365
366 =item *
367
368 XXX
369
370 =item *
371
372 The test suite for typemaps has been extended to cover a larger fraction of
373 the core typemaps.
374
375 =back
376
377 =head1 Platform Support
378
379 XXX Any changes to platform support should be listed in the sections below.
380
381 [ Within the sections, list each platform as a =item entry with specific
382 changes as paragraphs below it. ]
383
384 =head2 New Platforms
385
386 XXX List any platforms that this version of perl compiles on, that previous
387 versions did not. These will either be enabled by new files in the F<hints/>
388 directories, or new subdirectories and F<README> files at the top level of the
389 source tree.
390
391 =over 4
392
393 =item XXX-some-platform
394
395 XXX
396
397 =back
398
399 =head2 Discontinued Platforms
400
401 XXX List any platforms that this version of perl no longer compiles on.
402
403 =over 4
404
405 =item XXX-some-platform
406
407 XXX
408
409 =back
410
411 =head2 Platform-Specific Notes
412
413 XXX List any changes for specific platforms. This could include configuration
414 and compilation changes or changes in portability/compatibility.  However,
415 changes within modules for platforms should generally be listed in the
416 L</Modules and Pragmata> section.
417
418 =over 4
419
420 =item XXX-some-platform
421
422 XXX
423
424 =back
425
426 =head1 Internal Changes
427
428 XXX Changes which affect the interface available to C<XS> code go here.
429 Other significant internal changes for future core maintainers should
430 be noted as well.
431
432 [ List each change as a =item entry ]
433
434 =over 4
435
436 =item *
437
438 XXX
439
440 =back
441
442 =head1 Selected Bug Fixes
443
444 XXX Important bug fixes in the core language are summarised here.
445 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
446 L</Modules and Pragmata>.
447
448 [ List each fix as a =item entry ]
449
450 =over 4
451
452 =item *
453
454 C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
455 by an overloaded object on the left-hand side.
456
457 =item *
458
459 C<stat _> no longer warns about unopened filehandles [perl #71002].
460
461 =item *
462
463 C<stat> on an unopened filehandle now warns consistently, instead of
464 skipping the warning at times.
465
466 =item *
467
468 A change in an earlier 5.15 release caused warning hints to propagate into
469 C<do $file>.  This has been fixed [rt.cpan.org #72767].
470
471 =item *
472
473 Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
474 after assigning C<${ qr// }> to a hash element and locking it with
475 L<Hash::Util>.  This could result in double frees, crashes or erratic
476 behaviour.
477
478 =item *
479
480 In 5.15.7, some typeglobs in the CORE namespace were made read-only by
481 mistake.  This has been fixed [rt.cpan.org #74289].
482
483 =item *
484
485 C<-t> now works when stacked with other filetest operators [perl #77388].
486
487 =item *
488
489 Stacked filetest operators now only call FETCH once on a tied argument.
490
491 =item *
492
493 C</.*/g> would sometimes refuse to match at the end of a string that ends
494 with "\n".  This has been fixed [perl #109206].
495
496 =item *
497
498 Method calls whose arguments were all surrounded with C<my()> or C<our()>
499 (as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
500 the subroutine.  This would prevent lvalue methods from returning certain
501 values.  Due to lvalue fixes earlier in the 5.15.x series, it would also
502 prevent non-lvalue methods from being called [perl #109264].
503
504 =for comment
505 This bug I<did> affect earlier stable releases.  It is just the last
506 sentence that does not apply to 5.14.
507
508 =back
509
510 =head1 Known Problems
511
512 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
513 tests that had to be C<TODO>ed for the release would be noted here, unless
514 they were specific to a particular platform (see below).
515
516 This is a list of some significant unfixed bugs, which are regressions
517 from either 5.XXX.XXX or 5.XXX.XXX.
518
519 [ List each fix as a =item entry ]
520
521 =over 4
522
523 =item *
524
525 XXX
526
527 =back
528
529 =head1 Obituary
530
531 XXX If any significant core contributor has died, we've added a short obituary
532 here.
533
534 =head1 Acknowledgements
535
536 XXX Generate this with:
537
538   perl Porting/acknowledgements.pl v5.15.7..HEAD
539
540 =head1 Reporting Bugs
541
542 If you find what you think is a bug, you might check the articles
543 recently posted to the comp.lang.perl.misc newsgroup and the perl
544 bug database at http://rt.perl.org/perlbug/ .  There may also be
545 information at http://www.perl.org/ , the Perl Home Page.
546
547 If you believe you have an unreported bug, please run the L<perlbug>
548 program included with your release.  Be sure to trim your bug down
549 to a tiny but sufficient test case.  Your bug report, along with the
550 output of C<perl -V>, will be sent off to perlbug@perl.org to be
551 analysed by the Perl porting team.
552
553 If the bug you are reporting has security implications, which make it
554 inappropriate to send to a publicly archived mailing list, then please send
555 it to perl5-security-report@perl.org. This points to a closed subscription
556 unarchived mailing list, which includes
557 all the core committers, who will be able
558 to help assess the impact of issues, figure out a resolution, and help
559 co-ordinate the release of patches to mitigate or fix the problem across all
560 platforms on which Perl is supported. Please only use this address for
561 security issues in the Perl core, not for modules independently
562 distributed on CPAN.
563
564 =head1 SEE ALSO
565
566 The F<Changes> file for an explanation of how to view exhaustive details
567 on what changed.
568
569 The F<INSTALL> file for how to build Perl.
570
571 The F<README> file for general stuff.
572
573 The F<Artistic> and F<Copying> files for copyright information.
574
575 =cut