This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix original version of Socket in perldelta
[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 Selected Bug Fixes
291
292 =over 4
293
294 =item *
295
296 The C<printf> format specifier C<%.0f> no longer rounds incorrectly
297 [perl #47602], and now shows the correct sign for a negative zero.
298
299 =item *
300
301 Fixed a use after free bug in pp_list introduced in 5.27.1.  [perl #131954]
302
303 =item *
304
305 Don't stringify numeric first arguments to
306 C<< system() >> on Windows or VMS. [perl #132633]
307
308 =item * 
309
310 Fixed an issue where the error C<< Scalar value @arrayname[0] better
311 written as $arrayname >> would give an error C<< Cannot printf Inf with 'c' >>
312 when arrayname starts with C<< Inf >>. [perl #132645]
313
314 =item *
315
316 The Perl implementation of C<< getcwd() >> in C<< Cwd >> in the PathTools
317 distribution now behaves the same as XS implementation on errors: it
318 returns an error, and sets C<< $! >>. [perl #132648]
319
320 =item *
321
322 Fixed argument counting in multiconcat when concatenating adjacent constants.
323 [perl #132646]
324
325 =item *
326
327 Vivify array elements when putting them on the stack.
328 Fixes [perl #8910] (reported in April 2002).
329
330 =item *
331
332 Fixed parsing of braced subscript after parens. Fixes [perl #8045]
333 (reported in December 2001).
334
335 =back
336
337 =head1 Known Problems
338
339 =over 4
340
341 =item *
342
343 The bugfix for [perl #2754] in Perl 5.27.7 turned out to cause so much
344 trouble on CPAN [perl #132577] that it is being postponed.  The bug has
345 been restored, so C<exit(0)> in a C<UNITCHECK> or C<CHECK> block now
346 once again permits the main program to run, and C<exit(0)> in a C<BEGIN>
347 block once again permits C<INIT> blocks to run before exiting.  The bug
348 will be fixed again for Perl 5.30.
349
350 =back
351
352 =head1 Acknowledgements
353
354 XXX Generate this with:
355
356   perl Porting/acknowledgements.pl v5.27.7..HEAD
357
358 =head1 Reporting Bugs
359
360 If you find what you think is a bug, you might check the perl bug database
361 at L<https://rt.perl.org/> .  There may also be information at
362 L<http://www.perl.org/> , the Perl Home Page.
363
364 If you believe you have an unreported bug, please run the L<perlbug> program
365 included with your release.  Be sure to trim your bug down to a tiny but
366 sufficient test case.  Your bug report, along with the output of C<perl -V>,
367 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
368
369 If the bug you are reporting has security implications which make it
370 inappropriate to send to a publicly archived mailing list, then see
371 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
372 for details of how to report the issue.
373
374 =head1 Give Thanks
375
376 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
377 you can do so by running the C<perlthanks> program:
378
379     perlthanks
380
381 This will send an email to the Perl 5 Porters list with your show of thanks.
382
383 =head1 SEE ALSO
384
385 The F<Changes> file for an explanation of how to view exhaustive details on
386 what changed.
387
388 The F<INSTALL> file for how to build Perl.
389
390 The F<README> file for general stuff.
391
392 The F<Artistic> and F<Copying> files for copyright information.
393
394 =cut