RustPython
pyodide
| RustPython | pyodide | |
|---|---|---|
| 106 | 72 | |
| 20,927 | 14,010 | |
| 1.1% | 1.3% | |
| 9.9 | 9.7 | |
| 5 days ago | 6 days ago | |
| Rust | Python | |
| MIT License | Mozilla Public License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
RustPython
- Pre-PEP: Rust for CPython
Interesting proposal, but with severe risks: becoming dependent on a single specific compiler and rustc could include malicious code that isn’t obvious to an outside auditor. See https://aeb.win.tue.nl/linux/hh/thompson/trust.html Ken Thompson demonstrated this.
But what will the future of RustPython be? https://github.com/RustPython/RustPython/
Major shifts like this are complex, not so only from a technical perspective but even more because a lot of humans with different opinions are involved. But radical changes are sometimes needed to be innovative again.
- RustPython: A Python Interpreter Written in Rust
- Fil's Unbelievable Garbage Collector
- WasiPy – Python Interpreter in Wasi
I have been experimenting with WebAssembly/Wasi over the last couple of years and decided it would be time to have another look and see what the state of things is. I it would be interesting to try and embed python in a wasm component for its nice sandbox properties.
There's a super cool project https://github.com/RustPython/RustPython which is a python interpreter in rust which can compile to wasip2 so I hooked that up and it seems to work well.
Its easy to build wasi components in rust now with the wasip2 target, excited to see where things head over the next few years.
- From Async/Await to Virtual Threads
Totally agree, the FFI escape hatch and excellent tooling from rust, maturin pyo3 etc means so many python problems can just be solved with rust. Which begs the question, has anyone tried doing a greenthread implementation in rust? Maybe offload some of the dynamically evaled python code to a seperate process maybe with https://github.com/RustPython/RustPython
- Uv overtakes Poetry (for Wagtail users)
- 关于低谷 - FAV0周刊 #10
RustPython
- This Week In Python
RustPython – Python Interpreter written in Rust
- Encapsulation in Rust and Python
Integrating Rust into Python, Edward Wright, 2021-04-12 Examples for making rustpython run actual python code Calling Rust from Python using PyO3 Writing Python inside your Rust code — Part 1, 2020-04-17 RustPython, RustPython Rust for Python developers: Using Rust to optimize your Python code PyO3 (Rust bindings for Python) Musing About Pythonic Design Patterns In Rust, Teddy Rendahl, 2023-07-14
pyodide
- Python on the Edge: Fast, sandboxed, and powered by WebAssembly
I tracked it down to this PR from September 2022, so it's been around for a while: https://github.com/pyodide/pyodide/pull/2976
- A peek into a possible future of Python in the browser
Pyodide has numpy, scipy, matplotlib, pandas, and as of last month, even polars. https://github.com/pyodide/pyodide/pull/5282
Pyodide is far from a perfect CPython and even the packages it includes often have limitations you won't find when running natively. But there's definitely enough here to be interesting and even somewhat useful. Here's an interactive app written on Pyodide that uses astropy, numpy, and matplotlib: https://shinylive.io/py/examples/#orbit-simulation
- Run Python in the Browser Effortlessly
We evaluated the pyodide ecosystem for louie.ai last year and too much didn't work, eg, we couldn't get data in for arrow or parquet, which are table stakes for python data work
My guess was 2025 would be more practical for these libs ... And behold: https://github.com/pyodide/pyodide/issues/2933
Very cool to see!
- LAPACK in your web browser
Compiling Fortran to WebAssembly is still an area of active development (see 1, 2, 3, 4, and 5). At the time of this post, a common approach is to use f2c to compile Fortran to C and then to perform a separate compilation step to convert C to WebAssembly. However, this approach is problematic as f2c only fully supports Fortran 77, and the generated code requires extensive patching. Work is underway to develop an LLVM-based Fortran compiler, but gaps and complex toolchains remain.
- JavaScript Implementation of Python
Very cool! Kind of seems like a relic at this point though, cool for studying but probably better to use Pyodide [1] in practice? This is what powers JupyterLite [2], which is a fully fledged Jupyter IDE with support for packages, in browser.
1: https://github.com/pyodide/pyodide
2: https://github.com/jupyterlite/jupyterlite
- Py2wasm – A Python to WASM Compiler
We implemented an in-browser Python editor/interpreter built on Pyodide over at Comet (our users are data scientists who need to build custom visualizations quite often, and the most familiar language for most of them is Python).
One of the issues you'll run into is that Pyodide only works by default with packages that have pure Python wheels available. The team has developed support for some libraries with C dependencies (like scikit-learn, I believe), but frameworks like PyTorch are particularly thorny (see this issue: https://github.com/pyodide/pyodide/issues/1625 )
We ended up rolling out a new version of our Python visualizations that runs off-browser, in order to support enough libraries/get the performance we need: https://www.comet.com/docs/v2/guides/comet-ui/experiment-man...
- Show HN: Open-source, browser-local data exploration using DuckDB-WASM and PRQL
Thank you! Yes, one of the items in the Roadmap is support for Pyodide (https://github.com/pyodide/pyodide) for running in-browser python on the results of each of the code blocks! This should allow most ML libs to be usable in-browser! This is pretty high-up on our priority list.
- Show HN: Marimo – open-source reactive Python notebook – running in WASM
- Why Are Tech Reporters Sleeping on the Biggest App Store Story?
If I understand correctly, WASM only makes sense for compiled languages, you can run the python interpreter in WASM of course[1], but that will be at a significant performance disadvantage to the native javascript interpreter, and it's also something that has to be loaded every time you load the website.
[1]: https://github.com/pyodide/pyodide
- Rewrite Sympy in rust
If you absolutely need something comparable to Sympy, then one option might be to figure out how to best call Sympy from Rust. e.g. - RustPython, although it seems like Sympy isn't supported yet - Pyodide, and figuring out how to run it outside of a web browser. Probably also not very easy. - PyPy, and having a pretty simple Python binary for every platform - ...
What are some alternatives?
CPython - The Python programming language
jupyter - Jupyter metapackage for installation and documentation
PyO3 - Rust bindings for the Python interpreter
brython - Brython (Browser Python) is an implementation of Python 3 running in the browser
rust-numpy - PyO3-based Rust bindings of the NumPy C-API
pyscript - PyScript is an open source platform for Python in the browser. Try PyScript: https://pyscript.com Examples: https://tinyurl.com/pyscript-examples Community: https://discord.gg/HxvBtukrg2