Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
f25d4e05 | 5 | perldelta - what is new for perl v5.15.3 |
760696b8 | 6 | |
5438d4b8 | 7 | =head1 DESCRIPTION |
5cd408a2 | 8 | |
f25d4e05 RS |
9 | This document describes differences between the 5.15.2 release and |
10 | the 5.15.3 release. | |
5cd408a2 | 11 | |
f25d4e05 RS |
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. | |
062678b2 | 15 | |
63ac71b9 | 16 | =head1 Notice |
4185c919 | 17 | |
83307084 SL |
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 | |
45c0823b SL |
20 | tutorials (perltoot, perlboot, etc.) have been replaced with pointers |
21 | to the new docs. | |
0afed34d | 22 | |
63ac71b9 | 23 | =head1 Core Enhancements |
0afed34d | 24 | |
d2006265 FC |
25 | =head2 More CORE subs are callable through references |
26 | ||
c148612c | 27 | Perl 5.15.2 introduced subroutines in the CORE namespace. Most of them |
d2006265 FC |
28 | could only be called as barewords; i.e., they could be aliased at compile |
29 | time and then inlined under new names. | |
30 | ||
2702a50a FC |
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. | |
d2006265 | 34 | |
d6cf2367 FC |
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 | ||
63ac71b9 | 40 | =head1 Security |
0afed34d | 41 | |
46661105 CB |
42 | =head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728). |
43 | ||
83307084 | 44 | Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would |
46661105 CB |
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 | ||
5438d4b8 | 51 | =head1 Incompatible Changes |
7818c927 | 52 | |
e1dccc0d Z |
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 | ||
5d1892be | 63 | =head2 User-defined case changing operations. |
7b2b001e | 64 | |
5d1892be KW |
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> | |
bdb9ba77 | 70 | |
7ec04da5 S |
71 | =head2 XSUBs are now 'static' |
72 | ||
73 | XSUB C functions are now 'static', that is, they are not visible from | |
404452ea S |
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 | |
7ec04da5 S |
80 | C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details. |
81 | ||
d6cf2367 FC |
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 | ||
5d4ff231 FC |
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 | ||
63ac71b9 | 92 | =head1 Modules and Pragmata |
730e5b5b | 93 | |
63ac71b9 | 94 | =head2 Updated Modules and Pragmata |
e46d9735 | 95 | |
63ac71b9 | 96 | =over 4 |
e46d9735 CBW |
97 | |
98 | =item * | |
99 | ||
5f8b5b70 NC |
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 | ||
43c6b706 | 106 | L<Archive::Extract> has been upgraded from version 0.52 to version 0.56. |
4afdee4c CBW |
107 | |
108 | Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32 | |
57126352 | 109 | |
d93f0209 FC |
110 | =item * |
111 | ||
93e94d8a CBW |
112 | L<Archive::Tar> has been upgraded from version 1.76 to version 1.78. |
113 | ||
114 | =item * | |
115 | ||
83307084 SL |
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 | ||
6ec73527 FC |
124 | L<B::Deparse> has been upgraded from version 1.07 to 1.08. |
125 | ||
61154ac0 | 126 | It now correctly deparses C<$#{/}> and C<qq(${#}a)>. |
6ec73527 FC |
127 | |
128 | =item * | |
129 | ||
83307084 SL |
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 | ||
a808a03d | 137 | L<CPAN::Meta> has been upgraded from version 2.112150 to version 2.112621. |
13975bd1 CBW |
138 | |
139 | =item * | |
140 | ||
53b10071 CBW |
141 | L<CPAN::Meta::YAML> has been upgraded from version 0.003 to version 0.004. |
142 | ||
143 | =item * | |
144 | ||
891b5d1e | 145 | L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9111. |
755f12e5 NC |
146 | |
147 | =item * | |
148 | ||
50b3d220 CBW |
149 | L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58. |
150 | ||
151 | =item * | |
152 | ||
49ef49fe CBW |
153 | L<Devel::PPPort> has been upgraded from version 3.19 to version 3.20. |
154 | ||
155 | =item * | |
156 | ||
43c6b706 | 157 | L<diagnostics> has been upgraded from version 1.24 to version 1.25. |
d2006265 | 158 | |
6776795f | 159 | It now strips out C<SZE<lt>E<gt>E<lt>...E<gt>> formatting codes before displaying |
d2006265 FC |
160 | descriptions [perl #94488]. |
161 | ||
162 | =item * | |
163 | ||
4bbdbd51 NC |
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 | ||
f87cd9fa CBW |
170 | L<Exporter> has been upgraded from version 5.64_03 to version 5.65. |
171 | ||
172 | =item * | |
173 | ||
404452ea | 174 | L<ExtUtils::ParseXS> has been upgraded from version 3.03_01 to version 3.04_04. |
98e61122 NC |
175 | |
176 | The handling of C<dVAR> in the generated XS code has been simplified. | |
177 | ||
404452ea S |
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 | ||
98e61122 NC |
209 | =item * |
210 | ||
43c6b706 CBW |
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 | ||
46661105 CB |
218 | L<File::Glob> has been upgraded from version 1.12 to version 1.13. |
219 | ||
d6cf2367 FC |
220 | On Windows, tilde (~) expansion now checks the C<USERPROFILE> environment |
221 | variable, after checking C<HOME>. | |
222 | ||
223 | See also L</Security>. | |
46661105 CB |
224 | |
225 | =item * | |
226 | ||
0b2be169 FC |
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 | ||
828d6195 FC |
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 | ||
0b2be169 FC |
238 | =item * |
239 | ||
986a805c FC |
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 | |
1d5a17e3 | 246 | C<E<lt>E<gt>> and C<readline> functions. But, unlike the built-ins, these |
986a805c FC |
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 | ||
83307084 SL |
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 | ||
43c6b706 | 265 | L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603. |
d93f0209 FC |
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 | ||
60527824 FR |
272 | =item * |
273 | ||
d6cf2367 FC |
274 | L<Module::CoreList> has been upgraded from version 2.55 to 2.56. |
275 | ||
e46b3c7d SL |
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. | |
d6cf2367 FC |
279 | |
280 | =item * | |
281 | ||
d6ee8587 | 282 | L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007. |
d39de893 CBW |
283 | |
284 | =item * | |
285 | ||
39afdc5a CBW |
286 | L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46. |
287 | ||
288 | =item * | |
289 | ||
666c7ca6 NC |
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 | ||
d6cf2367 FC |
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 | ||
c56bc1f6 | 306 | L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150034. |
a9feb6cb CBW |
307 | |
308 | =item * | |
309 | ||
8fe353ef FC |
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 | ||
43c6b706 | 317 | L<Pod::Simple> has been upgraded from version 3.18 to version 3.19. |
60527824 | 318 | |
7ac26854 NC |
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 | |
29d1ad9e NC |
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. | |
7ac26854 | 329 | |
518487b2 NC |
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 | ||
daef35db NC |
334 | =item * |
335 | ||
83307084 SL |
336 | L<Search::Dict> has been upgraded from version 1.03 to 1.04. |
337 | ||
338 | =item * | |
339 | ||
b420b12a NC |
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 | ||
83307084 SL |
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 | ||
d6cf2367 FC |
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 | ||
83307084 | 365 | L<Unicode::UCD> has been upgraded from version 0.34 to version 0.35. |
daef35db | 366 | |
83307084 | 367 | =item * |
259925f6 | 368 | |
83307084 | 369 | L<UNIVERSAL> has been upgraded from version 1.08 to version 1.09. |
9840cdee CBW |
370 | |
371 | =item * | |
372 | ||
83307084 | 373 | L<XSLoader> has been upgraded from version 0.15 to version 0.16. |
54e02335 | 374 | |
63ac71b9 | 375 | =back |
310913d4 | 376 | |
63ac71b9 | 377 | =head1 Documentation |
310913d4 | 378 | |
63ac71b9 | 379 | =head2 New Documentation |
7b2b001e | 380 | |
b89e9b0d | 381 | =head3 L<perlootut> |
7b2b001e | 382 | |
b89e9b0d DR |
383 | This a new OO tutorial. It focuses on basic OO concepts, and then recommends |
384 | that readers choose an OO framework from CPAN. | |
2df9265e | 385 | |
63ac71b9 | 386 | =head2 Changes to Existing Documentation |
2df9265e | 387 | |
b89e9b0d | 388 | =head3 L<perlobj> |
dc80b0c6 | 389 | |
63ac71b9 | 390 | =over 4 |
83b32788 CBW |
391 | |
392 | =item * | |
393 | ||
b89e9b0d DR |
394 | This document has been rewritten from scratch, and its coverage of various OO |
395 | concepts has been expanded. | |
4eb81ef2 | 396 | |
63ac71b9 | 397 | =back |
4eb81ef2 | 398 | |
d6cf2367 FC |
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 | ||
b89e9b0d DR |
410 | =head2 Removed Documentation |
411 | ||
412 | =head3 Old OO Documentation | |
413 | ||
414 | All the old OO tutorials, perltoot, perltooc, and perlboot, have been | |
d6cf2367 FC |
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. | |
b89e9b0d | 421 | |
63ac71b9 | 422 | =head1 Utility Changes |
0cb4637e | 423 | |
7d167fe7 | 424 | =head3 L<h2ph> |
4abaf918 | 425 | |
5438d4b8 | 426 | =over 4 |
4abaf918 Z |
427 | |
428 | =item * | |
429 | ||
7d167fe7 FC |
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]. | |
8b00e523 | 439 | |
e8e35311 FC |
440 | =back |
441 | ||
63ac71b9 | 442 | =head1 Configuration and Compilation |
b908e258 | 443 | |
63ac71b9 | 444 | =over 4 |
71449ad0 DG |
445 | |
446 | =item * | |
447 | ||
5ecd28b8 NC |
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. | |
b908e258 | 457 | |
6693394d FC |
458 | =back |
459 | ||
63ac71b9 | 460 | =head1 Testing |
bbc28bfc | 461 | |
34dc2ec0 | 462 | =over 4 |
42a91c97 | 463 | |
6693394d | 464 | =item * |
42a91c97 | 465 | |
c752c500 FC |
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. | |
310913d4 | 470 | |
d2006265 FC |
471 | =item * |
472 | ||
473 | F<t/op/unlink.t> has been added to test the C<unlink> function. | |
474 | ||
83307084 | 475 | =item * |
42a91c97 | 476 | |
83307084 | 477 | Several tests were added in L<POSIX>. |
975dff8c | 478 | |
83307084 | 479 | F<ext/POSIX/t/export.t> added to test C<@EXPORT> and C<@EXPORT_OK>. |
887094cb | 480 | F<ext/POSIX/t/sigset.t> added to see if C<POSIX::SigSet> works. |
83307084 SL |
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. | |
9cfd094e | 485 | |
83307084 | 486 | =item * |
9cfd094e | 487 | |
83307084 SL |
488 | F<ext/XS-APItest/t/gotosub.t> in L<XS::APItest> tests C<goto &xsub> |
489 | and hints. | |
9cfd094e | 490 | |
83307084 | 491 | =item * |
7c4c6e7c | 492 | |
83307084 | 493 | F<t/io/shm.t> was added to see if SysV shared memory works. |
95f7e41f | 494 | |
83307084 | 495 | =item * |
95f7e41f | 496 | |
83307084 | 497 | F<t/op/coreamp.t> was added to test C<&foo()> calls for CORE subs. |
df5b44bd | 498 | |
63ac71b9 | 499 | =back |
310913d4 | 500 | |
83307084 | 501 | =head1 Platform Support |
df5b44bd | 502 | |
63ac71b9 RS |
503 | =head2 Platform-Specific Notes |
504 | ||
5438d4b8 | 505 | =over 4 |
7818c927 | 506 | |
83307084 SL |
507 | =item VMS |
508 | ||
509 | Remove unnecessary includes, fix miscellaneous compiler warnings and | |
510 | close some unclosed comments on F<vms/vms.c>. | |
7818c927 | 511 | |
83307084 | 512 | Remove sockadapt layer from the VMS build. |
f79aa60b | 513 | |
63ac71b9 | 514 | =back |
7818c927 | 515 | |
63ac71b9 | 516 | =head1 Internal Changes |
3fdd840f | 517 | |
63ac71b9 | 518 | =over 4 |
7ffa7e75 | 519 | |
862b2c43 FC |
520 | =item * |
521 | ||
c39e29ea FC |
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). | |
862b2c43 | 535 | |
d6cf2367 FC |
536 | =item * |
537 | ||
538 | All the C files that make up the Perl core have been converted to UTF-8. | |
539 | ||
63ac71b9 | 540 | =back |
c973bd4f | 541 | |
63ac71b9 | 542 | =head1 Selected Bug Fixes |
a6cefd81 | 543 | |
63ac71b9 | 544 | =over 4 |
c4499eff | 545 | |
bbc28bfc FC |
546 | =item * |
547 | ||
d2006265 FC |
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 | ||
b4155db2 FC |
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 | |
23496c6e | 557 | not taken into account, so this affected C<${^GLOBAL_PHASE}> and |
b4155db2 FC |
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]. | |
23496c6e FC |
561 | |
562 | =item * | |
563 | ||
d2006265 FC |
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 | |
1d5a17e3 | 586 | not as C<E<lt>$fooE<gt>>). It has now been fixed never to autovivify. |
d2006265 FC |
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 | ||
1d5a17e3 | 601 | For a tied variable returning a package name, C<$tied-E<gt>method> used to |
d2006265 FC |
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]. | |
bbc28bfc | 610 | |
e1a80902 FC |
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 | ||
fdd313f4 FC |
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 | ||
01433346 FC |
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 | ||
88d69532 FC |
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 | ||
33d4ef81 FC |
636 | =item * |
637 | ||
8d4393cf FC |
638 | Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH |
639 | only once. | |
33d4ef81 | 640 | |
93564729 FC |
641 | =item * |
642 | ||
7d3f03b7 SL |
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 | |
93564729 FC |
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 | ||
c39e29ea FC |
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 | ||
d6cf2367 FC |
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 | ||
5d4ff231 FC |
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 | ||
a3342be3 FC |
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 | ||
60092ce4 FC |
721 | =item * |
722 | ||
723 | C<++> and C<--> now work on copies of globs, instead of dying. | |
724 | ||
309aab3a FC |
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 | ||
1f26655e FC |
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 | ||
433644ee FC |
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 | |
396d9be3 FC |
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. | |
433644ee FC |
749 | In other words, it was simply buggy and inconsistent. Now the 5.6 |
750 | behaviour has been restored. | |
751 | ||
63ac71b9 | 752 | =back |
bbc28bfc | 753 | |
7d3f03b7 SL |
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 | ||
93f0c9e6 | 764 | On Solaris, we have two kinds of failure. |
7d3f03b7 | 765 | |
93f0c9e6 SL |
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. | |
7d3f03b7 | 769 | |
93f0c9e6 SL |
770 | If F<make> is F<gmake>, F<Configure> completes, then we get errors related |
771 | to F</usr/include/stdbool.h> | |
7d3f03b7 SL |
772 | |
773 | =back | |
774 | ||
44691e6f AB |
775 | =head1 Acknowledgements |
776 | ||
d14a8abf SL |
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. | |
29cf780c | 807 | |
44691e6f AB |
808 | =head1 Reporting Bugs |
809 | ||
810 | If you find what you think is a bug, you might check the articles | |
34dc2ec0 | 811 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
44691e6f AB |
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 | |
34dc2ec0 | 823 | it to perl5-security-report@perl.org. This points to a closed subscription |
b4707b2a FC |
824 | unarchived mailing list, which includes |
825 | all the core committers, who will be able | |
44691e6f AB |
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 | |
34dc2ec0 DM |
828 | platforms on which Perl is supported. Please only use this address for |
829 | security issues in the Perl core, not for modules independently | |
44691e6f AB |
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 |