This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlretut: Cleanup, nits
[perl5.git] / pod / perl5259delta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perl5259delta - what is new for perl v5.25.9
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.25.8 release and the 5.25.9
10 release.
11
12 If you are upgrading from an earlier release such as 5.25.7, first read
13 L<perl5258delta>, which describes differences between 5.25.7 and 5.25.8.
14
15 =head1 Core Enhancements
16
17 =head2 New regular expression modifier C</xx>
18
19 Specifying two C<x> characters to modify a regular expression pattern
20 does everything that a single one does, but additionally TAB and SPACE
21 characters within a bracketed character class are generally ignored and
22 can be added to improve readability, like
23 S<C</[ ^ A-Z d-f p-x ]/xx>>.  Details are at
24 L<perlre/E<sol>x and E<sol>xx>.
25
26 =head1 Deprecations
27
28 =head2 String delimiters that aren't stand-alone graphemes are now deprecated
29
30 In order for Perl to eventually allow string delimiters to be Unicode
31 grapheme clusters (which look like a single character, but may be
32 a sequence of several ones), we have to stop allowing a single char
33 delimiter that isn't a grapheme by itself.  These are unlikely to exist
34 in actual code, as they would typically display as attached to the
35 character in front of them.
36
37 =head1 Performance Enhancements
38
39 =over 4
40
41 =item *
42
43 A hash in boolean context is now sometimes faster, e.g.
44
45     if (!%h) { ... }
46
47 This was already special-cased, but some cases were missed, and even the
48 ones which weren't have been improved.
49
50 =item *
51
52 Several other ops may now also be faster in boolean context.
53
54 =back
55
56 =head1 Modules and Pragmata
57
58 =head2 Updated Modules and Pragmata
59
60 =over 4
61
62 =item *
63
64 L<attributes> has been upgraded from version 0.28 to 0.29.
65
66 The deprecation message for the C<:unique> and C<:locked> attributes
67 now mention they will disappear in Perl 5.28.
68
69 =item *
70
71 L<B::Deparse> has been upgraded from version 1.39 to 1.40.
72
73 =item *
74
75 L<B::Xref> has been upgraded from version 1.05 to 1.06.
76
77 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
78
79 =item *
80
81 L<Compress::Raw::Bzip2> has been upgraded from version 2.069 to 2.070.
82
83 =item *
84
85 L<Compress::Raw::Zlib> has been upgraded from version 2.069 to 2.070.
86
87 =item *
88
89 L<CPAN> has been upgraded from version 2.14_01 to 2.16.
90
91 =item *
92
93 L<Data::Dumper> was upgraded from version 2.166 to 2.167.
94
95 This fixes a stack management bug. [perl #130487].
96
97 =item *
98
99 L<DB_File> has been upgraded from version 1.838 to 1.840.
100
101 =item *
102
103 L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06.
104
105 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
106
107 =item *
108
109 L<diagnostics> has been upgraded from version 1.35 to 1.36.
110
111 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
112
113 =item *
114
115 L<DynaLoader> has been upgraded from version 1.40 to 1.41.
116
117 =item *
118
119 L<Errno> has been upgraded from version 1.27 to 1.28.
120
121 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
122
123 =item *
124
125 L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34.
126
127 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
128
129 =item *
130
131 L<feature> has been upgraded from version 1.45 to 1.46.
132
133 Fixes the Unicode Bug in the range operator.
134
135 =item *
136
137 L<File::Glob> has been upgraded from version 1.27 to 1.28.
138
139 Issue a deprecation message for C<File::Glob::glob()>.
140
141 =item *
142
143 L<I18N::LangTags> has been upgraded from version 0.41 to 0.42.
144
145 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
146
147 =item *
148
149 L<lib> has been upgraded from version 0.63 to 0.64.
150
151 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
152
153 =item *
154
155 L<Module::CoreList> has been upgraded from version 5.20161220 to 5.20170120.
156
157 =item *
158
159 L<OS2::Process> has been upgraded from version 1.11 to 1.12.
160
161 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
162
163 =item *
164
165 L<overload> has been upgraded from version 1.27 to 1.28.
166
167 =item *
168
169 L<perl5db.pl> has been upgraded from version 1.50 to 1.51.
170
171 Ignore F</dev/tty> on non-Unix systems. [perl #113960]
172
173 =item *
174
175 L<PerlIO::scalar> has been upgraded from version 0.25 to 0.26.
176
177 =item *
178
179 L<Pod::Html> has been upgraded from version 1.2201 to 1.2202.
180
181 =item *
182
183 L<re> has been upgraded from version 0.33 to 0.34
184
185 This adds support for the new L<C<E<47>xx>|perlre/E<sol>x and E<sol>xx>
186 regular expression pattern modifier, and a change to the L<S<C<use re
187 'strict'>>|re/'strict' mode> experimental feature.  When S<C<re
188 'strict'>> is enabled, a warning now will be generated for all
189 unescaped uses of the two characters C<}> and C<]> in regular
190 expression patterns (outside bracketed character classes) that are taken
191 literally.  This brings them more in line with the C<)> character which
192 is always a metacharacter unless escaped.  Being a metacharacter only
193 sometimes, depending on action at a distance, can lead to silently
194 having the pattern mean something quite different than was intended,
195 which the S<C<re 'strict'>> mode is intended to minimize.
196
197 =item *
198
199 L<Storable> has been upgraded from version 2.59 to 2.61.
200
201 Fixes [perl #130098].
202
203 =item *
204
205 L<Symbol> has been upgraded from version 1.07 to 1.08.
206
207 =item *
208
209 L<Term::ReadLine> has been upgraded from version 1.15 to 1.16.
210
211 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
212
213 =item *
214
215 L<Test> has been upgraded from version 1.29 to 1.30.
216
217 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
218
219 =item *
220
221 L<threads> has been upgraded from version 2.10 to 2.12.
222
223 Fixes [perl #130469].
224
225 =item *
226
227 L<threads::shared> has been upgraded from version 1.52 to 1.54.
228
229 This fixes [cpan #119529], [perl #130457]
230
231 =item *
232
233 L<Unicode::UCD> has been upgraded from version 0.67 to 0.68.
234
235 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
236
237 =item *
238
239 L<VMS::DCLsym> has been upgraded from version 1.07 to 1.08.
240
241 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
242
243 =item *
244
245 L<XSLoader> has been upgraded from version 0.24 to 0.26.
246
247 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
248
249 =back
250
251 =head1 Documentation
252
253 =head2 New Documentation
254
255 =head3 L<perldeprecation>
256
257 This file documents all upcoming deprecations, and some of the deprecations
258 which already have been removed. The purpose of this documentation is
259 two-fold: document what will disappear, and by which version, and serve
260 as a guide for people dealing with code which has features that no longer
261 work after an upgrade of their perl.
262
263 =head1 Diagnostics
264
265 The following additions or changes have been made to diagnostic output,
266 including warnings and fatal error messages.  For the complete list of
267 diagnostic messages, see L<perldiag>.
268
269 =head2 New Diagnostics
270
271 =head3 New Warnings
272
273 =over 4
274
275 =item *
276
277 L<Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl v5.30|perldiag/"Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl v5.30">
278
279 See L</Deprecations>
280
281 =back
282
283 =head2 Changes to Existing Diagnostics
284
285 As of Perl 5.25.9, all new deprecations will come with a version in
286 which the feature will disappear. And with a few exceptions, most
287 existing deprecations will state when they'll disappear. As such, most
288 deprecation messages have changed.
289
290 =over 4
291
292 =item *
293
294 Attribute "locked" is deprecated, and will disappear in Perl 5.28
295
296 =item *
297
298 Attribute "unique" is deprecated, and will disappear in Perl 5.28
299
300 =item *
301
302 "\c%c" is more clearly written simply as "%s". This will be a fatal error
303 in Perl 5.28
304
305 =item *
306
307 Constants from lexical variables potentially modified elsewhere are
308 deprecated. This will not be allowed in Perl 5.32
309
310 =item *
311
312 Deprecated use of my() in false conditional. This will be a fatal error
313 in Perl 5.30
314
315 =item *
316
317 dump() better written as CORE::dump(). dump() will no longer be available 
318 in Perl 5.30
319
320 =item *
321
322 ${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28
323
324 =item *
325
326 File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsd_glob()
327 instead.
328
329 =item *
330
331 %s() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30
332
333 =item *
334
335 $* is no longer supported. Its use will be fatal in Perl 5.30
336
337 =item *
338
339 $* is no longer supported. Its use will be fatal in Perl 5.30
340
341 =item *
342
343 Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28
344
345 =item *
346
347 Opening filehandle %s also as a directory. This will be a fatal
348 error in Perl 5.28
349
350 =item *
351
352 Setting $/ to a reference to %s as a form of slurp is deprecated,
353 treating as undef. This will be fatal in Perl 5.28
354
355 =item *
356
357 Unescaped left brace in regex is deprecated here (and will be fatal
358 in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in m/%s/
359
360 =item *
361
362 Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28
363
364 =item *
365
366 Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28
367
368 =item *
369
370 Use of code point 0x%s is deprecated; the permissible max is 0x%s.
371 This will be fatal in Perl 5.28
372
373 =item *
374
375 Use of comma-less variable list is deprecated. Its use will be fatal
376 in Perl 5.28
377
378 =item *
379
380 Use of inherited AUTOLOAD for non-method %s() is deprecated. This
381 will be fatal in Perl 5.28
382
383 =item * 
384
385 Use of strings with code points over 0xFF as arguments to %s operator
386 is deprecated. This will be a fatal error in Perl 5.28
387
388 =back
389
390 =head1 Utility Changes
391
392 =head2 F<c2ph> and F<pstruct>
393
394 =over 4
395
396 =item *
397
398 These old utilities have long since superceded by L<h2xs>, and are
399 now gone from the distribution.
400
401 =back
402
403 =head2 F<Porting/sync-with-cpan>
404
405 =over 4
406
407 =item *
408
409 Many improvements
410
411 =back
412
413
414 =head1 Configuration and Compilation
415
416 =over 4
417
418 =item *
419
420 The C<dtrace> build process has further changes:
421
422 =over
423
424 =item *
425
426 If the C<-xnolibs> is available, use that so a F<dtrace> perl can be
427 built within a FreeBSD jail.
428
429 =item *
430
431 On systems that build a dtrace object file (FreeBSD, Solaris and
432 SystemTap's dtrace emulation), copy the input objects to a separate
433 directory and process them there, and use those objects in the link,
434 since C<dtrace -G> also modifies these objects.
435
436 =item *
437
438 Add libelf to the build on FreeBSD 10.x, since dtrace adds references
439 to libelf symbols.
440
441 =item *
442
443 Generate a dummy dtrace_main.o if C<dtrace -G> fails to build it.  A
444 default build on Solaris generates probes from the unused inline
445 functions, while they don't on FreeBSD, which causes C<dtrace -G> to
446 fail.
447
448 =back
449
450 [perl #130108]
451
452 =item *
453
454 You can now disable perl's use of the PERL_HASH_SEED and
455 PERL_PERTURB_KEYS environment variables by configuring perl with
456 C<-Accflags=NO_PERL_HASH_ENV>.
457
458 =item *
459
460 You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment
461 variable by configuring perl with
462 C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>.
463
464 =back
465
466 =head1 Internal Changes
467
468 =over 4
469
470 =item *
471
472 New versions of macros like C<isALPHA_utf8> and C<toLOWER_utf8>  have
473 been added, each with the
474 suffix C<_safe>, like C<isSPACE_utf8_safe>.  These take an extra
475 parameter, giving an upper limit of how far into the string it is safe
476 to read.  Using the old versions could cause attempts to read beyond the
477 end of the input buffer if the UTF-8 is not well-formed, and their use
478 now raises a deprecation warning.  Details are at
479 L<perlapi/Character classification>.
480
481 =item *
482
483 Calling macros like C<isALPHA_utf8> on malformed UTF-8 have issued a
484 deprecation warning since Perl v5.18.  They now die.
485 Similarly, macros like C<toLOWER_utf8> on malformed UTF-8 now die.
486
487 =item *
488
489 Calling the functions C<utf8n_to_uvchr> and its derivatives, while
490 passing a string length of 0 is now asserted against in DEBUGGING
491 builds, and otherwise returns the Unicode REPLACEMENT CHARACTER.   If
492 you have nothing to decode, you shouldn't call the decode function.
493
494 =item *
495
496 The functions C<utf8n_to_uvchr> and its derivatives now return the
497 Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong
498 malformation, and that malformation is allowed by the input parameters.
499 This malformation is where the UTF-8 looks valid syntactically, but
500 there is a shorter sequence that yields the same code point.  This has
501 been forbidden since Unicode version 3.1.
502
503 =item *
504
505 The functions C<utf8n_to_uvchr> and its derivatives now accept an input
506 flag to allow the overflow malformation.  This malformation is when the
507 UTF-8 may be syntactically valid, but the code point it represents is
508 not capable of being represented in the word length on the platform.
509 What "allowed" means in this case is that the function doesn't return an
510 error, and advances the parse pointer to beyond the UTF-8 in question,
511 but it returns the Unicode REPLACEMENT CHARACTER as the value of the
512 code point (since the real value is not representable).
513
514 =back
515
516 =head1 Selected Bug Fixes
517
518 =over 4
519
520 =item *
521
522 Under C<use utf8>, the entire Perl program is now checked that the UTF-8
523 is wellformed.  This resolves [perl #126310].
524
525 =item *
526
527 The range operator C<..> on strings now handles its arguments correctly when in
528 the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >>
529 feature. The previous behaviour was sufficiently unexpected that we believe no
530 correct program could have made use of it.
531
532 =item *
533
534 The S<split> operator did not ensure enough space was allocated for
535 its return value in scalar context.  It could then write a single
536 pointer immediately beyond the end of the memory block allocated for
537 the stack.  [perl #130262]
538
539 =item *
540
541 Using a large code point with the C<W> pack template character with
542 the current output position aligned at just the right point could
543 cause a write a single zero byte immediately beyond the end of an
544 allocated buffer.  [perl #129149]
545
546 =item *
547
548 Supplying the form picture argument as part of the form argument list
549 where the picture specifies modifying the argument could cause an
550 access to the new freed compiled form.  [perl #129125]
551
552 =item *
553
554 Fix a problem with sort's build-in compare, where it would not sort
555 correctly with 64-bit integers, and non-long doubles. [perl #130335]
556
557 =item *
558
559 Fix issues with /(?{ ... E<lt>E<lt>EOF })/ that broke Method-Signatures. [perl #130398]
560
561 =item * 
562
563 Fix a macro which caused syntax error on an EBCDIC build.
564
565 =item *
566
567 Prevent tests from getting hung up on 'NonStop' option. [perl #130445]
568
569 =item *
570
571 Fixed an assertion failure with C<chop> and C<chomp>, which
572 could be triggered by C<chop(@x =~ tr/1/1/)>. [perl #130198].
573
574 =item *
575
576 Fixed a comment skipping error under C</x>; it could stop skipping a
577 byte early, which could be in the middle of a UTF-8 character.
578 [perl #130495].
579
580 =item *
581
582 F<perldb> now ignores F</dev/tty> on non-Unix systems. [perl #113960];
583
584 =item *
585
586 Fix assertion failure for C<{}-E<gt>$x> when C<$x> isn't defined. [perl #130496].
587
588 =item *
589
590 DragonFly BSD now has support for setproctitle(). [perl #130068].
591
592 =item *
593
594 Fix an assertion error which could be triggered when lookahead string
595 in patterns exceeded a minimum length. [perl #130522].
596
597 =item *
598
599 Only warn once per literal about a misplaced C<_>. [perl #70878].
600
601 =item *
602
603 Ensure range-start is set after error in C<tr///>. [perl #129342].
604
605 =item *
606
607 Don't read past start of string for unmatched backref; otherwise,
608 we may have heap buffer overflow. [perl #129377].
609
610 =item *
611
612 Properly recognize mathematical digit ranges starting at U+1D7E. 
613 C<use re 'strict'> is supposed to warn if you use a range whose start
614 and end digit aren't from the same group of 10. It didn't do that
615 for five groups of mathematical digits starting at U+1D7E.
616
617 =back
618
619
620 =head1 Acknowledgements
621
622 Perl 5.25.9 represents approximately 4 weeks of development since Perl 5.25.8
623 and contains approximately 24,000 lines of changes across 400 files from 23
624 authors.
625
626 Excluding auto-generated files, documentation and release tools, there were
627 approximately 17,000 lines of changes to 220 .pm, .t, .c and .h files.
628
629 Perl continues to flourish into its third decade thanks to a vibrant community
630 of users and developers. The following people are known to have contributed the
631 improvements that became Perl 5.25.9:
632
633 Aaron Crane, Abigail, Andreas König, Andy Lester, Aristotle Pagaltzis
634 Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Collins,
635 David Mitchell, Father Chrysostomos, Hugo van der Sanden, James E Keenan,
636 Jerry D. Hedden, John Lightsey, Karl Williamson, Paul Marquess, Peter Avalos,
637 Sawyer X, Steve Hay, Tomasz Konojacki, Tony Cook, Zefram.
638
639 The list above is almost certainly incomplete as it is automatically generated
640 from version control history. In particular, it does not include the names of
641 the (very much appreciated) contributors who reported issues to the Perl bug
642 tracker.
643
644 Many of the changes included in this version originated in the CPAN modules
645 included in Perl's core. We're grateful to the entire CPAN community for
646 helping Perl to flourish.
647
648 For a more complete list of all of Perl's historical contributors, please see
649 the F<AUTHORS> file in the Perl source distribution.
650
651 =head1 Reporting Bugs
652
653 If you find what you think is a bug, you might check the perl bug database
654 at L<https://rt.perl.org/> .  There may also be information at
655 L<http://www.perl.org/> , the Perl Home Page.
656
657 If you believe you have an unreported bug, please run the L<perlbug> program
658 included with your release.  Be sure to trim your bug down to a tiny but
659 sufficient test case.  Your bug report, along with the output of C<perl -V>,
660 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
661
662 If the bug you are reporting has security implications which make it
663 inappropriate to send to a publicly archived mailing list, then see
664 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
665 for details of how to report the issue.
666
667 =head1 SEE ALSO
668
669 The F<Changes> file for an explanation of how to view exhaustive details on
670 what changed.
671
672 The F<INSTALL> file for how to build Perl.
673
674 The F<README> file for general stuff.
675
676 The F<Artistic> and F<Copying> files for copyright information.
677
678 =cut