This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document Unicode doc fix
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 779bcb7d, except for:
5 ad9e76a8629ed1ac483f0a7ed0e4da40ac5a1a00
6 d9a4b459f94297889956ac3adc42707365f274c2
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.13.8
14
15 =head1 DESCRIPTION
16
17 This document describes differences between the 5.13.8 release and
18 the 5.13.7 release.
19
20 If you are upgrading from an earlier release such as 5.13.6, first read
21 L<perl5137delta>, which describes differences between 5.13.6 and
22 5.13.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 C<-d:-foo> calls C<Devel::foo::unimport>
37
38 The syntax C<-dI<B<:>foo>> was extended in 5.6.1 to make C<-dI<:fooB<=bar>>>
39 equivalent to C<-MDevel::foo=bar>, which expands
40 internally to C<use Devel::foo 'bar';>.
41 F<perl> now allows prefixing the module name with C<->, with the same
42 semantics as C<-M>, I<i.e.>
43
44 =over 4
45
46 =item C<-d:-foo>
47
48 Equivalent to C<-M-Devel::foo>, expands to
49 C<no Devel::foo;>, calls C<< Devel::foo->unimport() >>
50 if the method exists.
51
52 =item C<-d:-foo=bar>
53
54 Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>,
55 calls C<< Devel::foo->unimport('bar') >> if the method exists.
56
57 =back
58
59 This is particularly useful to suppresses the default actions of a
60 C<Devel::*> module's C<import> method whilst still loading it for debugging.
61
62 =head2 Filehandle method calls load IO::File on demand
63
64 When a method call on a filehandle would die because the method can not
65 be resolved and L<IO::File> has not been loaded, Perl now loads IO::File
66 via C<require> and attempts method resolution again:
67
68   open my $fh, ">", $file;
69   $fh->binmode(":raw");     # loads IO::File and succeeds
70
71 This also works for globs like STDOUT, STDERR and STDIN:
72
73   STDOUT->autoflush(1);
74
75 Because this on-demand load only happens if method resolution fails, the
76 legacy approach of manually loading an IO::File parent class for partial
77 method support still works as expected:
78
79   use IO::Handle;
80   open my $fh, ">", $file;
81   $fh->autoflush(1);        # IO::File not loaded
82
83 =head2 Full functionality for C<use feature 'unicode_strings'>
84
85 This release provides full functionality for C<use feature
86 'unicode_strings'>.  Under its scope, all string operations executed and
87 regular expressions compiled (even if executed outside its scope) have
88 Unicode semantics.   See L<feature>.
89
90 This feature avoids the "Unicode Bug" (See
91 L<perlunicode/The "Unicode Bug"> for details.)  If their is a
92 possibility that your code will process Unicode strings, you are
93 B<strongly> encouraged to use this subpragma to avoid nasty surprises.
94
95 =head1 Security
96
97 XXX Any security-related notices go here.  In particular, any security
98 vulnerabilities closed should be noted here rather than in the
99 L</Selected Bug Fixes> section.
100
101 [ List each security issue as a =head2 entry ]
102
103 =head1 Incompatible Changes
104
105 =head2 Attempting to use C<:=> as an empty attribute list is now a syntax error
106
107 Previously C<my $pi := 4;> was exactly equivalent to C<my $pi : = 4;>,
108 with the C<:> being treated as the start of an attribute list, ending before
109 the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now
110 a syntax error. This will allow the future use of C<:=> as a new token.
111
112 We find no Perl 5 code on CPAN using this construction, outside the core's
113 tests for it, so we believe that this change will have very little impact on
114 real-world codebases.
115
116 If it is absolutely necessary to have empty attribute lists (for example,
117 because of a code generator) then avoid the error by adding a space before
118 the C<=>.
119
120 =head1 Deprecations
121
122 XXX Any deprecated features, syntax, modules etc. should be listed here.
123 In particular, deprecated modules should be listed here even if they are
124 listed as an updated module in the L</Modules and Pragmata> section.
125
126 [ List each deprecation as a =head2 entry ]
127
128 =head2 C<?PATTERN?> is deprecated
129
130 C<?PATTERN?> (without the initial m) has been deprecated and now produces
131 a warning.
132
133 =head2 C<sv_compile_2op> is now deprecated
134
135 The C<sv_compile_2op> is now deprecated, and will be removed. Searches suggest
136 that nothing on CPAN is using it, so this should have zero impact.
137
138 It attempted to provide an API to compile code down to an optree, but failed
139 to bind correctly to lexicals in the enclosing scope. It's not possible to
140 fix this problem within the constraints of its parameters and return value.
141
142 =head1 Performance Enhancements
143
144 XXX Changes which enhance performance without changing behaviour go here. There
145 may well be none in a stable release.
146
147 [ List each enhancement as a =item entry ]
148
149 =over 4
150
151 =item *
152
153 XXX
154
155 =back
156
157 =head1 Modules and Pragmata
158
159 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
160 go here.  If Module::CoreList is updated, generate an initial draft of the
161 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
162 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
163 below.  A paragraph summary for important changes should then be added by hand.
164 In an ideal world, dual-life modules would have a F<Changes> file that could be
165 cribbed.
166
167 [ Within each section, list entries as a =item entry ]
168
169 =head2 New Modules and Pragmata
170
171 =over 4
172
173 =item *
174
175 XXX
176
177 =back
178
179 =head2 Updated Modules and Pragmata
180
181 =over 4
182
183 =item *
184
185 C<if> has been upgraded from 0.06 to 0.0601.
186
187 =item *
188
189 C<IPC::Cmd> has been upgraded from 0.64 to 0.66
190
191 Resolves an issue with splitting Win32 command lines
192 and documentation enhancements.
193
194 =item *
195
196 C<Memoize> has been upgraded from version 1.01_03 to 1.02.
197
198 =item *
199
200 C<MIME::Base64> has been upgraded from 3.10 to 3.13
201
202 Now provides encode_base64url and decode_base64url functions to process
203 the base64 scheme for "URL applications".
204
205 =item *
206
207 C<mro> has been upgraded from version 1.05 to 1.06.
208
209 C<next::method> I<et al.> now take into account that every class inherits
210 from UNIVERSAL
211 L<[perl #68654]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68654>.
212
213 =item *
214
215 C<overload> has been upgraded from 1.11 to 1.12.
216
217 =item *
218
219 C<PerlIO::scalar> has been upgraded from 0.10 to 0.11.
220
221 A C<read> after a C<seek> beyond the end of the string no longer thinks it
222 has data to read
223 L<[perl #78716]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78716>.
224
225 =item *
226
227 C<re> has been upgraded from 0.14 to 0.15.
228
229 =item *
230
231 C<Socket> has been upgraded from 1.91 to 1.92.
232
233 It has several new functions for handling IPv6 addresses.
234
235 =item *
236
237 C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01.
238
239 =item *
240
241 C<Unicode::Collate> has been upgraded from 0.67 to 0.68
242
243 =item *
244
245 C<Unicode::UCD> has been upgraded from 0.29 to 0.30.
246
247 =item *
248
249 C<version> has been upgraded from 0.82 to 0.86.
250
251 =back
252
253 =head2 Removed Modules and Pragmata
254
255 =over 4
256
257 =item *
258
259 XXX
260
261 =back
262
263 =head1 Documentation
264
265 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
266 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
267
268 =head2 New Documentation
269
270 XXX Changes which create B<new> files in F<pod/> go here.
271
272 =head3 L<XXX>
273
274 XXX Description of the purpose of the new file here
275
276 =head2 Changes to Existing Documentation
277
278 XXX Changes which significantly change existing files in F<pod/> go here.
279 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
280 section.
281
282 =head3 L<XXX>
283
284 =over 4
285
286 =item *
287
288 XXX Description of the change here
289
290 =back
291
292 =head1 Diagnostics
293
294 The following additions or changes have been made to diagnostic output,
295 including warnings and fatal error messages.  For the complete list of
296 diagnostic messages, see L<perldiag>.
297
298 XXX New or changed warnings emitted by the core's C<C> code go here. Also
299 include any changes in L<perldiag> that reconcile it to the C<C> code.
300
301 [ Within each section, list entries as a =item entry ]
302
303 =head2 New Diagnostics
304
305 XXX Newly added diagnostic messages go here
306
307 =over 4
308
309 =item *
310
311 There is a new "Closure prototype called" error.
312
313 =back
314
315 =head2 Changes to Existing Diagnostics
316
317 XXX Changes (i.e. rewording) of diagnostic messages go here
318
319 =over 4
320
321 =item *
322
323 The "Found = in conditional" warning that is emitted when a constant is
324 assigned to a variable in a condition is now withheld if the constant is
325 actually a subroutine or one generated by C<use constant>, since the value
326 of the constant may not be known at the time the program is written
327 L<[perl #77762]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77762>.
328
329 =back
330
331 =head1 Utility Changes
332
333 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
334 here. Most of these are built within the directories F<utils> and F<x2p>.
335
336 [ List utility changes as a =head3 entry for each utility and =item
337 entries for each change
338 Use L<XXX> with program names to get proper documentation linking. ]
339
340 =head3 L<XXX>
341
342 =over 4
343
344 =item *
345
346 XXX
347
348 =back
349
350 =head1 Configuration and Compilation
351
352 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
353 go here.  Any other changes to the Perl build process should be listed here.
354 However, any platform-specific changes should be listed in the
355 L</Platform Support> section, instead.
356
357 [ List changes as a =item entry ].
358
359 =over 4
360
361 =item *
362
363 XXX
364
365 =back
366
367 =head1 Testing
368
369 XXX Any significant changes to the testing of a freshly built perl should be
370 listed here.  Changes which create B<new> files in F<t/> go here as do any
371 large changes to the testing harness (e.g. when parallel testing was added).
372 Changes to existing files in F<t/> aren't worth summarising, although the bugs
373 that they represent may be covered elsewhere.
374
375 [ List each test improvement as a =item entry ]
376
377 =over 4
378
379 =item *
380
381 XXX
382
383 =back
384
385 =head1 Platform Support
386
387 XXX Any changes to platform support should be listed in the sections below.
388
389 [ Within the sections, list each platform as a =item entry with specific
390 changes as paragraphs below it. ]
391
392 =head2 New Platforms
393
394 XXX List any platforms that this version of perl compiles on, that previous
395 versions did not. These will either be enabled by new files in the F<hints/>
396 directories, or new subdirectories and F<README> files at the top level of the
397 source tree.
398
399 =over 4
400
401 =item XXX-some-platform
402
403 XXX
404
405 =back
406
407 =head2 Discontinued Platforms
408
409 XXX List any platforms that this version of perl no longer compiles on.
410
411 =over 4
412
413 =item XXX-some-platform
414
415 XXX
416
417 =back
418
419 =head2 Platform-Specific Notes
420
421 XXX List any changes for specific platforms. This could include configuration
422 and compilation changes or changes in portability/compatibility.  However,
423 changes within modules for platforms should generally be listed in the
424 L</Modules and Pragmata> section.
425
426 =over 4
427
428 =item NetBSD
429
430 The NetBSD hints file has been changed to make the system's malloc the
431 default.
432
433 =back
434
435 =head1 Internal Changes
436
437 XXX Changes which affect the interface available to C<XS> code go here.
438 Other significant internal changes for future core maintainers should
439 be noted as well.
440
441 [ List each test improvement as a =item entry ]
442
443 =over 4
444
445 =item *
446
447 C<mg_findext> and C<sv_unmagicext> have been added.
448
449 These new functions allow extension authors to find and remove magic attached to
450 scalars based on both the magic type and the magic virtual table, similar to how
451 C<sv_magicext> attaches magic of a certain type and with a given virtual table
452 to a scalar. This eliminates the need for extensions to walk the list of
453 C<MAGIC> pointers of an C<SV> to find the magic that belongs to them.
454
455 =back
456
457 =head1 Selected Bug Fixes
458
459 XXX Important bug fixes in the core language are summarised here.
460 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
461 L</Modules and Pragmata>.
462
463 [ List each fix as a =item entry ]
464
465 =over 4
466
467 =item *
468
469 C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving
470 identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block
471 was erroneously executing the C<use feature ':5.12.0'> and
472 C<use strict; use warnings;> behaviour, which only C<use> was documented to
473 provide
474 L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>.
475
476 =item *
477
478 C<use 5.42>
479 L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>,
480 C<use 6> and C<no 5> no longer leak memory.
481
482 =item *
483
484 C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds.
485
486 =item *
487
488 PerlIO no longer crashes when called recursively, e.g., from a signal
489 handler. Now it just leaks memory
490 L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>.
491
492 =item *
493
494 Defining a constant with the same name as one of perl's special blocks
495 (e.g., INIT) stopped working in 5.12.0, but has now been fixed
496 L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>.
497
498 =item *
499
500 A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used
501 to be stringified, even if the hash was tied
502 L<[perl #79178]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79178>.
503
504 =item *
505
506 A closure containing an C<if> statement followed by a constant or variable
507 is no longer treated as a constant
508 L<[perl #63540]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63540>.
509
510 =item *
511
512 Calling a closure prototype (what is passed to an attribute handler for a
513 closure) now results in a "Closure prototype called" error message
514 L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>.
515
516 =item *
517
518 A regular expression optimisation would sometimes cause a match with a
519 C<{n,m}> quantifier to fail when it should match
520 L<[perl #79152]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79152>.
521
522 =item *
523
524 What has become known as the "Unicode Bug" is resolved in this release.
525 Under C<use feature 'unicode_strings'>, the internal storage format of a
526 string no longer affects the external semantics.  There are two known
527 exceptions.  User-defined case changing functions, which are planned to
528 be deprecated in 5.14, require utf8-encoded strings to function; and the
529 character C<LATIN SMALL LETTER SHARP S> in regular expression
530 case-insensitive matching has a somewhat different set of bugs depending
531 on the internal storage format.  Case-insensitive matching of all
532 characters that have multi-character matches, as this one does, is
533 problematical in Perl.
534 L<[perl #58182]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=58182>.
535
536 =back
537
538 =head1 Known Problems
539
540 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
541 tests that had to be C<TODO>ed for the release would be noted here, unless
542 they were specific to a particular platform (see below).
543
544 This is a list of some significant unfixed bugs, which are regressions
545 from either 5.XXX.XXX or 5.XXX.XXX.
546
547 [ List each fix as a =item entry ]
548
549 =over 4
550
551 =item *
552
553 XXX
554
555 =back
556
557 =head1 Obituary
558
559 XXX If any significant core contributor has died, we've added a short obituary
560 here.
561
562 =head1 Acknowledgements
563
564 XXX The list of people to thank goes here.
565
566 =head1 Reporting Bugs
567
568 If you find what you think is a bug, you might check the articles
569 recently posted to the comp.lang.perl.misc newsgroup and the perl
570 bug database at http://rt.perl.org/perlbug/ .  There may also be
571 information at http://www.perl.org/ , the Perl Home Page.
572
573 If you believe you have an unreported bug, please run the L<perlbug>
574 program included with your release.  Be sure to trim your bug down
575 to a tiny but sufficient test case.  Your bug report, along with the
576 output of C<perl -V>, will be sent off to perlbug@perl.org to be
577 analysed by the Perl porting team.
578
579 If the bug you are reporting has security implications, which make it
580 inappropriate to send to a publicly archived mailing list, then please send
581 it to perl5-security-report@perl.org. This points to a closed subscription
582 unarchived mailing list, which includes all the core committers, who be able
583 to help assess the impact of issues, figure out a resolution, and help
584 co-ordinate the release of patches to mitigate or fix the problem across all
585 platforms on which Perl is supported. Please only use this address for
586 security issues in the Perl core, not for modules independently
587 distributed on CPAN.
588
589 =head1 SEE ALSO
590
591 The F<Changes> file for an explanation of how to view exhaustive details
592 on what changed.
593
594 The F<INSTALL> file for how to build Perl.
595
596 The F<README> file for general stuff.
597
598 The F<Artistic> and F<Copying> files for copyright information.
599
600 =cut