Skip to content

Commit 4b95d32

Browse files
author
Reini Urban
committedSep 4, 2015
cperl: STATUS updates
1 parent 1be4fb9 commit 4b95d32

File tree

3 files changed

+96
-46
lines changed

3 files changed

+96
-46
lines changed
 

‎cperl/STATUS.html

+86-44
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,32 @@
11
<h1>cperl status</h1>
22

3-
<p>cperl started Feb. 2015 when :const was added, parrot was killed, the
4-
trust in the maintenance capabilities of p5p eroded beyond repair, and
3+
<p>The name <strong>cperl</strong> stands for <strong>a perl with classes, types, compiler
4+
support, or just a company-friendly perl</strong>, but currently it's only a
5+
better 5.22 based variant without classes.</p>
6+
7+
<p>cperl started Feb. 2015 when :const was added, parrot was killed and
58
it became clear that optimizing for fun is better than waiting for
69
someone else to allow it.</p>
710

8-
<p>A 5.22 based variant with classes ("perl with classes"), types,
9-
compiler support ("compilable perl"), or just a company-friendly perl.</p>
10-
1111
<p>Currently it is about 1.5x faster than perl5.22 overall, >2x faster
1212
then 5.14 and uses the least amount of memory measured since 5.6,
1313
i.e. less than 5.10 and 5.6.2, which were the previous leaders. While
14-
perl5.22 uses the most memory yet measured. But not all of the wanted
15-
features are merged. The plan is to support most perl5-compatible
16-
perl6 features, improve performance and memory usage, better compiler
17-
(B::C) support, and provide better security fixes and maintenance than
18-
p5p perl5.</p>
14+
perl5.22 uses the most memory yet measured.</p>
1915

20-
<p>Tested and developed on linux and darwin 64bit. 32bit does not work yet!</p>
16+
<p>But not all of the wanted features are merged. The plan is to support
17+
most perl5-compatible perl6 features (<em>"do not break CPAN"</em>), improve
18+
performance and memory usage, re-establish compiler (<code>B::C</code>) support,
19+
re-establish perl5 core development which essentially stopped 2002,
20+
and better security fixes and maintenance than the upstream p5p
21+
perl5. See <a href="perlcperl.html">README.cperl</a>.</p>
22+
23+
<p>Tested and developed on linux and darwin 64bit. <strong>32bit does not work yet!</strong></p>
2124

2225
<p>The first release based on 5.22.1 is scheduled on Sep 14. 2015.</p>
2326

2427
<p>All tests pass, most of CPAN works, 3 fixes in the distroprefs repo
25-
for Variable::Magic and CPAN::Meta::Requirements and version are needed.</p>
28+
for <code>Variable::Magic</code> and <code>CPAN::Meta::Requirements</code> and <code>version</code> are needed.
29+
This is much less than with a typical major perl5 release.</p>
2630

2731
<p><img src="cperl-m0.png" alt="Memory usage: perl -e0" /></p>
2832

@@ -33,71 +37,109 @@ <h1>cperl status</h1>
3337
<p>Issues will be copied over from our internal stash repo to the public
3438
github repo soon.</p>
3539

36-
<h1>Bugfixes for perl5 upstream</h1>
37-
38-
<ul>
39-
<li>merge-upstream</li>
40-
</ul>
41-
4240
<h1>In the stable master branch are the following major features</h1>
4341

4442
<ul>
45-
<li>coretypes</li>
46-
<li>shaped arrays</li>
43+
<li>coretypes (Int, UInt, Num, Str. lowercase native types accepted and
44+
preferred)</li>
45+
<li>types in signatures as designed and also as attribute</li>
46+
<li>function return types declarations as attribute</li>
47+
<li>many more builtin function attributes</li>
48+
<li>shaped arrays with compile-time checks and optims</li>
4749
<li>static loop optims</li>
4850
<li>fast arithmetic overflow</li>
4951
<li>convert static method to subs</li>
5052
<li>Config as XS</li>
51-
<li>strict, attributes, DynaLoader, XSLoader as builtin packages in C</li>
52-
<li>changed default hash function to FNV1A</li>
53-
<li>optimize XS calls to enterxssub op</li>
53+
<li>strict, attributes, DynaLoader, XSLoader as builtin packages, rewritten in C</li>
54+
<li>changed default hash function to the fastest FNV1A <em>(as in the stableperl fork)</em></li>
55+
<li>seperate XS and PP XS calls dynamically with a new enterxssub op</li>
5456
<li>-DI and -Dk</li>
55-
<li>security fixes, e.g. HEK supporting taint now, hash keys keep the tainted info</li>
56-
<li>fix ops using lexical $_</li>
5757
<li>add some unicode ops</li>
5858
<li>improved build system (make -s, faster, CC vs LD confusion)</li>
59+
<li>hash keys keep the tainted info (see perlsec)</li>
60+
<li>fix ops using lexical $_</li>
5961
</ul>
6062

61-
<h1>Almost ready branches (only minor tests are failing)</h1>
63+
<p>Most of them only would have a chance to be merged upstream if a
64+
p5p committer would have written it.</p>
65+
66+
<p>But some features some revert some decisions p5p made already. See perlcperl.
67+
When in doubt I went with the decisions and policies perl5 made
68+
before 2001. It is very unlikely that p5p will revert their own design
69+
mistakes. It never happened so far.</p>
70+
71+
<h1>Known bugs</h1>
72+
73+
<p>See the github issues: <a href="http://github.com/perl11/cperl/issues">github.com/perl11/cperl/issues</a></p>
74+
75+
<p>With 32bit <code>t/opbasic/arith.t</code> is broken. This is the only known blocker.</p>
76+
77+
<h1>Branch overview</h1>
78+
79+
<h2>Bugfixes for perl5 upstream</h2>
6280

6381
<ul>
64-
<li><p>feature/CM-600-cperl-cowrefcnt
65-
works, but does not do COW yet</p></li>
82+
<li>merge-upstream</li>
83+
</ul>
84+
85+
<p>This can be easily taken up upstream, was already perlbug'ed and published,
86+
and do not violate any of the p5p commit policies and previous decisions.
87+
From those 47 patches 2 were taken so far and 2 were butchered, i.e. rewritten
88+
in a worse way.</p>
89+
90+
<h2>Almost ready branches, only minor tests are failing</h2>
91+
92+
<p>Those branches could theoretically be merged upstream, but the chances
93+
are limited. So they are based on master.</p>
94+
95+
<ul>
96+
<li><p>feature/CM-600-cperl-cowrefcnt</p>
97+
98+
<p>works, but does not do COW yet, i.e. slower for uncompiled perls, faster for compiled</p></li>
6699
<li><p>feature/CM-367-cperl-warnings-xs-carp</p></li>
67100
<li>feature/CM-367-cperl-carp-builtin</li>
68-
<li><p>feature/CM-370-cperl-warnings-xs
69-
much faster and much less memory, but 3 minor scope test fails.</p></li>
70-
<li><p>feature/CM-317-cperl-signatures3
71-
2x faster</p></li>
72-
<li><p>feature/CM-317-cperl-signatures3-CM-690-nl
73-
newlines in sigs broken</p></li>
74-
<li><p>feature/CM-916-cperl-no-miniperl
75-
fix the Makefile deps</p></li>
76-
<li><p>feature/CM-626-cperl-use-dots
77-
works, but unsure</p></li>
101+
<li><p>feature/CM-370-cperl-warnings-xs</p>
102+
103+
<p>much faster and much less memory, but 3 minor scope test fails.</p></li>
104+
<li><p>feature/CM-317-cperl-signatures3</p>
105+
106+
<p>2x faster</p></li>
107+
<li><p>feature/CM-317-cperl-signatures3-CM-690-nl</p>
108+
109+
<p>newlines in sigs broken</p></li>
110+
<li><p>feature/CM-916-cperl-no-miniperl</p>
111+
112+
<p>fix the Makefile deps</p></li>
113+
<li><p>feature/CM-626-cperl-use-dots</p>
114+
115+
<p>works, but unsure if good enough</p></li>
78116
</ul>
79117

80-
<h1>A bit more work is needed for</h1>
118+
<h2>A bit more work is needed for</h2>
119+
120+
<p>These are major new features, and have no chance to be merged upstream.
121+
They also revert some wrong decisions p5p already made.</p>
81122

82123
<ul>
83124
<li><p>feature/CM-713-cperl-native-types
84-
some compiler fixes needed</p></li>
125+
int, uint, num, str. some compiler fixes needed</p></li>
85126
<li><p>feature/CM-707-cperl-inline-subs
86127
some compiler fixes needed</p></li>
87128
<li><p>feature/CM-712-cperl-types-proto
88-
constant fold everything</p></li>
129+
constant fold everything, not only with empty () protos</p></li>
89130
<li><p>feature/CM-322-cperl-new-hash-table
90131
lots of attempts, but still too hairy. needs a complete hash rewrite probably.</p></li>
91132
<li><p>feature/CM-910-cperl-multi
92133
class, method and multi keywords</p></li>
93134
</ul>
94135

95-
<h1>Soon</h1>
136+
<h2>Soon</h2>
96137

97138
<ul>
98-
<li>user facing types and classes, multiple dispatch</li>
139+
<li><p>conversion from private stash to public github repo and issues</p></li>
140+
<li><p>user facing types and classes, multiple dispatch</p></li>
99141
<li>builtin macros</li>
100142
<li>builtin ffi</li>
101143
</ul>
102144

103-
<p>2015-09-03 rurban</p>
145+
<p>2015-09-04 rurban</p>

‎cperl/index.html

+5-1
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,11 @@ <h2 id="clp">clp</h2>
819819

820820
<h1 id="Development-policies">Development policies</h1>
821821

822-
<p>We track stable upstream releases for our releases only. The current stable release is based in 5.22.1. The previous stable release was 5.14.4, as 5.16 introduced critical instabilities which were not fixed mostly until 5.20 and 5.22, and 5.20 alone was not worth to update cperl to. The previous stable release was 5.8.9 and the one before was 5.6.2. So we do not know which will be the next stable cperl release. It could be 5.24, but usually it takes longer, so something like 5.30 sounds realistic. So far we have detected 2 grave API mistakes in 5.22.0. But we do merge all official p5p releases into our development branch monthly.</p>
822+
<p>We favor community-friendly democratic development policies as e.g. in perl6 over the usual old-style dictatorial model. That means the powerful (those with management and commit roles) are not allowed to abuse their powers, while the powerless users are allowed and need to have the abilities to criticise them and their code.</p>
823+
824+
<p>In the old trust-based dictatorial model as e.g. in linux or perl5 the powerful call the not powerful abusive names (&quot;asshole&quot; or &quot;jerk&quot; is very common, or &quot;trolls&quot;), and are allowed to avoid discussions of features or problems by directly committing to master, rejecting tickets or selectively abuse their powers. This is forbidden in cperl.</p>
825+
826+
<p>We track stable upstream releases for our releases only. The current stable release is based in 5.23.0, which will lead to 5.22.1. The previous stable release was 5.14.4, as 5.16 introduced critical instabilities which were not fixed mostly until 5.20 and 5.22, and 5.20 alone was not worth to update cperl to. The previous stable release was 5.8.9 and the one before was 5.6.2. So we do not know which will be the next stable cperl release. It could be 5.24, but usually it takes longer, so something like 5.30 sounds realistic. So far we have detected 2 grave API mistakes in 5.22.0. But we do merge all official p5p releases into our development branch monthly.</p>
823827

824828
<h1 id="With-classes-types-compilable-company-friendly">With classes, types, compilable, company friendly</h1>
825829

‎cperl/perlcperl.html

+5-1
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,11 @@ <h2 id="clp">clp</h2>
819819

820820
<h1 id="Development-policies">Development policies</h1>
821821

822-
<p>We track stable upstream releases for our releases only. The current stable release is based in 5.22.1. The previous stable release was 5.14.4, as 5.16 introduced critical instabilities which were not fixed mostly until 5.20 and 5.22, and 5.20 alone was not worth to update cperl to. The previous stable release was 5.8.9 and the one before was 5.6.2. So we do not know which will be the next stable cperl release. It could be 5.24, but usually it takes longer, so something like 5.30 sounds realistic. So far we have detected 2 grave API mistakes in 5.22.0. But we do merge all official p5p releases into our development branch monthly.</p>
822+
<p>We favor community-friendly democratic development policies as e.g. in perl6 over the usual old-style dictatorial model. That means the powerful (those with management and commit roles) are not allowed to abuse their powers, while the powerless users are allowed and need to have the abilities to criticise them and their code.</p>
823+
824+
<p>In the old trust-based dictatorial model as e.g. in linux or perl5 the powerful call the not powerful abusive names (&quot;asshole&quot; or &quot;jerk&quot; is very common, or &quot;trolls&quot;), and are allowed to avoid discussions of features or problems by directly committing to master, rejecting tickets or selectively abuse their powers. This is forbidden in cperl.</p>
825+
826+
<p>We track stable upstream releases for our releases only. The current stable release is based in 5.23.0, which will lead to 5.22.1. The previous stable release was 5.14.4, as 5.16 introduced critical instabilities which were not fixed mostly until 5.20 and 5.22, and 5.20 alone was not worth to update cperl to. The previous stable release was 5.8.9 and the one before was 5.6.2. So we do not know which will be the next stable cperl release. It could be 5.24, but usually it takes longer, so something like 5.30 sounds realistic. So far we have detected 2 grave API mistakes in 5.22.0. But we do merge all official p5p releases into our development branch monthly.</p>
823827

824828
<h1 id="With-classes-types-compilable-company-friendly">With classes, types, compilable, company friendly</h1>
825829

0 commit comments

Comments
 (0)
Please sign in to comment.