Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
7e7cfa2d | 5 | perldelta - what is new for perl v5.17.6 |
e128ab2c | 6 | |
4eabcf70 | 7 | =head1 DESCRIPTION |
6db9054f | 8 | |
7e7cfa2d | 9 | This document describes differences between the 5.17.5 release and the 5.17.6 |
e08634c5 | 10 | release. |
6db9054f | 11 | |
7e7cfa2d FR |
12 | If you are upgrading from an earlier release such as 5.17.4, first read |
13 | L<perl5175delta>, which describes differences between 5.17.4 and 5.17.5. | |
5faa50e9 | 14 | |
5d8c8c8a | 15 | =head1 Core Enhancements |
4db91b87 | 16 | |
bde9e88d KW |
17 | =head2 Character name aliases may now include non-Latin1-range characters |
18 | ||
19 | It is possible to define your own names for characters for use in | |
20 | C<\N{...}>, C<charnames::vianame()>, etc. These names can now be | |
21 | comprised of characters from the whole Unicode range. This allows for | |
22 | names to be in your native language, and not just English. Certain | |
23 | restrictions apply to the characters that may be used (you can't define | |
24 | a name that has punctuation in it, for example). See L<charnames/CUSTOM | |
25 | ALIASES>. | |
26 | ||
86148eee YO |
27 | =head2 New hash function Murmurhash-32 (v3) |
28 | ||
0f773ca4 KW |
29 | We have switched Perl's hash function to use Murmurhash-32, and added build |
30 | support for several other hash functions. This new function is expected to | |
31 | perform equivalently to the old one for shorter strings and is faster, | |
32 | potentially twice as fast, for hashing longer strings. | |
86148eee | 33 | |
916c45d9 | 34 | =head1 Incompatible Changes |
9c5f5e7a | 35 | |
90249f0a KW |
36 | =head2 An unknown character name in C<\N{...}> is now a syntax error |
37 | ||
38 | Previously, it warned, and the Unicode REPLACEMENT CHARACTER was | |
39 | substituted. Unicode now recommends that this situation be a syntax | |
40 | error. Also, the previous behavior led to some confusing warnings and | |
41 | behaviors, and since the REPLACEMENT CHARACTER has no use other than as | |
42 | a stand-in for some unknown character, any code that has this problem is | |
43 | buggy. | |
44 | ||
4d7cd482 KW |
45 | =head2 Formerly deprecated characters in C<\N{}> character name aliases are now errors. |
46 | ||
47 | Since v5.12.0, it has been deprecated to use certain characters in | |
48 | user-defined C<\N{...}> character names. These now cause a syntax | |
49 | error. For example, it is now an error to begin a name with a digit, | |
50 | such as in | |
51 | ||
52 | my $undraftable = "\N{4F}"; # Syntax error! | |
53 | ||
54 | or to have commas anywhere in the name. See L<charnames/CUSTOM ALIASES> | |
55 | ||
86148eee YO |
56 | =head2 Per process hash randomization |
57 | ||
0f773ca4 KW |
58 | The seed used by Perl's hash function is now random. This means that the |
59 | order which keys/values will be returned from functions like C<keys()>, | |
60 | C<values()>, and C<each()> will differ from run to run. | |
86148eee | 61 | |
0f773ca4 KW |
62 | This change was introduced to make Perl's hashes more robust to algorithmic |
63 | complexity attacks, and also because we discovered that it exposes hash | |
64 | ordering dependency bugs and makes them easier to track down. | |
86148eee | 65 | |
1611045a | 66 | Toolchain maintainers might want to invest in additional infrastructure to |
0f773ca4 | 67 | test for things like this. Running tests several times in a row and then |
1611045a | 68 | comparing results will make it easier to spot hash order dependencies in |
0f773ca4 KW |
69 | code. Authors are strongly encouraged not to expose the key order of |
70 | Perl's hashes to insecure audiences. | |
1611045a | 71 | |
7a7a10c7 YO |
72 | =head2 PERL_HASH_SEED enviornment variable now takes a hex value |
73 | ||
74 | PERL_HASH_SEED no longer accepts an integer as a parameter, instead the | |
0f773ca4 | 75 | value is expected to be a binary string encoded in hex. This is to make |
7a7a10c7 | 76 | the infrastructure support hash seeds of arbitrary lengths which might |
0f773ca4 | 77 | exceed that of an integer. (SipHash uses a 16 byte seed). |
7a7a10c7 YO |
78 | |
79 | =head2 Hash::Util::hash_seed() now returns a string | |
80 | ||
0f773ca4 | 81 | Hash::Util::hash_seed() now returns a string instead of an integer. This |
7a7a10c7 | 82 | is to make the infrastructure support hash seeds of arbitrary lengths |
0f773ca4 | 83 | which might exceed that of an integer. (SipHash uses a 16 byte seed). |
7a7a10c7 YO |
84 | |
85 | =head2 Output of PERL_HASH_SEED_DEBUG has been changed | |
86 | ||
87 | The environment variable PERL_HASH_SEED_DEBUG now shows both the hash | |
88 | function perl was built with AND the seed, in hex in use for that process. | |
89 | Code parsing this output, should it exist, must change to accomodate the | |
0f773ca4 | 90 | new format. Example of the new format: |
7a7a10c7 YO |
91 | |
92 | $ PERL_HASH_SEED_DEBUG=1 ./perl -e1 | |
93 | HASH_FUNCTION = MURMUR3 HASH_SEED = 0x1476bb9f | |
94 | ||
5d8c8c8a | 95 | =head1 Performance Enhancements |
45f11e9c | 96 | |
916c45d9 | 97 | =over 4 |
338a1057 SH |
98 | |
99 | =item * | |
100 | ||
11e375e0 FC |
101 | Lists of lexical variable declarations (C<my($x, $y)>) are now optimised |
102 | down to a single op, and are hence faster than before. | |
0ace302a | 103 | |
32209f41 S |
104 | =item * |
105 | ||
106 | A new C preprocessor define NO_TAINT_SUPPORT was added that, if set, disables | |
0f773ca4 KW |
107 | Perl's taint support altogether. Using the -T or -t command line flags will |
108 | cause a fatal error. Beware that both core tests as well as many a CPAN | |
109 | distribution's tests will fail with this change. On the upside, it provides | |
32209f41 | 110 | a small performance benefit due to reduced branching. |
c387386a RS |
111 | |
112 | B<Do not enable this unless you know exactly what you are getting yourself | |
113 | into.> | |
32209f41 | 114 | |
5d8c8c8a | 115 | =back |
5faa50e9 | 116 | |
5d8c8c8a | 117 | =head1 Modules and Pragmata |
5faa50e9 | 118 | |
916c45d9 | 119 | =head2 Updated Modules and Pragmata |
4cc02608 | 120 | |
916c45d9 | 121 | =over 4 |
e7b92d54 SH |
122 | |
123 | =item * | |
124 | ||
11e375e0 FC |
125 | L<Carp> has been upgraded from version 1.27 to 1.28. |
126 | ||
127 | Carp is no longer confused when C<caller> returns undef for a package that | |
128 | has been deleted. | |
129 | ||
130 | =item * | |
131 | ||
7b379596 CB |
132 | L<CPAN> has been upgraded from version 1.98 to 1.99_51. |
133 | ||
5c26a176 SH |
134 | =item * |
135 | ||
136 | L<DynaLoader> has been upgraded from version 1.16 to 1.17. | |
137 | ||
cb077ed2 DD |
138 | =item * |
139 | ||
11e375e0 FC |
140 | L<Env> has been upgraded from version 1.03 to 1.04. |
141 | ||
142 | Its SPLICE implementation no longer misbehaves in list context. | |
143 | ||
144 | =item * | |
145 | ||
e498bd59 RS |
146 | L<Module::CoreList> has been upgraded from version 2.77 to 2.78. |
147 | ||
148 | =item * | |
149 | ||
cb077ed2 DD |
150 | L<Tie::Hash::NamedCapture> has been upgraded from version 0.08 to 0.09. |
151 | ||
5d8c8c8a | 152 | =back |
5f877a7f | 153 | |
5d8c8c8a | 154 | =head2 Changes to Existing Documentation |
1ea91bbe | 155 | |
c9ac5216 | 156 | =head3 L<perlref> |
5faa50e9 | 157 | |
5d8c8c8a | 158 | =over 4 |
1ea91bbe FR |
159 | |
160 | =item * | |
161 | ||
c9ac5216 FC |
162 | C<*foo{NAME}> and C<*foo{PACKAGE}>, which have existed since perl 5.005, |
163 | are now documented. | |
5faa50e9 | 164 | |
916c45d9 | 165 | =back |
9c5f5e7a | 166 | |
5d8c8c8a | 167 | =head1 Platform Support |
4db91b87 | 168 | |
5d8c8c8a | 169 | =head2 Discontinued Platforms |
4db91b87 | 170 | |
5d8c8c8a | 171 | =over 4 |
4db91b87 | 172 | |
739a0b84 | 173 | =item EPOC |
4db91b87 | 174 | |
739a0b84 NC |
175 | Support code relating to EPOC has been removed. EPOC was a family of |
176 | operating systems developed by Psion for mobile devices. It was the | |
177 | predecessor of Symbian. The port was last updated in April 2002. | |
4db91b87 | 178 | |
5d8c8c8a | 179 | =back |
5faa50e9 | 180 | |
5d8c8c8a | 181 | =head2 Platform-Specific Notes |
5faa50e9 | 182 | |
5d8c8c8a | 183 | =over 4 |
5faa50e9 | 184 | |
ddb1bef5 CB |
185 | =item VMS |
186 | ||
187 | Where possible, the case of filenames and command-line arguments is now | |
188 | preserved by enabling the CRTL features C<DECC$EFS_CASE_PRESERVE> and | |
189 | C<DECC$ARGV_PARSE_STYLE> at start-up time. The latter only takes effect | |
190 | when extended parse is enabled in the process from which Perl is run. | |
191 | ||
6998fcfc | 192 | =item WinCE |
5faa50e9 | 193 | |
6998fcfc SH |
194 | Building on WinCE is now possible once again, although more work is required |
195 | to fully restore a clean build. | |
5faa50e9 | 196 | |
5d8c8c8a | 197 | =back |
5faa50e9 | 198 | |
5d8c8c8a | 199 | =head1 Internal Changes |
5faa50e9 | 200 | |
5d8c8c8a | 201 | =over 4 |
5faa50e9 FR |
202 | |
203 | =item * | |
204 | ||
0f773ca4 KW |
205 | The private Perl_croak_no_modify has had its context parameter removed. It is |
206 | now has a void prototype. Users of the public API croak_no_modify remain | |
cb077ed2 DD |
207 | unaffected. |
208 | ||
209 | =item * | |
210 | ||
11e375e0 FC |
211 | Copy-on-write (shared hash key) scalars are no longer marked read-only. |
212 | C<SvREADONLY> returns false on such an SV, but C<SvIsCOW> still returns | |
213 | true. | |
90814a4e | 214 | |
5ce83ae9 DM |
215 | =item * |
216 | ||
0f773ca4 | 217 | A new op type, C<OP_PADRANGE> has been introduced. The perl peephole |
5ce83ae9 DM |
218 | optimiser will, where possible, substitute a single padrange op for a |
219 | pushmark followed by one or more pad ops, and possibly also skipping list | |
0f773ca4 | 220 | and nextstate ops. In addition, the op can carry out the tasks associated |
5ce83ae9 DM |
221 | with the RHS of a my(...) = @_ assignment, so those ops may be optimised |
222 | away too. | |
223 | ||
5d8c8c8a | 224 | =back |
31c15ce5 | 225 | |
5d8c8c8a | 226 | =head1 Selected Bug Fixes |
4db91b87 | 227 | |
5d8c8c8a | 228 | =over 4 |
4db91b87 FC |
229 | |
230 | =item * | |
231 | ||
11e375e0 FC |
232 | Uninitialized warnings mentioning hash elements would only mention the |
233 | element name if it was not in the first bucket of the hash, due to an | |
234 | off-by-one error. | |
235 | ||
236 | =item * | |
237 | ||
238 | A regular expression optimizer bug could cause multiline "^" to behave | |
239 | incorrectly in the presence of line breaks, such that | |
240 | C<"/\n\n" =~ m#\A(?:^/$)#im> would not match [perl #115242]. | |
241 | ||
242 | =item * | |
243 | ||
244 | Failed C<fork> in list context no longer currupts the stack. | |
245 | C<@a = (1, 2, fork, 3)> used to gobble up the 2 and assign C<(1, undef, 3)> | |
246 | if the C<fork> call failed. | |
247 | ||
248 | =item * | |
249 | ||
250 | Numerous memory leaks have been fixed, mostly involving tied variables that | |
251 | die, regular expression character classes and code blocks, and syntax | |
252 | errors. | |
253 | ||
254 | =item * | |
255 | ||
256 | Assigning a regular expression (C<${qr//}>) to a variable that happens to | |
257 | hold a floating point number no longer causes assertion failures on | |
258 | debugging builds. | |
259 | ||
260 | =item * | |
261 | ||
262 | Assigning a regular expression to a scalar containing a number no longer | |
263 | causes subsequent nummification to produce random numbers. | |
264 | ||
265 | =item * | |
266 | ||
267 | Assigning a regular expression to a magic variable no longer wipes away the | |
268 | magic. This is a regression from 5.10. | |
269 | ||
270 | =item * | |
271 | ||
272 | Assigning a regular expression to a blessed scalar no longer results in | |
273 | crashes. This is also a regression from 5.10. | |
274 | ||
275 | =item * | |
276 | ||
277 | Regular expression can now be assigned to tied hash and array elements with | |
278 | flattening into strings. | |
279 | ||
280 | =item * | |
281 | ||
282 | Nummifying a regular expression no longer results in an uninitialized | |
283 | warning. | |
284 | ||
285 | =item * | |
286 | ||
287 | Negative array indices no longer cause EXISTS methods of tied variables to | |
288 | be ignored. This is a regression from 5.12. | |
289 | ||
290 | =item * | |
291 | ||
292 | Negative array indices no longer result in crashes on arrays tied to | |
293 | non-objects. | |
294 | ||
295 | =item * | |
296 | ||
297 | C<$x = "(?{})"; /a++(?{})+$x/x> no longer erroneous produces an error (just | |
298 | a warning, as expected). This was broken in 5.17.1. | |
299 | ||
300 | =item * | |
301 | ||
302 | C<$byte_overload .= $utf8> no longer results in doubly-encoded UTF8 if the | |
303 | left-hand scalar happened to have produced a UTF8 string the last time | |
304 | overloading was invoked. | |
305 | ||
306 | =item * | |
307 | ||
308 | C<goto &sub> now uses the current value of @_, instead of using the array | |
309 | the subroutine was originally called with. This means | |
310 | C<local @_ = (...); goto &sub> now works [perl #43077]. | |
311 | ||
312 | =item * | |
313 | ||
314 | If a debugger is invoked recursively, it no longer stomps on its own | |
315 | lexical variables. Formerly under recursion all calls would share the same | |
316 | set of lexical variables [perl #115742]. | |
2d9cd31f | 317 | |
c9ac5216 FC |
318 | =item * |
319 | ||
320 | C<*_{ARRAY}> returned from a subroutine no longer spontaneously | |
321 | becomes empty. | |
322 | ||
5d8c8c8a | 323 | =back |
4db91b87 | 324 | |
916c45d9 | 325 | =head1 Acknowledgements |
05bee12a | 326 | |
c387386a RS |
327 | Perl 5.17.6 represents approximately 5 weeks of development since Perl 5.17.5 |
328 | and contains approximately 79,000 lines of changes across 460 files from 30 | |
329 | authors. | |
330 | ||
331 | Perl continues to flourish into its third decade thanks to a vibrant community | |
332 | of users and developers. The following people are known to have contributed the | |
333 | improvements that became Perl 5.17.6: | |
334 | ||
335 | Alexandr Ciornii, Brian Fraser, Chris 'BinGOs' Williams, Craig A. Berry, | |
336 | Dagfinn Ilmari Mannsåker, Daniel Dragan, David Golden, David Mitchell, Dominic | |
337 | Hargreaves, Eric Brine, Father Chrysostomos, Florian Ragwitz, Hugo van der | |
338 | Sanden, James E Keenan, Jerry D. Hedden, Jesse Luehrs, Karl Williamson, Lukas | |
339 | Mai, Nicholas Clark, Paul Johnson, Reini Urban, Ricardo Signes, Ruslan Zakirov, | |
340 | Shlomi Fish, Steffen Müller, Steve Hay, Tom Wyant, Tony Cook, Vadim Konovalov, | |
341 | Yves Orton. | |
342 | ||
343 | The list above is almost certainly incomplete as it is automatically generated | |
344 | from version control history. In particular, it does not include the names of | |
345 | the (very much appreciated) contributors who reported issues to the Perl bug | |
346 | tracker. | |
347 | ||
348 | Many of the changes included in this version originated in the CPAN modules | |
349 | included in Perl's core. We're grateful to the entire CPAN community for | |
350 | helping Perl to flourish. | |
351 | ||
352 | For a more complete list of all of Perl's historical contributors, please see | |
353 | the F<AUTHORS> file in the Perl source distribution. | |
29cf780c | 354 | |
44691e6f AB |
355 | =head1 Reporting Bugs |
356 | ||
e08634c5 SH |
357 | If you find what you think is a bug, you might check the articles recently |
358 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
359 | http://rt.perl.org/perlbug/ . There may also be information at | |
360 | http://www.perl.org/ , the Perl Home Page. | |
44691e6f | 361 | |
e08634c5 SH |
362 | If you believe you have an unreported bug, please run the L<perlbug> program |
363 | included with your release. Be sure to trim your bug down to a tiny but | |
364 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
365 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
44691e6f AB |
366 | |
367 | If the bug you are reporting has security implications, which make it | |
e08634c5 SH |
368 | inappropriate to send to a publicly archived mailing list, then please send it |
369 | to perl5-security-report@perl.org. This points to a closed subscription | |
370 | unarchived mailing list, which includes all the core committers, who will be | |
371 | able to help assess the impact of issues, figure out a resolution, and help | |
f9001595 | 372 | co-ordinate the release of patches to mitigate or fix the problem across all |
e08634c5 SH |
373 | platforms on which Perl is supported. Please only use this address for |
374 | security issues in the Perl core, not for modules independently distributed on | |
375 | CPAN. | |
44691e6f AB |
376 | |
377 | =head1 SEE ALSO | |
378 | ||
e08634c5 SH |
379 | The F<Changes> file for an explanation of how to view exhaustive details on |
380 | what changed. | |
44691e6f AB |
381 | |
382 | The F<INSTALL> file for how to build Perl. | |
383 | ||
384 | The F<README> file for general stuff. | |
385 | ||
386 | The F<Artistic> and F<Copying> files for copyright information. | |
387 | ||
388 | =cut |