HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
perl11
cperl
Perl2016–2020
perl11 / cperl

cperl

A perl5 with classes, types, compilable, company friendly, security

2Distinct people
13Mentions
0Explicit recommenders
144GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A perl5 with classes, types, compilable, company friendly, security

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year13 dated mentions

Observed mentions: 2016-05-09 16:47:02 UTC to 2020-12-16 06:03:55 UTC.

012342016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2020

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC413
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC404
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC202

What Hacker News says

13 sources
To be on topic: Perl7 is basically the idea to modernize saner settings by default. And breaking backcompat where it hurts. But it's far off a modern perl, like cperl is. They failed to fix the worst historical design mistakes. The hashes, the OO, types, @_, attrs before signatures (which was a major breaking change, but they excused themselves by claiming it was experimental), and many more. https://github.com/perl11/cperl/issues/414 Instead they are breaking indirect method calls. Thanksfully this will be not POSIX, so nobody will use it.
In Perl 7 is going to be Perl 5.32, mostly
I'm doing that successfully for years. But I added more: https://github.com/perl11/cperl/blob/master/pod/perlcperl.po... The .git/cache is a submodule, so others can easily rebase also. And a lot of helper scripts to rebase and pull --rebase all work branches automatically. All current branches are constantly rebased to master, others default to pull --rebase (aliased to lb), with the shared. git/cache there are no conflicts for years. I'm also doing this for several forks automatically, like adding patches and CI smokes to popular repos like clisp, libffi, openssl, pcre2, coreutils and many more. These are rebased hourly, conflicts appear maybe once a year.
In Avoid Most Rebase Conflicts
Oh my, it misses the point completely. The problem is the automatic call of methods of arbitrary classes, controlled by the external YAML, such as DESTROY. unblessing after loading does not help at all. You need to disallow blessing during load, or provide a whitelist, such as python does. cperl's YAML library does contain the security fixes for some years already: https://github.com/perl11/cperl/blob/master/cpan/YAML-LibYAM..., the cpan version maintained by this person is still vulnerable, besides being incompatible to itself, and unusable for cpan. https://github.com/rurban/yaml-libyaml-pm/tree/safe contains the whitelist variant, as in python.
In Safely load untrusted YAML in Perl
> In Evan’s keynote, he proposed a really interesting and ambitious solution to the problem he called “lifting the core.” It involved shipping Ruby with LLVM intermediate representation of the CRuby functions to allow the LLVM JIT technology to look inside the CRuby functions and dramatically increase the optimization horizon. As far as I know, this hasn’t been attempted yet — although, if it has, I really want to see it! Actually unladen_swallow and cperl are doing this. Compile the whole runtime to a lib<rt>.bc (trivial make rule), load this bitcode file (a single call), and add the expensive optimizations, esp. the inliner and IPO in llvm. Just the type-checks need to be done in the jit. This inliner does a lot of good magic esp. for the small RT functions. >10x faster. The compiler is expensive though (i.e. very slow), and LLVM change
Read the rest
d it's jit API 3 times already. <=3.4 jit, then mcjit and >= 3.6 ocrjit, all 3 of them still having major quirks. With mcjit you cannot selectively add jit code to a module. So every single body needs to be a new module. So module != package/class/namespace. So the jitcache is a bit complicated. With the latest ocrjit you got problems in finding the symbols in the bc. The C API doesn't support the name resolver at all, and it's a major quirks with C++. LLVM's C API is really behind, but at least they don't change it that often as the C++ API. unladen_swallow has a huge JIT overhead library, which nobody really needs. For the cperl jit I just used 4 days so far and doesn't even link yet. I used the C API, not the better C++ API. No C++ for cperl. But it's very simple. https://github.com/perl11/cperl/blob/feature/gh220-llvmjit/j...
In Ruby+OMR JIT Compiler: What’s Next?
> Rust code that type-puns an unaligned pointer into an integer would crash on MIPS or SPARC just like the C code would. Actually you can enforce that on Intel too. I do that for some hash functions in debugging mode, to avoid valgrind slowdown. e.g. https://github.com/perl11/cperl/blob/master/cpan/Digest-MD5/... #if defined(U32_ALIGNMENT_REQUIRED) && defined(__GNUC__) && (defined(__x86_64__) || defined(__i386)) /* Generate SIGBUS on unaligned access even on x86: Set AC in EFLAGS. See http://orchistro.tistory.com/206 Also see https://sourceforge.net/p/predef/wiki/Architectures/ for possible other compilers. Here only GNU C: gcc, clang, icc. MSVC would be nice also. */ #ifdef __x86_64__ __asm__("pushf\n" "orl $0x40000, (%rsp)\n" "popf");
Read the rest
#else __asm__("pushf\n" "orl $0x40000, (%esp)\n" "popf"); #endif #endif This way you won't get the SPARC/MIPS surprises debian maintainers are struggling with. If it doesn't align, copy it temp. It's still faster.
In SeaHash: A fast, portable hash function in Rust
Interestingly Emacs is not the only project affected by this glibc/dumper dispute. I added the stone-old patches for perl to my cperl fork, to be able to dump/compile perl scripts to native binaries the fast way. Improved dumpers are here: https://github.com/perl11/cperl/commits/feature/gh176-unexec Mostly unified error handling and a few darwin segment instabilities. It is very fragile to use with a static library, but ok as dynamic library. Emacs uses the dumper in the main exe, not in a library. Solaris is the easiest to use. So I know a little bit of the troubles they are talking about here. Dan's portable dumper would be nice to have, XEmacs had this decades ago, but it never made it over to Stallman emacs. Wonder why :) So looking at the new pdump, it really is horrible. I don't think I want to do that. I'll rather add a proper stat
Read the rest
ic malloc to cperl, such ptmalloc3, which is better than glibc malloc, i.e. ptmalloc2, anyway. They never switched to the better version, because it had more memory overhead. And I really can make use of the arena support there. Emacs should try the same. Much easier and much faster. Good bye glibc.
In The Emacs dumper dispute
I worked with this recently. This feature is not a nightmare, just because the author doesn't understand what a linker does, and the necessary separation of old and new dynamic memory. It's rather a stable and very useful feature, which just recently got under attack, because glibc doesn't want to maintain malloc_get_state() / malloc_set_state() anymore. XEmacs has a portable dumper pdump, which is a hack compared to emacs unexec. See https://lwn.net/Articles/673724/ and esp. https://lwn.net/Articles/673815/ I recently re-added unexec support (i.e. native compilation) to perl5 in my cperl fork, but I haven't got it stable yet. Super trivial on solaris, but not so easy on elf, darwin and windows with its various compilers and the different way to treat their segments. But it's still the easiest way to do it, compared to pdump or a seperate
Read the rest
compiler or criu, which is still not in the kernel and not in debian. They are saying it's unstable for 2 years, where it's stable for 1 year already. self-dump via crui is besides unexec the most stable variant, but it needs either a service or root perms, first of all a package, and then it's not so attractive because it produces many files instead of just one binary. If glibc removes malloc_get_state() even if darwin still has a similar API, I'll happily build with a static ptmalloc3, which is the better variant of the glibc ptmalloc2 anyway, and they never where able to update this. (much faster, but needs a bit more memory for housekeeping). https://github.com/perl11/cperl/issues/176 https://github.com/perl11/cperl/commits/feature/gh176-unexec https://criu.org/Main_Page
In Unexecute

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.