Well, not all of it ... yet. But some of it has been rewritten many times in many languages and "all" of it will be rewritten in many more languages. Of course "all" will never be reached, so it will be an ongoing endeavor, but at least you know the goalposts.
You can read it at https://perl.petamem.com/docs/eng/, and the language picker in the upper right hand corner will tell you, more honestly than any sentence in this post can, where the public-facing part of the work currently stands.
Use AI. Use it more and better. If you are not yet equipped to use it
well - that is fine, learning takes time - but please do not inhibit
those in the community who are.
That is the whole argument. The rest of this piece is why I think it
is correct, and why I think the current register of the Perl community
around this topic is costing us something specific and avoidable.
Two weeks ago we posted "PDL in Rust - A Native
Reimplementation of the Perl Data Language". At the time the
score was 45 tests, all green. That was enough to say "it compiles,
it runs, here is the arithmetic surface." It was not enough to say
"you can use this."
We are now on the second number. The current PDL implementation
in pperl covers roughly 3,000
assertions end-to-end: about 1,400 on the Perl-facing connector side
and about 1,600 on the engine side. As of this writing roughly 98%
of the connector assertions match upstream PDL 2.103 exactly, and
most of the remaining couple of dozen we already know why they
fail. By the time you read this the numbers will have drifted a
little in our favour - give or take - but the shape is the point,
not the decimal.
A few days ago, when we announced pperl's native module strategy
on Reddit, someone asked about PDL support.
We replied: "PDL will be supported." — to which u/fuzzmonkey35
responded: "We will live in glorious times when this happens."
Well. It happened.
We (as in: we and our AIs) reimplemented PDL (the Perl Data Language) from scratch in Rust — not a binding, not an FFI
wrapper, but a ground-up reimplementation of the core engine. 15 data
types, N-dimensional arrays, broadcasting, operator overloading,
reductions, linear algebra, transcendental math — all in pure Rust,
integrated as a native module into
our pperl next-gen Perl5 platform.
use PDL;
my $a = pdl([1, 2, 3]);
my $b = pdl([10, 20, 30]);
say $a + $b; # [11 22 33]
say ($a * $b)->sum; # 140
say sin(pdl([0, 3.14159/2, 3.14159]));
45 tests, all green. Same Perl syntax. No XS. No C. No libpdl.