Commit | Line | Data |
---|---|---|
efdbe372 S |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5251delta - what is new for perl v5.25.1 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.25.0 release and the 5.25.1 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.24.0, first read | |
13 | L<perl5250delta>, which describes differences between 5.24.0 and 5.25.0. | |
14 | ||
15 | =head1 Core Enhancements | |
16 | ||
17 | =head2 POSIX::tmpnam() has been removed | |
18 | ||
19 | The fundamentally unsafe C<tmpnam()> interface was deprecated in | |
20 | Perl 5.22.0 and has now been removed. In its place you can use | |
21 | for example the L<File::Temp> interfaces. | |
22 | ||
23 | =head2 require ::Foo::Bar is now illegal. | |
24 | ||
25 | Formerly, C<require ::Foo::Bar> would try to read F</Foo/Bar.pm>. Now any | |
26 | bareword require which starts with a double colon dies instead. | |
27 | ||
28 | =head2 Unescaped literal C<"{"> characters in regular expression | |
29 | patterns are no longer permissible | |
30 | ||
31 | You have to now say something like C<"\{"> or C<"[{]"> to specify to | |
32 | match a LEFT CURLY BRACKET. This will allow future extensions to the | |
33 | language. This restriction is not enforced, nor are there current plans | |
34 | to enforce it, if the C<"{"> is the first character in the pattern. | |
35 | ||
36 | These have been deprecated since v5.16, with a deprecation message | |
37 | displayed starting in v5.22. | |
38 | ||
39 | =head2 Literal control character variable names are no longer permissible | |
40 | ||
41 | A variable name may no longer contain a literal control character under | |
42 | any circumstances. These previously were allowed in single-character | |
43 | names on ASCII platforms, but have been deprecated there since Perl | |
44 | v5.20. This affects things like C<$I<\cT>>, where I<\cT> is a literal | |
45 | control (such as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in the | |
46 | source code. | |
47 | ||
48 | =head2 C<qr//xx> is no longer permissible | |
49 | ||
50 | Using more than one C</x> regular expression pattern modifier on a | |
51 | single pattern is now forbidden. This is to allow a future enhancement | |
52 | to the language. This usage has been deprecated since v5.22. | |
53 | ||
54 | =head2 C<NBSP> is no longer permissible in C<\N{...}> | |
55 | ||
56 | The name of a character may no longer contain non-breaking spaces. It | |
57 | has been deprecated to do so since Perl v5.22. | |
58 | ||
59 | =head1 Performance Enhancements | |
60 | ||
61 | =over 4 | |
62 | ||
63 | =item * | |
64 | ||
65 | Bareword constant strings are now permitted to take part in constant | |
66 | folding. They were originally exempted from constant folding in August 1999, | |
67 | during the development of Perl 5.6, to ensure that C<use strict "subs"> | |
68 | would still apply to bareword constants. That has now been accomplished a | |
69 | different way, so barewords, like other constants, now gain the performance | |
70 | benefits of constant folding. | |
71 | ||
72 | This also means that void-context warnings on constant expressions of | |
73 | barewords now report the folded constant operand, rather than the operation; | |
74 | this matches the behaviour for non-bareword constants. | |
75 | ||
76 | =back | |
77 | ||
78 | =head1 Modules and Pragmata | |
79 | ||
80 | =head2 Updated Modules and Pragmata | |
81 | ||
82 | =over 4 | |
83 | ||
84 | =item * | |
85 | ||
86 | L<Archive::Tar> has been upgraded from version 2.04 to 2.08. | |
87 | ||
88 | =item * | |
89 | ||
90 | L<Carp> has been upgraded from version 1.40 to 1.41. | |
91 | ||
92 | =item * | |
93 | ||
94 | L<charnames> has been upgraded from version 1.43 to 1.44. | |
95 | ||
96 | =item * | |
97 | ||
98 | L<Config::Perl::V> has been upgraded from version 0.25 to 0.26. | |
99 | ||
100 | =item * | |
101 | ||
102 | L<DB_File> has been upgraded from version 1.835 to 1.838. | |
103 | ||
104 | =item * | |
105 | ||
106 | L<Digest::MD5> has been upgraded from version 2.54 to 2.55. | |
107 | ||
108 | =item * | |
109 | ||
110 | L<IPC::Cmd> has been upgraded from version 0.92 to 0.94. | |
111 | ||
112 | =item * | |
113 | ||
114 | L<IPC::SysV> has been upgraded from version 2.06_01 to 2.07. | |
115 | ||
116 | =item * | |
117 | ||
118 | L<List::Util> has been upgraded from version 1.42_02 to 1.45_01. | |
119 | ||
120 | =item * | |
121 | ||
122 | L<Locale::Codes> has been upgraded from version 3.37 to 3.38. | |
123 | ||
124 | =item * | |
125 | ||
126 | L<Locale::Maketext> has been upgraded from version 1.26 to 1.27. | |
127 | ||
128 | =item * | |
129 | ||
130 | L<Module::CoreList> has been upgraded from version 5.20160507 to 5.20160520. | |
131 | ||
132 | =item * | |
133 | ||
134 | L<Module::Metadata> has been upgraded from version 1.000031 to 1.000032. | |
135 | ||
136 | =item * | |
137 | ||
138 | L<perlfaq> has been upgraded from version 5.021010 to 5.021011. | |
139 | ||
140 | =item * | |
141 | ||
142 | L<POSIX> has been upgraded from version 1.65 to 1.69. This remedies several | |
143 | defects in making its symbols exportable. [perl #127821] | |
144 | The C<POSIX::tmpnam()> interface has been removed, | |
145 | see L</"POSIX::tmpnam() has been removed">. | |
146 | Trying to import POSIX subs that have no real implementations | |
147 | (like C<POSIX::atend()>) now fails at import time, instead of | |
148 | waiting until runtime. | |
149 | ||
150 | =item * | |
151 | ||
152 | L<re> has been upgraded from version 0.32 to 0.33. | |
153 | ||
154 | =item * | |
155 | ||
156 | L<Scalar::Util> has been upgraded from version 1.42_02 to 1.45_01. | |
157 | ||
158 | =item * | |
159 | ||
160 | L<Sys::Syslog> has been upgraded from version 0.33 to 0.34. | |
161 | ||
162 | =item * | |
163 | ||
164 | L<Term::ANSIColor> has been upgraded from version 4.04 to 4.05. | |
165 | ||
166 | =item * | |
167 | ||
168 | L<Test::Simple> has been upgraded from version 1.001014 to 1.302015. | |
169 | ||
170 | =item * | |
171 | ||
172 | L<threads> has been upgraded from version 2.07 to 2.08. Compatibility | |
173 | with 5.8 has been restored. | |
174 | ||
175 | =item * | |
176 | ||
177 | L<threads::shared> has been upgraded from version 1.51 to 1.52. | |
178 | Compatibility with 5.8 has been restored. | |
179 | ||
180 | =back | |
181 | ||
182 | =head1 Documentation | |
183 | ||
184 | =head2 Changes to Existing Documentation | |
185 | ||
186 | =over 4 | |
187 | ||
188 | =item * | |
189 | ||
190 | Fixed link to Crosby paper on hash complexity attack in L<perlsec>. | |
191 | ||
192 | =back | |
193 | ||
194 | =head1 Diagnostics | |
195 | ||
196 | =head2 New Diagnostics | |
197 | ||
198 | =head3 New Errors | |
199 | ||
200 | =over 4 | |
201 | ||
202 | =item * | |
203 | ||
204 | L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s""> | |
205 | ||
206 | =item * | |
207 | ||
208 | L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename"> | |
209 | ||
210 | =item * | |
211 | ||
212 | L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s""> | |
213 | ||
214 | =item * | |
215 | ||
216 | L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Bareword in require must not start with a double-colon: "%s""> | |
217 | ||
218 | =back | |
219 | ||
220 | =head2 Changes to Existing Diagnostics | |
221 | ||
222 | =over 4 | |
223 | ||
224 | =item * | |
225 | ||
226 | Code like C<$x = $x . "a"> was incorrectly failing to yield a | |
227 | L<use of uninitialized value|perldiag/"Use of uninitialized value%s"> | |
228 | warning when C<$x> was a lexical variable with an undefined value. That has | |
229 | now been fixed. [perl #127877] | |
230 | ||
231 | =item * | |
232 | ||
233 | When the error "Experimental push on scalar is now forbidden" is raised for | |
234 | the hash functions C<keys>, C<each>, and C<values>, it is now followed by | |
235 | the more helpful message, "Type of arg 1 to whatever must be hash or | |
236 | array". [perl #127976] | |
237 | ||
238 | =item * | |
239 | ||
240 | C<undef *_; shift> or C<undef *_; pop> inside a subroutine, with no | |
241 | argument to C<shift> or C<pop>, began crashing in Perl 5.14.0, but has now | |
242 | been fixed. | |
243 | ||
244 | =item * | |
245 | ||
246 | C<< "string$scalar-E<gt>$*" >> now correctly prefers concat overloading to | |
247 | string overloading if C<< $scalar-E<gt>$* >> returns an overloaded object, | |
248 | bringing it into consistency with C<$$scalar>. | |
249 | ||
250 | =item * | |
251 | ||
252 | C<< /@0{0*-E<gt>@*/*0 >> and similar contortions used to crash, but no longer | |
253 | do, but merely produce a syntax error. [perl #128171] | |
254 | ||
255 | =item * | |
256 | ||
257 | C<do> or C<require> with a reference or typeglob which, when stringified, | |
258 | contains a null character started crashing in Perl 5.20.0, but has now been | |
259 | fixed. [perl #128182] | |
260 | ||
261 | =back | |
262 | ||
263 | =head1 Utility Changes | |
264 | ||
265 | =head2 L<perlbug> | |
266 | ||
267 | =over 4 | |
268 | ||
269 | =item * | |
270 | ||
271 | Long lines in the message body are now wrapped at 900 characters, to stay | |
272 | well within the 1000-character limit imposed by SMTP mail transfer agents. | |
273 | This is particularly likely to be important for the list of arguments to | |
274 | C<Configure>, which can readily exceed the limit if, for example, it names | |
275 | several non-default installation paths. This change also adds the first unit | |
276 | tests for perlbug. [perl #128020] | |
277 | ||
278 | =back | |
279 | ||
280 | =head1 Configuration and Compilation | |
281 | ||
282 | =over 4 | |
283 | ||
284 | =item * | |
285 | ||
286 | C<Configure> now builds C<miniperl> and C<generate_uudmap> if you | |
287 | invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>. | |
288 | This means you can supply your target platform C<config.sh>, generate | |
289 | the headers and proceed to build your cross-target perl. [perl #127234] | |
290 | ||
291 | =item * | |
292 | ||
293 | Builds with C<-Accflags=-DPERL_TRACE_OPS> now only dump the operator | |
294 | counts when the environment variable C<PERL_TRACE_OPS> to be set to a | |
295 | non-zero integer. This allows C<make test> to pass on such a build. | |
296 | ||
297 | =item * | |
298 | ||
299 | When building with GCC 6 and link-time optimization (the C<-flto> option to | |
300 | C<gcc>), C<Configure> was treating all probed symbols as present on the | |
301 | system, regardless of whether they actually exist. This has been fixed. | |
302 | [perl #128131] | |
303 | ||
304 | =item * | |
305 | ||
306 | The F<t/test.pl> library is used for internal testing of Perl itself, and | |
307 | also copied by several CPAN modules. Some of those modules must work on | |
308 | older versions of Perl, so F<t/test.pl> must in turn avoid newer Perl | |
309 | features. Compatibility with Perl 5.8 was inadvertently removed some time | |
310 | ago; it has now been restored. [perl #128052] | |
311 | ||
312 | =item * | |
313 | ||
314 | The build process no longer emits an extra blank line before building each | |
315 | "simple" extension (those with only F<*.pm> and F<*.pod> files). | |
316 | ||
317 | =back | |
318 | ||
319 | =head1 Internal Changes | |
320 | ||
321 | =over 4 | |
322 | ||
323 | =item * | |
324 | ||
325 | Perl is now built with the C<PERL_OP_PARENT> compiler define enabled by | |
326 | default. To disable it, use the C<PERL_NO_OP_PARENT> compiler define. | |
327 | This flag alters how the C<op_sibling> field is used in C<OP> structures, | |
328 | and has been available optionally since perl 5.22.0. | |
329 | ||
330 | See L<perl5220delta/"Internal Changes"> for more details of what this | |
331 | build option does. | |
332 | ||
333 | =back | |
334 | ||
335 | =head1 Selected Bug Fixes | |
336 | ||
337 | =over 4 | |
338 | ||
339 | =item * | |
340 | ||
341 | Expressions containing an C<&&> or C<||> operator (or their synonyms C<and> | |
342 | and C<or>) were being compiled incorrectly in some cases. If the left-hand | |
343 | side consisted of either a negated bareword constant or a negated C<do {}> | |
344 | block containing a constant expression, and the right-hand side consisted of | |
345 | a negated non-foldable expression, one of the negations was effectively | |
346 | ignored. The same was true of C<if> and C<unless> statement modifiers, | |
347 | though with the left-hand and right-hand sides swapped. This long-standing | |
348 | bug has now been fixed. [perl #127952] | |
349 | ||
350 | =item * | |
351 | ||
352 | C<reset> with an argument no longer crashes when encountering stash entries | |
353 | other than globs. [perl #128106] | |
354 | ||
355 | =item * | |
356 | ||
357 | Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no | |
358 | longer causes crashes. [perl #128086] | |
359 | ||
360 | =back | |
361 | ||
362 | =head1 Acknowledgements | |
363 | ||
364 | Perl 5.25.1 represents approximately 2 weeks of development since Perl 5.25.0 | |
365 | and contains approximately 46,000 lines of changes across 630 files from 24 | |
366 | authors. | |
367 | ||
368 | Excluding auto-generated files, documentation and release tools, there were | |
369 | approximately 40,000 lines of changes to 510 .pm, .t, .c and .h files. | |
370 | ||
371 | Perl continues to flourish into its third decade thanks to a vibrant community | |
372 | of users and developers. The following people are known to have contributed the | |
373 | improvements that became Perl 5.25.1: | |
374 | ||
375 | Aaron Crane, Andreas Voegele, Chad Granum, Chris 'BinGOs' Williams, Craig A. | |
376 | Berry, David Mitchell, Doug Bell, Father Chrysostomos, H.Merijn Brand, Hugo van | |
377 | der Sanden, Jarkko Hietaniemi, Jerry D. Hedden, Jim Cromie, John Lightsey, | |
378 | Karen Etheridge, Karl Williamson, Lukas Mai, Maxwell Carey, Nicholas Clark, | |
379 | Niko Tyni, Ricardo Signes, Sawyer X, Tony Cook, Yves Orton. | |
380 | ||
381 | The list above is almost certainly incomplete as it is automatically generated | |
382 | from version control history. In particular, it does not include the names of | |
383 | the (very much appreciated) contributors who reported issues to the Perl bug | |
384 | tracker. | |
385 | ||
386 | Many of the changes included in this version originated in the CPAN modules | |
387 | included in Perl's core. We're grateful to the entire CPAN community for | |
388 | helping Perl to flourish. | |
389 | ||
390 | For a more complete list of all of Perl's historical contributors, please see | |
391 | the F<AUTHORS> file in the Perl source distribution. | |
392 | ||
393 | =head1 Reporting Bugs | |
394 | ||
395 | If you find what you think is a bug, you might check the articles recently | |
396 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
397 | L<https://rt.perl.org/> . There may also be information at | |
398 | L<http://www.perl.org/> , the Perl Home Page. | |
399 | ||
400 | If you believe you have an unreported bug, please run the L<perlbug> program | |
401 | included with your release. Be sure to trim your bug down to a tiny but | |
402 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
403 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
404 | ||
405 | If the bug you are reporting has security implications which make it | |
406 | inappropriate to send to a publicly archived mailing list, then see | |
407 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> | |
408 | for details of how to report the issue. | |
409 | ||
410 | =head1 SEE ALSO | |
411 | ||
412 | The F<Changes> file for an explanation of how to view exhaustive details on | |
413 | what changed. | |
414 | ||
415 | The F<INSTALL> file for how to build Perl. | |
416 | ||
417 | The F<README> file for general stuff. | |
418 | ||
419 | The F<Artistic> and F<Copying> files for copyright information. | |
420 | ||
421 | =cut |