This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix grammar in perldelta
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file. Any text flagged as
6 XXX needs to be processed before release. ]
7
8 perldelta - what is new for perl v5.15.1
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.15.1 release and
13 the 5.15.0 release.
14
15 If you are upgrading from an earlier release such as 5.14.0, first read
16 L<perl5150delta>, which describes differences between 5.14.0 and
17 5.15.0.
18
19 =head1 Notice
20
21 XXX Any important notices here
22
23 =head1 Core Enhancements
24
25 XXX New core language features go here. Summarise user-visible core language
26 enhancements. Particularly prominent performance optimisations could go
27 here, but most should go in the L</Performance Enhancements> section.
28
29 [ List each enhancement as a =head2 entry ]
30
31 =head2 C<splice()> doesn't warn when truncating
32
33 You can now limit the size of an array using C<splice(@a,MAX_LEN)> without
34 worrying about warnings.
35
36 =head2 The C<\$> prototype accepts any scalar lvalue
37
38 The C<\$> and C<\[$]> subroutine prototypes now accept any scalar lvalue
39 argument.  Previously they only accepted scalars beginning with C<$> and
40 hash and array elements.  This change makes them consistent with the way
41 the built-in C<read> and C<recv> functions (among others) parse their
42 arguments. This means that one can override the built-in functions with
43 custom subroutines that parse their arguments the same way.
44
45 =head2 You can now C<study> more than one string
46
47 The restriction that you can only have one C<study> active at a time has been
48 removed. You can now usefully C<study> as many strings as you want (until you
49 exhaust memory).
50
51 =head1 Security
52
53 XXX Any security-related notices go here.  In particular, any security
54 vulnerabilities closed should be noted here rather than in the
55 L</Selected Bug Fixes> section.
56
57 [ List each security issue as a =head2 entry ]
58
59 =head1 Incompatible Changes
60
61 XXX For a release on a stable branch, this section aspires to be:
62
63     There are no changes intentionally incompatible with 5.XXX.XXX
64     If any exist, they are bugs and reports are welcome.
65
66 [ List each incompatible change as a =head2 entry ]
67
68 =head1 Deprecations
69
70 XXX Any deprecated features, syntax, modules etc. should be listed here.
71 In particular, deprecated modules should be listed here even if they are
72 listed as an updated module in the L</Modules and Pragmata> section.
73
74 [ List each deprecation as a =head2 entry ]
75
76 =head1 Performance Enhancements
77
78 XXX Changes which enhance performance without changing behaviour go here. There
79 may well be none in a stable release.
80
81 [ List each enhancement as a =item entry ]
82
83 =over 4
84
85 =item *
86
87 The implementation of C<s///r> makes one less copy of the scalar's value.
88
89 =item *
90
91 If a studied scalar is C<split> with a regex, the engine will now take
92 advantage of the C<study> data.
93
94 =item *
95
96 C<study> now uses considerably less memory for shorter strings. Strings shorter
97 than 65535 characters use roughly half the memory than previously, strings
98 shorter than 255 characters use roughly one quarter of the memory.
99
100 =back
101
102 =head1 Modules and Pragmata
103
104 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
105 go here.  If Module::CoreList is updated, generate an initial draft of the
106 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
107 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
108 below.  A paragraph summary for important changes should then be added by hand.
109 In an ideal world, dual-life modules would have a F<Changes> file that could be
110 cribbed.
111
112 [ Within each section, list entries as a =item entry ]
113
114 =head2 New Modules and Pragmata
115
116 =over 4
117
118 =item *
119
120 XXX
121
122 =back
123
124 =head2 Updated Modules and Pragmata
125
126 =over 4
127
128 =item *
129
130 L<CGI> has been upgraded from version 3.54 to version 3.55
131
132 [THINGS THAT MAY BREAK YOUR CODE]
133
134 C<url()> was fixed to return C<PATH_INFO> when it is explicitly requested
135 with either the path=>1 or path_info=>1 flag.
136
137 If your code is running under mod_rewrite (or compatible) and you are calling C<self_url()> or
138 you are calling C<url()> and passing path_info=>1, These methods will actually be
139 returning C<PATH_INFO> now, as you have explicitly requested, or has C<self_url()>
140 has requested on your behalf.
141
142 The C<PATH_INFO> has been omitted in such URLs since the issue was introduced
143 in the 3.12 release in December, 2005.
144
145 This bug is so old your application may have come to depend on it or
146 workaround it. Check for application before upgrading to this release.
147
148 Examples of affected method calls:
149
150   $q->url(-absolute => 1, -query => 1, -path_info => 1 )
151   $q->url(-path=>1)
152   $q->url(-full=>1,-path=>1)
153   $q->url(-rewrite=>1,-path=>1)
154   $q->self_url();
155
156 =item *
157
158 L<Compress::Raw::Bzip2> has been upgraded from version 2.035 to version 2.037
159
160 =item *
161
162 L<Compress::Raw::Zlib> has been upgraded from version 2.035 to version 2.037
163
164 Added offset parameter to CRC32
165
166 =item *
167
168 L<Compress::Zlib> has been upgraded from version 2.035 to version 2.037
169
170 IO::Compress::Zip and IO::Uncompress::Unzip now have support for LZMA (method 14).
171 There is a fix for a CRC issue in IO::Compress::Unzip and it supports Streamed
172 Stored context now. And fixed a Zip64 issue in
173 IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
174
175 =item *
176
177 L<CPANPLUS> has been upgraded from version 0.9105 to version 0.9106
178
179 =item *
180
181 L<ExtUtils::MakeMaker> has been upgraded from version 6.57_05 to version 6.58
182
183 =item *
184
185 L<IPC::Cmd> has been upgraded from version 0.70 to version 0.72
186
187 Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
188 using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
189
190 =item *
191
192 L<Locale::Codes> has been upgraded from version 3.16 to version 3.17
193
194 Added Language Extension codes (langext) and Language Variation codes
195 (langvar) as defined in the IANA language registry.
196
197 Added language codes from ISO 639-5
198
199 Added language/script codes from the IANA language subtag
200 registry
201
202 Fixed an uninitialized value warning.  RT 67438
203
204 Fixed the return value for the all_XXX_codes and all_XXX_names functions.  RT 69100
205
206 Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to
207 allow for cleaner future additions.  The original four modules (Locale::Language,
208 Locale::Currency, Locale::Country, Locale::Script) will continue to work, but
209 all new sets of codes will be added in the Locale::Codes namespace.
210
211 =item *
212
213 L<attributes> has been upgraded from version 0.14 to 0.15, as part of the
214 lvalue attribute warnings fix.  See L</Selected Bug Fixes>, below.
215
216 =item *
217
218 L<Math::BigInt::FastCalc> has been upgraded from version 0.28 to version 0.29.
219
220 The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
221 performance under ithreads.
222
223 =item *
224
225 L<Unicode::Collate> has been upgraded from version 0.76 to version 0.77
226
227 Applied [perl #93470] silencing compiler warnings with -Wwrite-strings
228
229 =item *
230
231 L<Win32API::File> has been upgraded from version 0.1101 to version 0.1200
232
233 Added SetStdHandle and GetStdHandle functions
234
235 =item *
236
237 L<threads> has been upgraded from version 1.83 to 1.84
238
239 An unused variable was removed from the XS code.
240
241 =back
242
243 =head2 Removed Modules and Pragmata
244
245 =over 4
246
247 =item *
248
249 Perl 4-era .pl libraries
250
251 Perl used to bundle a handful of library files that predate Perl 5. Most of
252 these files, which have been deprecated since version 5.14.0, have now been
253 removed. If your code still relies on these libraries, you can install them
254 again from C<Perl4::CoreLibs> on CPAN.
255
256 =back
257
258 =head1 Documentation
259
260 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
261 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
262
263 =head2 New Documentation
264
265 XXX Changes which create B<new> files in F<pod/> go here.
266
267 =head3 L<XXX>
268
269 XXX Description of the purpose of the new file here
270
271 =head2 Changes to Existing Documentation
272
273 XXX Changes which significantly change existing files in F<pod/> go here.
274 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
275 section.
276
277 =head3 L<XXX>
278
279 =over 4
280
281 =item *
282
283 XXX Description of the change here
284
285 =back
286
287 =head1 Diagnostics
288
289 The following additions or changes have been made to diagnostic output,
290 including warnings and fatal error messages.  For the complete list of
291 diagnostic messages, see L<perldiag>.
292
293 XXX New or changed warnings emitted by the core's C<C> code go here. Also
294 include any changes in L<perldiag> that reconcile it to the C<C> code.
295
296 [ Within each section, list entries as a =item entry that links to perldiag,
297   e.g.
298
299   =item *
300
301   L<Invalid version object|perldiag/"Invalid version object">
302 ]
303
304 =head2 New Diagnostics
305
306 XXX Newly added diagnostic messages go here
307
308 =head3 New Errors
309
310 =over 4
311
312 =item *
313
314 XXX L<message|perldiag/"message">
315
316 =back
317
318 =head3 New Warnings
319
320 =over 4
321
322 =item *
323
324 XXX L<message|perldiag/"message">
325
326 =back
327
328 =head2 Changes to Existing Diagnostics
329
330 XXX Changes (i.e. rewording) of diagnostic messages go here
331
332 =over 4
333
334 =item *
335
336 XXX Describe change here
337
338 =back
339
340 =head1 Utility Changes
341
342 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
343 here. Most of these are built within the directories F<utils> and F<x2p>.
344
345 [ List utility changes as a =head3 entry for each utility and =item
346 entries for each change
347 Use L<XXX> with program names to get proper documentation linking. ]
348
349 =head3 L<XXX>
350
351 =over 4
352
353 =item *
354
355 XXX
356
357 =back
358
359 =head1 Configuration and Compilation
360
361 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
362 go here.  Any other changes to the Perl build process should be listed here.
363 However, any platform-specific changes should be listed in the
364 L</Platform Support> section, instead.
365
366 [ List changes as a =item entry ].
367
368 =over 4
369
370 =item *
371
372 XXX
373
374 =back
375
376 =head1 Testing
377
378 XXX Any significant changes to the testing of a freshly built perl should be
379 listed here.  Changes which create B<new> files in F<t/> go here as do any
380 large changes to the testing harness (e.g. when parallel testing was added).
381 Changes to existing files in F<t/> aren't worth summarising, although the bugs
382 that they represent may be covered elsewhere.
383
384 [ List each test improvement as a =item entry ]
385
386 =over 4
387
388 =item *
389
390 XXX
391
392 =back
393
394 =head1 Platform Support
395
396 XXX Any changes to platform support should be listed in the sections below.
397
398 [ Within the sections, list each platform as a =item entry with specific
399 changes as paragraphs below it. ]
400
401 =head2 New Platforms
402
403 XXX List any platforms that this version of perl compiles on, that previous
404 versions did not. These will either be enabled by new files in the F<hints/>
405 directories, or new subdirectories and F<README> files at the top level of the
406 source tree.
407
408 =over 4
409
410 =item XXX-some-platform
411
412 XXX
413
414 =back
415
416 =head2 Discontinued Platforms
417
418 XXX List any platforms that this version of perl no longer compiles on.
419
420 =over 4
421
422 =item XXX-some-platform
423
424 XXX
425
426 =back
427
428 =head2 Platform-Specific Notes
429
430 XXX List any changes for specific platforms. This could include configuration
431 and compilation changes or changes in portability/compatibility.  However,
432 changes within modules for platforms should generally be listed in the
433 L</Modules and Pragmata> section.
434
435 =over 4
436
437 =item XXX-some-platform
438
439 XXX
440
441 =back
442
443 =head1 Internal Changes
444
445 XXX Changes which affect the interface available to C<XS> code go here.
446 Other significant internal changes for future core maintainers should
447 be noted as well.
448
449 [ List each change as a =item entry ]
450
451 =over 4
452
453 =item *
454
455 XXX
456
457 =back
458
459 =head1 Selected Bug Fixes
460
461 XXX Important bug fixes in the core language are summarised here.
462 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
463 L</Modules and Pragmata>.
464
465 [ List each fix as a =item entry ]
466
467 =over 4
468
469 =item *
470
471 Applying the :lvalue attribute to subroutine that is already defined does
472 not work properly, as the attribute changes the way the sub is compiled.
473 Hence, Perl 5.12 began warning when an attempt is made to apply the
474 attribute to an already defined sub.  In such cases, the attribute is
475 discarded.
476
477 But the change in 5.12 missed the case where custom attributes are also
478 present: that case still silently and ineffectively applied the attribute.
479 That omission has now been corrected.  C<sub foo :lvalue :Whatever> (when
480 C<foo> is already defined) now warns about the :lvalue attribute, and does
481 not apply it.
482
483 L<attributes.pm|attributes> has likewise been updated to warn and not apply
484 the attribute.
485
486 =item *
487
488 =for comment
489 Not necessary for perl5160delta
490
491 The remaining discrepancies between explicit and implicit return from
492 lvalue subroutines have been resolved.  They mainly involved which error
493 message to display when a read-only value is returned in lvalue context.
494 Also, returning a PADTMP (the result of most built-ins, like C<index>) in
495 lvalue context is now forbidden for explicit return, as it always has been
496 for implicit return.  This is not a regression from 5.14, as all the cases
497 in which it could happen where previously syntax errors.
498
499 =item *
500
501 =for comment
502 Not necessary for perl5160delta
503
504 Explicitly returning a tied C<my> variable from an lvalue subroutine in
505 list lvalue context used to clear the variable before the assignment could
506 happen.  This is something that was missed when explicit return was made to
507 work in 5.15.0.
508
509 =item *
510
511 =for comment
512 Not necessary for perl5160delta
513
514 A minor memory leak, introduced in 5.15.0, has been fixed.  It would occur
515 when a hash is freed that has had its current iterator deleted
516 [perl #93454].
517
518 =item *
519
520 The C<prototype> function now returns a prototype (the empty string) for
521 the C<__FILE__>, C<__LINE__> and C<__PACKAGE__> directives, instead of
522 dying, as they are indistinguishable syntactically from nullary functions
523 like C<time>.
524
525 =back
526
527 =head1 Known Problems
528
529 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
530 tests that had to be C<TODO>ed for the release would be noted here, unless
531 they were specific to a particular platform (see below).
532
533 This is a list of some significant unfixed bugs, which are regressions
534 from either 5.XXX.XXX or 5.XXX.XXX.
535
536 [ List each fix as a =item entry ]
537
538 =over 4
539
540 =item *
541
542 XXX
543
544 =back
545
546 =head1 Obituary
547
548 XXX If any significant core contributor has died, we've added a short obituary
549 here.
550
551 =head1 Acknowledgements
552
553 XXX The list of people to thank goes here.
554
555 =head1 Reporting Bugs
556
557 If you find what you think is a bug, you might check the articles
558 recently posted to the comp.lang.perl.misc newsgroup and the perl
559 bug database at http://rt.perl.org/perlbug/ .  There may also be
560 information at http://www.perl.org/ , the Perl Home Page.
561
562 If you believe you have an unreported bug, please run the L<perlbug>
563 program included with your release.  Be sure to trim your bug down
564 to a tiny but sufficient test case.  Your bug report, along with the
565 output of C<perl -V>, will be sent off to perlbug@perl.org to be
566 analysed by the Perl porting team.
567
568 If the bug you are reporting has security implications, which make it
569 inappropriate to send to a publicly archived mailing list, then please send
570 it to perl5-security-report@perl.org. This points to a closed subscription
571 unarchived mailing list, which includes
572 all the core committers, who will be able
573 to help assess the impact of issues, figure out a resolution, and help
574 co-ordinate the release of patches to mitigate or fix the problem across all
575 platforms on which Perl is supported. Please only use this address for
576 security issues in the Perl core, not for modules independently
577 distributed on CPAN.
578
579 =head1 SEE ALSO
580
581 The F<Changes> file for an explanation of how to view exhaustive details
582 on what changed.
583
584 The F<INSTALL> file for how to build Perl.
585
586 The F<README> file for general stuff.
587
588 The F<Artistic> and F<Copying> files for copyright information.
589
590 =cut