This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add File::Glob changes to 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 XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.27.1
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.27.0 release and the 5.27.1
13 release.
14
15 If you are upgrading from an earlier release such as 5.26.0, first read
16 L<perl5270delta>, which describes differences between 5.26.0 and 5.27.0.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head2 L<C<delete>|perlfunc/delete EXPR> on key/value slices
31
32 L<C<delete>|perlfunc/delete EXPR> can now be used on key/value slices,
33 returning the keys along with the deleted values.
34 L<[perl #131328]|https://rt.perl.org/Ticket/Display.html?id=131328>
35
36 =head1 Security
37
38 XXX Any security-related notices go here.  In particular, any security
39 vulnerabilities closed should be noted here rather than in the
40 L</Selected Bug Fixes> section.
41
42 =head2 Default Hash Function Change
43
44 Perl 5.27.0 retires various older hash functions which are not viewed as
45 sufficiently secure for use in Perl. We now support four general purpose
46 hash functions, Siphash (2-4 and 1-3 variants), and  Zaphod32, and StadtX
47 hash. In addition we support SBOX32 (a form of tabular hashing) for hashing
48 short  strings, in conjunction with any of the other hash functions provided.
49
50 By default Perl is configured to support SBOX hashing of strings up to 24
51 characters, in conjunction with StadtX hashing on 64 bit builds, and
52 Zaphod32 hashing for 32 bit builds.
53
54 You may control these settings with the following options to Configure:
55
56     -DPERL_HASH_FUNC_SIPHASH
57     -DPERL_HASH_FUNC_SIPHASH13
58     -DPERL_HASH_FUNC_STADTX
59     -DPERL_HASH_FUNC_ZAPHOD32
60
61 To disable SBOX hashing you can use
62
63     -DPERL_HASH_USE_SBOX32_ALSO=0
64
65 And to set the maximum length to use SBOX32 hashing on with:
66
67     -DSBOX32_MAX_LEN=16
68
69 The maximum length allowed is 256. There probably isn't much point
70 in setting it higher than the default.
71
72 =head1 Incompatible Changes
73
74 XXX For a release on a stable branch, this section aspires to be:
75
76     There are no changes intentionally incompatible with 5.XXX.XXX
77     If any exist, they are bugs, and we request that you submit a
78     report.  See L</Reporting Bugs> below.
79
80 [ List each incompatible change as a =head2 entry ]
81
82 =head2 Comma-less variable lists in formats are no longer allowed
83
84 Omitting the commas between variables passed to formats is no longer
85 allowed.  This has been deprecated since Perl 5.000.
86
87 =head2 The C<:locked> and C<:unique> attributes have been removed
88
89 These have been no-ops and deprecated since Perl 5.12 and 5.10,
90 respectively.
91
92 =head2 C<\N{}> with nothing between the braces is now illegal.
93
94 This has been deprecated since Perl 5.24.
95
96 =head2 Opening the same symbol as both a file and directory handle is no longer allowed
97
98 Using open() and opendir() to associate both a filehandle and a dirhandle
99 to the same symbol (glob or scalar) has been deprecated since Perl 5.10.
100
101 =head2 Use of bare C<< << >> to mean C<< <<"" >> is no longer allowed
102
103 Use of a bare terminator has been deprecated since Perl 5.000.
104
105 =head2 Setting $/ to a reference to a non-positive integer no longer allowed
106
107 This used to work like setting it to C<undef>, but has been deprecated
108 since Perl 5.20.
109
110 =head2 Unicode code points with values exceeding C<IV_MAX> are now fatal.
111
112 This was deprecated since Perl 5.24.
113
114 =head2 C<B::OP::terse> no longer exists.
115
116 Use C<B::Concise::b_terse> instead.
117
118 =head2 Use of inherited AUTOLOAD for non-methods is no longer allowed.
119
120 This was deprecated in Perl 5.004.
121
122 =head2 Use of strings with code points over 0xFF is not allowed for
123 bitwise string operators
124
125 Code points over 0xFF do not make sense for bitwise operators.
126
127 =head2 Setting C<${^ENCODING}> to a defined value is now illegal
128
129 This has been deprecated since Perl 5.22 and a no-op since Perl 5.26.
130
131 =head2 Backslash no longer escapes colon in PATH for the -S switch
132
133 Previously the C<-S> switch incorrectly treated backslash ("\") as an
134 escape for colon when traversing the C<PATH> environment variable.
135 [perl #129183]
136
137 =head1 Deprecations
138
139 XXX Any deprecated features, syntax, modules etc. should be listed here.
140
141 =head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code
142 points above 0xFF is deprecated.
143
144 Use of these is nonsensical, as C<vec> is a bit-oriented operation,
145 which operates on the underlying UTF-8 representation these strings must
146 be in, and will likely give unexpected results.
147
148 =head2 Some uses of unescaped C<"{"> are no longer fatal
149
150 Perl 5.26.0 fatalized some uses of an unescaped left brace, but an
151 exception was made at the last minute, specifically crafted to be a
152 minimal change to allow GNU Autoconf to work.  This code is heavily
153 depended upon, and continues to use the deprecated usage.  Its use of an
154 unescaped left brace is one where we have no intention of repurposing
155 C<"{"> to be something other than itself.
156
157 That exception is now generalized to include various other such cases
158 where the C<"{"> will not be repurposed.  This is to get real experience
159 with this more complicated change now, in case we need to issue a dot
160 release if we find other things like Autoconf that are important to work
161 around.
162
163 Note that these uses continue to raise a deprecation message.
164
165 =head2 Module removals
166
167 XXX Remove this section if inapplicable.
168
169 The following modules will be removed from the core distribution in a
170 future release, and will at that time need to be installed from CPAN.
171 Distributions on CPAN which require these modules will need to list them as
172 prerequisites.
173
174 The core versions of these modules will now issue C<"deprecated">-category
175 warnings to alert you to this fact.  To silence these deprecation warnings,
176 install the modules in question from CPAN.
177
178 Note that these are (with rare exceptions) fine modules that you are encouraged
179 to continue to use.  Their disinclusion from core primarily hinges on their
180 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
181 not usually on concerns over their design.
182
183 =over
184
185 =item XXX
186
187 XXX Note that deprecated modules should be listed here even if they are listed
188 as an updated module in the L</Modules and Pragmata> section.
189
190 =back
191
192 [ List each other deprecation as a =head2 entry ]
193
194 =head1 Performance Enhancements
195
196 XXX Changes which enhance performance without changing behaviour go here.
197 There may well be none in a stable release.
198
199 [ List each enhancement as a =item entry ]
200
201 =over 4
202
203 =item *
204
205 File::Glob has been modified to remove unnecessary backtracking and
206 recursion, thanks to Russ Cox. See L<https://research.swtch.com/glob>
207 for more details.
208
209 =back
210
211 =head1 Modules and Pragmata
212
213 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
214 go here.  If Module::CoreList is updated, generate an initial draft of the
215 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
216 for important changes should then be added by hand.  In an ideal world,
217 dual-life modules would have a F<Changes> file that could be cribbed.
218
219 [ Within each section, list entries as a =item entry ]
220
221 =head2 New Modules and Pragmata
222
223 =over 4
224
225 =item *
226
227 XXX
228
229 =back
230
231 =head2 Updated Modules and Pragmata
232
233 =over 4
234
235 =item *
236
237 L<XXX> has been upgraded from version A.xx to B.yy.
238
239 =back
240
241 =head2 Removed Modules and Pragmata
242
243 =over 4
244
245 =item *
246
247 XXX
248
249 =back
250
251 =head1 Documentation
252
253 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
254 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
255
256 =head2 New Documentation
257
258 XXX Changes which create B<new> files in F<pod/> go here.
259
260 =head3 L<XXX>
261
262 XXX Description of the purpose of the new file here
263
264 =head2 Changes to Existing Documentation
265
266 We have attempted to update the documentation to reflect the changes
267 listed in this document.  If you find any we have missed, send email
268 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
269
270 XXX Changes which significantly change existing files in F<pod/> go here.
271 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
272 section.
273
274 =head3 L<XXX>
275
276 =over 4
277
278 =item *
279
280 XXX Description of the change here
281
282 =back
283
284 =head1 Diagnostics
285
286 The following additions or changes have been made to diagnostic output,
287 including warnings and fatal error messages.  For the complete list of
288 diagnostic messages, see L<perldiag>.
289
290 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
291 include any changes in L<perldiag> that reconcile it to the C<C> code.
292
293 =head2 New Diagnostics
294
295 XXX Newly added diagnostic messages go under here, separated into New Errors
296 and New Warnings
297
298 =head3 New Errors
299
300 =over 4
301
302 =item *
303
304 XXX L<message|perldiag/"message">
305
306 =back
307
308 =head3 New Warnings
309
310 =over 4
311
312 =item *
313
314 XXX L<message|perldiag/"message">
315
316 =back
317
318 =head2 Changes to Existing Diagnostics
319
320 XXX Changes (i.e. rewording) of diagnostic messages go here
321
322 =over 4
323
324 =item *
325
326 XXX Describe change here
327
328 =back
329
330 =head1 Utility Changes
331
332 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
333 Most of these are built within the directory F<utils>.
334
335 [ List utility changes as a =head2 entry for each utility and =item
336 entries for each change
337 Use L<XXX> with program names to get proper documentation linking. ]
338
339 =head2 L<XXX>
340
341 =over 4
342
343 =item *
344
345 XXX
346
347 =back
348
349 =head1 Configuration and Compilation
350
351 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
352 go here.  Any other changes to the Perl build process should be listed here.
353 However, any platform-specific changes should be listed in the
354 L</Platform Support> section, instead.
355
356 [ List changes as a =item entry ].
357
358 =over 4
359
360 =item *
361
362 XXX
363
364 =back
365
366 =head1 Testing
367
368 Tests were added and changed to reflect the other additions and
369 changes in this release.  Furthermore, these significant changes were
370 made:
371
372 =over 4
373
374 =item *
375
376 Testing of the XS-APItest directory is now done in parallel, where
377 applicable.
378
379 =item *
380
381 Perl now includes a default F<.travis.yml> file for Travis CI testing
382 on github mirrors.  [perl #123981]
383
384 =back
385
386 =head1 Platform Support
387
388 XXX Any changes to platform support should be listed in the sections below.
389
390 [ Within the sections, list each platform as a =item entry with specific
391 changes as paragraphs below it. ]
392
393 =head2 New Platforms
394
395 XXX List any platforms that this version of perl compiles on, that previous
396 versions did not.  These will either be enabled by new files in the F<hints/>
397 directories, or new subdirectories and F<README> files at the top level of the
398 source tree.
399
400 =over 4
401
402 =item XXX-some-platform
403
404 XXX
405
406 =back
407
408 =head2 Discontinued Platforms
409
410 XXX List any platforms that this version of perl no longer compiles on.
411
412 =over 4
413
414 =item XXX-some-platform
415
416 XXX
417
418 =back
419
420 =head2 Platform-Specific Notes
421
422 XXX List any changes for specific platforms.  This could include configuration
423 and compilation changes or changes in portability/compatibility.  However,
424 changes within modules for platforms should generally be listed in the
425 L</Modules and Pragmata> section.
426
427 =over 4
428
429 =item XXX-some-platform
430
431 XXX
432
433 =back
434
435 =head1 Internal Changes
436
437 XXX Changes which affect the interface available to C<XS> code go here.  Other
438 significant internal changes for future core maintainers should be noted as
439 well.
440
441 [ List each change as a =item entry ]
442
443 =over 4
444
445 =item *
446
447 The C<PL_statbuf> interpreter variable has been removed.
448
449 =item *
450
451 The deprecated function C<to_utf8_case()>, accessible from XS code, has
452 been removed.
453
454 =item *
455
456 A new function
457 L<C<is_utf8_invariant_string_loc()>|perlapi/is_utf8_invariant_string_loc>
458 has been added that is like
459 L<C<is_utf8_invariant_string()>|perlapi/is_utf8_invariant_string>
460 but takes an extra pointer parameter into which is stored the location
461 of the first variant character, if any are found.
462
463 =back
464
465 =head1 Selected Bug Fixes
466
467 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
468 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
469
470 [ List each fix as a =item entry ]
471
472 =over 4
473
474 =item *
475
476 Fetching the name of a glob that was previously UTF-8 but wasn't any
477 longer would return that name flagged as UTF-8.  [perl #131263]
478
479 =back
480
481 =head1 Known Problems
482
483 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
484 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
485 platform specific bugs also go here.
486
487 [ List each fix as a =item entry ]
488
489 =over 4
490
491 =item *
492
493 XXX
494
495 =back
496
497 =head1 Errata From Previous Releases
498
499 =over 4
500
501 =item *
502
503 XXX Add anything here that we forgot to add, or were mistaken about, in
504 the perldelta of a previous release.
505
506 =back
507
508 =head1 Obituary
509
510 XXX If any significant core contributor has died, we've added a short obituary
511 here.
512
513 =head1 Acknowledgements
514
515 XXX Generate this with:
516
517   perl Porting/acknowledgements.pl v5.25.5..HEAD
518
519 =head1 Reporting Bugs
520
521 If you find what you think is a bug, you might check the perl bug database
522 at L<https://rt.perl.org/> .  There may also be information at
523 L<http://www.perl.org/> , the Perl Home Page.
524
525 If you believe you have an unreported bug, please run the L<perlbug> program
526 included with your release.  Be sure to trim your bug down to a tiny but
527 sufficient test case.  Your bug report, along with the output of C<perl -V>,
528 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
529
530 If the bug you are reporting has security implications which make it
531 inappropriate to send to a publicly archived mailing list, then see
532 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
533 for details of how to report the issue.
534
535 =head1 Give Thanks
536
537 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
538 you can do so by running the C<perlthanks> program:
539
540     perlthanks
541
542 This will send an email to the Perl 5 Porters list with your show of thanks.
543
544 =head1 SEE ALSO
545
546 The F<Changes> file for an explanation of how to view exhaustive details on
547 what changed.
548
549 The F<INSTALL> file for how to build Perl.
550
551 The F<README> file for general stuff.
552
553 The F<Artistic> and F<Copying> files for copyright information.
554
555 =cut