This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #77234] Change 649d02de (unary prototypes) changes precedence
[perl5.git] / pod / perl5134delta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perl5134delta - what is new for perl v5.13.4
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.13.4 release and
10 the 5.13.3 release.
11
12 If you are upgrading from an earlier release such as 5.13.2, first read
13 L<perl5133delta>, which describes differences between 5.13.2 and
14 5.13.3.
15
16 =head1 Core Enhancements
17
18 =head2 C<srand()> now returns the seed
19
20 This allows programs that need to have repeatable results to not have to come
21 up with their own seed generating mechanism.  Instead, they can use C<srand()>
22 and somehow stash the return for future use.  Typical is a test program which
23 has too many combinations to test comprehensively in the time available to it
24 each run.  It can test a random subset each time, and should there be a failure,
25 log the seed used for that run so that it can later be used to reproduce the
26 exact results.
27
28 =head2 Creating unary functions with prototypes
29
30 Calls to functions created with the following prototypes are now correctly parsed
31
32 Functions declared with the following prototypes now behave correctly as unary functions:
33
34 =over 4
35
36 =item *
37
38 C<*>
39
40 =item *
41
42 C<\sigil>
43
44 =item *
45
46 C<\[...]>
47
48 =item *
49
50 C<;$>
51
52 =item *
53
54 C<;*>
55
56 =item *
57
58 C<;\sigil>
59
60 =item *
61
62 C<;\[...]>
63
64 =back
65
66 =head2 C<\N{I<name>}> and C<charnames> enhancements
67
68 C<\N{}>, C<charnames::vianame>, C<charnames::viacode> now know about every
69 character in Unicode.  Previously, they didn't know about the Hangul syllables
70 nor a number of CJK (Chinese/Japanese/Korean) characters.
71
72 =head1 Incompatible Changes
73
74 =head2 Declare API incompatibility between blead releases
75
76 Only stable releases (5.10.x, 5.12.x, 5.14.x, ...) guarantee binary
77 compatibility with each other, while blead releases (5.13.x, 5.15.x, ...) often
78 break this compatibility. However, prior to perl 5.13.4, all blead releases had
79 the same C<PERL_API_REVISION>, C<PERL_API_VERSION>, and C<PERL_API_SUBVERSION>,
80 effectively declaring them as binary compatible, which they weren't. From now
81 on, blead releases will have a C<PERL_API_SUBVERSION> equal to their
82 C<PERL_SUBVERSION>, explicitly marking them as incompatible with each other.
83
84 Maintenance releases of stable perl versions will continue to make no
85 intentionally incompatible API changes.
86
87 =head2 Check API compatibility when loading XS modules
88
89 When perl's API changes in incompatible ways (which usually happens between
90 every major release), XS modules compiled for previous versions of perl will not
91 work anymore. They will need to be recompiled against the new perl.
92
93 In order to ensure that modules are recompiled, and to prevent users from
94 accidentally loading modules compiled for old perls into newer ones, the
95 C<XS_APIVERSION_BOOTCHECK> macro has been added. That macro, which is called
96 when loading every newly compiled extension, compares the API version of the
97 running perl with the version a module has been compiled for and raises an
98 exception if they don't match.
99
100 =head2 Binary Incompatible with all previous Perls
101
102 Some bit fields have been reordered; therefore, this release will not be binary
103 compatible with any previous Perl release.
104
105 =head2 Change in the parsing of certain prototypes
106
107 Due to a bug fix, functions using the C<(*)>, C<(;$)> and C<(;*)>
108 prototypes are parsed with higher precedence than before. So in the
109 following example:
110
111   sub foo($);
112   foo $a < $b;
113
114 the second line is now parsed correctly as C<< foo($a) < $b >>, rather than
115 C<< foo($a < $b) >>. This happens when one of these operators is used in
116 an unparenthesised argument:
117
118   < > <= >= lt gt le ge
119   == != <=> eq ne cmp ~~
120   &
121   | ^
122   &&
123   || //
124   .. ...
125   ?:
126   = += -= *= etc.
127
128 =head1 Deprecations
129
130 =head2 List assignment to C<$[>
131
132 After assignment to C<$[> has been deprecated and started to give warnings in
133 perl version 5.12.0, this version of perl also starts to emit a warning when
134 assigning to C<$[> in list context. This fixes an oversight in 5.12.0.
135
136 =head1 Performance Enhancements
137
138 =over 4
139
140 =item *
141
142 Make string appending 100 times faster
143
144 When doing a lot of string appending, perl could end up allocating a lot more
145 memory than needed in a very inefficient way, if perl was configured to use the
146 system's C<malloc> implementation instead of its own.
147
148 C<sv_grow>, which is what's being used to allocate more memory if necessary when
149 appending to a string, has now been taught how to round up the memory it
150 requests to a certain geometric progression, making it much faster on certain
151 platforms and configurations. On Win32, it's now about 100 times faster.
152
153 =item *
154
155 For weak references, the common case of just a single weak reference per
156 referent has been optimised to reduce the storage required. In this case it
157 saves the equivalent of one small perl array per referent.
158
159 =item *
160
161 C<XPV>, C<XPVIV>, and C<XPVNV> now only allocate the parts of the C<SV> body
162 they actually use, saving some space.
163
164 =back
165
166 =head1 Modules and Pragmata
167
168 =head2 New Modules and Pragmata
169
170 This release does not introduce any new modules or pragmata.
171
172 =head2 Updated Modules and Pragmata
173
174 =over 4
175
176 =item C<Archive::Tar>
177
178 Upgraded from version 1.64 to 1.68.
179
180 Among other things, the new version adds a new option to C<ptar> to allow safe
181 creation of tarballs without world-writable files on Windows, allowing those
182 archives to be uploaded to CPAN.
183
184 =item C<B::Lint>
185
186 Upgraded from version 1.11 to 1.12.
187
188 =item C<Carp>
189
190 Upgraded from version 1.16 to 1.18.
191
192 L<Carp> now detects incomplete L<caller()|perlfunc/"caller EXPR"> overrides and
193 avoids using bogus C<@DB::args>. To provide backtraces, Carp relies on
194 particular behaviour of the caller built-in. Carp now detects if other code has
195 overridden this with an incomplete implementation, and modifies its backtrace
196 accordingly. Previously incomplete overrides would cause incorrect values in
197 backtraces (best case), or obscure fatal errors (worst case)
198
199 This fixes certain cases of C<Bizarre copy of ARRAY> caused by modules
200 overriding C<caller()> incorrectly.
201
202 =item C<Compress::Raw::Bzip2>
203
204 Upgraded from version 2.027 to 2.030.
205
206 =item C<Compress::Raw::Zlib>
207
208 Upgraded from version 2.027 to 2.030.
209
210 =item C<File::Spec>
211
212 Upgraded from version 3.31 to 3.31_01.
213
214 Various issues in L<File::Spec::VMS> have been fixed.
215
216 =item C<I18N::Langinfo>
217
218 Upgraded from version 0.03 to 0.04.
219
220 C<langinfo()> now defaults to using C<$_> if there is no argument given, just
221 like the documentation always claimed it did.
222
223 =item C<IO::Compress>
224
225 Upgraded from version 2.027 to 2.030.
226
227 =item C<Module::CoreList>
228
229 Upgraded from version 2.36 to 2.37.
230
231 Besides listing the updated core modules of this release, it also stops listing
232 the C<Filespec> module. That module never existed in core. The scripts
233 generating C<Module::CoreList> confused it with C<VMS::Filespec>, which actually
234 is a core module, since the time of perl 5.8.7.
235
236 =item C<Test::Harness>
237
238 Upgraded from version 3.21 to 3.22.
239
240 =item C<Test::Simple>
241
242 Upgraded from version 0.94 to 0.96.
243
244 Among many other things, subtests without a C<plan> or C<no_plan> now have an
245 implicit C<done_testing()> added to them.
246
247 =item C<Unicode::Collate>
248
249 Upgraded from version 0.53 to 0.56.
250
251 Among other things, it is now using UCA Revision 20 (based on Unicode 5.2.0) and
252 supports a couple of new locales.
253
254 =item C<feature>
255
256 Upgraded from version 1.17 to 1.18.
257
258 =back
259
260 =head2 Removed Modules and Pragmata
261
262 This release does not remove any modules or pragmata.
263
264 =head1 Documentation
265
266 =head2 Changes to Existing Documentation
267
268 =head3 L<perldiag>
269
270 =over 4
271
272 =item *
273
274 The following existing diagnostics are now documented:
275
276 =over 4
277
278 =item *
279
280 L<Ambiguous use of %c resolved as operator %c|perldiag/"Ambiguous use of %c resolved as operator %c">
281
282 =item *
283
284 L<Ambiguous use of %c{%s} resolved to %c%s|perldiag/"Ambiguous use of %c{%s} resolved to %c%s">
285
286 =item *
287
288 L<Ambiguous use of %c{%s%s} resolved to %c%s%s|perldiag/"Ambiguous use of %c{%s%s} resolved to %c%s%s">
289
290 =item *
291
292 L<Ambiguous use of -%s resolved as -&%s()|perldiag/"Ambiguous use of -%s resolved as -&%s()">
293
294 =item *
295
296 L<Invalid strict version format (%s)|perldiag/"Invalid strict version format (%s)">
297
298 =item *
299
300 L<Invalid version format (%s)|perldiag/"Invalid version format (%s)">
301
302 =item *
303
304 L<Invalid version object|perldiag/"Invalid version object">
305
306 =back
307
308 =back
309
310 =head3 L<perlport>
311
312 =over 4
313
314 =item *
315
316 Documented a L<limitation|perlport/alarm> of L<alarm()|perlfunc/"alarm SECONDS">
317 on Win32.
318
319 =back
320
321 =head3 L<perlre>
322
323 =over 4
324
325 =item *
326
327 Minor fix to a multiple scalar match example.
328
329 =back
330
331 =head1 Configuration and Compilation
332
333 =over 4
334
335 =item *
336
337 Compatibility with C<C++> compilers has been improved.
338
339 =item *
340
341 On compilers that support it, C<-Wwrite-strings> is now added to cflags by
342 default.
343
344 =back
345
346 =head1 Testing
347
348 =over 4
349
350 =item *
351
352 F<t/op/print.t> has been added to test implicit printing of C<$_>.
353
354 =item *
355
356 F<t/io/errnosig.t> has been added to test for restoration of of C<$!> when
357 leaving signal handlers.
358
359 =item *
360
361 F<t/op/tie_fetch_count.t> has been added to see if C<FETCH> is only called once
362 on tied variables.
363
364 =item *
365
366 F<lib/Tie/ExtraHash.t> has been added to make sure the, previously untested,
367 L<Tie::ExtraHash> keeps working.
368
369 =item *
370
371 F<t/re/overload.t> has been added to test against string corruption in pattern
372 matches on overloaded objects. This is a TODO test.
373
374 =back
375
376 =head1 Platform Support
377
378 =head2 Platform-Specific Notes
379
380 =over 4
381
382 =item Win32
383
384 =over 4
385
386 =item *
387
388 Fixed a possible hang in F<t/op/readline.t>.
389
390 =item *
391
392 Fixed build process for SDK2003SP1 compilers.
393
394 =item *
395
396 When using old 32-bit compilers, the define C<_USE_32BIT_TIME_T> will now be set
397 in C<$Config{ccflags}>. This improves portability when compiling XS extensions
398 using new compilers, but for a perl compiled with old 32-bit compilers.
399
400 =back
401
402 =back
403
404 =head1 Internal Changes
405
406 =over 4
407
408 =item Removed C<PERL_POLLUTE>
409
410 The option to define C<PERL_POLLUTE> to expose older 5.005 symbols for backwards
411 compatibility has been removed. It's use was always discouraged, and MakeMaker
412 contains a more specific escape hatch:
413
414     perl Makefile.PL POLLUTE=1
415
416 This can be used for modules that have not been upgraded to 5.6 naming
417 conventions (and really should be completely obsolete by now).
418
419 =item Added C<PERL_STATIC_INLINE>
420
421 The C<PERL_STATIC_INLINE> define has been added to provide the best-guess
422 incantation to use for static inline functions, if the C compiler supports
423 C99-style static inline. If it doesn't, it'll give a plain C<static>.
424
425 C<HAS_STATIC_INLINE> can be used to check if the compiler actually supports
426 inline functions.
427
428 =back
429
430 =head1 Selected Bug Fixes
431
432 =over 4
433
434 =item *
435
436 A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set
437 C<@DB::args> has been fixed.
438
439 =item *
440
441 Several memory leaks when loading XS modules were fixed.
442
443 =item *
444
445 A panic in the regular expression optimizer has been fixed (RT#75762).
446
447 =item *
448
449 Assignments to lvalue subroutines now honor copy-on-write behavior again, which
450 has been broken since version 5.10.0 (RT#75656).
451
452 =item *
453
454 Assignments to glob copies now behave just like assignments to regular globs
455 (RT#1804).
456
457 =item *
458
459 Within signal handlers, C<$!> is now implicitly localized.
460
461 =item *
462
463 L<readline|perlfunc/"readline EXPR"> now honors C<< <> >> overloading on tied
464 arguments.
465
466 =item *
467
468 L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">,
469 L<pos()|perlfunc/"index STR,SUBSTR,POSITION">, L<keys()|perlfunc/"keys HASH">,
470 and L<vec()|perlfunc/"vec EXPR,OFFSET,BITS"> could, when used in combination
471 with lvalues, result in leaking the scalar value they operate on, and cause its
472 destruction to happen too late. This has now been fixed.
473
474 =item *
475
476 Building with C<PERL_GLOBAL_STRUCT>, which has been broken accidentally in
477 5.13.3, now works again.
478
479 =back
480
481 =head1 Known Problems
482
483 =over 4
484
485 =item *
486
487 The changes in L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">
488 broke C<HTML::Parser> <= 3.66. A fixed C<HTML::Parser> is available as version
489 3.67 on CPAN.
490
491 =item *
492
493 The changes in prototype handling break C<Switch>. A patch has been sent
494 upstream and will hopefully appear on CPAN soon.
495
496 =back
497
498 =head1 Acknowledgements
499
500 Perl 5.13.4 represents approximately one month of development since Perl 5.13.3,
501 and contains 91,200 lines of changes across 436 files from 34 authors and
502 committers.
503
504 Thank you to the following for contributing to this release:
505
506 Abigail, Andy Armstrong, Andy Dougherty, Chas. Owens, Chip Salzenberg, Chris
507 'BinGOs' Williams, Craig A. Berry, David Cantrell, David Golden, David Mitchell,
508 Eric Brine, Father Chrysostomos, Florian Ragwitz, George Greer, Gerard Goossen,
509 H.Merijn Brand, James Mastros, Jan Dubois, Jerry D. Hedden, Joshua ben Jore,
510 Karl Williamson, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯, Leon Brocard, Lubomir Rintel, Nicholas
511 Clark, Paul Marquess, Rafael Garcia-Suarez, Reini Urban, Robin Barker, Slaven
512 Rezic, Steve Peters, Tony Cook, Wolfram Humann, Zefram
513
514 =head1 Reporting Bugs
515
516 If you find what you think is a bug, you might check the articles recently
517 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
518 http://rt.perl.org/perlbug/ .  There may also be information at
519 http://www.perl.org/ , the Perl Home Page.
520
521 If you believe you have an unreported bug, please run the B<perlbug> program
522 included with your release.  Be sure to trim your bug down to a tiny but
523 sufficient test case.  Your bug report, along with the output of C<perl -V>,
524 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
525
526 If the bug you are reporting has security implications, which make it
527 inappropriate to send to a publicly archived mailing list, then please send it
528 to perl5-security-report@perl.org. This points to a closed subscription
529 unarchived mailing list, which includes all the core committers, who be able to
530 help assess the impact of issues, figure out a resolution, and help co-ordinate
531 the release of patches to mitigate or fix the problem across all platforms on
532 which Perl is supported. Please only use this address for security issues in the
533 Perl core, not for modules independently distributed on CPAN.
534
535 =head1 SEE ALSO
536
537 The F<Changes> file for an explanation of how to view exhaustive details
538 on what changed.
539
540 The F<INSTALL> file for how to build Perl.
541
542 The F<README> file for general stuff.
543
544 The F<Artistic> and F<Copying> files for copyright information.
545
546 =cut