Commit | Line | Data |
---|---|---|
3a5c9134 CBW |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
3a5c9134 CBW |
5 | perldelta - what is new for perl v5.13.8 |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
f8109d5c Z |
9 | This document describes differences between the 5.13.7 release and |
10 | the 5.13.8 release. | |
3a5c9134 | 11 | |
dbbe2d83 | 12 | If you are upgrading from an earlier release such as 5.13.6, first read |
3a5c9134 CBW |
13 | L<perl5137delta>, which describes differences between 5.13.6 and |
14 | 5.13.7. | |
15 | ||
3a5c9134 CBW |
16 | =head1 Core Enhancements |
17 | ||
b19934fb NC |
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>>> | |
6a8c8694 FC |
21 | equivalent to C<-MDevel::foo=bar>, which expands |
22 | internally to C<use Devel::foo 'bar';>. | |
b19934fb NC |
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 | ||
6a8c8694 FC |
30 | Equivalent to C<-M-Devel::foo>, expands to |
31 | C<no Devel::foo;>, calls C<< Devel::foo->unimport() >> | |
b19934fb NC |
32 | if the method exists. |
33 | ||
34 | =item C<-d:-foo=bar> | |
35 | ||
6a8c8694 FC |
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. | |
b19934fb NC |
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 | ||
f8109d5c | 44 | =head2 Filehandle method calls load L<IO::File> on demand |
15e6cdd9 | 45 | |
f8109d5c Z |
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> | |
15e6cdd9 DG |
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 | |
f8109d5c | 58 | legacy approach of manually loading an L<IO::File> parent class for partial |
15e6cdd9 DG |
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 | ||
20db7501 KW |
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 | |
f8109d5c | 70 | Unicode semantics. See L<feature>. |
20db7501 | 71 | |
f8109d5c | 72 | This feature avoids most forms of the "Unicode Bug" (See |
17096837 | 73 | L<perlunicode/The "Unicode Bug"> for details.) If there is a |
20db7501 KW |
74 | possibility that your code will process Unicode strings, you are |
75 | B<strongly> encouraged to use this subpragma to avoid nasty surprises. | |
76 | ||
16467a4d | 77 | The availability of this should strongly affect the whole tone of |
07291fb1 KW |
78 | various documents, such as L<perlunicode> and L<perluniintro>, but this |
79 | work has not been done yet. | |
80 | ||
ee076ba5 FR |
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 | |
f8109d5c | 90 | the reason for unwinding. |
ee076ba5 | 91 | |
f8109d5c | 92 | =head2 printf-like functions understand post-1980 size modifiers |
f6166f76 CS |
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 | ||
0d157ee2 DL |
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 | ||
bd8e866d FC |
121 | =head2 Stacked labels |
122 | ||
123 | Multiple statement labels can now appear before a single statement. | |
124 | ||
3a5c9134 CBW |
125 | =head1 Incompatible Changes |
126 | ||
f8109d5c | 127 | =head2 C<:=> is now a syntax error |
3a5c9134 | 128 | |
2dc78664 NC |
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. | |
3a5c9134 | 133 | |
2dc78664 NC |
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, | |
baed7a72 NC |
139 | because of a code generator) then avoid the error by adding a space before |
140 | the C<=>. | |
3a5c9134 | 141 | |
d66e82e8 FC |
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 | ||
3a5c9134 CBW |
155 | =head1 Deprecations |
156 | ||
59773fc7 FC |
157 | =head2 C<?PATTERN?> is deprecated |
158 | ||
159 | C<?PATTERN?> (without the initial m) has been deprecated and now produces | |
f8109d5c Z |
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?>. | |
59773fc7 | 162 | |
f8109d5c | 163 | =head2 C<sv_compile_2op()> is now deprecated |
d59a8b3e | 164 | |
f8109d5c | 165 | The C<sv_compile_2op()> API function is now deprecated. Searches suggest |
d59a8b3e NC |
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 | ||
5609d5f9 FC |
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 | ||
3a5c9134 CBW |
186 | =head1 Modules and Pragmata |
187 | ||
3a5c9134 CBW |
188 | =head2 Updated Modules and Pragmata |
189 | ||
190 | =over 4 | |
191 | ||
192 | =item * | |
193 | ||
e1165778 Z |
194 | C<Archive::Tar> has been upgraded from version 1.72 to 1.74. |
195 | ||
17096837 Z |
196 | Skip extracting pax extended headers. |
197 | ||
e1165778 Z |
198 | =item * |
199 | ||
200 | C<autodie> has been upgraded from version 2.10 to 2.1001. | |
201 | ||
17096837 Z |
202 | Test fix in blead for VMS. |
203 | ||
e1165778 Z |
204 | =item * |
205 | ||
206 | C<B> has been upgraded from version 1.26 to 1.27. | |
c3e6accb | 207 | |
17096837 Z |
208 | Avoid compiler warnings. |
209 | ||
c3e6accb CBW |
210 | =item * |
211 | ||
04b0a669 FC |
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 | ||
e1165778 Z |
219 | C<B::Deparse> has been upgraded from version 1.01 to 1.02. |
220 | ||
17096837 Z |
221 | Test improvements. |
222 | ||
e1165778 Z |
223 | =item * |
224 | ||
225 | C<Cwd> has been upgraded from version 3.34 to 3.35. | |
c2f8ff19 | 226 | |
17096837 Z |
227 | Avoid compiler warnings. |
228 | ||
c2f8ff19 FR |
229 | =item * |
230 | ||
e1165778 Z |
231 | C<Data::Dumper> has been upgraded from version 2.130_01 to 2.130_02. |
232 | ||
17096837 Z |
233 | Avoid compiler warnings. |
234 | ||
e1165778 Z |
235 | =item * |
236 | ||
237 | C<Devel::Peek> has been upgraded from version 1.05 to 1.06. | |
238 | ||
17096837 Z |
239 | Avoid compiler warnings. |
240 | ||
241 | Test improvements. | |
242 | ||
e1165778 | 243 | =item * |
0a178734 | 244 | |
e1165778 Z |
245 | C<Devel::SelfStubber> has been upgraded from version 1.03 to 1.05. |
246 | ||
17096837 Z |
247 | Whitespace changes. |
248 | ||
e1165778 Z |
249 | =item * |
250 | ||
251 | C<Digest::SHA> has been upgraded from 5.48 to 5.50. | |
252 | ||
17096837 Z |
253 | C<shasum> now more closely mimics C<sha1sum>/C<md5sum>. |
254 | ||
255 | C<Addfile> accepts all POSIX filenames. | |
8d849515 FR |
256 | |
257 | =item * | |
258 | ||
259 | C<Dumpvalue> has been upgraded from version 1.14 to 1.15. | |
0a178734 | 260 | |
17096837 Z |
261 | Test improvements. |
262 | ||
0a178734 CBW |
263 | =item * |
264 | ||
e1165778 Z |
265 | C<DynaLoader> has been upgraded from version 1.11 to 1.12. |
266 | ||
17096837 Z |
267 | Remove obsolete RCS keywords. |
268 | ||
e1165778 Z |
269 | =item * |
270 | ||
5b0bc4e8 FR |
271 | C<Env> has been upgraded from version 1.01 to 1.02. |
272 | ||
17096837 Z |
273 | Test improvements. |
274 | ||
5b0bc4e8 FR |
275 | =item * |
276 | ||
e1165778 Z |
277 | C<ExtUtils::CBuilder> has been upgraded from 0.2703 to 0.280201. |
278 | ||
17096837 Z |
279 | Handle C and C++ compilers separately. |
280 | ||
281 | Preserves exit status on VMS. | |
282 | ||
283 | Test improvements. | |
284 | ||
e1165778 Z |
285 | =item * |
286 | ||
17096837 Z |
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. | |
06e8058f CBW |
291 | |
292 | =item * | |
293 | ||
121e1895 FC |
294 | C<ExtUtils::Embed> has been upgraded from 1.29 to 1.30. |
295 | ||
17096837 Z |
296 | Remove obsolete RCS keywords. |
297 | ||
121e1895 FC |
298 | =item * |
299 | ||
e1165778 Z |
300 | C<ExtUtils::ParseXS> has been upgraded from 2.2207 to 2.2208. |
301 | ||
17096837 Z |
302 | Avoid compiler warnings. |
303 | ||
e1165778 Z |
304 | =item * |
305 | ||
306 | C<Fcntl> has been upgraded from 1.10 to 1.11. | |
307 | ||
17096837 Z |
308 | Avoid compiler warnings. |
309 | ||
310 | Test improvements. | |
311 | ||
e1165778 Z |
312 | =item * |
313 | ||
314 | C<feature> has been upgraded from 1.18 to 1.19. | |
315 | ||
17096837 Z |
316 | Documentation and test updates for the C<unicode_strings> feature. |
317 | See L</Full functionality for C<use feature 'unicode_strings'>>. | |
318 | ||
e1165778 Z |
319 | =item * |
320 | ||
321 | C<File::CheckTree> has been upgraded from 4.4 to 4.41. | |
322 | ||
17096837 Z |
323 | Whitespace changes. |
324 | ||
e1165778 Z |
325 | =item * |
326 | ||
327 | C<File::Glob> has been upgraded from 1.10 to 1.11. | |
328 | ||
17096837 Z |
329 | Avoid compiler warnings. |
330 | ||
331 | Test improvements. | |
332 | ||
e1165778 Z |
333 | =item * |
334 | ||
335 | C<GDBM_File> has been upgraded from 1.12 to 1.13. | |
336 | ||
17096837 Z |
337 | Test improvements. |
338 | ||
339 | Remove obsolete RCS keywords. | |
340 | ||
e1165778 Z |
341 | =item * |
342 | ||
343 | C<Hash::Util::FieldHash> has been upgraded from 1.06 to 1.07. | |
344 | ||
17096837 Z |
345 | Avoid compiler warnings. |
346 | ||
e1165778 Z |
347 | =item * |
348 | ||
349 | C<I18N::Collate> has been upgraded from 1.01 to 1.02. | |
350 | ||
17096837 Z |
351 | Whitespace changes. |
352 | ||
353 | Test improvements. | |
354 | ||
e1165778 Z |
355 | =item * |
356 | ||
11f2b7f3 FR |
357 | C<if> has been upgraded from 0.06 to 0.0601. |
358 | ||
17096837 Z |
359 | Test improvements. |
360 | ||
11f2b7f3 FR |
361 | =item * |
362 | ||
e1165778 | 363 | C<IO> has been upgraded from 1.25_02 to 1.25_03. |
92c0bb90 | 364 | |
17096837 Z |
365 | Avoid compiler warnings. |
366 | ||
92c0bb90 FR |
367 | =item * |
368 | ||
e1165778 | 369 | C<IPC::Cmd> has been upgraded from 0.64 to 0.66. |
39b09a1b | 370 | |
17096837 Z |
371 | Resolves an issue with splitting Win32 command lines. |
372 | ||
373 | Documentation enhancements. | |
39b09a1b CBW |
374 | |
375 | =item * | |
376 | ||
121e1895 FC |
377 | C<IPC::Open3> has been upgraded from 1.07 to 1.08. |
378 | ||
17096837 Z |
379 | Remove obsolete RCS keywords. |
380 | ||
381 | Test improvements. | |
382 | ||
121e1895 FC |
383 | =item * |
384 | ||
e1165778 Z |
385 | C<Locale::Codes> has been upgraded from version 3.14 to 3.15. |
386 | ||
17096837 Z |
387 | Adds some codes. |
388 | ||
e1165778 Z |
389 | =item * |
390 | ||
391 | C<Math::BigInt> has been upgraded from 1.99_01 to 1.99_02. | |
1245abf1 | 392 | |
17096837 Z |
393 | Documentation and comment spelling fixes. |
394 | ||
1245abf1 CBW |
395 | =item * |
396 | ||
28502098 FR |
397 | C<Memoize> has been upgraded from version 1.01_03 to 1.02. |
398 | ||
17096837 Z |
399 | Remove obsolete RCS keywords. |
400 | ||
401 | Whitespace changes. | |
402 | ||
28502098 FR |
403 | =item * |
404 | ||
e1165778 | 405 | C<MIME::Base64> has been upgraded from 3.10 to 3.13. |
2456140e | 406 | |
f8109d5c | 407 | Now provides C<encode_base64url> and C<decode_base64url> functions to process |
2456140e CBW |
408 | the base64 scheme for "URL applications". |
409 | ||
410 | =item * | |
411 | ||
ad033849 FC |
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 | ||
e1165778 Z |
420 | C<NDBM_File> has been upgraded from 1.10 to 1.11. |
421 | ||
17096837 Z |
422 | Remove obsolete RCS keywords. |
423 | ||
424 | Test improvements. | |
425 | ||
e1165778 Z |
426 | =item * |
427 | ||
121e1895 FC |
428 | C<Net::Ping> has been upgraded from 2.36 to 2.37. |
429 | ||
17096837 Z |
430 | Remove obsolete RCS keywords. |
431 | ||
121e1895 FC |
432 | =item * |
433 | ||
e1165778 Z |
434 | C<ODBM_File> has been upgraded from 1.09 to 1.10. |
435 | ||
17096837 Z |
436 | Remove obsolete RCS keywords. |
437 | ||
438 | Test improvements. | |
439 | ||
e1165778 Z |
440 | =item * |
441 | ||
442 | C<Opcode> has been upgraded from 1.17 to 1.18. | |
443 | ||
17096837 Z |
444 | Avoid compiler warnings. |
445 | ||
446 | Test improvements. | |
447 | ||
e1165778 Z |
448 | =item * |
449 | ||
2638c0ff FC |
450 | C<overload> has been upgraded from 1.11 to 1.12. |
451 | ||
17096837 Z |
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 | ||
2638c0ff FC |
457 | =item * |
458 | ||
121e1895 FC |
459 | C<PerlIO::encoding> has been upgraded from 0.13 to 0.14. |
460 | ||
17096837 Z |
461 | Avoid compiler warnings. |
462 | ||
463 | Remove obsolete RCS keywords. | |
464 | ||
465 | Test improvements. | |
466 | ||
121e1895 FC |
467 | =item * |
468 | ||
2638c0ff FC |
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 | ||
17096837 Z |
475 | Avoid compiler warnings. |
476 | ||
2638c0ff FC |
477 | =item * |
478 | ||
e1165778 Z |
479 | C<PerlIO::via> has been upgraded from 0.10 to 0.11. |
480 | ||
17096837 Z |
481 | Avoid compiler warnings. |
482 | ||
e1165778 Z |
483 | =item * |
484 | ||
485 | C<POSIX> has been upgraded from 1.22 to 1.23. | |
486 | ||
17096837 Z |
487 | Avoid compiler warnings. |
488 | ||
e1165778 Z |
489 | =item * |
490 | ||
f295f417 FC |
491 | C<re> has been upgraded from 0.14 to 0.15. |
492 | ||
17096837 Z |
493 | Enforce that C</d>, C</u>, and C</l> are mutually exclusive. |
494 | ||
f295f417 FC |
495 | =item * |
496 | ||
e1165778 Z |
497 | C<SDBM_File> has been upgraded from 1.08 to 1.09. |
498 | ||
17096837 Z |
499 | Avoid compiler warnings. |
500 | ||
501 | Remove obsolete RCS keywords. | |
502 | ||
503 | Test improvements. | |
504 | ||
e1165778 Z |
505 | =item * |
506 | ||
5ebfb99c | 507 | C<Socket> has been upgraded from 1.91 to 1.92. |
b373eab8 FC |
508 | |
509 | It has several new functions for handling IPv6 addresses. | |
510 | ||
511 | =item * | |
512 | ||
b6ae81ab DL |
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 | |
f8109d5c Z |
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 | |
b6ae81ab DL |
518 | will see errors (see L<Storable/FORWARD COMPATIBILITY> for more details). |
519 | ||
ca88a729 Z |
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 | ||
17096837 Z |
524 | Avoid compiler warnings. |
525 | ||
b6ae81ab DL |
526 | =item * |
527 | ||
e1165778 Z |
528 | C<threads> has been upgraded from 1.81_02 to 1.81_03. |
529 | ||
17096837 Z |
530 | Avoid compiler warnings. |
531 | ||
e1165778 Z |
532 | =item * |
533 | ||
534 | C<threads::shared> has been upgraded from 1.34 to 1.35. | |
535 | ||
17096837 Z |
536 | Avoid compiler warnings. |
537 | ||
e1165778 Z |
538 | =item * |
539 | ||
d4238815 FC |
540 | C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01. |
541 | ||
17096837 Z |
542 | Build fix in blead for VMS. |
543 | ||
d4238815 FC |
544 | =item * |
545 | ||
e1165778 Z |
546 | C<Unicode::Collate> has been upgraded from 0.67 to 0.6801. |
547 | ||
17096837 Z |
548 | Documentation clarification. |
549 | ||
550 | Test improvements. | |
551 | ||
e1165778 Z |
552 | =item * |
553 | ||
554 | C<Unicode::Normalize> has been upgraded from 1.07 to 1.08. | |
68adb2b0 | 555 | |
17096837 Z |
556 | Avoid compiler warnings. |
557 | ||
68adb2b0 CBW |
558 | =item * |
559 | ||
59773fc7 | 560 | C<Unicode::UCD> has been upgraded from 0.29 to 0.30. |
3a5c9134 | 561 | |
17096837 Z |
562 | Add info about named sequence alternatives. |
563 | ||
564 | Don't use C<CompositionExclusions.txt>. | |
565 | ||
c2e0289e FC |
566 | =item * |
567 | ||
568 | C<version> has been upgraded from 0.82 to 0.86. | |
569 | ||
17096837 Z |
570 | Modify export logic for C<is_strict> and C<is_lax>. |
571 | ||
572 | Various backcompat fixes. | |
573 | ||
e6f1cc4d FC |
574 | =item * |
575 | ||
e1165778 Z |
576 | C<Win32> has been upgraded from 0.39 to 0.41. |
577 | ||
17096837 Z |
578 | Add several functions. |
579 | ||
580 | Corrections to names returned by C<Win32::GetOSName> and | |
581 | C<Win32::GetOSDisplayName>. | |
582 | ||
e1165778 Z |
583 | =item * |
584 | ||
585 | C<XS::APItest> has been upgraded from 0.26 to 0.27. | |
e6f1cc4d | 586 | |
17096837 Z |
587 | Test new API functions. |
588 | ||
589 | Avoid compiler warnings. | |
590 | ||
3a5c9134 CBW |
591 | =back |
592 | ||
e1165778 Z |
593 | =head2 Dual-life Modules and Pragmata |
594 | ||
595 | These modules were formerly distributed only in the Perl core | |
f8109d5c Z |
596 | distribution, and are now dual-lifed (meaning they are now also available |
597 | separately on CPAN): | |
e1165778 Z |
598 | |
599 | =over 4 | |
600 | ||
601 | =item * | |
602 | ||
603 | C<autouse> | |
604 | ||
605 | =item * | |
606 | ||
f8109d5c | 607 | C<Devel::SelfStubber> |
e1165778 Z |
608 | |
609 | =item * | |
610 | ||
611 | C<Dumpvalue> | |
612 | ||
613 | =item * | |
614 | ||
615 | C<Env> | |
616 | ||
617 | =item * | |
618 | ||
f8109d5c | 619 | C<File::CheckTree> |
3a5c9134 CBW |
620 | |
621 | =item * | |
622 | ||
f8109d5c | 623 | C<I18N::Collate> |
3a5c9134 CBW |
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 | ||
3a5c9134 CBW |
633 | =head2 New Diagnostics |
634 | ||
3a5c9134 CBW |
635 | =over 4 |
636 | ||
637 | =item * | |
638 | ||
f8109d5c Z |
639 | There is a new "Closure prototype called" error |
640 | L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. | |
3a5c9134 CBW |
641 | |
642 | =back | |
643 | ||
644 | =head2 Changes to Existing Diagnostics | |
645 | ||
3a5c9134 CBW |
646 | =over 4 |
647 | ||
648 | =item * | |
649 | ||
c6008483 FC |
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>. | |
3a5c9134 CBW |
655 | |
656 | =back | |
657 | ||
3a5c9134 CBW |
658 | =head1 Configuration and Compilation |
659 | ||
3a5c9134 CBW |
660 | =over 4 |
661 | ||
662 | =item * | |
663 | ||
51bed910 Z |
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 | ||
3a5c9134 CBW |
668 | =back |
669 | ||
670 | =head1 Testing | |
671 | ||
3a5c9134 CBW |
672 | =over 4 |
673 | ||
674 | =item * | |
675 | ||
f8109d5c Z |
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. | |
3a5c9134 CBW |
679 | |
680 | =back | |
681 | ||
682 | =head1 Platform Support | |
683 | ||
3a5c9134 CBW |
684 | =head2 Platform-Specific Notes |
685 | ||
3a5c9134 CBW |
686 | =over 4 |
687 | ||
085d0904 | 688 | =item NetBSD |
3a5c9134 | 689 | |
085d0904 FC |
690 | The NetBSD hints file has been changed to make the system's malloc the |
691 | default. | |
3a5c9134 | 692 | |
fb3a2d89 Z |
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 | ||
3a5c9134 CBW |
700 | =back |
701 | ||
702 | =head1 Internal Changes | |
703 | ||
3a5c9134 CBW |
704 | =over 4 |
705 | ||
706 | =item * | |
707 | ||
5c843ccc Z |
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. | |
f8109d5c | 711 | They allow extension authors to find and remove magic attached to |
833f1b93 | 712 | scalars based on both the magic type and the magic virtual table, similar to how |
f8109d5c | 713 | C<sv_magicext()> attaches magic of a certain type and with a given virtual table |
833f1b93 FR |
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. | |
3a5c9134 | 716 | |
c61b6d0f FC |
717 | =item * |
718 | ||
5c843ccc Z |
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 | |
f8109d5c Z |
725 | recursive-descent parsing of expressions at various precedence levels. |
726 | They are expected to be used by syntax plugins. | |
c61b6d0f | 727 | |
3a5c9134 CBW |
728 | =back |
729 | ||
730 | =head1 Selected Bug Fixes | |
731 | ||
3a5c9134 CBW |
732 | =over 4 |
733 | ||
734 | =item * | |
735 | ||
88e9444c NC |
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 | |
b373eab8 FC |
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. | |
3a5c9134 | 752 | |
1428a560 FC |
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 | ||
11cd2234 FC |
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 | ||
e3ef43a5 FC |
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 | ||
3ad6135d FC |
771 | =item * |
772 | ||
3ad6135d FC |
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 | ||
4d4ca6a5 FC |
777 | =item * |
778 | ||
779 | Calling a closure prototype (what is passed to an attribute handler for a | |
7cdf3308 FC |
780 | closure) now results in a "Closure prototype called" error message instead |
781 | of a crash | |
4d4ca6a5 FC |
782 | L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. |
783 | ||
085d0904 FC |
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 | ||
20db7501 KW |
790 | =item * |
791 | ||
f8109d5c | 792 | What has become known as the "Unicode Bug" is mostly resolved in this release. |
20db7501 KW |
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 | ||
70bfa48a FC |
804 | =item * |
805 | ||
806 | Mentioning a read-only lexical variable from the enclosing scope in a | |
f8109d5c | 807 | string C<eval> no longer causes the variable to become writable |
70bfa48a FC |
808 | L<[perl #19135]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=19135>. |
809 | ||
f853e70a FC |
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 | ||
37079308 FC |
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 | ||
4c9d53d5 FC |
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 | ||
0c7420e7 FC |
831 | =item * |
832 | ||
7cdf3308 | 833 | The ref types in the typemap for XS bindings now support magical variables |
0c7420e7 FC |
834 | L<[perl #72684]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72684>. |
835 | ||
460c4bfb FC |
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 | ||
26de4ac8 FC |
842 | =item * |
843 | ||
f8109d5c | 844 | The C<B> module was returning C<B::OP>s instead of C<B::LOGOP>s for C<entertry> |
26de4ac8 | 845 | L<[perl #80622]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80622>. |
26de4ac8 FC |
846 | This was due to a bug in the perl core, not in C<B> itself. |
847 | ||
ab7fb400 FC |
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 | ||
836d5805 Z |
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 | ||
3a5c9134 CBW |
859 | =back |
860 | ||
3a5c9134 CBW |
861 | =head1 Acknowledgements |
862 | ||
b0c3724f | 863 | Perl 5.13.8 represents approximately one month of development since |
aa7dbd7b | 864 | Perl 5.13.7 and contains 38715 lines of changes across 546 files from |
b0c3724f Z |
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 | |
3a5c9134 CBW |
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 | |
894 | unarchived mailing list, which includes all the core committers, who be able | |
895 | to help assess the impact of issues, figure out a resolution, and help | |
896 | co-ordinate the release of patches to mitigate or fix the problem across all | |
897 | platforms on which Perl is supported. Please only use this address for | |
898 | security issues in the Perl core, not for modules independently | |
899 | distributed on CPAN. | |
900 | ||
901 | =head1 SEE ALSO | |
902 | ||
903 | The F<Changes> file for an explanation of how to view exhaustive details | |
904 | on what changed. | |
905 | ||
906 | The F<INSTALL> file for how to build Perl. | |
907 | ||
908 | The F<README> file for general stuff. | |
909 | ||
910 | The F<Artistic> and F<Copying> files for copyright information. | |
911 | ||
912 | =cut |