https://rpython.readthedocs.io/en/latest/
There is also the Dynamic Language Runtime, which is used to implement IronPython and IronRuby on top of .NET:
There are bunch of transpilers which might provide a path from statically typed python3 to native binaries. py2many is one of them.
The downside is that all of the C extensions that python3 uses become unusable and need to be rewritten in the subset of python3 that the transpiler accepts.
(Though JS had some potential to do that by the power of it's browser role, before compiling interpreters to WASM became a better way of getting browser support than compiling another scripting language source to JS.)
It's just it also has sooo much historical baggage and normative lifestyle assumptions along with it, and now it's passed out of favour.
And historically support in the browser was crap and done at the wrong level ("applets") and then that became a dead end and was dropped.
> Mypyc compiles Python modules to C extensions. It uses standard Python type hints to generate fast code. Mypyc uses mypy to perform type checking and type inference.
Could you expand on this?
[0] http://www.parrot.org/ states:
The Parrot VM is no longer being actively developed.
Last commit: 2017-10-02
The role of Parrot as VM for Perl 6 (now "Raku") has been filled by MoarVM, supporting the Rakudo compiler.
[...]
Parrot, as potential VM for other dynamic languages, never supplanted the existing VMs of those languages.
All approaches to "make Python fast again" tend to lock down some of the flexibility so aren't realy general purpose.
It was designed for "native-like" execution in the browser (or now other runtimes.) It's more like a VM for something like Forth than something like Python.
It's a VM that runs at a much lower level than the ones you'd find inside the interpreter in e.g. Python:
No runtime data model beyond primitive types - nothing beyond simple scalar types; no strings, no collections, no maps. No garbage collection, and in fact just a simple "machine-like" linear memory model
And in fact this is the point of WASM. You can run compiled C programs in the browser or, increasingly, in other places.
Now, are people building stuff like this overtop of WASM? Yes. Are there moves afoot to add GC, etc.? Yes. Personally I'm still getting my feet wet with WebAssembly, so I'm not clear on where these things are at, but I worry that trying to make something like that generic enough to be useful for more than just 1 or 2 target languages could get tricky.
Anyways it feels like we've been here before. It's called the JVM or the .NET CLR.
I like WASM because it's fundamentally more flexible than the above, and there's good momentum behind it. But I'm wary about positioning it as a "generic high level language VM." You can build a high-level language VM on top of it but right now it's more of a target for portable C/C++/Rust programs.