Commit | Line | Data |
---|---|---|
3432e5a1 SL |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5153delta - what is new for perl v5.15.3 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.15.2 release and | |
10 | the 5.15.3 release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.15.1, first read | |
13 | L<perl5152delta>, which describes differences between 5.15.1 and | |
14 | 5.15.2. | |
15 | ||
16 | =head1 Notice | |
17 | ||
18 | This release includes a rewrite of the perl OO docs which represent | |
19 | a significant modernization of the OO documentation. All of the old OO | |
20 | tutorials (perltoot, perlboot, etc.) have been replaced with pointers | |
21 | to the new docs. | |
22 | ||
23 | =head1 Core Enhancements | |
24 | ||
25 | =head2 More CORE subs are callable through references | |
26 | ||
27 | Perl 5.15.2 introduced subroutines in the CORE namespace. Most of them | |
28 | could only be called as barewords; i.e., they could be aliased at compile | |
29 | time and then inlined under new names. | |
30 | ||
31 | Almost all of these functions can now be called through references and via | |
32 | C<&foo()> syntax, bypassing the prototype. See L<CORE> for a list of the | |
33 | exceptions. | |
34 | ||
35 | =head2 New debugger commands | |
36 | ||
37 | The debugger now has C<disable> and C<enable> commands for disabling | |
38 | existing breakpoints and reënabling them. See L<perldebug>. | |
39 | ||
40 | =head1 Security | |
41 | ||
42 | =head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728). | |
43 | ||
44 | Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would | |
45 | cause an access violation / segfault. A Perl program that accepts a flags value from | |
46 | an external source could expose itself to denial of service or arbitrary code | |
47 | execution attacks. There are no known exploits in the wild. The problem has been | |
48 | corrected by explicitly disabling all unsupported flags and setting unused function | |
49 | pointers to null. Bug reported by Clément Lecigne. | |
50 | ||
51 | =head1 Incompatible Changes | |
52 | ||
53 | =head2 $[ has been removed | |
54 | ||
55 | The array/string index offsetting mechanism, controlled by the C<$[> magic | |
56 | variable, has been removed. C<$[> now always reads as zero. Writing a | |
57 | zero to it is still permitted, but writing a non-zero value causes an | |
58 | exception. Those hopelessly addicted to FORTRAN-style 1-based indexing | |
59 | may wish to use the module L<Array::Base>, which provides an independent | |
60 | implementation of the index offsetting concept, or L<Classic::Perl>, | |
61 | which allows L<Array::Base> to be controlled through assignment to C<$[>. | |
62 | ||
63 | =head2 User-defined case changing operations. | |
64 | ||
65 | This feature was deprecated in Perl 5.14, and has now been removed. | |
66 | The CPAN module L<Unicode::Casing> provides better functionality without | |
67 | the drawbacks that this feature had, as are detailed in the 5.14 | |
68 | documentation: | |
69 | L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29> | |
70 | ||
71 | =head2 XSUBs are now 'static' | |
72 | ||
73 | XSUB C functions are now 'static', that is, they are not visible from | |
74 | outside the compilation unit. Users can use the new C<XS_EXTERNAL(name)> | |
75 | and C<XS_INTERNAL(name)> macros to pick the desired linking behaviour. | |
76 | The ordinary C<XS(name)> declaration for XSUBs will continue to declare | |
77 | non-'static' XSUBs for compatibility, but the XS compiler, | |
78 | C<ExtUtils::ParseXS> (C<xsubpp>) will emit 'static' XSUBs by default. | |
79 | C<ExtUtils::ParseXS>'s behaviour can be reconfigured from XS using the | |
80 | C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details. | |
81 | ||
82 | =head2 Borland compiler | |
83 | ||
84 | All support for the Borland compiler has been dropped. The code had not | |
85 | worked for a long time anyway. | |
86 | ||
87 | =head2 Weakening read-only references | |
88 | ||
89 | Weakening read-only references is no longer permitted. It should never | |
90 | hove worked anyway, and in some cases could result in crashes. | |
91 | ||
92 | =head1 Modules and Pragmata | |
93 | ||
94 | =head2 Updated Modules and Pragmata | |
95 | ||
96 | =over 4 | |
97 | ||
98 | =item * | |
99 | ||
100 | L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01. | |
101 | ||
102 | This is only a minor documentation update. | |
103 | ||
104 | =item * | |
105 | ||
106 | L<Archive::Extract> has been upgraded from version 0.52 to version 0.56. | |
107 | ||
108 | Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32 | |
109 | ||
110 | =item * | |
111 | ||
112 | L<Archive::Tar> has been upgraded from version 1.76 to version 1.78. | |
113 | ||
114 | =item * | |
115 | ||
116 | L<attributes> has been upgraded from version 0.15 to version 0.16. | |
117 | ||
118 | =item * | |
119 | ||
120 | L<Attribute::Handlers> has been upgraded from version 0.92 to version 0.93. | |
121 | ||
122 | =item * | |
123 | ||
124 | L<B::Deparse> has been upgraded from version 1.07 to 1.08. | |
125 | ||
126 | It now correctly deparses C<$#{/}> and C<qq(${#}a)>. | |
127 | ||
128 | =item * | |
129 | ||
130 | L<Carp> has been upgraded from version 1.21 to 1.23. | |
131 | ||
132 | L<Carp> is now a dual life module and several fixes have been make to make | |
133 | it more portable to older versions of perl. | |
134 | ||
135 | =item * | |
136 | ||
137 | L<CPAN::Meta> has been upgraded from version 2.112150 to version 2.112621. | |
138 | ||
139 | =item * | |
140 | ||
141 | L<CPAN::Meta::YAML> has been upgraded from version 0.003 to version 0.004. | |
142 | ||
143 | =item * | |
144 | ||
145 | L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9111. | |
146 | ||
147 | =item * | |
148 | ||
149 | L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58. | |
150 | ||
151 | =item * | |
152 | ||
153 | L<Devel::PPPort> has been upgraded from version 3.19 to version 3.20. | |
154 | ||
155 | =item * | |
156 | ||
157 | L<diagnostics> has been upgraded from version 1.24 to version 1.25. | |
158 | ||
159 | It now strips out C<SZE<lt>E<gt>E<lt>...E<gt>> formatting codes before displaying | |
160 | descriptions [perl #94488]. | |
161 | ||
162 | =item * | |
163 | ||
164 | L<Data::Dumper> has been upgraded from version 2.133 to version 2.134. | |
165 | ||
166 | The XS code for sorting hash keys has been simplified slightly. | |
167 | ||
168 | =item * | |
169 | ||
170 | L<Exporter> has been upgraded from version 5.64_03 to version 5.65. | |
171 | ||
172 | =item * | |
173 | ||
174 | L<ExtUtils::ParseXS> has been upgraded from version 3.03_01 to version 3.04_04. | |
175 | ||
176 | The handling of C<dVAR> in the generated XS code has been simplified. | |
177 | ||
178 | The previously broken "INCLUDE: ... |" functionality has been repaired | |
179 | (CPAN RT #70213). | |
180 | ||
181 | A compatibility-workaround for modules that cannot | |
182 | live with the new XSUB staticness (see I<XSUBs are now static> above) | |
183 | has been implemented with the C<PERL_EUPXS_ALWAYS_EXPORT> and | |
184 | C<PERL_EUPXS_NEVER_EXPORT> preprocessor defines. | |
185 | ||
186 | The compiler warnings when -except option is used with F<xsubpp> | |
187 | have been fixed. | |
188 | ||
189 | The XSUB.h changes to make C<XS(name)> use C<XS_INTERNAL(name)> | |
190 | by default (which were in the 5.15.2 dev release of perl) | |
191 | have been reverted since too many CPAN modules expect to | |
192 | be able to refer to XSUBs declared with C<XS(name)>. | |
193 | Instead, C<ExtUtils::ParseXS> will define a copy of the | |
194 | C<XS_INTERNAL>/C<XS_EXTERNAL> macros as necessary going back to | |
195 | perl 5.10.0. By default, ExtUtils::ParseXS will use | |
196 | C<XS_INTERNAL(name)> instead of C<XS(name)>. | |
197 | ||
198 | Fixed regression for input-typemap override in XS argument | |
199 | list (CPAN RT #70448). | |
200 | ||
201 | C<ExtUtils::Typemaps> now properly strips trailing semicolons | |
202 | from inputmaps. These could previously trigger warnings (errors | |
203 | in strict C89 compilers) due to additional semicolons being | |
204 | interpreted as empty statements. | |
205 | ||
206 | Now detects and throws a warning if there is a C<CODE> section using | |
207 | C<RETVAL>, but no C<OUTPUT> section (CPAN RT #69536). | |
208 | ||
209 | =item * | |
210 | ||
211 | L<Locale::Codes> has been upgraded from version 3.17 to version 3.18. | |
212 | ||
213 | The CIA world added non-standard values, so this is no longer used as a source | |
214 | of data. | |
215 | ||
216 | =item * | |
217 | ||
218 | L<File::Glob> has been upgraded from version 1.12 to version 1.13. | |
219 | ||
220 | On Windows, tilde (~) expansion now checks the C<USERPROFILE> environment | |
221 | variable, after checking C<HOME>. | |
222 | ||
223 | See also L</Security>. | |
224 | ||
225 | =item * | |
226 | ||
227 | L<Filter::Simple> has been upgrade from version 0.87 to 0.88. | |
228 | ||
229 | It is now better at detecting the end of a pod section. It always checks | |
230 | for =cut, instead of checking for =end (if the pod begins with =begin) or | |
231 | the end of the paragraph (if the pod begins with =for) [perl #92436]. | |
232 | ||
233 | It is also better at detecting variables. A method call on a variable is | |
234 | no longer considered part of the variable name, so strings passed to a | |
235 | method are now hidden from filters that do not want to deal with strings | |
236 | [perl #92436]. | |
237 | ||
238 | =item * | |
239 | ||
240 | L<IO> has been upgraded from version 1.25_05 to 1.25_06, and L<IO::Handle> | |
241 | from version 1.32 to 1.33. | |
242 | ||
243 | Together, these upgrades fix a problem with IO::Handle's C<getline> and | |
244 | C<getlines> methods. When these methods are called on the special ARGV | |
245 | handle, the next file is automatically opened, as happens with the built-in | |
246 | C<E<lt>E<gt>> and C<readline> functions. But, unlike the built-ins, these | |
247 | methods were not respecting the caller's use of the L<open> pragma and | |
248 | applying the approprate I/O layers to the newly-opened file | |
249 | [rt.cpan.org #66474]. | |
250 | ||
251 | =item * | |
252 | ||
253 | L<Math::BigFloat> has been upgraded from version 1.995 to version 1.997. | |
254 | ||
255 | =item * | |
256 | ||
257 | L<Math::BigInt> has been upgraded from version 1.996 to version 1.997. | |
258 | ||
259 | =item * | |
260 | ||
261 | L<Math::BigInt::FastCalc> has been upgraded from version 0.29 to 0.30. | |
262 | ||
263 | =item * | |
264 | ||
265 | L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603. | |
266 | ||
267 | C<int()> on a Math::BigRat object containing -1/2 now creates a | |
268 | Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even | |
269 | support negative zero, so the resulting object was actually malformed | |
270 | [perl #95530]. | |
271 | ||
272 | =item * | |
273 | ||
274 | L<Module::CoreList> has been upgraded from version 2.55 to 2.56. | |
275 | ||
276 | Updated module for 5.15.3, additionally it was missing a few entries: | |
277 | L<DB_File> in 5.8.2, L<Errno> in 5.6.0 and 5.6.1, and L<VMS::Filespec> | |
278 | in 5.12.3. | |
279 | ||
280 | =item * | |
281 | ||
282 | L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007. | |
283 | ||
284 | =item * | |
285 | ||
286 | L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46. | |
287 | ||
288 | =item * | |
289 | ||
290 | L<ODBM_File> has been upgraded from version 1.11 to version 1.12. | |
291 | ||
292 | This is only a minor refactoring of the XS code to bring it closer to the | |
293 | other C<?DBM_File> modules. | |
294 | ||
295 | =item * | |
296 | ||
297 | L<open> has been upgraded from version 1.08 to 1.09. | |
298 | ||
299 | It no longer turns of layers on standard handles when invoked without the | |
300 | ":std" directive. Similarly, when invoked I<with> the ":std" directive, it | |
301 | now clears layers on STDERR before applying the new ones, and not just on | |
302 | STDIN and STDOUT [perl #92728]. | |
303 | ||
304 | =item * | |
305 | ||
306 | L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150034. | |
307 | ||
308 | =item * | |
309 | ||
310 | L<Pod::Perldoc> has been upgraded from version 3.15_06 to 3.15_07. | |
311 | ||
312 | When rendering a file specified as an HTTP URL, it now use a manpage name | |
313 | based on the URL, instead of the name of the temporary file. | |
314 | ||
315 | =item * | |
316 | ||
317 | L<Pod::Simple> has been upgraded from version 3.18 to version 3.19. | |
318 | ||
319 | =item * | |
320 | ||
321 | L<POSIX> has been upgraded from version 1.24 to version 1.25. | |
322 | ||
323 | L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this | |
324 | implementation detail was buggy, and may fail as a result of this change. | |
325 | The module's Perl code has been considerably simplified, roughly halving | |
326 | the number of lines, with no change in functionality. The XS code has | |
327 | been refactored to reduce the size of the shared object by about 12%, | |
328 | with no change in functionality. More POSIX functions now have tests. | |
329 | ||
330 | C<POSIX::Termios::setattr> now defaults the third argument to C<TCSANOW>, | |
331 | instead of 0. On most platforms C<TCSANOW> is defined as 0, but on some | |
332 | 0 is not a valid parameter, which caused a call with defaults to fail. | |
333 | ||
334 | =item * | |
335 | ||
336 | L<Search::Dict> has been upgraded from version 1.03 to 1.04. | |
337 | ||
338 | =item * | |
339 | ||
340 | L<Storable> has been upgraded from version 2.31 to version 2.32. | |
341 | ||
342 | XS code which duplicates functionality of F<ppport.h> has been removed. | |
343 | Tests should now pass on older versions of L<Test::More>. Storable now | |
344 | builds and passes tests back to perl 5.004. | |
345 | ||
346 | =item * | |
347 | ||
348 | L<Text::Abbrev> has been upgraded from version 1.01 to 1.02. | |
349 | ||
350 | =item * | |
351 | ||
352 | L<threads> has been upgraded from version 1.83 to 1.85. | |
353 | ||
354 | =item * | |
355 | ||
356 | L<threads::shared> has been upgraded from version 1.38 to 1.40. | |
357 | ||
358 | Destructors on shared objects used to be ignored sometimes if the objects | |
359 | were referenced only by shared data structures. This has been mostly | |
360 | fixed, but destructors may still be ignored if the objects still exist at | |
361 | global destruction time [perl #98204]. | |
362 | ||
363 | =item * | |
364 | ||
365 | L<Unicode::UCD> has been upgraded from version 0.34 to version 0.35. | |
366 | ||
367 | =item * | |
368 | ||
369 | L<UNIVERSAL> has been upgraded from version 1.08 to version 1.09. | |
370 | ||
371 | =item * | |
372 | ||
373 | L<XSLoader> has been upgraded from version 0.15 to version 0.16. | |
374 | ||
375 | =back | |
376 | ||
377 | =head1 Documentation | |
378 | ||
379 | =head2 New Documentation | |
380 | ||
381 | =head3 L<perlootut> | |
382 | ||
383 | This a new OO tutorial. It focuses on basic OO concepts, and then recommends | |
384 | that readers choose an OO framework from CPAN. | |
385 | ||
386 | =head2 Changes to Existing Documentation | |
387 | ||
388 | =head3 L<perlobj> | |
389 | ||
390 | =over 4 | |
391 | ||
392 | =item * | |
393 | ||
394 | This document has been rewritten from scratch, and its coverage of various OO | |
395 | concepts has been expanded. | |
396 | ||
397 | =back | |
398 | ||
399 | =head3 L<perlpragma> | |
400 | ||
401 | =over 4 | |
402 | ||
403 | =item * | |
404 | ||
405 | There is now a standard convention for naming keys in the C<%^H>, | |
406 | documented under L<Key naming|perlpragma/Key naming>. | |
407 | ||
408 | =back | |
409 | ||
410 | =head2 Removed Documentation | |
411 | ||
412 | =head3 Old OO Documentation | |
413 | ||
414 | All the old OO tutorials, perltoot, perltooc, and perlboot, have been | |
415 | removed. The perlbot (bag of object tricks) document has been removed as well. | |
416 | ||
417 | =head3 Development Deltas | |
418 | ||
419 | The old perldelta files for development cycles prior to 5.15 have been | |
420 | removed. | |
421 | ||
422 | =head1 Utility Changes | |
423 | ||
424 | =head3 L<h2ph> | |
425 | ||
426 | =over 4 | |
427 | ||
428 | =item * | |
429 | ||
430 | L<h2ph> used to generate code of the form | |
431 | ||
432 | unless(defined(&FOO)) { | |
433 | sub FOO () {42;} | |
434 | } | |
435 | ||
436 | But the subroutine is a compile-time declaration, and is hence unaffected | |
437 | by the condition. It has now been corrected to emit a string C<eval> | |
438 | around the subroutine [perl #99368]. | |
439 | ||
440 | =back | |
441 | ||
442 | =head1 Configuration and Compilation | |
443 | ||
444 | =over 4 | |
445 | ||
446 | =item * | |
447 | ||
448 | The file F<global.sym> is no longer needed, and has been removed. It | |
449 | contained a list of all exported functions, one of the files generated by | |
450 | F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code | |
451 | has been refactored so that the only user of F<global.sym>, F<makedef.pl>, | |
452 | now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to | |
453 | store the list of exported functions in an intermediate file. | |
454 | ||
455 | As F<global.sym> was never installed, this change will not be visible | |
456 | outside the build process. | |
457 | ||
458 | =back | |
459 | ||
460 | =head1 Testing | |
461 | ||
462 | =over 4 | |
463 | ||
464 | =item * | |
465 | ||
466 | F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>. | |
467 | F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence | |
468 | previously was it was possible to inadvertently commit changes that worked | |
469 | perfectly locally, but broke the build on Win32. | |
470 | ||
471 | =item * | |
472 | ||
473 | F<t/op/unlink.t> has been added to test the C<unlink> function. | |
474 | ||
475 | =item * | |
476 | ||
477 | Several tests were added in L<POSIX>. | |
478 | ||
479 | F<ext/POSIX/t/export.t> added to test C<@EXPORT> and C<@EXPORT_OK>. | |
480 | F<ext/POSIX/t/sigset.t> added to see if C<POSIX::SigSet> works. | |
481 | F<ext/POSIX/t/unimplemented.t> added to test the diagnostics for | |
482 | unimplemented functions. F<ext/POSIX/t/usage.t> added to test the | |
483 | diagnostics for usage messages. F<ext/POSIX/t/wrappers.t> added to | |
484 | test the L<POSIX> wrapper subroutines. | |
485 | ||
486 | =item * | |
487 | ||
488 | F<ext/XS-APItest/t/gotosub.t> in L<XS::APItest> tests C<goto &xsub> | |
489 | and hints. | |
490 | ||
491 | =item * | |
492 | ||
493 | F<t/io/shm.t> was added to see if SysV shared memory works. | |
494 | ||
495 | =item * | |
496 | ||
497 | F<t/op/coreamp.t> was added to test C<&foo()> calls for CORE subs. | |
498 | ||
499 | =back | |
500 | ||
501 | =head1 Platform Support | |
502 | ||
503 | =head2 Platform-Specific Notes | |
504 | ||
505 | =over 4 | |
506 | ||
507 | =item VMS | |
508 | ||
509 | Remove unnecessary includes, fix miscellaneous compiler warnings and | |
510 | close some unclosed comments on F<vms/vms.c>. | |
511 | ||
512 | Remove sockadapt layer from the VMS build. | |
513 | ||
514 | =back | |
515 | ||
516 | =head1 Internal Changes | |
517 | ||
518 | =over 4 | |
519 | ||
520 | =item * | |
521 | ||
522 | The C<is_gv_magical_sv> function has been eliminated and merged with | |
523 | C<gv_fetchpvn_flags>. It used to be called to determine whether a GV | |
524 | should be autovivified in rvalue context. Now it has been replaced with a | |
525 | new C<GV_ADDMG> flag (not part of the API). | |
526 | ||
527 | =item * | |
528 | ||
529 | Padlists are now marked C<AvREAL>; i.e., reference-counted. They have | |
530 | always been reference-counted, but were not marked real, because F<pad.c> | |
531 | did its own clean-up, instead of using the usual clean-up code in F<sv.c>. | |
532 | That caused problems in thread cloning, so now the C<AvREAL> flag is on, | |
533 | but is turned off in F<pad.c> right before the padlist is freed (after | |
534 | F<pad.c> has done its custom freeing of the pads). | |
535 | ||
536 | =item * | |
537 | ||
538 | All the C files that make up the Perl core have been converted to UTF-8. | |
539 | ||
540 | =back | |
541 | ||
542 | =head1 Selected Bug Fixes | |
543 | ||
544 | =over 4 | |
545 | ||
546 | =item * | |
547 | ||
548 | In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$> | |
549 | variable had not been used yet. This has been fixed. | |
550 | ||
551 | =item * | |
552 | ||
553 | C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to | |
554 | return true for most, but not all built-in variables, if | |
555 | they had not been used yet. Many times that new built-in | |
556 | variables were added in past versions, this construct was | |
557 | not taken into account, so this affected C<${^GLOBAL_PHASE}> and | |
558 | C<${^UTF8CACHE}>, among others. It also used to return false if the | |
559 | package name was given as well (C<${"::!"}>) and for subroutines in the | |
560 | CORE package [perl #97978] [perl #97492] [perl #97484]. | |
561 | ||
562 | =item * | |
563 | ||
564 | Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo" | |
565 | represents the name of a built-in global variable used to return false if | |
566 | the variable had never been used before, but only on the I<first> call. | |
567 | This, too, has been fixed. | |
568 | ||
569 | =item * | |
570 | ||
571 | Various functions that take a filehandle argument in rvalue context | |
572 | (C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it | |
573 | was a tied variable, and warn twice, if it was C<undef> [perl #97482]. | |
574 | ||
575 | =item * | |
576 | ||
577 | C<close> and similar filehandle functions, when called on built-in global | |
578 | variables (like C<$+>), used to die if the variable happened to hold the | |
579 | undefined value, instead of producing the usual "Use of uninitialized | |
580 | value" warning. | |
581 | ||
582 | =item * | |
583 | ||
584 | When autovivified file handles were introduced in Perl 5.6.0, C<readline> | |
585 | was inadvertently made to autovivify when called as C<readline($foo)> (but | |
586 | not as C<E<lt>$fooE<gt>>). It has now been fixed never to autovivify. | |
587 | ||
588 | =item * | |
589 | ||
590 | C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but | |
591 | now calls it just once. | |
592 | ||
593 | =item * | |
594 | ||
595 | Some cases of dereferencing a complex expression, such as | |
596 | C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call | |
597 | it once. | |
598 | ||
599 | =item * | |
600 | ||
601 | For a tied variable returning a package name, C<$tied-E<gt>method> used to | |
602 | call C<FETCH> multiple times (even up to six!), and sometimes would | |
603 | fail to call the method, due to memory corruption. | |
604 | ||
605 | =item * | |
606 | ||
607 | Calling an undefined anonymous subroutine (e.g., what $x holds after | |
608 | C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which | |
609 | has been corrected to "Undefined subroutine called" [perl #71154]. | |
610 | ||
611 | =item * | |
612 | ||
613 | Causing C<@DB::args> to be freed between uses of C<caller> no longer | |
614 | results in a crash [perl #93320]. | |
615 | ||
616 | =item * | |
617 | ||
618 | Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined | |
619 | values. It would die in strict mode or lvalue context for most undefined | |
620 | values, but would be treated as the empty string (with a warning) for the | |
621 | specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This | |
622 | has been corrected. C<undef()> is now treated like other undefined | |
623 | scalars, as in Perl 5.005. | |
624 | ||
625 | =item * | |
626 | ||
627 | It used to be possible to free the typeglob of a localised array or hash | |
628 | (e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit. | |
629 | ||
630 | =item * | |
631 | ||
632 | C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because | |
633 | C<setpgrp> was ignoring its argument if there was just one. Now it is | |
634 | equivalent to C<setpgrp($foo,0)>. | |
635 | ||
636 | =item * | |
637 | ||
638 | Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH | |
639 | only once. | |
640 | ||
641 | =item * | |
642 | ||
643 | C<chdir>, C<chmod>, C<chown>, C<utime>, C<truncate>, C<stat>, C<lstat> and | |
644 | the filetest ops (C<-r>, C<-x>, etc.) now always call FETCH if passed a tied | |
645 | variable as the last argument. They used to ignore tiedness if the last | |
646 | thing return from or assigned to the variable was a typeglob or reference | |
647 | to a typeglob. | |
648 | ||
649 | =item * | |
650 | ||
651 | Perl 5.15.1 inadvertently stopped C<*foo =~ s/\*//r> from working, as it | |
652 | would try to force the *foo glob into a string. This has been fixed | |
653 | [perl #97954]. | |
654 | ||
655 | =item * | |
656 | ||
657 | If things were arranged in memory the right way, it was possible for | |
658 | thread joining to emit "Attempt to free unreferenced scalar" warnings if | |
659 | C<caller> had been used from the C<DB> package prior to thread creation, | |
660 | due to the way pads were reference-counted and cloned [perl #98092]. | |
661 | ||
662 | =item * | |
663 | ||
664 | CORE:: subs were introduced in the previous development release, but | |
665 | C<defined &{"CORE::..."}> did not return true. That has been rectified | |
666 | [perl #97484]. | |
667 | ||
668 | =item * | |
669 | ||
670 | Lvalue subroutines were made to autovivify in 5.15.0, but it did not work | |
671 | in some cases involving an intervening list operator between the | |
672 | dereference operator and the subroutine call (C<${(), lvsub()}>) | |
673 | [perl #98184]. | |
674 | ||
675 | =item * | |
676 | ||
677 | A bug has been fixed that occurs when a tied variable is used as a | |
678 | subroutine reference: if the last thing assigned to or returned from the | |
679 | variable was a reference or typeglob, the C<\&$tied> could either crash or | |
680 | return the wrong subroutine. The reference case is a regression introduced | |
681 | in Perl 5.10.0. For typeglobs, it has probably never worked till now. | |
682 | ||
683 | =item * | |
684 | ||
685 | C<given> was not scoping its implicit $_ properly, resulting in memory | |
686 | leaks or "Variable is not available" warnings [perl #94682]. | |
687 | ||
688 | =item * | |
689 | ||
690 | C<-l> followed by a bareword no longer "eats" the previous argument to | |
691 | the list operator in whose argument list it resides. In less convoluted | |
692 | English: C<print "bar", -l foo> now actually prints "bar", because C<-l> | |
693 | on longer eats it. | |
694 | ||
695 | =item * | |
696 | ||
697 | In 5.14.0, filetest ops (C<-r>, C<-x>, etc.) started calling FETCH on a | |
698 | tied argument belonging to the previous argument to a list operator, if | |
699 | called with a bareword argument or no argument at all. This has been | |
700 | fixed, so C<push @foo, $tied, -r> no longer calls FETCH on C<$tied>. | |
701 | ||
702 | =item * | |
703 | ||
704 | C<shmread> was not setting the scalar flags correctly when reading from | |
705 | shared memory, causing the existing cached numeric representation in the | |
706 | scalar to persist [perl #98480]. | |
707 | ||
708 | =item * | |
709 | ||
710 | Weakening the first argument to an automatically-invoked C<DESTROY> method | |
711 | could result in erroneous "DESTROY created new reference" errors or | |
712 | crashes. Now it is an error to weaken a read-only reference. | |
713 | ||
714 | =item * | |
715 | ||
716 | Under miniperl (used to configure modules when perl itself is built), | |
717 | C<glob> now clears %ENV before calling csh, since the latter croaks on some | |
718 | systems if it does not like the contents of the LS_COLORS enviroment | |
719 | variable [perl #98662]. | |
720 | ||
721 | =item * | |
722 | ||
723 | C<++> and C<--> now work on copies of globs, instead of dying. | |
724 | ||
725 | =item * | |
726 | ||
727 | The subroutines in the CORE:: namespace that were introduced in the | |
728 | previous development release run with the lexical hints (strict, warnings) | |
729 | of the caller, just as though the built-in function had been called. But | |
730 | this was not the case for C<goto &CORE::sub>. The CORE sub would end up | |
731 | running with the lexical hints of the subroutine it replaced, instead of | |
732 | that subroutine's caller. This has been fixed. | |
733 | ||
734 | =item * | |
735 | ||
736 | Stacked C<-l> (followed immediately by other filetest operators) did not | |
737 | work previously; now it does. It is only permitted when the rightmost | |
738 | filetest op has the special "_" handle for its argument and the most | |
739 | recent C<stat>/C<lstat> call was an C<lstat>. | |
740 | ||
741 | =item * | |
742 | ||
743 | In Perl 5.6, C<-l> followed by anything other than a bareword would treat | |
744 | its argument as a file name. That was changed in 5.8 for glob references | |
745 | (C<\*foo>), but not for globs themselves (C<*foo>). C<-l> started | |
746 | returning C<undef> for glob references without setting the last | |
747 | stat buffer that the "_" handle uses, but only if warnings | |
748 | were turned on. With warnings off, it was the same as 5.6. | |
749 | In other words, it was simply buggy and inconsistent. Now the 5.6 | |
750 | behaviour has been restored. | |
751 | ||
752 | =back | |
753 | ||
754 | =head1 Known Problems | |
755 | ||
756 | =over 4 | |
757 | ||
758 | =item * | |
759 | ||
760 | We have a failing test in F<op/sigdispatch.t> on i386-netbsd 3.1 | |
761 | ||
762 | =item * | |
763 | ||
764 | On Solaris, we have two kinds of failure. | |
765 | ||
766 | If F<make> is Sun's F<make≥>, we get an error about a badly formed macro | |
767 | assignment in the F<Makefile>. That happens when F<./Configure> tries to | |
768 | make depends. F<Configure> then exits 0, but further F<make>-ing fails. | |
769 | ||
770 | If F<make> is F<gmake>, F<Configure> completes, then we get errors related | |
771 | to F</usr/include/stdbool.h> | |
772 | ||
773 | =back | |
774 | ||
775 | =head1 Acknowledgements | |
776 | ||
777 | Perl 5.15.3 represents approximately 2 months of development since Perl 5.15.2 | |
778 | and contains approximately 160,000 lines of changes across 700 files from 44 | |
779 | authors. | |
780 | ||
781 | Perl continues to flourish into its third decade thanks to a vibrant community | |
782 | of users and developers. The following people are known to have contributed the | |
783 | improvements that became Perl 5.15.3: | |
784 | ||
785 | Abigail, Alexandr Ciornii, Aristotle Pagaltzis, Chas. Owens, Chip Salzenberg, | |
786 | Chris 'BinGOs' Williams, Craig A. Berry, Damian Conway, Dave Rolsky, David | |
787 | Mitchell, Dominic Hargreaves, Douglas Christopher Wilson, Eric Brine, Father | |
788 | Chrysostomos, Florian Ragwitz, Frederic Briere, George Greer, Gerard Goossen, | |
789 | H.Merijn Brand, Jerry D. Hedden, Jesse Vincent, Jim Cromie, Karl Williamson, | |
790 | Keith Thompson, Leo Lapworth, Leon Timmermans, Lukas Mai, Mark Jason Dominus, | |
791 | Matthew Horsfall, Moritz Lenz, Nicholas Clark, Peter John Acklam, Rafael | |
792 | Garcia-Suarez, Ricardo Signes, Robin Barker, Shlomi Fish, Steffen Müller, | |
793 | Stephen Bennett, Stevan Little, Steve Hay, Tony Cook, Vincent Pit, Walt | |
794 | Mankowski, Zefram. | |
795 | ||
796 | The list above is almost certainly incomplete as it is automatically generated | |
797 | from version control history. In particular, it does not include the names of | |
798 | the (very much appreciated) contributors who reported issues to the Perl bug | |
799 | tracker. | |
800 | ||
801 | Many of the changes included in this version originated in the CPAN modules | |
802 | included in Perl's core. We're grateful to the entire CPAN community for | |
803 | helping Perl to flourish. | |
804 | ||
805 | For a more complete list of all of Perl's historical contributors, please see | |
806 | the F<AUTHORS> file in the Perl source distribution. | |
807 | ||
808 | =head1 Reporting Bugs | |
809 | ||
810 | If you find what you think is a bug, you might check the articles | |
811 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
812 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
813 | information at http://www.perl.org/ , the Perl Home Page. | |
814 | ||
815 | If you believe you have an unreported bug, please run the L<perlbug> | |
816 | program included with your release. Be sure to trim your bug down | |
817 | to a tiny but sufficient test case. Your bug report, along with the | |
818 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
819 | analysed by the Perl porting team. | |
820 | ||
821 | If the bug you are reporting has security implications, which make it | |
822 | inappropriate to send to a publicly archived mailing list, then please send | |
823 | it to perl5-security-report@perl.org. This points to a closed subscription | |
824 | unarchived mailing list, which includes | |
825 | all the core committers, who will be able | |
826 | to help assess the impact of issues, figure out a resolution, and help | |
827 | co-ordinate the release of patches to mitigate or fix the problem across all | |
828 | platforms on which Perl is supported. Please only use this address for | |
829 | security issues in the Perl core, not for modules independently | |
830 | distributed on CPAN. | |
831 | ||
832 | =head1 SEE ALSO | |
833 | ||
834 | The F<Changes> file for an explanation of how to view exhaustive details | |
835 | on what changed. | |
836 | ||
837 | The F<INSTALL> file for how to build Perl. | |
838 | ||
839 | The F<README> file for general stuff. | |
840 | ||
841 | The F<Artistic> and F<Copying> files for copyright information. | |
842 | ||
843 | =cut |