-
Notifications
You must be signed in to change notification settings - Fork 2
/
perl5270cdelta.html
490 lines (311 loc) · 18.1 KB
/
perl5270cdelta.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:[email protected]" />
</head>
<body style="background-color: white">
<ul id="index">
<li><a href="#NAME">NAME</a></li>
<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
<li><a href="#Core-Enhancements">Core Enhancements</a>
<ul>
<li><a href="#study-HASH-CODE-ARRAY">study HASH CODE ARRAY</a></li>
<li><a href="#New-strict-hashpairs">New strict hashpairs</a></li>
<li><a href="#Honor-the-BOM">Honor the BOM</a></li>
<li><a href="#Safer-perl--c:s-cmdline-flag">Safer perl -c:s cmdline flag</a></li>
</ul>
</li>
<li><a href="#Incompatible-Changes">Incompatible Changes</a>
<ul>
<li>
<ul>
<li><a href="#use-strict-hashpairs">use strict hashpairs</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#Performance-Enhancements">Performance Enhancements</a></li>
<li><a href="#Modules-and-Pragmata">Modules and Pragmata</a>
<ul>
<li><a href="#Updated-Modules-and-Pragmata">Updated Modules and Pragmata</a></li>
</ul>
</li>
<li><a href="#Documentation">Documentation</a>
<ul>
<li><a href="#Changes-to-Existing-Documentation">Changes to Existing Documentation</a>
<ul>
<li><a href="#perldtrace">perldtrace</a></li>
<li><a href="#perldata-perlfunc">perldata, perlfunc</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#Diagnostics">Diagnostics</a>
<ul>
<li><a href="#New-Diagnostics">New Diagnostics</a>
<ul>
<li><a href="#New-Errors">New Errors</a></li>
<li><a href="#New-Warnings">New Warnings</a></li>
</ul>
</li>
<li><a href="#Changes-to-Existing-Diagnostics">Changes to Existing Diagnostics</a></li>
</ul>
</li>
<li><a href="#Utility-Changes">Utility Changes</a>
<ul>
<li><a href="#dtrace">dtrace</a></li>
</ul>
</li>
<li><a href="#Configuration-and-Compilation">Configuration and Compilation</a></li>
<li><a href="#Platform-Support">Platform Support</a>
<ul>
<li><a href="#New-Platforms">New Platforms</a></li>
<li><a href="#Platform-Specific-Notes">Platform-Specific Notes</a></li>
</ul>
</li>
<li><a href="#Internal-Changes">Internal Changes</a></li>
<li><a href="#Selected-Bug-Fixes">Selected Bug Fixes</a></li>
<li><a href="#Acknowledgements">Acknowledgements</a></li>
<li><a href="#Reporting-Bugs">Reporting Bugs</a></li>
<li><a href="#SEE-ALSO">SEE ALSO</a></li>
<li><a href="#POD-ERRORS">POD ERRORS</a></li>
</ul>
<h1 id="NAME">NAME</h1>
<p>perl5270cdelta - what is new for cperl v5.27.0</p>
<h1 id="DESCRIPTION">DESCRIPTION</h1>
<p>This document describes the differences between the cperl 5.26.0 and the cperl 5.27.0 releases.</p>
<p>If you are upgrading from an earlier release such as v5.24.2c, first read the <a>perl525*cdelta</a> documentation, which describes differences between v5.25.1c and v5.26.0c</p>
<h1 id="Core-Enhancements">Core Enhancements</h1>
<h2 id="study-HASH-CODE-ARRAY">study HASH CODE ARRAY</h2>
<p>study does not stringify hashes anymore, it rather calls the new <a href="/cperl/perlapi.html#hv_study">hv_study</a> function on hashes, which optimizes the internal structure of a hash. Currently clears all placeholders, and optionally shrinks its size if the new size falls below a power of two. On code, regex and arrays it does nothing yet, but might add type optimizations on the current dynamic status.</p>
<h2 id="New-strict-hashpairs">New strict hashpairs</h2>
<p>Added <code>use strict 'hashpairs'</code> to allow only pairs for hash assignments, within a map even only an empty or single pair. See <a href="https://github.com/perl11/cperl/issues/281">[cperl #281</a>.</p>
<h2 id="Honor-the-BOM">Honor the BOM</h2>
<p>With any of three supported BOMs set <code>use utf8</code> and <code>use feature 'unicode_strings'</code> at compile-time as documented until perl 5.26.</p>
<p>With 5.26 perl5 decided to change the documentation to match the broken implementation. With cperl 5.27.0c the implementation was fixed instead. See <a href="https://github.com/perl11/cperl/issues/269">[cperl #269]</a> and <a href="https://rt.perl.org/Public/Bug/Display.html?id=121292">[perl #121292]</a>.</p>
<h2 id="Safer-perl--c:s-cmdline-flag">Safer perl -c:s cmdline flag</h2>
<p>Avoid undoable and unsafe sideeffects (io, ...) in the CHECK mode, esp. for editor syntax checks. See <a href="https://github.com/perl11/cperl/issues/263">[cperl #263]</a></p>
<p>Essentially prepend <code>-Mops=:browse,:load,print</code> with <code>-c:s</code>.</p>
<h1 id="Incompatible-Changes">Incompatible Changes</h1>
<h3 id="use-strict-hashpairs">use strict hashpairs</h3>
<p>With <code>use strict</code> this will now fail:</p>
<pre><code> my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files;</code></pre>
<p>Two pairs being added in a map block violates strict hashpairs. Add the second pair in a second loop or <code>no strict 'hashpairs'</code>.</p>
<pre><code> my %xsc = map { /(.*)\.xs$/ && ("$1.c" => 1) } @files;
/^(.*)\.xs$/) && $xsc{"$1.cc"} = 1 for @files;</code></pre>
<h1 id="Performance-Enhancements">Performance Enhancements</h1>
<ul>
<li><p>On hash split and shrink the rounding up to a power of 2 has been improved by a factor of 10^8 on modern hardware. On old hardware by a factor of 2.</p>
</li>
<li><p>Replaced the old quadratic bsd glob with a linear glob, detected by Russ Cox <a href="https://research.swtch.com/glob">https://research.swtch.com/glob</a>.</p>
</li>
</ul>
<h1 id="Modules-and-Pragmata">Modules and Pragmata</h1>
<h2 id="Updated-Modules-and-Pragmata">Updated Modules and Pragmata</h2>
<dl>
<dt id="Archive::Tar-0.26"><a href="/cperl/lib/Archive/Tar.html">Archive::Tar</a> 0.26</dt>
<dd>
<p>'0' is a valid name for an archive, change 'iter' to check definedness. See <a href="https://metacpan.org/changes/distribution/Archive-Tar">https://metacpan.org/changes/distribution/Archive-Tar</a></p>
</dd>
<dt id="B::C"><a href="/cperl/lib/B/C.html">B::C</a></dt>
<dd>
<p>Support pgcc, seperate it from gcc</p>
</dd>
<dt id="B::Concise-0.9991c"><a href="/cperl/lib/B/Concise.html">B::Concise</a> 0.9991c</dt>
<dd>
<p>Support the new strict hints flags and abbrevate all strict flags as strict.</p>
</dd>
<dt id="Compress::Raw::Bzip2"><a href="/cperl/lib/Compress/Raw/Bzip2.html">Compress::Raw::Bzip2</a></dt>
<dd>
<p>Support pgcc, seperate it from gcc</p>
</dd>
<dt id="Compress::Raw::Zlib"><a href="/cperl/lib/Compress/Raw/Zlib.html">Compress::Raw::Zlib</a></dt>
<dd>
<p>Support pgcc, seperate it from gcc</p>
</dd>
<dt id="Cpanel::JSON::XS-3.0233"><a href="/cperl/lib/Cpanel/JSON/XS.html">Cpanel::JSON::XS</a> 3.0233</dt>
<dd>
<p>MSVC 14.0 support and higher, changed nan in the runtime.</p>
</dd>
<dt id="DB_File"><a href="/cperl/lib/DB_File.html">DB_File</a></dt>
<dd>
<p>Support pgcc, seperate it from gcc</p>
</dd>
<dt id="Devel::PPPort-3.36_01"><a href="/cperl/lib/Devel/PPPort.html">Devel::PPPort</a> 3.36_01</dt>
<dd>
<p>Support strict hashpairs, fix for . in @INC. Merged with 3.36</p>
</dd>
<dt id="Encode-2.89"><a href="/cperl/lib/Encode.html">Encode</a> 2.89</dt>
<dd>
<p>no strict hashpairs in encoding. fixed some -Wsign-compare See <a href="https://metacpan.org/changes/distribution/Encode">https://metacpan.org/changes/distribution/Encode</a></p>
</dd>
<dt id="ExtUtils::Install-2.08"><a href="/cperl/lib/ExtUtils/Install.html">ExtUtils::Install</a> 2.08</dt>
<dd>
<p>Optimisations: use our instead of vars lazy load modules make OS variables into constants move some calculations out of a loop</p>
<p>Keep our make -s support</p>
</dd>
<dt id="IPC::Cmd-0.98"><a href="/cperl/lib/IPC/Cmd.html">IPC::Cmd</a> 0.98</dt>
<dd>
<p>Enhancements: Added wait_loop_callback for run_forked()</p>
<p>Bug fixes: Only search in curdir in can_run() when on Win32 RT#105601</p>
</dd>
<dt id="PathTools-4.68c">PathTools 4.68c</dt>
<dd>
<p>getcwd, getdcwd and abs_path have now long path support. getdcwd (Windows only) also supports unicode paths, using the wide API.</p>
</dd>
<dt id="Pod::Checker"><a href="/cperl/lib/Pod/Checker.html">Pod::Checker</a></dt>
<dd>
<p>no strict hashpairs</p>
</dd>
<dt id="POSIX-1.76_03"><a href="/cperl/lib/POSIX.html">POSIX</a> 1.76_03</dt>
<dd>
<p>getcwd has now long path support. Added realpath, with long path support, if the libc supports NULL as 2nd argument.</p>
</dd>
<dt id="Storable"><a href="/cperl/lib/Storable.html">Storable</a></dt>
<dd>
<p>fix cygwin stack probing</p>
</dd>
<dt id="strict-1.12c"><a href="/cperl/lib/strict.html">strict</a> 1.12c</dt>
<dd>
<p>Added <code>use strict 'hashpairs'</code> to allow only pairs for hash assignments, within a map even only an empty or single pair. See <a href="https://github.com/perl11/cperl/issues/281">[cperl #281</a>.</p>
<p>Also reserved <code>use strict 'names'</code>, which is not yet implemented.</p>
</dd>
</dl>
<h1 id="Documentation">Documentation</h1>
<h2 id="Changes-to-Existing-Documentation">Changes to Existing Documentation</h2>
<h3 id="perldtrace"><a href="/cperl/perldtrace.html">perldtrace</a></h3>
<ul>
<li><p>Added <a href="/cperl/perldtrace.html#What-hash-operations-dominate">"What hash operations dominate" in perldtrace</a> and <a href="/cperl/perldtrace.html#glob-gv-call-statistics">"glob/gv call statistics" in perldtrace</a> sections.</p>
</li>
</ul>
<h3 id="perldata-perlfunc"><a href="/cperl/perldata.html">perldata</a>, <a href="/cperl/perlfunc.html">perlfunc</a></h3>
<ul>
<li><p>Added new pairwise hash contruction limitations to <a href="/cperl/perldata.html#List-value-constructors">"List value constructors" in perldata</a> and <a href="/cperl/perlfunc.html#map-EXPR-LIST">"map EXPR,LIST" in perlfunc</a>.</p>
</li>
</ul>
<h1 id="Diagnostics">Diagnostics</h1>
<p>The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see <a href="/cperl/perldiag.html">perldiag</a>.</p>
<h2 id="New-Diagnostics">New Diagnostics</h2>
<h3 id="New-Errors">New Errors</h3>
<ul>
<li><p><a href="/cperl/perldiag.html#Only-pair-in-map-hash-assignment-allowed-while-strict-hashpairs-got-d-elements">Only pair in map hash assignment allowed while "strict hashpairs", got %d elements </a></p>
<p><a href="/cperl/perldiag.html#Only-pairs-in-hash-assignment-allowed-while-strict-hashpairs-got-d-elements">Only pairs in hash assignment allowed while "strict hashpairs", got %d elements </a></p>
<p>With "strict hashpairs" in use, odd numbers of elements are forbidden to be assigned to hashes. Within a map block only a single or empty pair.</p>
</li>
</ul>
<h3 id="New-Warnings">New Warnings</h3>
<ul>
<li><p><a href="/cperl/perldiag.html#Odd-number-of-map-elements-in-hash-assignment">Odd number of map elements in hash assignment </a></p>
<p>Added a new HASH private bit to the mapwhile op when a map is assigned to a hash, to be able to warn once per map on uneven hashmap assignments. See <a href="https://github.com/perl11/cperl/issues/281">[cperl #281</a> and <a href="/cperl/lib/strict.html">strict</a> hashpairs.</p>
</li>
</ul>
<h2 id="Changes-to-Existing-Diagnostics">Changes to Existing Diagnostics</h2>
<ul>
<li><p><a href="/cperl/perldiag.html#do-s-failed-.-is-no-longer-in-INC-did-you-mean-do-.-s">do "%s" failed, '.' is no longer in @INC; did you mean do "./%s"? </a></p>
<p>Was changed from "do "%s" failed, '.' is no longer in @INC".</p>
</li>
</ul>
<h1 id="Utility-Changes">Utility Changes</h1>
<h2 id="dtrace"><a>dtrace</a></h2>
<ul>
<li><p>Four new dtrace probes for hash and glob. See <a href="/cperl/perldtrace.html">perldtrace</a> and <a href="https://github.com/perl11/cperl/issues/240">#240</a>.</p>
</li>
</ul>
<h1 id="Configuration-and-Compilation">Configuration and Compilation</h1>
<ul>
<li><p>Added support for the pgcc pgi compiler http://www.pgroup.com/. pgcc is very slow though. pgcc -O2 is 40% slower than gcc-6 -O3, pgcc -fast 30% slower. <a href="https://github.com/perl11/cperl/issues/279">#279</a>.</p>
</li>
<li><p>d_getcwd probe and key added. Sets HAS_GETCWD</p>
</li>
<li><p>d_get_current_dir_name probe and key added. Sets HAS_GET_CURRENT_DIR_NAME</p>
</li>
<li><p>getcwdnull probe and key added. Sets HAS_GETCWDNULL</p>
</li>
<li><p>d_realpath probe and key added. Sets HAS_REALPATH</p>
</li>
<li><p>d_builtin_clz probe and key added. Sets HAS_BUILTIN_CLZ. ("Count leading zeros"). Needed later for fast hopscotch hashing.</p>
</li>
<li><p>Travis and appveyor deploy now automatically master builds, besides tags.</p>
</li>
</ul>
<h1 id="Platform-Support">Platform Support</h1>
<h2 id="New-Platforms">New Platforms</h2>
<dl>
<dt id="pgcc">pgcc</dt>
<dd>
<p>Preliminary support for the Portland pgcc compiler (Linux, Darwin, Win32 only) has been added.</p>
</dd>
</dl>
<h2 id="Platform-Specific-Notes">Platform-Specific Notes</h2>
<p>Support for long paths have been added to all platforms, for <code>cwd</code> longer than 4096. Many kernels have limited support for it, but filesystems do. See <a href="https://github.com/perl11/cperl/issues/270">[cperl #270]</a>.</p>
<dl>
<dt id="linux">linux</dt>
<dd>
<p>Fixed hints for pgcc.</p>
<p>Use for <code>getcwd(NULL)</code> or <code>get_current_dir_name()</code>, which can return paths longer than 4096.</p>
</dd>
<dt id="darwin">darwin</dt>
<dd>
<p>Fixed hints for pgcc</p>
</dd>
<dt id="MSWin32">MSWin32</dt>
<dd>
<p>More mingw build improvements, but the smoker still not pass the tests, and my local vm seems to be broken.</p>
<p>Fixed invalid check_type_and_open macro on mingw miniperl.</p>
<p>Cygwin and the MSVC versions 10,12,14 smoke now ok with 32-bit and 64-bit.</p>
<p>Fixed upstream mkstemp API changes.</p>
<p>getcwd is deprecated on Windows. use _getcwd() instead.</p>
<p>PathTools: Support overlong paths for getdcwd(), using the wide API for overlong paths.</p>
</dd>
<dt id="cygwin">cygwin</dt>
<dd>
<p>Fixed Storable stacksize probing. Fixed a lot of admin-specific file-permission tests</p>
</dd>
</dl>
<h1 id="Internal-Changes">Internal Changes</h1>
<ul>
<li><p>Export <code>re_op_compile</code> needed for re engines.</p>
</li>
<li><p>Added study API functions for possible internal costly optimizations of hv, av, cv, and rx, such as hash shrinking, regex and cv jit compilation, and av type promotion. For now implemented is <code>hv_study()</code>, the rest are stubs.</p>
</li>
</ul>
<h1 id="Selected-Bug-Fixes">Selected Bug Fixes</h1>
<ul>
<li><p>The three supported unicode BOM's UTF-8, UTF-16LE and UTF-16BE set the utf8 and unicode compile-time hints to match the documentation and expectation.</p>
</li>
<li><p>Fixed several minor coverity issues.</p>
</li>
</ul>
<h1 id="Acknowledgements">Acknowledgements</h1>
<p>cperl 5.27.0c represents approximately 3 weeks of development since cperl 5.26.0c and contains approximately 21,000 lines of changes across 180 files from 4 authors.</p>
<p>Excluding auto-generated files, documentation and release tools, there were approximately 2,300 lines of changes to 81 .pm, .t, .c and .h files.</p>
<p>The following people are known to have contributed the improvements that became cperl 5.27.0c:</p>
<p>Reini Urban, François Perrad, Yves Orton, vendethiel.</p>
<p>The list above is almost certainly incomplete as it is automatically generated from version control history. In particular, it does not include the names of the (very much appreciated) contributors who reported issues to the Perl bug tracker.</p>
<p>Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish.</p>
<p>For a more complete list of all of Perl's historical contributors, please see the <i>AUTHORS</i> file in the Perl source distribution.</p>
<p>Generated with:</p>
<pre><code> cperl Porting/acknowledgements.pl cperl-5.26.0..HEAD</code></pre>
<h1 id="Reporting-Bugs">Reporting Bugs</h1>
<p>If you find what you think is a bug, you might check the articles recently posted to the comp.lang.perl.misc newsgroup and the perl bug database at <a href="https://rt.perl.org/">https://rt.perl.org/</a> . There may also be information at <a href="http://www.perl.org/">http://www.perl.org/</a> , the Perl Home Page.</p>
<p>If you believe you have an unreported bug, please run the <a>perlbug</a> program included with your release. Be sure to trim your bug down to a tiny but sufficient test case. Your bug report, along with the output of <code>perl -V</code>, will be sent off to [email protected] to be analysed by the Perl porting team.</p>
<p>If you think it's a cperl specific bug or trust the cperl developers more please file an issue at <a href="https://github.com/perl11/cperl/issues">https://github.com/perl11/cperl/issues</a>.</p>
<p>If the bug you are reporting has security implications which make it inappropriate to send to a publicly archived mailing list, then see <a href="/cperl/perlsec.html#SECURITY-VULNERABILITY-CONTACT-INFORMATION">"SECURITY VULNERABILITY CONTACT INFORMATION" in perlsec</a> For details of how to report the issue.</p>
<h1 id="SEE-ALSO">SEE ALSO</h1>
<p>The <i>Changes</i> file for an explanation of how to view exhaustive details on what changed.</p>
<p>The <i>INSTALL</i> file for how to build Perl.</p>
<p>The <i>README</i> file for general stuff.</p>
<p>The <i>Artistic</i> and <i>Copying</i> files for copyright information.</p>
<h1 id="POD-ERRORS">POD ERRORS</h1>
<p>Hey! <b>The above document had some coding errors, which are explained below:</b></p>
<dl>
<dt id="Around-line-248">Around line 248:</dt>
<dd>
<p>alternative text 'do "%s" failed, '.' is no longer in @INC; did you mean do "./%s"? ' contains non-escaped | or /</p>
</dd>
</dl>
</body>
</html>