This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
378c1903df57ca582a67663da11cc67a92d65723
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.27.8
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.27.7 release and the 5.27.8
10 release.
11
12 If you are upgrading from an earlier release such as 5.27.6, first read
13 L<perl5277delta>, which describes differences between 5.27.6 and 5.27.7.
14
15 =head1 Core Enhancements
16
17 =head2 Close-on-exec flag set atomically
18
19 When opening a file descriptor, perl now generally opens it with its
20 close-on-exec flag already set, on platforms that support doing so.
21 This improves thread safety, because it means that an C<exec> initiated
22 by one thread can no longer cause a file descriptor in the process
23 of being opened by another thread to be accidentally passed to the
24 executed program.
25
26 Additionally, perl now sets the close-on-exec flag more reliably, whether
27 it does so atomically or not.  Most file descriptors were getting the
28 flag set, but some were being missed.
29
30 =head2 Mixed Unicode scripts are now detectable
31
32 A mixture of scripts, such as Cyrillic and Latin, in a string is often
33 the sign of a spoofing attack.  A new regular expression construct
34 now allows for easy detection of these.  For example, you can say
35
36  qr/(?script_run: \d+ \b )/x
37
38 And the digits matched will all be from the same set of 10.  You won't
39 get a look-alike digit from a different script that has a different
40 value than what it appears to be.
41
42 =head2 String- and number-specific bitwise ops are no longer experimental
43
44 The new string-specific (C<&. |. ^. ~.>) and number-specific (C<& | ^ ~>)
45 bitwise operators introduced in Perl 5.22 are no longer experimental.
46 Because the number-specific ops are spelled the same way as the existing
47 operators that choose their behaviour based on their operands, these
48 operators must still be enabled via the "bitwise" feature, in either of
49 these two ways:
50
51     use feature "bitwise";
52
53     use v5.28; # "bitwise" now included
54
55 They are also now enabled by the B<-E> command-line switch.
56
57 The "bitwise" feature no longer emits a warning.  Existing code that
58 disables the "experimental::bitwise" warning category that the feature
59 previously used will continue to work.
60
61 One caveat that module authors ought to be aware of is that the numeric
62 operators now pass a fifth TRUE argument to overload methods.  Any methods
63 that check the number of operands may croak if they do not expect so many.
64 XS authors in particular should be aware that this:
65
66     SV *
67     bitop_handler (lobj, robj, swap)
68
69 may need to be changed to this:
70
71     SV *
72     bitop_handler (lobj, robj, swap, ...)
73
74 =head1 Incompatible Changes
75
76 =head2 Smartmatch and switch reversion
77
78 The changes to the experimental smart match operator (C<~~>) and switch
79 (C<given>/C<when>) constructs that were made in Perl 5.27.7 have been
80 reverted due to the extent of the trouble caused to CPAN modules.
81 It is expected that smartmatch will be changed again in the future,
82 but preceded by some kind of explicit deprecation.
83
84 =head1 Performance Enhancements
85
86 =over 4
87
88 =item *
89
90 The performance of pattern matching C<[[:ascii:]]> and C<[[:^ascii:]]>
91 has been improved significantly except on EBCDIC platforms.
92
93 =back
94
95 =head1 Modules and Pragmata
96
97 =head2 New Modules and Pragmata
98
99 =over 4
100
101 =item *
102
103 XXX Remove this section if not applicable.
104
105 =back
106
107 =head2 Updated Modules and Pragmata
108
109 =over 4
110
111 =item *
112
113 L<XXX> has been upgraded from version A.xx to B.yy.
114
115 If there was something important to note about this change, include that here.
116
117 =item *
118
119 L<Unicode::UCD> has been upgraded from version 0.69 to 0.70.
120
121 The function C<num> now accepts an optional parameter to help in
122 diagnosing error returns.
123
124 =item *
125
126 L<XSLoader> has been upgraded from version 0.29 to 0.30.
127
128 Platforms that use C<mod2fname> to edit the names of loadable libraries now look for
129 bootstrap (.bs) files under the correct, non-edited name.
130
131 =item *
132
133 L<Socket> has been upgraded from version 2.020_04 to 2.027.
134
135 =back
136
137 =head2 Removed Modules and Pragmata
138
139 =over 4
140
141 =item *
142
143 XXX
144
145 =back
146
147 =head1 Documentation
148
149 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
150 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
151
152 =head2 Changes to Existing Documentation
153
154 We have attempted to update the documentation to reflect the changes
155 listed in this document.  If you find any we have missed, send email
156 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
157
158 Additionally, the following selected changes have been made:
159
160 =head3 L<perlembed>
161
162 =over 4
163
164 =item *
165
166 An example in L<perlembed> used the string value of C<ERRSV> as a
167 format string when calling croak().  If that string contains format
168 codes such as C<%s> this could crash the program.
169
170 This has been changed to a call to croak_sv().
171
172 An alternative could have been to supply a trivial format string:
173
174   croak("%s", SvPV_nolen(ERRSV));
175
176 or as a special case for C<ERRSV> simply:
177
178   croak(NULL);
179
180 =back
181
182 =head3 L<perlfunc>
183
184 =over 4
185
186 =item *
187
188 Improve the documentation of C<each> with a slightly more
189 explicit description of the sharing of iterator state, and with
190 caveats regarding the fragility of while-each loops. [perl #132644]
191
192 =back
193
194 =head3 L<perlfunc>, L<perlop>, L<perlsyn>
195
196 =over 4
197
198 =item *
199
200 Improve the documentation of while condition magic in various
201 places. [perl #132644]
202
203 =back
204
205 =head3 L<perlrun>
206
207 =over 4
208
209 =item *
210
211 Clarify the documentation of B<< -m >>. [perl #131518]
212
213 =back
214
215 =head1 Diagnostics
216
217 The following additions or changes have been made to diagnostic output,
218 including warnings and fatal error messages.  For the complete list of
219 diagnostic messages, see L<perldiag>.
220
221 =head2 New Diagnostics
222
223 =head3 New Errors
224
225 =over 4
226
227 =item *
228
229 L<Can't "goto" into a binary or list expression|perldiag/"Can't E<quot>gotoE<quot> into a binary or list expression">
230
231 Use of C<goto> to jump into the parameter of a binary or list operator has
232 been prohibited, to prevent crashes and stack corruption.  [perl #130936]
233
234 =back
235
236 =head2 Changes to Existing Diagnostics
237
238 =over 4
239
240 =item *
241
242 The C<< Unable to flush stdout >> error message was missing a trailing
243 newline. [debian #875361]
244
245 =back
246
247 =head1 Testing
248
249 Tests were added and changed to reflect the other additions and
250 changes in this release.  Furthermore, these significant changes were
251 made:
252
253 =over 4
254
255 =item *
256
257 Allow override of watchdog timer count in F<re/pat_psycho.t>.
258
259 This test can take a long time to run, so there is a timer to keep
260 this in check (currently, 5 minutes). This commit adds checking
261 the environment variable C<< PERL_TEST_TIME_OUT_FACTOR >>; if set,
262 the time out setting is multiplied by its value.
263
264 =back
265
266 =head1 Platform Support
267
268 =head2 Platform-Specific Notes
269
270 =over 4
271
272 =item Cygwin
273
274 A build with the quadmath library can now be done on Cygwin.
275
276 =item FreeBSD
277
278 FreeBSD's F<< /usr/share/mk/sys.mk >> specifies C<< -O2 >> for
279 architectures other than arm and mips. By default, compile perl
280 with the same optimization levels.
281
282 =item VMS
283
284 Several fix-ups for F<configure.com>, marking function VMS has
285 (or doesn't have).
286
287
288 =back
289
290 =head1 Internal Changes
291
292 =over 4
293
294 =item *
295
296 The format of the non-utf8 transliteration table attached to the C<op_pv>
297 field of C<OP_TRANS>/C<OP_TRANSR> ops has changed. It's now a
298 C<struct OPtrans_map>.
299
300 =back
301
302 =head1 Selected Bug Fixes
303
304 =over 4
305
306 =item *
307
308 The C<printf> format specifier C<%.0f> no longer rounds incorrectly
309 [perl #47602], and now shows the correct sign for a negative zero.
310
311 =item *
312
313 Fixed a use after free bug in pp_list introduced in 5.27.1.  [perl #131954]
314
315 =item *
316
317 Don't stringify numeric first arguments to
318 C<< system() >> on Windows or VMS. [perl #132633]
319
320 =item * 
321
322 Fixed an issue where the error C<< Scalar value @arrayname[0] better
323 written as $arrayname >> would give an error C<< Cannot printf Inf with 'c' >>
324 when arrayname starts with C<< Inf >>. [perl #132645]
325
326 =item *
327
328 The Perl implementation of C<< getcwd() >> in C<< Cwd >> in the PathTools
329 distribution now behaves the same as XS implementation on errors: it
330 returns an error, and sets C<< $! >>. [perl #132648]
331
332 =item *
333
334 Fixed argument counting in multiconcat when concatenating adjacent constants.
335 [perl #132646]
336
337 =item *
338
339 Vivify array elements when putting them on the stack.
340 Fixes [perl #8910] (reported in April 2002).
341
342 =item *
343
344 Fixed parsing of braced subscript after parens. Fixes [perl #8045]
345 (reported in December 2001).
346
347 =item *
348
349 C<tr/non_utf8/long_non_utf8/c> could give the wrong results when the
350 length of the replacement character list was greater than 0x7fff.
351
352 =item *
353
354 C<tr/non_utf8/non_utf8/cd> failed to add the implied
355 C<\x{100}-\x{7fffffff}> to the search character list.
356
357 =back
358
359 =head1 Known Problems
360
361 =over 4
362
363 =item *
364
365 The bugfix for [perl #2754] in Perl 5.27.7 turned out to cause so much
366 trouble on CPAN [perl #132577] that it is being postponed.  The bug has
367 been restored, so C<exit(0)> in a C<UNITCHECK> or C<CHECK> block now
368 once again permits the main program to run, and C<exit(0)> in a C<BEGIN>
369 block once again permits C<INIT> blocks to run before exiting.  The bug
370 will be fixed again for Perl 5.30.
371
372 =back
373
374 =head1 Acknowledgements
375
376 XXX Generate this with:
377
378   perl Porting/acknowledgements.pl v5.27.7..HEAD
379
380 =head1 Reporting Bugs
381
382 If you find what you think is a bug, you might check the perl bug database
383 at L<https://rt.perl.org/> .  There may also be information at
384 L<http://www.perl.org/> , the Perl Home Page.
385
386 If you believe you have an unreported bug, please run the L<perlbug> program
387 included with your release.  Be sure to trim your bug down to a tiny but
388 sufficient test case.  Your bug report, along with the output of C<perl -V>,
389 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
390
391 If the bug you are reporting has security implications which make it
392 inappropriate to send to a publicly archived mailing list, then see
393 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
394 for details of how to report the issue.
395
396 =head1 Give Thanks
397
398 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
399 you can do so by running the C<perlthanks> program:
400
401     perlthanks
402
403 This will send an email to the Perl 5 Porters list with your show of thanks.
404
405 =head1 SEE ALSO
406
407 The F<Changes> file for an explanation of how to view exhaustive details on
408 what changed.
409
410 The F<INSTALL> file for how to build Perl.
411
412 The F<README> file for general stuff.
413
414 The F<Artistic> and F<Copying> files for copyright information.
415
416 =cut