This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Deprecate above \xFF in bitwise string ops
[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 Deprecations
85
86 =head2 Use of code points over 0xFF in string bitwise operators
87
88 Some uses of these already are illegal after a previous deprecation
89 cycle.  This deprecates the remaining uses.  See L<perldeprecation>.
90
91 =head1 Performance Enhancements
92
93 =over 4
94
95 =item *
96
97 The performance of pattern matching C<[[:ascii:]]> and C<[[:^ascii:]]>
98 has been improved significantly except on EBCDIC platforms.
99
100 =back
101
102 =head1 Modules and Pragmata
103
104 =head2 New Modules and Pragmata
105
106 =over 4
107
108 =item *
109
110 XXX Remove this section if not applicable.
111
112 =back
113
114 =head2 Updated Modules and Pragmata
115
116 =over 4
117
118 =item *
119
120 L<XXX> has been upgraded from version A.xx to B.yy.
121
122 If there was something important to note about this change, include that here.
123
124 =item *
125
126 L<Unicode::UCD> has been upgraded from version 0.69 to 0.70.
127
128 The function C<num> now accepts an optional parameter to help in
129 diagnosing error returns.
130
131 =item *
132
133 L<XSLoader> has been upgraded from version 0.29 to 0.30.
134
135 Platforms that use C<mod2fname> to edit the names of loadable libraries now look for
136 bootstrap (.bs) files under the correct, non-edited name.
137
138 =item *
139
140 L<Socket> has been upgraded from version 2.020_04 to 2.027.
141
142 =back
143
144 =head2 Removed Modules and Pragmata
145
146 =over 4
147
148 =item *
149
150 XXX
151
152 =back
153
154 =head1 Documentation
155
156 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
157 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
158
159 =head2 Changes to Existing Documentation
160
161 We have attempted to update the documentation to reflect the changes
162 listed in this document.  If you find any we have missed, send email
163 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
164
165 Additionally, the following selected changes have been made:
166
167 =head3 L<perlembed>
168
169 =over 4
170
171 =item *
172
173 An example in L<perlembed> used the string value of C<ERRSV> as a
174 format string when calling croak().  If that string contains format
175 codes such as C<%s> this could crash the program.
176
177 This has been changed to a call to croak_sv().
178
179 An alternative could have been to supply a trivial format string:
180
181   croak("%s", SvPV_nolen(ERRSV));
182
183 or as a special case for C<ERRSV> simply:
184
185   croak(NULL);
186
187 =back
188
189 =head3 L<perlfunc>
190
191 =over 4
192
193 =item *
194
195 Improve the documentation of C<each> with a slightly more
196 explicit description of the sharing of iterator state, and with
197 caveats regarding the fragility of while-each loops. [perl #132644]
198
199 =back
200
201 =head3 L<perlfunc>, L<perlop>, L<perlsyn>
202
203 =over 4
204
205 =item *
206
207 Improve the documentation of while condition magic in various
208 places. [perl #132644]
209
210 =back
211
212 =head3 L<perlrun>
213
214 =over 4
215
216 =item *
217
218 Clarify the documentation of B<< -m >>. [perl #131518]
219
220 =back
221
222 =head1 Diagnostics
223
224 The following additions or changes have been made to diagnostic output,
225 including warnings and fatal error messages.  For the complete list of
226 diagnostic messages, see L<perldiag>.
227
228 =head2 New Diagnostics
229
230 =head3 New Errors
231
232 =over 4
233
234 =item *
235
236 L<Can't "goto" into a binary or list expression|perldiag/"Can't E<quot>gotoE<quot> into a binary or list expression">
237
238 Use of C<goto> to jump into the parameter of a binary or list operator has
239 been prohibited, to prevent crashes and stack corruption.  [perl #130936]
240
241 =back
242
243 =head2 Changes to Existing Diagnostics
244
245 =over 4
246
247 =item *
248
249 The C<< Unable to flush stdout >> error message was missing a trailing
250 newline. [debian #875361]
251
252 =back
253
254 =head1 Testing
255
256 Tests were added and changed to reflect the other additions and
257 changes in this release.  Furthermore, these significant changes were
258 made:
259
260 =over 4
261
262 =item *
263
264 Allow override of watchdog timer count in F<re/pat_psycho.t>.
265
266 This test can take a long time to run, so there is a timer to keep
267 this in check (currently, 5 minutes). This commit adds checking
268 the environment variable C<< PERL_TEST_TIME_OUT_FACTOR >>; if set,
269 the time out setting is multiplied by its value.
270
271 =back
272
273 =head1 Platform Support
274
275 =head2 Platform-Specific Notes
276
277 =over 4
278
279 =item Cygwin
280
281 A build with the quadmath library can now be done on Cygwin.
282
283 =item FreeBSD
284
285 FreeBSD's F<< /usr/share/mk/sys.mk >> specifies C<< -O2 >> for
286 architectures other than arm and mips. By default, compile perl
287 with the same optimization levels.
288
289 =item VMS
290
291 Several fix-ups for F<configure.com>, marking function VMS has
292 (or doesn't have).
293
294
295 =back
296
297 =head1 Internal Changes
298
299 =over 4
300
301 =item *
302
303 The format of the non-utf8 transliteration table attached to the C<op_pv>
304 field of C<OP_TRANS>/C<OP_TRANSR> ops has changed. It's now a
305 C<struct OPtrans_map>.
306
307 =back
308
309 =head1 Selected Bug Fixes
310
311 =over 4
312
313 =item *
314
315 The C<printf> format specifier C<%.0f> no longer rounds incorrectly
316 [perl #47602], and now shows the correct sign for a negative zero.
317
318 =item *
319
320 Fixed a use after free bug in pp_list introduced in 5.27.1.  [perl #131954]
321
322 =item *
323
324 Don't stringify numeric first arguments to
325 C<< system() >> on Windows or VMS. [perl #132633]
326
327 =item * 
328
329 Fixed an issue where the error C<< Scalar value @arrayname[0] better
330 written as $arrayname >> would give an error C<< Cannot printf Inf with 'c' >>
331 when arrayname starts with C<< Inf >>. [perl #132645]
332
333 =item *
334
335 The Perl implementation of C<< getcwd() >> in C<< Cwd >> in the PathTools
336 distribution now behaves the same as XS implementation on errors: it
337 returns an error, and sets C<< $! >>. [perl #132648]
338
339 =item *
340
341 Fixed argument counting in multiconcat when concatenating adjacent constants.
342 [perl #132646]
343
344 =item *
345
346 Vivify array elements when putting them on the stack.
347 Fixes [perl #8910] (reported in April 2002).
348
349 =item *
350
351 Fixed parsing of braced subscript after parens. Fixes [perl #8045]
352 (reported in December 2001).
353
354 =item *
355
356 C<tr/non_utf8/long_non_utf8/c> could give the wrong results when the
357 length of the replacement character list was greater than 0x7fff.
358
359 =item *
360
361 C<tr/non_utf8/non_utf8/cd> failed to add the implied
362 C<\x{100}-\x{7fffffff}> to the search character list.
363
364 =back
365
366 =head1 Known Problems
367
368 =over 4
369
370 =item *
371
372 The bugfix for [perl #2754] in Perl 5.27.7 turned out to cause so much
373 trouble on CPAN [perl #132577] that it is being postponed.  The bug has
374 been restored, so C<exit(0)> in a C<UNITCHECK> or C<CHECK> block now
375 once again permits the main program to run, and C<exit(0)> in a C<BEGIN>
376 block once again permits C<INIT> blocks to run before exiting.  The bug
377 will be fixed again for Perl 5.30.
378
379 =back
380
381 =head1 Acknowledgements
382
383 XXX Generate this with:
384
385   perl Porting/acknowledgements.pl v5.27.7..HEAD
386
387 =head1 Reporting Bugs
388
389 If you find what you think is a bug, you might check the perl bug database
390 at L<https://rt.perl.org/> .  There may also be information at
391 L<http://www.perl.org/> , the Perl Home Page.
392
393 If you believe you have an unreported bug, please run the L<perlbug> program
394 included with your release.  Be sure to trim your bug down to a tiny but
395 sufficient test case.  Your bug report, along with the output of C<perl -V>,
396 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
397
398 If the bug you are reporting has security implications which make it
399 inappropriate to send to a publicly archived mailing list, then see
400 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
401 for details of how to report the issue.
402
403 =head1 Give Thanks
404
405 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
406 you can do so by running the C<perlthanks> program:
407
408     perlthanks
409
410 This will send an email to the Perl 5 Porters list with your show of thanks.
411
412 =head1 SEE ALSO
413
414 The F<Changes> file for an explanation of how to view exhaustive details on
415 what changed.
416
417 The F<INSTALL> file for how to build Perl.
418
419 The F<README> file for general stuff.
420
421 The F<Artistic> and F<Copying> files for copyright information.
422
423 =cut