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....

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

Rust/PyO3 Support in Pyodide

We are happy to announce that the next version of Pyodide will ship with the newest version of the Cryptography package, including its Rust extension module. The Cryptography package was one of the first major packages that included a Rust extension module. Python binary extensions in Rust for new projects have been gaining popularity lately. The Cryptography package has been one of the most often requested packages in the Pyodide issue tracker so it is a priority for us to support it....

June 23, 2022 · 11 min · Hood Chatham

Pandas Tutor: Using Pyodide to Teach Data Science at Scale

Pandas Tutor is a data science education tool that visualizes how pandas code transforms dataframes. In this guest post we discuss how we ported it to run 100% in-browser with Pyodide.

May 12, 2022 · 9 min · Sam Lau, Philip Guo

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

HTML5 <canvas> based renderer for Matplotlib in Pyodide

Pyodide is a distribution of CPython for WebAssembly which was started by Michael Droettboom at Mozilla. Today, Pyodide is an independent open source project. It not only provides support for calling JavaScript and web APIs from Python, but also brings the Python scientific stack to the browser as it includes the five most essential data science libraries – NumPy, Pandas, Matplotlib, scikit-learn, and Scipy. In this post, we present a new backend for Matplotlib enabling the rendering of figures in the browser by leveraging the <canvas> element....

April 1, 2022 · 10 min · Madhur Tandon