Hacker News new | ask | show | jobs
by rbanffy 1702 days ago
> I believe it was Dropbox that famously released their own private internal Python build a while back and included some concurrency patches.

Google also had their Unladen Swallow version, but it seems they lost interest at some point.

2 comments

"PEP 3146 -- Merging Unladen Swallow into CPython" > Future Work (2010) https://www.python.org/dev/peps/pep-3146/#future-work

Perhaps Google/Grumpy could be updated to compile Python 3.x+ to Go with e.g. the RustPython version of the CPython Python Standard Library modules?

"Inside cpyext: Why emulating CPython C API is so Hard" (2018) https://news.ycombinator.com/item?id=18040664

Today, conda-forge compiles CPython to relocatable platform+architecture-specific binaries with LLVM. https://github.com/conda-forge/python-feedstock/blob/master/...

conda-forge also compiles PyPy Python to relocatable platform+architecture-specific binaries with LLVM. conda-forge/pypy3.6-feedstock (3.7) https://github.com/conda-forge/pypy3.6-feedstock/blob/master...

https://github.com/conda-forge/pypy-meta-feedstock/blob/mast... :

> summary: Metapackage to select pypy as python implementation

Pyodide (JupyterLite) compiles CPython to WASM (or LLVM IR?) with LLVM/emscripten IIRC. Hopefully there's a clear way to implement the new GIL-less multithreading support with Web Workers in WASM, too?

The https://rapids.ai/ org has a bunch a fast Python for HPC and Cloud; with Dask and pick a scheduler. Less process overhead and less need for interprocess locking of memory handles that transgress contexts due to a new GIL removal approach would be even faster than debuggable one process per core Python.

Grumpy is unmaintained.There is similar work (py2many) that transpiles python3 to 8 different languages.

The approach focuses on functional programming, does away with extensions completely.

For that approach to be successful, a pure python implementation of stdlib in the transpileable subset of python 3 would be super helpful.

Unladen Swallow is a 20% project. Besides, LLVM's JIT turns out to be an disappointment and I believe that no modern interpreted language uses LLVM's JIT at this moment.
Doesn’t Julia?
Julia is not interpreted.
What’s the difference? Wouldn’t any language with a JIT not be “interpreted”?
Julia isn't a normal jit either. most jits make speculative guesses based on observed patterns and then has to deoptimize occasionally. Julia only compiles based on type information, so in many ways it is closer to running an ahead of time compiler at runtime. because of this, Julia is often called just ahead of time compiled.
It's not quite interpreted. Python is compiled to bytecode when first loaded (that's what all those .pyc files are) and there is no separate compile step as with Java.