-
Notifications
You must be signed in to change notification settings - Fork 2
/
perl5273cdelta.html
649 lines (415 loc) · 25.6 KB
/
perl5273cdelta.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
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
<?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="#Notice">Notice</a></li>
<li><a href="#Core-Enhancements">Core Enhancements</a>
<ul>
<li><a href="#Computed-shaped-array-sizes">Computed shaped array sizes</a></li>
</ul>
</li>
<li><a href="#Security">Security</a>
<ul>
<li><a href="#Disallow-illegal-glob-with-embedded-NUL">Disallow illegal glob with embedded NUL</a></li>
<li><a href="#Follow-chroot-with-chdir">Follow chroot with chdir("/")</a></li>
<li><a href="#Set-umask-0600-before-calling-mkstemp">Set umask(0600) before calling mkstemp</a></li>
</ul>
</li>
<li><a href="#Incompatible-Changes">Incompatible Changes</a>
<ul>
<li><a href="#Illegal-NUL-syntax-error">Illegal NUL, syntax error</a></li>
</ul>
</li>
<li><a href="#Deprecations">Deprecations</a>
<ul>
<li><a href="#No-autovivification-of-hash-slice-anymore">No autovivification of hash slice anymore</a></li>
<li><a href="#Module-removals">Module removals</a></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="#New-Modules-and-Pragmata">New Modules and Pragmata</a></li>
<li><a href="#Updated-Modules-and-Pragmata">Updated Modules and Pragmata</a></li>
<li><a href="#Removed-Modules-and-Pragmata">Removed Modules and Pragmata</a></li>
</ul>
</li>
<li><a href="#Documentation">Documentation</a>
<ul>
<li><a href="#New-Documentation">New Documentation</a>
<ul>
<li><a href="#XXX1">XXX</a></li>
</ul>
</li>
<li><a href="#Changes-to-Existing-Documentation">Changes to Existing Documentation</a>
<ul>
<li><a href="#XXX2">XXX</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="#XXX3">XXX</a></li>
</ul>
</li>
<li><a href="#Configuration-and-Compilation">Configuration and Compilation</a></li>
<li><a href="#Testing">Testing</a></li>
<li><a href="#Platform-Support">Platform Support</a>
<ul>
<li><a href="#New-Platforms">New Platforms</a></li>
<li><a href="#Discontinued-Platforms">Discontinued 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="#Known-Problems">Known Problems</a></li>
<li><a href="#Errata-From-Previous-Releases">Errata From Previous Releases</a></li>
<li><a href="#Obituary">Obituary</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>
</ul>
<h1 id="NAME">NAME</h1>
<p>perlcdelta - what is new for cperl v5.27.3</p>
<h1 id="DESCRIPTION">DESCRIPTION</h1>
<p>This document describes differences between the cperl 5.27.2 and the cperl 5.27.3 release.</p>
<p>If you are upgrading from an earlier release such as v5.27.1c, first read <a href="/cperl/perl5272cdelta.html">perl5272cdelta</a>, which describes differences between v5.27.1c and v5.27.2c.</p>
<h1 id="Notice">Notice</h1>
<p>XXX Any important notices here</p>
<h1 id="Core-Enhancements">Core Enhancements</h1>
<p>XXX New core language features go here. Summarize user-visible core language enhancements. Particularly prominent performance optimisations could go here, but most should go in the <a href="#Performance-Enhancements">"Performance Enhancements"</a> section.</p>
<p>[ List each enhancement as a =head2 entry ]</p>
<h2 id="Computed-shaped-array-sizes">Computed shaped array sizes</h2>
<p>This is now a valid shaped array delaration, with the lhs array size computed from the number of constant elements in the rhs list expressions. The array must only consist of compile-time scalars.</p>
<pre><code> my @a[] = (0,1,2);</code></pre>
<p><code>my @a[];</code> without assignment is still a syntax error.</p>
<p>See <a href="https://github.com/perl11/cperl/issues/210">[cperl #210]</a></p>
<h1 id="Security">Security</h1>
<h2 id="Disallow-illegal-glob-with-embedded-NUL">Disallow illegal glob with embedded NUL</h2>
<p>E.g. <code><$fh\000></code> throws now the safe syscalls warning, and errors with <code>Glob not terminated</code>, and does not pass the illegal glob path to the internal or external glob.</p>
<p>This problem was added with v5.27.5 by replacing strchr with memchr, allowing such illegal strings. See <a href="https://github.com/perl11/cperl/issues/342">[cperl #342]</a></p>
<h2 id="Follow-chroot-with-chdir">Follow chroot with chdir("/")</h2>
<p>Fixed two security issues with the chroot op:</p>
<p>* fail on embedded NUL in the chroot argument. Set <code>errno</code> to EINVAL.</p>
<p>* If a call to chroot is not followed by a call to chdir("/") the chroot jail confinement can be violated. In Perl_pp_chroot: A call to chroot followed by an operation that may escape from the chroot jail. Coverity CID #165302 Insecure chroot.</p>
<h2 id="Set-umask-0600-before-calling-mkstemp">Set umask(0600) before calling mkstemp</h2>
<p>POSIX 2008 demands such an umask, but it is still problematic on Solaris, HP-UX and AIX and older libcs, e.g. glibc <= 2.06. Temporarily set the umask such that the temp. file has 0600 permissions.</p>
<h1 id="Incompatible-Changes">Incompatible Changes</h1>
<h2 id="Illegal-NUL-syntax-error">Illegal NUL, syntax error</h2>
<p>Embedded NUL bytes read from files, not used in filters, are not whitespace anymore, they are syntax errors.</p>
<p>See <a href="https://github.com/perl11/cperl/issues/345">[cperl #345]</a> vs <a href="https://rt.perl.org/Public/Bug/Display.html?id=105920">[perl #105920]</a>.</p>
<p>Parsing NUL bytes is now consistent from files with eval string. <code>\0</code> delimited <code>q</code> quote is still valid though.</p>
<h1 id="Deprecations">Deprecations</h1>
<p>XXX Any deprecated features, syntax, modules etc. should be listed here.</p>
<h2 id="No-autovivification-of-hash-slice-anymore">No autovivification of hash slice anymore</h2>
<p>This is a new syntax warning, which is deprecated, and will disappear with v5.30c. Hash slices and key/value hash slices autovivified in subroutine arguments. This was a bug, but to check all your code for correctness and portability we keep this warning for 2 releases. See <a href="https://github.com/perl11/cperl/issues/347">[cperl #347]</a> and <a href="/cperl/perldiag.html#No-autovivification-of-hash-slice-anymore">"No autovivification of hash slice anymore" in perldiag</a>.</p>
<h2 id="Module-removals">Module removals</h2>
<p>XXX Remove this section if inapplicable.</p>
<p>The following modules will be removed from the core distribution in a future release, and will at that time need to be installed from CPAN. Distributions on CPAN which require these modules will need to list them as prerequisites.</p>
<p>The core versions of these modules will now issue <code>"deprecated"</code>-category warnings to alert you to this fact. To silence these deprecation warnings, install the modules in question from CPAN.</p>
<p>Note that these are (with rare exceptions) fine modules that you are encouraged to continue to use. Their disinclusion from core primarily hinges on their necessity to bootstrapping a fully functional, CPAN-capable Perl installation, not usually on concerns over their design.</p>
<dl>
<dt id="XXX">XXX</dt>
<dd>
<p>XXX Note that deprecated modules should be listed here even if they are listed as an updated module in the <a href="#Modules-and-Pragmata">"Modules and Pragmata"</a> section.</p>
</dd>
</dl>
<p>[ List each other deprecation as a =head2 entry ]</p>
<h1 id="Performance-Enhancements">Performance Enhancements</h1>
<ul>
<li><p>All static method calls are now optimized to function calls at compile-time.</p>
<p>Before:</p>
<pre><code> $ cperl5.27.0d-nt -Dt -e'use strict'
(-e:1) nextstate
(-e:1) const(PV("strict.pm"))
(-e:1) require
(-e:1) nextstate
(-e:1) pushmark
(-e:1) const(PV("strict"))
(-e:1) method_named(->import)
(-e:1) entersub(strict::import)
(-e:1) enterxssub(strict::import)
(-e:1) leavesub</code></pre>
<p>v5.27.1c:</p>
<pre><code> $ cperl5.27.1d-nt -Dt -e'use strict'
(-e:1) nextstate
(-e:1) const(PV("strict.pm"))
(-e:1) require
(-e:1) nextstate
(-e:1) pushmark
(-e:1) const(PV("strict"))
(-e:1) method_named(->import)
(-e:1) enterxssub(strict::import)
(-e:1) leavesub</code></pre>
<p>v5.27.2c:</p>
<pre><code> $ cperl5.27.2d-nt -Dt -e'use strict'
(-e:1) nextstate
(-e:1) const(PV("strict.pm"))
(-e:1) require
(-e:1) nextstate
(-e:1) pushmark
(-e:1) const(PV("strict"))
(-e:1) gv(strict::import)
(-e:1) enterxssub(strict::import)
(-e:1) leavesub</code></pre>
<p>See <a href="http://blogs.perl.org/users/rurban/2011/06/how-perl-calls-subs-and-methods.html">http://blogs.perl.org/users/rurban/2011/06/how-perl-calls-subs-and-methods.html</a></p>
<p>We don't yet optimize typed scalars to a static call. We don't walk the subtypes yet to find the method.</p>
</li>
<li><p>The three loop iterator ops are now a LOGOPs (in perl5 there is only one, named <code>iter</code>), they are combined with the previously subsequent AND op to continue or end the loop. Thus inner loops are now smaller and faster. 15%-50%.</p>
<p>e.g. before:</p>
<pre><code> f <{> enteriter(next->q last->t redo->g) KS/DEF
r <0> iter_ary s
s <|> and(other->g) K/1
g <;> nextstate(main 559 (eval 15):1) v:{
h <$> gvsv(*_) s</code></pre>
<p>Now:</p>
<pre><code> f <{> enteriter(next->q last->s redo->g) KS/DEF
r <|> iter_ary(other->g) sK
g <;> nextstate(main 559 (eval 15):1) v:{
h <$> gvsv(*_) s</code></pre>
<p>cperl-only, <a href="https://github.com/perl11/cperl/issues/138">[cperl #138]</a>. Upstream 5.27 improved also a bit by skipping the AND op at run-time. cperl removed it from the optree at compile-time.</p>
</li>
</ul>
<h1 id="Modules-and-Pragmata">Modules and Pragmata</h1>
<p>XXX All changes to installed files in <i>cpan/</i>, <i>dist/</i>, <i>ext/</i> and <i>lib/</i> go here. If Module::CoreList is updated, generate an initial draft of the following sections using <i>Porting/corelist-perldelta.pl</i>. A paragraph summary for important changes should then be added by hand. In an ideal world, dual-life modules would have a <i>Changes</i> file that could be cribbed.</p>
<p>The list of new and updated modules is modified automatically as part of preparing a Perl release, so the only reason to manually add entries here is if you're summarising the important changes in the module update. (Also, if the manually-added details don't match the automatically-generated ones, the release manager will have to investigate the situation carefully.)</p>
<p>[ Within each section, list entries as an =item entry ]</p>
<h2 id="New-Modules-and-Pragmata">New Modules and Pragmata</h2>
<ul>
<li><p>XXX</p>
</li>
</ul>
<h2 id="Updated-Modules-and-Pragmata">Updated Modules and Pragmata</h2>
<dl>
<dt id="Attribute::Handlers-1.00_01"><a href="/cperl/lib/Attribute/Handlers.html">Attribute::Handlers</a> 1.00_01</dt>
<dd>
<p>fix autovivification bug with hash slice args to a function.</p>
</dd>
<dt id="Compress::Raw::Zlib"><a href="/cperl/lib/Compress/Raw/Zlib.html">Compress::Raw::Zlib</a></dt>
<dd>
<p>fix upstream deflate. See <a href="https://github.com/madler/zlib/pull/327">https://github.com/madler/zlib/pull/327</a></p>
</dd>
<dt id="Cpanel::JSON::XS-3.0240"><a href="/cperl/lib/Cpanel/JSON/XS.html">Cpanel::JSON::XS</a> 3.0240</dt>
<dd>
<p>Simplify <code>allow_singlequote</code> check, coverity cid #165321. Remove logical dead code.</p>
</dd>
<dt id="Devel::PPPort-3.36_04"><a href="/cperl/lib/Devel/PPPort.html">Devel::PPPort</a> 3.36_04</dt>
<dd>
<p>mkppport called PPPort_pm.PL without passing through MAKEFLAGS. Add --quiet support there</p>
</dd>
<dt id="ExtUtils::Miniperl-1.08"><a href="/cperl/lib/ExtUtils/Miniperl.html">ExtUtils::Miniperl</a> 1.08</dt>
<dd>
<p>Support <b>afl-fuzz</b> with <a href="/cperl/perlhacktips.html#afl-fuzz">afl-clang-fast</a></p>
</dd>
<dt id="ExtUtils::ParseXS-3.36_03"><a href="/cperl/lib/ExtUtils/ParseXS.html">ExtUtils::ParseXS</a> 3.36_03</dt>
<dd>
<p>skip <code>PUTBACK;return;</code> on XSRETURN in PPCODE</p>
<p>remove perl5 incompatible <code>__attribute__global__</code> needed for -flto. <code>XS_EXTERNAL</code> has it already.</p>
</dd>
<dt id="I18N::LangTags-0.42_01"><a href="/cperl/lib/I18N/LangTags.html">I18N::LangTags</a> 0.42_01</dt>
<dd>
<p>Linkify docs.</p>
</dd>
<dt id="IO::Socket::IP-0.39_02"><a href="/cperl/lib/IO/Socket/IP.html">IO::Socket::IP</a> 0.39_02</dt>
<dd>
<p>Fix new Autovivified hash slice warning</p>
</dd>
<dt id="JSON::PP-2.97001_04"><a href="/cperl/lib/JSON/PP.html">JSON::PP</a> 2.97001_04</dt>
<dd>
<p>Merged 2.97001 from cpan with ours.</p>
</dd>
<dt id="HTTP::Tiny-0.070_01"><a href="/cperl/lib/HTTP/Tiny.html">HTTP::Tiny</a> 0.070_01</dt>
<dd>
<p>Fix new Autovivified hash slice warning</p>
</dd>
<dt id="List::Util-1.49_10"><a href="/cperl/lib/List/Util.html">List::Util</a> 1.49_10</dt>
<dd>
<p>Fixup the new pairmap spill code.</p>
</dd>
<dt id="Module::CoreList-5.20180101c"><a href="/cperl/lib/Module/CoreList.html">Module::CoreList</a> 5.20180101c</dt>
<dd>
</dd>
<dt id="Module::Load::Conditional-0.68_02"><a href="/cperl/lib/Module/Load/Conditional.html">Module::Load::Conditional</a> 0.68_02</dt>
<dd>
<p>Suppress new Autovivified hash slice warning</p>
</dd>
<dt id="PerlIO::via-0.17_01"><a href="/cperl/lib/PerlIO/via.html">PerlIO::via</a> 0.17_01</dt>
<dd>
<p>Protect from NULL arg.</p>
</dd>
<dt id="Term::ReadKey-2.37_03"><a href="/cperl/lib/Term/ReadKey.html">Term::ReadKey</a> 2.37_03</dt>
<dd>
<p>Protect from fileno returning -1, invalid file arg. Reformatted.</p>
</dd>
<dt id="Unicode::Collate-1.25_01"><a href="/cperl/lib/Unicode/Collate.html">Unicode::Collate</a> 1.25_01</dt>
<dd>
<p>Skip redefinition warnings on cperl since 5.27.2</p>
</dd>
</dl>
<h2 id="Removed-Modules-and-Pragmata">Removed Modules and Pragmata</h2>
<dl>
<dt id="Locale::Codes-3.55"><a>Locale::Codes</a> 3.55</dt>
<dd>
<p>Deprecated with v5.27.2c</p>
</dd>
</dl>
<h1 id="Documentation">Documentation</h1>
<p>XXX Changes to files in <i>pod/</i> go here. Consider grouping entries by file and be sure to link to the appropriate page, e.g. <a href="/cperl/perlfunc.html">perlfunc</a>.</p>
<h2 id="New-Documentation">New Documentation</h2>
<p>XXX Changes which create <b>new</b> files in <i>pod/</i> go here.</p>
<h3 id="XXX1"><a>XXX</a></h3>
<p>XXX Description of the purpose of the new file here</p>
<h2 id="Changes-to-Existing-Documentation">Changes to Existing Documentation</h2>
<p>We have attempted to update the documentation to reflect the changes listed in this document. If you find any we have missed, send email to <a href="mailto:[email protected]">[email protected]</a>.</p>
<p>XXX Changes which significantly change existing files in <i>pod/</i> go here. However, any changes to <i>pod/perldiag.pod</i> should go in the <a href="#Diagnostics">"Diagnostics"</a> section.</p>
<p>Additionally, the following selected changes have been made:</p>
<h3 id="XXX2"><a>XXX</a></h3>
<ul>
<li><p>XXX Description of the change here</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>
<p>XXX New or changed warnings emitted by the core's <code>C</code> code go here. Also include any changes in <a href="/cperl/perldiag.html">perldiag</a> that reconcile it to the <code>C</code> code.</p>
<h2 id="New-Diagnostics">New Diagnostics</h2>
<p>XXX Newly added diagnostic messages go under here, separated into New Errors and New Warnings</p>
<h3 id="New-Errors">New Errors</h3>
<ul>
<li><p>XXX <a href="/cperl/perldiag.html#message">message</a></p>
</li>
</ul>
<h3 id="New-Warnings">New Warnings</h3>
<ul>
<li><p>XXX <a href="/cperl/perldiag.html#message">message</a></p>
</li>
</ul>
<h2 id="Changes-to-Existing-Diagnostics">Changes to Existing Diagnostics</h2>
<p>XXX Changes (i.e. rewording) of diagnostic messages go here</p>
<ul>
<li><p>XXX Describe change here</p>
</li>
</ul>
<h1 id="Utility-Changes">Utility Changes</h1>
<p>XXX Changes to installed programs such as <i>perlbug</i> and <i>xsubpp</i> go here. Most of these are built within the directory <i>utils</i>.</p>
<p>[ List utility changes as a =head2 entry for each utility and =item entries for each change Use <a>XXX</a> with program names to get proper documentation linking. ]</p>
<h2 id="XXX3"><a>XXX</a></h2>
<ul>
<li><p>XXX</p>
</li>
</ul>
<h1 id="Configuration-and-Compilation">Configuration and Compilation</h1>
<p>XXX Changes to <i>Configure</i>, <i>installperl</i>, <i>installman</i>, and analogous tools go here. Any other changes to the Perl build process should be listed here. However, any platform-specific changes should be listed in the <a href="#Platform-Support">"Platform Support"</a> section, instead.</p>
<p>[ List changes as an =item entry ].</p>
<ul>
<li><p>XXX</p>
</li>
</ul>
<h1 id="Testing">Testing</h1>
<p>XXX Any significant changes to the testing of a freshly built perl should be listed here. Changes which create <b>new</b> files in <i>t/</i> go here as do any large changes to the testing harness (e.g. when parallel testing was added). Changes to existing files in <i>t/</i> aren't worth summarizing, although the bugs that they represent may be covered elsewhere.</p>
<p>XXX If there were no significant test changes, say this:</p>
<p>Tests were added and changed to reflect the other additions and changes in this release.</p>
<p>XXX If instead there were significant changes, say this:</p>
<p>Tests were added and changed to reflect the other additions and changes in this release. Furthermore, these significant changes were made:</p>
<p>[ List each test improvement as an =item entry ]</p>
<ul>
<li><p><code>make minitest</code> can now be successfully be run directly after <code>make miniperl</code>. The unicode datafiles are now built before, and tests pass even if no module was built or mktables failed.</p>
</li>
</ul>
<h1 id="Platform-Support">Platform Support</h1>
<p>XXX Any changes to platform support should be listed in the sections below.</p>
<p>[ Within the sections, list each platform as an =item entry with specific changes as paragraphs below it. ]</p>
<h2 id="New-Platforms">New Platforms</h2>
<p>XXX List any platforms that this version of perl compiles on, that previous versions did not. These will either be enabled by new files in the <i>hints/</i> directories, or new subdirectories and <i>README</i> files at the top level of the source tree.</p>
<dl>
<dt id="XXX-some-platform">XXX-some-platform</dt>
<dd>
<p>XXX</p>
</dd>
</dl>
<h2 id="Discontinued-Platforms">Discontinued Platforms</h2>
<p>XXX List any platforms that this version of perl no longer compiles on.</p>
<dl>
<dt id="XXX-some-platform1">XXX-some-platform</dt>
<dd>
<p>XXX</p>
</dd>
</dl>
<h2 id="Platform-Specific-Notes">Platform-Specific Notes</h2>
<p>XXX List any changes for specific platforms. This could include configuration and compilation changes or changes in portability/compatibility. However, changes within modules for platforms should generally be listed in the <a href="#Modules-and-Pragmata">"Modules and Pragmata"</a> section.</p>
<dl>
<dt id="XXX-some-platform2">XXX-some-platform</dt>
<dd>
<p>XXX</p>
</dd>
</dl>
<h1 id="Internal-Changes">Internal Changes</h1>
<ul>
<li><p>With a threaded perl, GV's are relocated as READONLY PADs. Add an abstraction <a href="/cperl/perlintern.html#op_gv_set">"op_gv_set" in perlintern</a> to simplify that.</p>
</li>
<li><p>Removed the obsolete <code>OA_PADOP</code> class. Invalid and unused since 5.6.0. Kept <code>OP_IS_PADOP</code> and made it legal for threaded perls. The <a href="/cperl/lib/B.html">B</a> modules still print PADOP <code>'#'</code> ops as such, which were dynamically converted from SVOP's to PADOP's threaded.</p>
</li>
</ul>
<h1 id="Selected-Bug-Fixes">Selected Bug Fixes</h1>
<ul>
<li><p>Fixed error message for illegal charnames, and avoid passing NUL into the charnames lookup, which is a potential security threat. E.g. on "\N{TILDE\000}" report "Missing right brace on \\N\{\}" as before with 5.27.2 and on "\N{TILDE\001}" report "Unknown charname 'TILDE\1'" and not "Unknown charname 'TILDE'". perl5.27.5 started reporting those errors with "Unknown charname 'TILDE'" hiding all characters behind the embedded NUL or any non-printable character. <a href="https://github.com/perl11/cperl/issues/342">[cperl #342]</a></p>
</li>
<li><p>Fixed endless loop in the parser with a syntax error on an aborted class declaration, such as e.g. with <code>class $</code>. The previous behavior was repeating the warning message <code>Bareword found where operator expected</code> endlessly. <a href="https://github.com/perl11/cperl/issues/346">[cperl #346]</a></p>
</li>
<li><p>Fixed autovivifaction of hash slices and key/value hash slices in sub args. They are now consistent with a list of hash elements. hash slices still autovivify in for loops.</p>
<p>There's also a new syntax warning about this change, <a href="/cperl/perldiag.html#No-autovivification-of-hash-slice-anymore">"No autovivification of hash slice anymore" in perldiag</a> <a href="https://github.com/perl11/cperl/issues/347">[cperl #347]</a>.</p>
</li>
<li><p>Fixed wrong <code>panic: distributed hash flood</code> when dealing with large <code>%^H</code> hints hashes, with >127 entries, such as <code>_charnames.pm</code> in <code>Regexp::Common</code>. Fixed the logic dealing with such a hints hash. <a href="https://github.com/perl11/cperl/issues/350">[cperl #350]</a>.</p>
</li>
</ul>
<h1 id="Known-Problems">Known Problems</h1>
<p>XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any tests that had to be <code>TODO</code>ed for the release would be noted here. Unfixed platform specific bugs also go here.</p>
<p>[ List each fix as an =item entry ]</p>
<ul>
<li><p>XXX</p>
</li>
<li><p>Fixed return type of <code>DynaLoader::dl_find_symbol_anywhere()</code>, the address, not the name. <a href="https://github.com/perl11/cperl/issues/352">[cperl #352]</a>.</p>
</li>
</ul>
<h1 id="Errata-From-Previous-Releases">Errata From Previous Releases</h1>
<ul>
<li><p>XXX Add anything here that we forgot to add, or were mistaken about, in the perldelta of a previous release.</p>
</li>
</ul>
<h1 id="Obituary">Obituary</h1>
<p>XXX If any significant core contributor has died, we've added a short obituary here.</p>
<h1 id="Acknowledgements">Acknowledgements</h1>
<p>XXX Generate this with:</p>
<pre><code> cperl Porting/acknowledgements.pl cperl-5.27.2..HEAD -c</code></pre>
<h1 id="Reporting-Bugs">Reporting Bugs</h1>
<p>If you find what you think is a bug, you might check 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>cperlbug</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>
</body>
</html>