Pyodide 0.28 Release

We are pleased to announce the Pyodide v0.28.0 release. This release focused on standardizing the Pyodide platform. Defining the Pyodide ABI In October 2024, the CPython steering council approved restoring Emscripten as a tier 3 target for CPython, starting from Python 3.14. We wrote PEP 776 – Emscripten Runtime support and PEP 783 – Emscripten Packaging in order to standardize the Emscripten target for CPython. PEP 783 aims to standardize the binary interfaces that Pyodide packages should follow, helping ensure compatibility with current and future versions of Pyodide. Our plan is to have one ABI per Python version. This means that packages built for a particular version of Pyodide will be compatible with all Pyodide versions that have the same version of Python. ...

July 4, 2025 · 8 min · Gyeongjae Choi, Hood Chatham, Agriya Khetarpal

Pyodide 0.27 Release

Pyodide v0.27.0 is out. This release was focused on improving the long-term stability of Pyodide. Welcome Agriya Khetarpal to the Pyodide team Agriya Khetarpal has joined as a new maintainer. Agriya has been active in the Scientific Python area and is a contributor to NumPy, SciPy, and scikit-learn. He has already significantly strengthened Pyodide’s support for various Scientific Python packages. Build System Improvements Decoupling pyodide-build from Pyodide runtime pyodide-build is a tool that builds Python packages to run in Pyodide. Previously, the version of pyodide-build was strongly coupled to the version of Pyodide, meaning that if you wanted to build a package against a specific version of Pyodide, you had to use the corresponding version of pyodide-build. The problem with this approach was that even if we improved the build system, downstream users would have to wait for the next Pyodide release to use it. ...

January 1, 2025 · 6 min · Gyeongjae Choi, Hood Chatham, Agriya Khetarpal

Pyodide 0.26 Release

Pyodide v0.26.0 is out, including Python version 3.12, many minor improvements to the foreign function interface and to the build system, and major improvements to stack switching. It also includes a tremendous amount of foward-looking work that is not yet visible to users. Pyodide at PyCon We were at PyCon again this year at another WebAssembly summit. The authors of this post met each other in person for the first time. Gyeongjae’s travel was generously paid for by our sponsors, so thank you if you have ever donated to Pyodide. Pyodide creator Mike Droettboom was there too. Both the WebAssembly summit and the rest of PyCon went fantastically well. It was wonderful hearing from the community about all of the things that are working well for them, and also very helpful to learn where we have room to improve. ...

May 27, 2024 · 11 min · Hood Chatham, Gyeongjae Choi

marimo: a reactive Python notebook that runs in the browser

We’re Akshay Agrawal and Myles Scolnick, and we’re the developers of marimo, an open-source reactive notebook for Python. In this post, we’ll describe how we ported marimo to work via Pyodide, and why we’re incredibly excited about the potential of Pyodide to make computing more accessible. What is marimo? marimo is an open-source reactive notebook for Python built from the ground up to solve well-known problems with traditional notebooks, including reproducibility, interactivity, maintainability, and shareability. ...

April 8, 2024 · 7 min · Akshay Agrawal, Myles Scolnick

Pyodide 0.25.0 release

Happy New Year! Pyodide 0.25 is a major release with some exciting and experimental features. This major release includes requests library support, experimental support for JS Promise integration, and build system improvements. requests Support in Pyodide For a long time, the Pyodide community has been requesting support for the requests, Python’s popular HTTP client library. However, due to the limitations of Pyodide running in a browser environment, integrating networking libraries presented challenges. So, traditionally, if you needed to do something networking-related in Pyodide, you would need to use the pyfetch API, which is a wrapper around the browser’s fetch API. ...

January 18, 2024 · 3 min · Pyodide team

Pyodide 0.24.0 release

Pyodide 0.24 is a major release focused on fine tuning public APIs and performance. It includes a major rework of the streams APIs to be faster and more flexible. We increased the consistency of the foreign function interface. We also added micropip support for the Python simple repository API. Performance Improvements Up to this point, we had not devoted much energy to performance improvements so there were many low-hanging fruit. ...

September 13, 2023 · 4 min · Hood Chatham and Gyeongjae Choi on behalf of the Pyodide team

Pyodide 0.23.0 release

Pyodide 0.23 is a major release focused on updating CPython version to 3.11. It also brings several new features, enhancements, and bug fixes. This release includes updates to the Python standard library, deployment and build system enhancements, and new CLI commands. We also added several new packages to Pyodide, including fastparquet, pynacl and binary wheels for mypy. Note that there are several API deprecations; please refer to the changelog for details. ...

March 31, 2023 · 6 min · Roman Yurchak and Gyeongjae Choi on behalf of the Pyodide team

Pyodide 0.22.0 release

Pyodide 0.22 is a major release focused on improving the foreign function interface between Python and JavaScript. We also improved the systems for building, loading, and testing packages. In particular, we added support for creating virtual environments that execute code using Pyodide in Node.js. We unvendored the Pyodide package manager and matplotlib backend into separate repositories. We also added a new command line interface for common tasks involved in building and testing packages with Pyodide. ...

January 3, 2023 · 5 min · Gyeongjae Choi and Hood Chatham on behalf of the Pyodide team

Pyodide 0.21.0 release

Pyodide 0.21 is a major release focused on improvements to the systems for building and loading packages. We made it much easier to build and use binary wheels that are not included in our distribution. We added support for Rust packages and made major progress in simplifying support for CMake packages. We also added 34 new packages including a large number of popular packages, for example bitarray, opencv-python, shapely, and xgboost. ...

August 9, 2022 · 4 min · Hood Chatham on behalf of the Pyodide team

Pyodide 0.20.0 release

Pyodide 0.20 is a major release focused on improving our system for building and packaging Python modules. We upgraded to Python 3.10. This comes with a speed boost of around 15% in Firefox and 22% in Chrome. We updated almost every package to the most recent release, and moved closer to using upstream Emscripten. Pyodide 0.20 also includes many small bug fixes and usability improvements. For the complete list of changes see the changelog. ...

April 9, 2022 · 3 min · Hood Chatham on behalf of the Pyodide team