Skip to content

Commit 1be4fb9

Browse files
author
Reini Urban
committed
add cperl, move rperl up, remove parrot
and change to p2 to past tense
1 parent ff1f6cd commit 1be4fb9

11 files changed

+4699
-0
lines changed

cperl/Changes.html

+231
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
<h1>cperl-5.22.0 / 2015-06-23</h1>
2+
3+
<p>These are the changes above perl-5.22.1
4+
See pod/perlcperl.pod for a summary, but note that perlcperl includes also
5+
still in work features.</p>
6+
7+
<ul>
8+
<li>installperl uses PERLNAME=cperl with -Dusecperl</li>
9+
<li>installperl honors Configure -Dperlpath</li>
10+
<li>fixed some crashing cornercases found by the AFL fuzzer or similar:
11+
#125840: $x=*0; *x=$x
12+
protect from XSRETURN(-1)
13+
#125341: BEGIN &lt;>
14+
fixed various off-by-one \0 errors with the new 5.16 GV code.</li>
15+
<li>merge SVf_PROTECT with SVf_READONLY, no double readonly system</li>
16+
<li>fix old OA_TARGLEX bug with TARGET_MY optim</li>
17+
<li>add shaped arrays and optimize certain accesses to omit run-time
18+
bounds checks. loops with static ranges, constant array indices.</li>
19+
<li>typed all internal ops and use them.
20+
provide upgrade and downgrade variant tables.</li>
21+
<li>re-instate pre-2002 exceptions for i_modulo and i_divide with constants
22+
and typed integers, as with use integer.
23+
[CHANGE] constant integer modulo now behaves as under use integer
24+
and deviates with one negative argument from post-2002 code.</li>
25+
<li>integer constants behave now as under use integer. provide upgrade
26+
exceptions with the u_ suffix for u_add and u_multiply.</li>
27+
<li>opcodes: re-arrange, add pure, boxret, typed and native variants.
28+
renamed some opcodes for harmonization and provide backcompat macros</li>
29+
<li>fix OP_SASSIGN to be a proper BINOP and remove the various exceptions</li>
30+
<li>coretypes as builtins, with type check and promotion.
31+
native types implemented, but not yet promoted</li>
32+
<li>convert static method calls to subs, as described in
33+
http://blogs.perl.org/users/rurban/2011/06/how-perl-calls-subs-and-methods.html
34+
4% faster</li>
35+
<li>DEBUG_k: -Dk for compiler checks and optimizations, also -Dkv</li>
36+
<li>rewrote Config as XS, as perfect hash</li>
37+
<li>change EUMM to depend on lib/Config_heavy.pl, not lib/Config/pm
38+
because of Config bootstrapping quirks with miniperl and perl variants</li>
39+
<li>utils: prefix perldoc, perlbug and perlivp with a 'c'.
40+
rewrote cperlbug to post to github.com/perl11/cperl/issues</li>
41+
<li>hash_func: add FNV1A, FNV1A_YOSHIMITSUTRIAD/FNV1A_YT, CRC32, METRO64CRC, METRO64,
42+
SPOOKY32 hashes</li>
43+
<li>hash_func: select FNV1A as new default. See https://github.com/rurban/perl-hash-stats</li>
44+
<li>allow Configure -Dhash_func=name</li>
45+
<li>DEBUG_H: prefix with HASH, and extend it</li>
46+
<li>fixup (void)INCMARK</li>
47+
<li>B::Deparse test fixup</li>
48+
<li>enterxssub: fix ext/Devel-Peek/t/Peek.t</li>
49+
<li>enterxssub: fix B::Deparse and tests</li>
50+
<li>enterxssub: fix B tests</li>
51+
<li>Safe 2.39_01c, Opcode 1.33c: disable enterxssub</li>
52+
<li>Safe 2.39_01c: Document XS inabilities</li>
53+
<li>add seperate enterxssub op, ~12% faster</li>
54+
<li>Safe: skip loading empty Carp::Heavy</li>
55+
<li>B-Deparse: skip DynaLoader::dl_load_flags on cperl</li>
56+
<li>Test-Harness: fix for cperl</li>
57+
<li>fastarith: on gcc and clang use fast overflow intrinsics</li>
58+
<li>perlcperl.pod: add build + install doc</li>
59+
<li>ExtUtils::Mkbootstrap: allow missing DynaLoader.pm</li>
60+
<li>apidoc: fix placing set_version in perlapi</li>
61+
<li>cperl: do not normalize PL_patchlevel</li>
62+
<li>cperl version: permit ending c in every cperl VERSION</li>
63+
<li>more Porting updates: skip DynaLoader for cmpVERSION</li>
64+
<li>regen Porting/checkcfgvar.pl</li>
65+
<li>fix t/porting/regen.t</li>
66+
<li>t/lib/warnings/op: fix for new DynaLoader</li>
67+
<li>DynaLoader: fix porting/diag.t</li>
68+
<li>DynaLoader: comment about t/comp/require.t test 53</li>
69+
<li>t/porting/args_assert.t: fix for set_version</li>
70+
<li>t/porting/podcheck.t: update for XSLoader/DynaLoader copies</li>
71+
<li>regen: Possible unintended interpolation of @Changed</li>
72+
<li>Makefile: improve DL_SRC dependency, touch ar lib</li>
73+
<li>XSLoader: fix XSLoader.t test 24</li>
74+
<li>Documentation: add cperl specific changes to *Loader.pod</li>
75+
<li>perlcall.pod: format flags with C&lt;>, add more about SP vs MARK</li>
76+
<li>XSLoader: converted to compiled builtin</li>
77+
<li>DynaLoader.pod: formatting</li>
78+
<li>metaconf: add dl extensions and path_sep to config.h</li>
79+
<li>config.h: add LDLIBPTHNAME</li>
80+
<li>metaconf: add HAS_LIBNAME_UNIQUE to config.h</li>
81+
<li>metaconf: add d_vms_case_sensitive_symbols and HAS_VMS_CASE_SENSITIVE_SYMBOLS</li>
82+
<li>xsutils: boot_core_xsutils: boot_DynaLoader</li>
83+
<li>ExtUtils-Embed-1.33 usecperl variant to boot DynaLoader immediately</li>
84+
<li>DynaLoader: converted to compiled builtin</li>
85+
<li>attributes: regen lib/.gitignore via regen/lib_cleanup.pl</li>
86+
<li>attributes: fix t/porting/diag.t, add :-shared error to perldiag.pod</li>
87+
<li>attributes: fix tests for cperl</li>
88+
<li>attributes.pm: disable pp parts</li>
89+
<li>cperl: allow :const and coretype function return attributes</li>
90+
<li>lib/attributes.pm: do not bootstrap with cperl</li>
91+
<li>attributes 0.26_01c converted to XS</li>
92+
<li>Makefile.SH: replace CC with LD to link exes</li>
93+
<li>add use cperl pragma</li>
94+
<li>coretypes: fix t/op/stash.t omit deleting READONLY stash keys</li>
95+
<li>coretypes: declare Undef, Int, UInt, Num, Str</li>
96+
<li>ExtUtils-MakeMaker: fix repreq.t for builtin strict</li>
97+
<li>strict: fix test for cperl</li>
98+
<li>strict 1.10c converted to compiled builtin, re-add xsutils.c</li>
99+
<li>usecperl Deparse: lexical_subs is enabled</li>
100+
<li>mv README.cperl -> pod/perlcperl.pod</li>
101+
<li>cperl.pm: fix t/porting/maintainers.t</li>
102+
<li>cperl: display cperl specifics with -V</li>
103+
<li>Fix cperl pod_rules (readmes in the MANIFESTs)</li>
104+
<li>Update perldata/const from const qualifier to :const attribute</li>
105+
<li>perldata.pod: add const and coretypes</li>
106+
<li>pod: fix porting tests</li>
107+
<li>README.cperl: tailcall optimization (long term plan)</li>
108+
<li>README.cperl: We track stable upstream releases only</li>
109+
<li>README.cperl: php7 + => pod</li>
110+
<li>-DH debug hash fill, size and collisions</li>
111+
<li>Configure: set cperl as package, and use its installstyle</li>
112+
<li>Configure: support -Dusecperl, $Config{usecperl}, ifdef USE_CPERL</li>
113+
<li>add cperl documentation: pod/perltypes.pod README.cperl</li>
114+
<li>add CHECK_*_ATTRIBUTES for compile-time</li>
115+
<li>make -s: more Makefile silencing</li>
116+
<li>make -s: ExtUtils::Mkbootstrap 7.04_01c: silence Running Mkbootstrap</li>
117+
<li>fix RT#81332 744aaba059 bloats the B compilers</li>
118+
<li>test -D switches: add PERLIO_DEBUG changes</li>
119+
<li>test -D switches: new t/run/switchDBG.t</li>
120+
<li>DEBUG_I: add documentation for -DI and PERLIO_DEBUG</li>
121+
<li>PerlIO_debugio: reuse fd from PERLIO_DEBUG for PL_perlio_debug_fd</li>
122+
<li>DEBUG_I: add a seperate -DI instead of PERLIO_DEBUG</li>
123+
<li>schmorp stableperl patches for 5.22.0</li>
124+
<li>restricted hash error message with stashes</li>
125+
<li>[perl #125369] - Set correct flags for smartmatch in certain cases</li>
126+
<li>installperl: no strip with DEBUGGING</li>
127+
<li>parse unicode superscripts simplified (max 2 digits)</li>
128+
<li>parse unicode constant superscripts (one digit)</li>
129+
<li>parse sdot for multiply also</li>
130+
<li>parse some new unicode keywords</li>
131+
<li>hints/darwin.sh: document -no-cpp-precomp cargo cult</li>
132+
<li>Devel::Peek fix tests for changed core dump.c</li>
133+
<li>dump: adjust core tests for changed dump</li>
134+
<li>dump: add FLAGS values and PADLIST sizes</li>
135+
<li>MD5: static is not at beginning of declaration</li>
136+
<li>t/porting/globvar.t: skip PL_memory_debug_header also</li>
137+
<li>add warnings 7fatal testcase for #123398</li>
138+
<li>don't fatalize warnings during unwinding (#123398)</li>
139+
<li>lib/vars_carp.t: fix wrong test</li>
140+
<li>Ignore ENOTTY on open via the perlio buffer layer</li>
141+
<li>regen_lib: add some love for vim</li>
142+
<li>MARK -Ds debugging</li>
143+
<li>XSLoader 0.21: use dl_find_symbol 3rd optional argument</li>
144+
<li>DynaLoader: extend t/DynaLoader.t to be run from basedir also</li>
145+
<li>DynaLoader/dl_*.xs: Define all PERL_IN_DL_*_XS markers</li>
146+
<li>DynaLoader 1.33 dl_find_symbol add 3rd optional argument</li>
147+
<li>Configure: support non-perl5 package, and use its installstyle</li>
148+
<li>xs_boot_epilog (Xp): change ax from U32 to I32</li>
149+
<li>force_next: fix -Wsign-comp warning</li>
150+
<li>perl_hash_crc32: use HW hasher as default with SSE4.2</li>
151+
<li>Makefile: add TAGS target (etags, not ctags)</li>
152+
<li>EUMM: more make -s improvements</li>
153+
<li>make -s: silent means silent</li>
154+
<li>lib/h2ph.t: keep tmpfiles on error</li>
155+
</ul>
156+
157+
<p>Perl 5</p>
158+
159+
<p>For an overview of what's changed in this release, see pod/perldelta.pod.</p>
160+
161+
<p>For the details of changes in previous releases, see the individual
162+
perlNNNdelta.pod files. For example, pod/perl588delta.pod describes the
163+
changes between versions 5.8.7 and 5.8.8.</p>
164+
165+
<p>For a list of contributors to perl, see AUTHORS.</p>
166+
167+
<p>If you need a detailed commit history (i.e. descriptions of each
168+
individual commit), you can view the git version control history online
169+
at http://perl5.git.perl.org/perl.git (follow the 'shortlog' link beside
170+
the relevant tag). Or, you can download a copy of the git repository and
171+
then run a command like</p>
172+
173+
<pre><code>git log --name-status v5.12.0..v5.14.0
174+
</code></pre>
175+
176+
<p>to view all the changes between 5.12.0 and 5.14.0.</p>
177+
178+
<p>See pod/perlgit.pod for more details on using git and accessing the
179+
commit history.</p>
180+
181+
<p>In perl releases prior to 2009, the source tarball included a collection
182+
of Changes files that listed the individual commits that had gone into
183+
each release. Since these files had become very large, and since the
184+
same information is now freely available online, it was decided to remove
185+
them from subsequent releases.</p>
186+
187+
<p>If you need access to these removed files, then they can be be found most
188+
recently in the 5.8.9 and 5.10.0 tarballs, at</p>
189+
190+
<pre><code>http://www.cpan.org/src/perl-5.8.9.tar.gz
191+
http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz
192+
</code></pre>
193+
194+
<p>The contents of the files in question can mostly be regenerated using git
195+
commands. The following table shows the equivalents. Note that the files
196+
prior to Changes5.005 were not simple lists of commits, so can't be
197+
recreated just by running the git command. As it happens, even the latter
198+
ones are not exact equivalents. This is due to a combination of errors in
199+
the original Changes files, and "impedance mismatches" when the previous
200+
version control data was imported into git in December 2008.</p>
201+
202+
<p>For example, the Changes5.005 file includes 206 spurious entries from the
203+
maint5.004 Perforce branch.</p>
204+
205+
<p>Running the following command with the range argument shown in the table
206+
will produce <em>approximately</em> the same list of changes in the specified
207+
file shown from the listed tarball.</p>
208+
209+
<pre><code>git log --name-status &lt;range&gt;
210+
</code></pre>
211+
212+
<p>file tarball <range> argument to 'git log'
213+
------------ ------ --------------------------------
214+
Changes5.000 Either N/A
215+
Changes5.001 Either perl-5.000..perl-5.001
216+
Changes5.002 Either perl-5.001..perl-5.002
217+
Changes5.003 Either perl-5.002..perl-5.003
218+
Changes5.004 Either perl-5.003..perl-5.004
219+
Changes5.005 Either perl-5.004..perl-5.005_03
220+
Changes5.6 Either perl-5.005_03..perl-5.6.0
221+
Changes5.8 Either perl-5.6.0..perl-5.8.0
222+
Changes5.8.1 5.8.9 perl-5.8.0..perl-5.8.1 ^1ede746b
223+
Changes5.8.2 5.8.9 perl-5.8.1..perl-5.8.2
224+
Changes5.8.3 5.8.9 perl-5.8.2..perl-5.8.3
225+
Changes5.8.4 5.8.9 perl-5.8.3..perl-5.8.4
226+
Changes5.8.5 5.8.9 perl-5.8.4..perl-5.8.5 ^3a81978b
227+
Changes5.8.6 5.8.9 perl-5.8.5..perl-5.8.6 ^498d59dd
228+
Changes5.8.7 5.8.9 perl-5.8.6..perl-5.8.7
229+
Changes5.8.8 5.8.9 perl-5.8.7..perl-5.8.8
230+
Changes 5.8.9 perl-5.8.8..perl-5.8.9
231+
Changes 5.10.0 perl-5.8.0..perl-5.10.0</p>

cperl/STATUS.html

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<h1>cperl status</h1>
2+
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
5+
it became clear that optimizing for fun is better than waiting for
6+
someone else to allow it.</p>
7+
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+
11+
<p>Currently it is about 1.5x faster than perl5.22 overall, >2x faster
12+
then 5.14 and uses the least amount of memory measured since 5.6,
13+
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>
19+
20+
<p>Tested and developed on linux and darwin 64bit. 32bit does not work yet!</p>
21+
22+
<p>The first release based on 5.22.1 is scheduled on Sep 14. 2015.</p>
23+
24+
<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>
26+
27+
<p><img src="cperl-m0.png" alt="Memory usage: perl -e0" /></p>
28+
29+
<p><img src="cperl-p0.png" alt="Memory usage: with Config_heavy" /></p>
30+
31+
<p><img src="cperl-p1.png" alt="Memory usage with unicode s///i" /></p>
32+
33+
<p>Issues will be copied over from our internal stash repo to the public
34+
github repo soon.</p>
35+
36+
<h1>Bugfixes for perl5 upstream</h1>
37+
38+
<ul>
39+
<li>merge-upstream</li>
40+
</ul>
41+
42+
<h1>In the stable master branch are the following major features</h1>
43+
44+
<ul>
45+
<li>coretypes</li>
46+
<li>shaped arrays</li>
47+
<li>static loop optims</li>
48+
<li>fast arithmetic overflow</li>
49+
<li>convert static method to subs</li>
50+
<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>
54+
<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>
57+
<li>add some unicode ops</li>
58+
<li>improved build system (make -s, faster, CC vs LD confusion)</li>
59+
</ul>
60+
61+
<h1>Almost ready branches (only minor tests are failing)</h1>
62+
63+
<ul>
64+
<li><p>feature/CM-600-cperl-cowrefcnt
65+
works, but does not do COW yet</p></li>
66+
<li><p>feature/CM-367-cperl-warnings-xs-carp</p></li>
67+
<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>
78+
</ul>
79+
80+
<h1>A bit more work is needed for</h1>
81+
82+
<ul>
83+
<li><p>feature/CM-713-cperl-native-types
84+
some compiler fixes needed</p></li>
85+
<li><p>feature/CM-707-cperl-inline-subs
86+
some compiler fixes needed</p></li>
87+
<li><p>feature/CM-712-cperl-types-proto
88+
constant fold everything</p></li>
89+
<li><p>feature/CM-322-cperl-new-hash-table
90+
lots of attempts, but still too hairy. needs a complete hash rewrite probably.</p></li>
91+
<li><p>feature/CM-910-cperl-multi
92+
class, method and multi keywords</p></li>
93+
</ul>
94+
95+
<h1>Soon</h1>
96+
97+
<ul>
98+
<li>user facing types and classes, multiple dispatch</li>
99+
<li>builtin macros</li>
100+
<li>builtin ffi</li>
101+
</ul>
102+
103+
<p>2015-09-03 rurban</p>

cperl/cperl-m0.png

75.8 KB
Loading

cperl/cperl-p0.png

97.9 KB
Loading

cperl/cperl-p1.png

76.6 KB
Loading

0 commit comments

Comments
 (0)