Commit | Line | Data |
---|---|---|
9f7a72d0 Z |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5138delta - what is new for perl v5.13.8 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.13.7 release and | |
10 | the 5.13.8 release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.13.6, first read | |
13 | L<perl5137delta>, which describes differences between 5.13.6 and | |
14 | 5.13.7. | |
15 | ||
16 | =head1 Core Enhancements | |
17 | ||
18 | =head2 C<-d:-foo> calls C<Devel::foo::unimport> | |
19 | ||
20 | The syntax C<-dI<B<:>foo>> was extended in 5.6.1 to make C<-dI<:fooB<=bar>>> | |
21 | equivalent to C<-MDevel::foo=bar>, which expands | |
22 | internally to C<use Devel::foo 'bar';>. | |
23 | F<perl> now allows prefixing the module name with C<->, with the same | |
24 | semantics as C<-M>, I<i.e.> | |
25 | ||
26 | =over 4 | |
27 | ||
28 | =item C<-d:-foo> | |
29 | ||
30 | Equivalent to C<-M-Devel::foo>, expands to | |
31 | C<no Devel::foo;>, calls C<< Devel::foo->unimport() >> | |
32 | if the method exists. | |
33 | ||
34 | =item C<-d:-foo=bar> | |
35 | ||
36 | Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>, | |
37 | calls C<< Devel::foo->unimport('bar') >> if the method exists. | |
38 | ||
39 | =back | |
40 | ||
41 | This is particularly useful to suppresses the default actions of a | |
42 | C<Devel::*> module's C<import> method whilst still loading it for debugging. | |
43 | ||
44 | =head2 Filehandle method calls load L<IO::File> on demand | |
45 | ||
46 | When a method call on a filehandle would die because the method cannot | |
47 | be resolved, and L<IO::File> has not been loaded, Perl now loads L<IO::File> | |
48 | via C<require> and attempts method resolution again: | |
49 | ||
50 | open my $fh, ">", $file; | |
51 | $fh->binmode(":raw"); # loads IO::File and succeeds | |
52 | ||
53 | This also works for globs like STDOUT, STDERR and STDIN: | |
54 | ||
55 | STDOUT->autoflush(1); | |
56 | ||
57 | Because this on-demand load only happens if method resolution fails, the | |
58 | legacy approach of manually loading an L<IO::File> parent class for partial | |
59 | method support still works as expected: | |
60 | ||
61 | use IO::Handle; | |
62 | open my $fh, ">", $file; | |
63 | $fh->autoflush(1); # IO::File not loaded | |
64 | ||
65 | =head2 Full functionality for C<use feature 'unicode_strings'> | |
66 | ||
67 | This release provides full functionality for C<use feature | |
68 | 'unicode_strings'>. Under its scope, all string operations executed and | |
69 | regular expressions compiled (even if executed outside its scope) have | |
70 | Unicode semantics. See L<feature>. | |
71 | ||
72 | This feature avoids most forms of the "Unicode Bug" (See | |
73 | L<perlunicode/The "Unicode Bug"> for details.) If there is a | |
74 | possibility that your code will process Unicode strings, you are | |
75 | B<strongly> encouraged to use this subpragma to avoid nasty surprises. | |
76 | ||
77 | The availability of this should strongly affect the whole tone of | |
78 | various documents, such as L<perlunicode> and L<perluniintro>, but this | |
79 | work has not been done yet. | |
80 | ||
81 | =head2 Exception Handling Backcompat Hack | |
82 | ||
83 | When an exception is thrown in an C<eval BLOCK>, C<$@> is now set before | |
84 | unwinding, as well as being set after unwinding as the eval block exits. This | |
85 | early setting supports code that has historically treated C<$@> during unwinding | |
86 | as an indicator of whether the unwinding was due to an exception. These modules | |
87 | had been broken by 5.13.1's change from setting C<$@> early to setting it late. | |
88 | This double setting arrangement is a stopgap until the reason for unwinding can | |
89 | be made properly introspectable. C<$@> has never been a reliable indicator of | |
90 | the reason for unwinding. | |
91 | ||
92 | =head2 printf-like functions understand post-1980 size modifiers | |
93 | ||
94 | Perl's printf and sprintf operators, and Perl's internal printf replacement | |
95 | function, now understand the C90 size modifiers "hh" (C<char>), "z" | |
96 | (C<size_t>), and "t" (C<ptrdiff_t>). Also, when compiled with a C99 | |
97 | compiler, Perl now understands the size modifier "j" (C<intmax_t>). | |
98 | ||
99 | So, for example, on any modern machine, C<sprintf('%hhd', 257)> returns '1'. | |
100 | ||
101 | =head2 DTrace probes now include package name | |
102 | ||
103 | The DTrace probes now include an additional argument (C<arg3>) which contains | |
104 | the package the subroutine being entered or left was compiled in. | |
105 | ||
106 | For example using the following DTrace script: | |
107 | ||
108 | perl$target:::sub-entry | |
109 | { | |
110 | printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3)); | |
111 | } | |
112 | ||
113 | and then running: | |
114 | ||
115 | perl -e'sub test { }; test' | |
116 | ||
117 | DTrace will print: | |
118 | ||
119 | main::test | |
120 | ||
121 | =head2 Stacked labels | |
122 | ||
123 | Multiple statement labels can now appear before a single statement. | |
124 | ||
125 | =head1 Incompatible Changes | |
126 | ||
127 | =head2 C<:=> is now a syntax error | |
128 | ||
129 | Previously C<my $pi := 4;> was exactly equivalent to C<my $pi : = 4;>, | |
130 | with the C<:> being treated as the start of an attribute list, ending before | |
131 | the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now | |
132 | a syntax error. This will allow the future use of C<:=> as a new token. | |
133 | ||
134 | We find no Perl 5 code on CPAN using this construction, outside the core's | |
135 | tests for it, so we believe that this change will have very little impact on | |
136 | real-world codebases. | |
137 | ||
138 | If it is absolutely necessary to have empty attribute lists (for example, | |
139 | because of a code generator) then avoid the error by adding a space before | |
140 | the C<=>. | |
141 | ||
142 | =head2 Run-time code block in regular expressions | |
143 | ||
144 | Code blocks in regular expressions (C<(?{...})> and C<(??{...})>) used not | |
145 | to inherit any pragmata (strict, warnings, etc.) if the regular expression | |
146 | was compiled at run time as happens in cases like these two: | |
147 | ||
148 | use re 'eval'; | |
149 | $foo =~ $bar; # when $bar contains (?{...}) | |
150 | $foo =~ /$bar(?{ $finished = 1 })/; | |
151 | ||
152 | This was a bug, which has now been fixed. But it has the potential to break | |
153 | any code that was relying on this bug. | |
154 | ||
155 | =head1 Deprecations | |
156 | ||
157 | =head2 C<?PATTERN?> is deprecated | |
158 | ||
159 | C<?PATTERN?> (without the initial m) has been deprecated and now produces | |
160 | a warning. This is to allow future use of C<?> in new operators. | |
161 | The match-once functionality is still available in the form of C<m?PATTERN?>. | |
162 | ||
163 | =head2 C<sv_compile_2op()> is now deprecated | |
164 | ||
165 | The C<sv_compile_2op()> API function is now deprecated. Searches suggest | |
166 | that nothing on CPAN is using it, so this should have zero impact. | |
167 | ||
168 | It attempted to provide an API to compile code down to an optree, but failed | |
169 | to bind correctly to lexicals in the enclosing scope. It's not possible to | |
170 | fix this problem within the constraints of its parameters and return value. | |
171 | ||
172 | =head2 Tie functions on scalars holding typeglobs | |
173 | ||
174 | Calling a tie function (C<tie>, C<tied>, C<untie>) with a scalar argument | |
175 | acts on a file handle if the scalar happens to hold a typeglob. | |
176 | ||
177 | This is a long-standing bug that will be removed in Perl 5.16, as | |
178 | there is currently no way to tie the scalar itself when it holds | |
179 | a typeglob, and no way to untie a scalar that has had a typeglob | |
180 | assigned to it. | |
181 | ||
182 | This bug was fixed in 5.13.7 but, because of the breakage it caused, the | |
183 | fix has been reverted. Now there is a deprecation warning whenever a tie | |
184 | function is used on a handle without an explicit C<*>. | |
185 | ||
186 | =head1 Modules and Pragmata | |
187 | ||
188 | =head2 Updated Modules and Pragmata | |
189 | ||
190 | =over 4 | |
191 | ||
192 | =item * | |
193 | ||
194 | C<Archive::Tar> has been upgraded from version 1.72 to 1.74. | |
195 | ||
196 | Skip extracting pax extended headers. | |
197 | ||
198 | =item * | |
199 | ||
200 | C<autodie> has been upgraded from version 2.10 to 2.1001. | |
201 | ||
202 | Test fix in blead for VMS. | |
203 | ||
204 | =item * | |
205 | ||
206 | C<B> has been upgraded from version 1.26 to 1.27. | |
207 | ||
208 | Avoid compiler warnings. | |
209 | ||
210 | =item * | |
211 | ||
212 | C<B::Concise> has been upgraded from version 0.81 to 0.82. | |
213 | ||
214 | It no longer produces mangled output with the C<-tree> option | |
215 | L<[perl #80632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80632>. | |
216 | ||
217 | =item * | |
218 | ||
219 | C<B::Deparse> has been upgraded from version 1.01 to 1.02. | |
220 | ||
221 | Test improvements. | |
222 | ||
223 | =item * | |
224 | ||
225 | C<Cwd> has been upgraded from version 3.34 to 3.35. | |
226 | ||
227 | Avoid compiler warnings. | |
228 | ||
229 | =item * | |
230 | ||
231 | C<Data::Dumper> has been upgraded from version 2.130_01 to 2.130_02. | |
232 | ||
233 | Avoid compiler warnings. | |
234 | ||
235 | =item * | |
236 | ||
237 | C<Devel::Peek> has been upgraded from version 1.05 to 1.06. | |
238 | ||
239 | Avoid compiler warnings. | |
240 | ||
241 | Test improvements. | |
242 | ||
243 | =item * | |
244 | ||
245 | C<Devel::SelfStubber> has been upgraded from version 1.03 to 1.05. | |
246 | ||
247 | Whitespace changes. | |
248 | ||
249 | =item * | |
250 | ||
251 | C<Digest::SHA> has been upgraded from 5.48 to 5.50. | |
252 | ||
253 | C<shasum> now more closely mimics C<sha1sum>/C<md5sum>. | |
254 | ||
255 | C<Addfile> accepts all POSIX filenames. | |
256 | ||
257 | =item * | |
258 | ||
259 | C<Dumpvalue> has been upgraded from version 1.14 to 1.15. | |
260 | ||
261 | Test improvements. | |
262 | ||
263 | =item * | |
264 | ||
265 | C<DynaLoader> has been upgraded from version 1.11 to 1.12. | |
266 | ||
267 | Remove obsolete RCS keywords. | |
268 | ||
269 | =item * | |
270 | ||
271 | C<Env> has been upgraded from version 1.01 to 1.02. | |
272 | ||
273 | Test improvements. | |
274 | ||
275 | =item * | |
276 | ||
277 | C<ExtUtils::CBuilder> has been upgraded from 0.2703 to 0.280201. | |
278 | ||
279 | Handle C and C++ compilers separately. | |
280 | ||
281 | Preserves exit status on VMS. | |
282 | ||
283 | Test improvements. | |
284 | ||
285 | =item * | |
286 | ||
287 | C<ExtUtils::Constant::Utils> has been upgraded from 0.02 to 0.03. | |
288 | ||
289 | Refactoring and fixing of backcompat code, preparing for resynchronisation | |
290 | with CPAN. | |
291 | ||
292 | =item * | |
293 | ||
294 | C<ExtUtils::Embed> has been upgraded from 1.29 to 1.30. | |
295 | ||
296 | Remove obsolete RCS keywords. | |
297 | ||
298 | =item * | |
299 | ||
300 | C<ExtUtils::ParseXS> has been upgraded from 2.2207 to 2.2208. | |
301 | ||
302 | Avoid compiler warnings. | |
303 | ||
304 | =item * | |
305 | ||
306 | C<Fcntl> has been upgraded from 1.10 to 1.11. | |
307 | ||
308 | Avoid compiler warnings. | |
309 | ||
310 | Test improvements. | |
311 | ||
312 | =item * | |
313 | ||
314 | C<feature> has been upgraded from 1.18 to 1.19. | |
315 | ||
316 | Documentation and test updates for the C<unicode_strings> feature. | |
317 | See L</Full functionality for C<use feature 'unicode_strings'>>. | |
318 | ||
319 | =item * | |
320 | ||
321 | C<File::CheckTree> has been upgraded from 4.4 to 4.41. | |
322 | ||
323 | Whitespace changes. | |
324 | ||
325 | =item * | |
326 | ||
327 | C<File::Glob> has been upgraded from 1.10 to 1.11. | |
328 | ||
329 | Avoid compiler warnings. | |
330 | ||
331 | Test improvements. | |
332 | ||
333 | =item * | |
334 | ||
335 | C<GDBM_File> has been upgraded from 1.12 to 1.13. | |
336 | ||
337 | Test improvements. | |
338 | ||
339 | Remove obsolete RCS keywords. | |
340 | ||
341 | =item * | |
342 | ||
343 | C<Hash::Util::FieldHash> has been upgraded from 1.06 to 1.07. | |
344 | ||
345 | Avoid compiler warnings. | |
346 | ||
347 | =item * | |
348 | ||
349 | C<I18N::Collate> has been upgraded from 1.01 to 1.02. | |
350 | ||
351 | Whitespace changes. | |
352 | ||
353 | Test improvements. | |
354 | ||
355 | =item * | |
356 | ||
357 | C<if> has been upgraded from 0.06 to 0.0601. | |
358 | ||
359 | Test improvements. | |
360 | ||
361 | =item * | |
362 | ||
363 | C<IO> has been upgraded from 1.25_02 to 1.25_03. | |
364 | ||
365 | Avoid compiler warnings. | |
366 | ||
367 | =item * | |
368 | ||
369 | C<IPC::Cmd> has been upgraded from 0.64 to 0.66. | |
370 | ||
371 | Resolves an issue with splitting Win32 command lines. | |
372 | ||
373 | Documentation enhancements. | |
374 | ||
375 | =item * | |
376 | ||
377 | C<IPC::Open3> has been upgraded from 1.07 to 1.08. | |
378 | ||
379 | Remove obsolete RCS keywords. | |
380 | ||
381 | Test improvements. | |
382 | ||
383 | =item * | |
384 | ||
385 | C<Locale::Codes> has been upgraded from version 3.14 to 3.15. | |
386 | ||
387 | Adds some codes. | |
388 | ||
389 | =item * | |
390 | ||
391 | C<Math::BigInt> has been upgraded from 1.99_01 to 1.99_02. | |
392 | ||
393 | Documentation and comment spelling fixes. | |
394 | ||
395 | =item * | |
396 | ||
397 | C<Memoize> has been upgraded from version 1.01_03 to 1.02. | |
398 | ||
399 | Remove obsolete RCS keywords. | |
400 | ||
401 | Whitespace changes. | |
402 | ||
403 | =item * | |
404 | ||
405 | C<MIME::Base64> has been upgraded from 3.10 to 3.13. | |
406 | ||
407 | Now provides C<encode_base64url> and C<decode_base64url> functions to process | |
408 | the base64 scheme for "URL applications". | |
409 | ||
410 | =item * | |
411 | ||
412 | C<mro> has been upgraded from version 1.05 to 1.06. | |
413 | ||
414 | C<next::method> I<et al.> now take into account that every class inherits | |
415 | from UNIVERSAL | |
416 | L<[perl #68654]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68654>. | |
417 | ||
418 | =item * | |
419 | ||
420 | C<NDBM_File> has been upgraded from 1.10 to 1.11. | |
421 | ||
422 | Remove obsolete RCS keywords. | |
423 | ||
424 | Test improvements. | |
425 | ||
426 | =item * | |
427 | ||
428 | C<Net::Ping> has been upgraded from 2.36 to 2.37. | |
429 | ||
430 | Remove obsolete RCS keywords. | |
431 | ||
432 | =item * | |
433 | ||
434 | C<ODBM_File> has been upgraded from 1.09 to 1.10. | |
435 | ||
436 | Remove obsolete RCS keywords. | |
437 | ||
438 | Test improvements. | |
439 | ||
440 | =item * | |
441 | ||
442 | C<Opcode> has been upgraded from 1.17 to 1.18. | |
443 | ||
444 | Avoid compiler warnings. | |
445 | ||
446 | Test improvements. | |
447 | ||
448 | =item * | |
449 | ||
450 | C<overload> has been upgraded from 1.11 to 1.12. | |
451 | ||
452 | Avoid a taint problem in use of sprintf. | |
453 | ||
454 | Test asymmetric fallback cases | |
455 | L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>. | |
456 | ||
457 | =item * | |
458 | ||
459 | C<PerlIO::encoding> has been upgraded from 0.13 to 0.14. | |
460 | ||
461 | Avoid compiler warnings. | |
462 | ||
463 | Remove obsolete RCS keywords. | |
464 | ||
465 | Test improvements. | |
466 | ||
467 | =item * | |
468 | ||
469 | C<PerlIO::scalar> has been upgraded from 0.10 to 0.11. | |
470 | ||
471 | A C<read> after a C<seek> beyond the end of the string no longer thinks it | |
472 | has data to read | |
473 | L<[perl #78716]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78716>. | |
474 | ||
475 | Avoid compiler warnings. | |
476 | ||
477 | =item * | |
478 | ||
479 | C<PerlIO::via> has been upgraded from 0.10 to 0.11. | |
480 | ||
481 | Avoid compiler warnings. | |
482 | ||
483 | =item * | |
484 | ||
485 | C<POSIX> has been upgraded from 1.22 to 1.23. | |
486 | ||
487 | Avoid compiler warnings. | |
488 | ||
489 | =item * | |
490 | ||
491 | C<re> has been upgraded from 0.14 to 0.15. | |
492 | ||
493 | Enforce that C</d>, C</u>, and C</l> are mutually exclusive. | |
494 | ||
495 | =item * | |
496 | ||
497 | C<SDBM_File> has been upgraded from 1.08 to 1.09. | |
498 | ||
499 | Avoid compiler warnings. | |
500 | ||
501 | Remove obsolete RCS keywords. | |
502 | ||
503 | Test improvements. | |
504 | ||
505 | =item * | |
506 | ||
507 | C<Socket> has been upgraded from 1.91 to 1.92. | |
508 | ||
509 | It has several new functions for handling IPv6 addresses. | |
510 | ||
511 | =item * | |
512 | ||
513 | C<Storable> has been upgraded from 2.24 to 2.25. | |
514 | ||
515 | This adds support for serialising code references that contain UTF-8 strings | |
516 | correctly. The Storable minor version number changed as a result, meaning that | |
517 | Storable users who set C<$Storable::accept_future_minor> to a C<FALSE> value | |
518 | will see errors (see L<Storable/FORWARD COMPATIBILITY> for more details). | |
519 | ||
520 | Freezing no longer gets confused if the Perl stack gets reallocated | |
521 | during freezing | |
522 | L<[perl #80074]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80074>. | |
523 | ||
524 | Avoid compiler warnings. | |
525 | ||
526 | =item * | |
527 | ||
528 | C<threads> has been upgraded from 1.81_02 to 1.81_03. | |
529 | ||
530 | Avoid compiler warnings. | |
531 | ||
532 | =item * | |
533 | ||
534 | C<threads::shared> has been upgraded from 1.34 to 1.35. | |
535 | ||
536 | Avoid compiler warnings. | |
537 | ||
538 | =item * | |
539 | ||
540 | C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01. | |
541 | ||
542 | Build fix in blead for VMS. | |
543 | ||
544 | =item * | |
545 | ||
546 | C<Unicode::Collate> has been upgraded from 0.67 to 0.6801. | |
547 | ||
548 | Documentation clarification. | |
549 | ||
550 | Test improvements. | |
551 | ||
552 | =item * | |
553 | ||
554 | C<Unicode::Normalize> has been upgraded from 1.07 to 1.08. | |
555 | ||
556 | Avoid compiler warnings. | |
557 | ||
558 | =item * | |
559 | ||
560 | C<Unicode::UCD> has been upgraded from 0.29 to 0.30. | |
561 | ||
562 | Add info about named sequence alternatives. | |
563 | ||
564 | Don't use C<CompositionExclusions.txt>. | |
565 | ||
566 | =item * | |
567 | ||
568 | C<version> has been upgraded from 0.82 to 0.86. | |
569 | ||
570 | Modify export logic for C<is_strict> and C<is_lax>. | |
571 | ||
572 | Various backcompat fixes. | |
573 | ||
574 | =item * | |
575 | ||
576 | C<Win32> has been upgraded from 0.39 to 0.41. | |
577 | ||
578 | Add several functions. | |
579 | ||
580 | Corrections to names returned by C<Win32::GetOSName> and | |
581 | C<Win32::GetOSDisplayName>. | |
582 | ||
583 | =item * | |
584 | ||
585 | C<XS::APItest> has been upgraded from 0.26 to 0.27. | |
586 | ||
587 | Test new API functions. | |
588 | ||
589 | Avoid compiler warnings. | |
590 | ||
591 | =back | |
592 | ||
593 | =head2 Dual-life Modules and Pragmata | |
594 | ||
595 | These modules were formerly distributed only in the Perl core | |
596 | distribution, and are now dual-lifed (meaning they are now also available | |
597 | separately on CPAN): | |
598 | ||
599 | =over 4 | |
600 | ||
601 | =item * | |
602 | ||
603 | C<autouse> | |
604 | ||
605 | =item * | |
606 | ||
607 | C<Devel::SelfStubber> | |
608 | ||
609 | =item * | |
610 | ||
611 | C<Dumpvalue> | |
612 | ||
613 | =item * | |
614 | ||
615 | C<Env> | |
616 | ||
617 | =item * | |
618 | ||
619 | C<File::CheckTree> | |
620 | ||
621 | =item * | |
622 | ||
623 | C<I18N::Collate> | |
624 | ||
625 | =back | |
626 | ||
627 | =head1 Diagnostics | |
628 | ||
629 | The following additions or changes have been made to diagnostic output, | |
630 | including warnings and fatal error messages. For the complete list of | |
631 | diagnostic messages, see L<perldiag>. | |
632 | ||
633 | =head2 New Diagnostics | |
634 | ||
635 | =over 4 | |
636 | ||
637 | =item * | |
638 | ||
639 | There is a new "Closure prototype called" error | |
640 | L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. | |
641 | ||
642 | =back | |
643 | ||
644 | =head2 Changes to Existing Diagnostics | |
645 | ||
646 | =over 4 | |
647 | ||
648 | =item * | |
649 | ||
650 | The "Found = in conditional" warning that is emitted when a constant is | |
651 | assigned to a variable in a condition is now withheld if the constant is | |
652 | actually a subroutine or one generated by C<use constant>, since the value | |
653 | of the constant may not be known at the time the program is written | |
654 | L<[perl #77762]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77762>. | |
655 | ||
656 | =back | |
657 | ||
658 | =head1 Configuration and Compilation | |
659 | ||
660 | =over 4 | |
661 | ||
662 | =item * | |
663 | ||
664 | The C<Encode> module can now (once again) be included in a static Perl | |
665 | build. The special-case handling for this situation got broken in Perl | |
666 | 5.11.0, and has now been repaired. | |
667 | ||
668 | =back | |
669 | ||
670 | =head1 Testing | |
671 | ||
672 | =over 4 | |
673 | ||
674 | =item * | |
675 | ||
676 | Tests for C<Fcntl>, C<File::Glob>, C<GDBM_File>, C<IPC::Open3>, | |
677 | C<NDBM_File>, C<ODBM_File>, C<Opcode>, C<PerlIO::encoding>, C<SDBM_File>, | |
678 | and C<Storable> now use the L<Test::More> framework. | |
679 | ||
680 | =back | |
681 | ||
682 | =head1 Platform Support | |
683 | ||
684 | =head2 Platform-Specific Notes | |
685 | ||
686 | =over 4 | |
687 | ||
688 | =item NetBSD | |
689 | ||
690 | The NetBSD hints file has been changed to make the system's malloc the | |
691 | default. | |
692 | ||
693 | =item Windows | |
694 | ||
695 | The option to use an externally-supplied C<crypt()>, or to build with no | |
696 | C<crypt()> at all, has been removed. Perl supplies its own C<crypt()> | |
697 | implementation for Windows, and the political situation that required | |
698 | this part of the distribution to sometimes be omitted is long gone. | |
699 | ||
700 | =back | |
701 | ||
702 | =head1 Internal Changes | |
703 | ||
704 | =over 4 | |
705 | ||
706 | =item * | |
707 | ||
708 | The L<C<mg_findext()>|perlapi/mg_findext> and | |
709 | L<C<sv_unmagicext()>|perlapi/sv_unmagicext> | |
710 | functions have been added to the API. | |
711 | They allow extension authors to find and remove magic attached to | |
712 | scalars based on both the magic type and the magic virtual table, similar to how | |
713 | C<sv_magicext()> attaches magic of a certain type and with a given virtual table | |
714 | to a scalar. This eliminates the need for extensions to walk the list of | |
715 | C<MAGIC> pointers of an C<SV> to find the magic that belongs to them. | |
716 | ||
717 | =item * | |
718 | ||
719 | The | |
720 | L<C<parse_fullexpr()>|perlapi/parse_fullexpr>, | |
721 | L<C<parse_listexpr()>|perlapi/parse_listexpr>, | |
722 | L<C<parse_termexpr()>|perlapi/parse_termexpr>, and | |
723 | L<C<parse_arithexpr()>|perlapi/parse_arithexpr> | |
724 | functions have been added to the API. They perform | |
725 | recursive-descent parsing of expressions at various precedence levels. | |
726 | They are expected to be used by syntax plugins. | |
727 | ||
728 | =back | |
729 | ||
730 | =head1 Selected Bug Fixes | |
731 | ||
732 | =over 4 | |
733 | ||
734 | =item * | |
735 | ||
736 | C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving | |
737 | identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block | |
738 | was erroneously executing the C<use feature ':5.12.0'> and | |
739 | C<use strict; use warnings;> behaviour, which only C<use> was documented to | |
740 | provide | |
741 | L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>. | |
742 | ||
743 | =item * | |
744 | ||
745 | C<use 5.42> | |
746 | L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>, | |
747 | C<use 6> and C<no 5> no longer leak memory. | |
748 | ||
749 | =item * | |
750 | ||
751 | C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds. | |
752 | ||
753 | =item * | |
754 | ||
755 | PerlIO no longer crashes when called recursively, e.g., from a signal | |
756 | handler. Now it just leaks memory | |
757 | L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>. | |
758 | ||
759 | =item * | |
760 | ||
761 | Defining a constant with the same name as one of perl's special blocks | |
762 | (e.g., INIT) stopped working in 5.12.0, but has now been fixed | |
763 | L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>. | |
764 | ||
765 | =item * | |
766 | ||
767 | A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used | |
768 | to be stringified, even if the hash was tied | |
769 | L<[perl #79178]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79178>. | |
770 | ||
771 | =item * | |
772 | ||
773 | A closure containing an C<if> statement followed by a constant or variable | |
774 | is no longer treated as a constant | |
775 | L<[perl #63540]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63540>. | |
776 | ||
777 | =item * | |
778 | ||
779 | Calling a closure prototype (what is passed to an attribute handler for a | |
780 | closure) now results in a "Closure prototype called" error message instead | |
781 | of a crash | |
782 | L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. | |
783 | ||
784 | =item * | |
785 | ||
786 | A regular expression optimisation would sometimes cause a match with a | |
787 | C<{n,m}> quantifier to fail when it should match | |
788 | L<[perl #79152]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79152>. | |
789 | ||
790 | =item * | |
791 | ||
792 | What has become known as the "Unicode Bug" is mostly resolved in this release. | |
793 | Under C<use feature 'unicode_strings'>, the internal storage format of a | |
794 | string no longer affects the external semantics. There are two known | |
795 | exceptions. User-defined case changing functions, which are planned to | |
796 | be deprecated in 5.14, require utf8-encoded strings to function; and the | |
797 | character C<LATIN SMALL LETTER SHARP S> in regular expression | |
798 | case-insensitive matching has a somewhat different set of bugs depending | |
799 | on the internal storage format. Case-insensitive matching of all | |
800 | characters that have multi-character matches, as this one does, is | |
801 | problematical in Perl. | |
802 | L<[perl #58182]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=58182>. | |
803 | ||
804 | =item * | |
805 | ||
806 | Mentioning a read-only lexical variable from the enclosing scope in a | |
807 | string C<eval> no longer causes the variable to become writable | |
808 | L<[perl #19135]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=19135>. | |
809 | ||
810 | =item * | |
811 | ||
812 | C<state> can now be used with attributes. It used to mean the same thing as | |
813 | C<my> if attributes were present | |
814 | L<[perl #68658]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68658>. | |
815 | ||
816 | =item * | |
817 | ||
818 | Expressions like C<< @$a > 3 >> no longer cause C<$a> to be mentioned in | |
819 | the "Use of uninitialized value in numeric gt" warning when C<$a> is | |
820 | undefined (since it is not part of the C<E<gt>> expression, but the operand | |
821 | of the C<@>) | |
822 | L<[perl #72090]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72090>. | |
823 | ||
824 | =item * | |
825 | ||
826 | C<require> no longer causes C<caller> to return the wrong file name for | |
827 | the scope that called C<require> and other scopes higher up that had the | |
828 | same file name | |
829 | L<[perl #68712]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68712>. | |
830 | ||
831 | =item * | |
832 | ||
833 | The ref types in the typemap for XS bindings now support magical variables | |
834 | L<[perl #72684]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72684>. | |
835 | ||
836 | =item * | |
837 | ||
838 | Match variables (e.g., C<$1>) no longer persist between calls to a sort | |
839 | subroutine | |
840 | L<[perl #76026]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76026>. | |
841 | ||
842 | =item * | |
843 | ||
844 | The C<B> module was returning C<B::OP>s instead of C<B::LOGOP>s for C<entertry> | |
845 | L<[perl #80622]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80622>. | |
846 | This was due to a bug in the perl core, not in C<B> itself. | |
847 | ||
848 | =item * | |
849 | ||
850 | Some numeric operators were converting integers to floating point, | |
851 | resulting in loss of precision on 64-bit platforms | |
852 | L<[perl #77456]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77456>. | |
853 | ||
854 | =item * | |
855 | ||
856 | The fallback behaviour of overloading on binary operators was asymmetric | |
857 | L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>. | |
858 | ||
859 | =back | |
860 | ||
861 | =head1 Acknowledgements | |
862 | ||
863 | Perl 5.13.8 represents approximately one month of development since | |
864 | Perl 5.13.7 and contains 38715 lines of changes across 546 files from | |
865 | 38 authors and committers. | |
866 | ||
867 | Thank you to the following for contributing to this release: | |
868 | ||
869 | Abhijit Menon-Sen, Abigail, Andreas KE<0xf6>nig, Ben Morrow, Brad Gilbert, | |
870 | brian d foy, Chip Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry, | |
871 | David Golden, David Leadbeater, David Mitchell, Father Chrysostomos, | |
872 | Florian Ragwitz, Goro Fuji, H.Merijn Brand, Jan Dubois, Jerry D. Hedden, | |
873 | Jesse Vincent, John Peacock, Karl Williamson, Lukas Mai, Marvin Humphrey, | |
874 | Max Maischein, Michael Breen, Michael Fig, Nicholas Clark, Nick Cleaton, | |
875 | Paul Evans, Peter J. Holzer, Peter John Acklam, Rafael Garcia-Suarez, | |
876 | Reini Urban, Renee Baecker, Ricardo Signes, Tony Cook, Yves Orton, Zefram | |
877 | ||
878 | =head1 Reporting Bugs | |
879 | ||
880 | If you find what you think is a bug, you might check the articles | |
881 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
882 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
883 | information at http://www.perl.org/ , the Perl Home Page. | |
884 | ||
885 | If you believe you have an unreported bug, please run the L<perlbug> | |
886 | program included with your release. Be sure to trim your bug down | |
887 | to a tiny but sufficient test case. Your bug report, along with the | |
888 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
889 | analysed by the Perl porting team. | |
890 | ||
891 | If the bug you are reporting has security implications, which make it | |
892 | inappropriate to send to a publicly archived mailing list, then please send | |
893 | it to perl5-security-report@perl.org. This points to a closed subscription | |
01c8ed49 FC |
894 | unarchived mailing list, which includes |
895 | all the core committers, who will be able | |
9f7a72d0 Z |
896 | to help assess the impact of issues, figure out a resolution, and help |
897 | co-ordinate the release of patches to mitigate or fix the problem across all | |
898 | platforms on which Perl is supported. Please only use this address for | |
899 | security issues in the Perl core, not for modules independently | |
900 | distributed on CPAN. | |
901 | ||
902 | =head1 SEE ALSO | |
903 | ||
904 | The F<Changes> file for an explanation of how to view exhaustive details | |
905 | on what changed. | |
906 | ||
907 | The F<INSTALL> file for how to build Perl. | |
908 | ||
909 | The F<README> file for general stuff. | |
910 | ||
911 | The F<Artistic> and F<Copying> files for copyright information. | |
912 | ||
913 | =cut |