Wed Sep 13 22:24:24 UTC 2023

Grand Challenge: A Drop-in Perl 5 Interpreter, Written in Rust

--

After having some discussions on a certain Perl Monger's chat
located in the heat of Texas (and I mean heat), I have concluded
that it is time that the Perl 5 interpreter should have a strictly
bound workalike, written in Rust. That is, a "perl" interpreter
that will run a useful (and ever growing) subset of Perl that
functions EXACTLY is it would as executed using a perl binary.
This includes one liners and the CLI user experience (UX).

The rewriting of UNIX tooling is something that the Rust community
seems to be embracing, which I think is pretty revealing. A curated
list of the projects appears on Github at the following URL:

  https://github.com/sts10/rust-command-line-utilities

They have a "sed", but now "awk". I strongly recommend they skip the
"awk" replacement and go straight for the jugular, a "perl" clone.
BUT one that actual Perl programmers would use because it would not
offer any surprises (except maybe the lack of some features as it
grows into a mature utility).

It has become a somewhat of a controversial topic in Perl circles,
but will such a slippery slope to Rust from Perl "steal mindshare"?

Idk, but I also don't care because if it did it'd would be very
well deserved. And it would not be from Perl. It the vampire would
suck from the likes of p5p and any potential contributors to it.
And me personally, I would never switch to using Rust (I don't use
anything except bash or Perl usually); but I would use a "perl"
replacement written in Rust - or really anything that would take
the path to Community acceptence that I am suggesting. It would
still let me write Perl and use "perl" as a commandline chainsaw.
And who knows, Rust with all its touted benefits might provide a
superior host for Perl than C - since it is C (or C++ that it is
meant to replace.

Yes, it would be amazing to see an effort create a Perl interpreter,
yes a literal replacement for the "perl" binary. It seems only fair
given the utilities that are being rewritten in Rust.

Here are the ground rules. I can not STRESS strongly enough that
in order to avoid the failures of Perl 6/Raku, Perl 7, or a myriad
of "perl" forks, this must not have any ambitions other than to
properly support Perl as a drop-in replacement. Of course the idea
would be for it to be a full replacement with feature parity that
tracks happily as a heel dog it's master, the real upstream "perl".

1. It must support a *strict* subset of Perl, as defined by some
   recent version of the perl binary ( this is not your Mother's
   Perl 6 debacle)

2. It can't support things that the perl binary does not

3. Same goes for the commandline interface, switches, and options

4. The name of the binary must be an appropriate pun of the word "perl"

5. The pudding proof shall be the proper execution of some subset of
   perl's expansive test suite; but also the use of it in the wild

What's the prize? The individual or team that does with will be
held in high esteem and quite possibily inherit the entire Perl
kingdom.  But I the the actual prize would be, THE DEVELOPERS GET
TO NAME IT.  I think Darth Perl [1] would even be acceptible, but
I digress.

I contend that rather than try to poach Rust programmers from Perl,
build a bridge for Perl programmers into the Rust world view. Given
that a fair corollory to the widely accepted assertion that "only
perl can parse Perl", is that "only Perl can replace perl". It
clearly follows that in order for Rust to properly introduce Perl
programmings to Rust, it must provide a work-a-like, drop-in
executable that strives to be feature-for-feature and bug-for-bug
compatible with the One True perl. It may not add anything, either.
Though as it is build it is acceptible that it provides a growing
subset of what perl does.

The challenge has been laid. And while Rust may never steal most
of the Perl programmers on the earth, it may very way get a large
majority of them to run their Perl on an interpretor written in
Rust.

Would I ever swith to Rust from Perl? H-to-the-NO. Would I ever
run my Perl in an interpreter written in Rust? Heck yes I would!1

I look forward to seeing the results of my efforts here. xD

Enjoy.

LINKS AND REFERENCES:

[-] https://github.com/sts10/rust-command-line-utilities
[1] https://en.wikipedia.org/wiki/Darth_Vader_grotesque