Welcome to the Pyodide blog! 馃憢

We will share project updates and announcements here.

This blog also aims to illustrate how Pyodide can be used for real-world projects. If you have a nice Pyodide use case that you would like to share, we accept submissions on Github.

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

React in Python with Pyodide

From web servers to end-to-end Data pipelines, Python has become a ubiquitous tool for building all sorts of programs and software. With powerful built-in libraries and an incredible number of third-party libraries, the Python ecosystem makes it easy to quickly get your project started. In fact, building user interfaces (UIs) is not an exception: PyQT allows you to create cross-platform desktop applications, whereas libraries like Dash allows you to create full-fledged web applications (including the UI) within a single Python script....

January 19, 2022 路 10 min 路 Xing Han Lu

Pyodide 0.19.0 release

Pyodide 0.19 is a major release focused on improving the build system, updating scientific computing packages, and improving the workflow for loading Python code. Here are a few highlights. For the complete list of changes see the changelog. Removal of function pointer cast emulation Some Python C extensions use function pointer casting, which is an unspecified behavior according to the C specification. However, all common native C compilers generate code that works fine....

January 10, 2022 路 4 min 路 Hood Chatham and Roman Yurchak, on behalf of the Pyodide team

Function Pointer Cast Handling in Pyodide

In the upcoming release of Pyodide version 0.19, we finally support the Python default recursion limit of 1000. We also attain a speed boost of somewhere between 10 and 20 percent. The code size was reduced by 25% from 12 megabytes to 9.1 megabytes. These gains came from this pull request which changed the way we handle function pointer casts. Here is a plot showing the improvements in recursion depth:...

December 21, 2021 路 14 min 路 Hood Chatham

Pyodide becomes member of the Open Source Collective

We would like to announce that Pyodide is now a member of the Open Source Collective (OSC), which will act as the project鈥檚 fiscal host. The Pyodide project compiles Python and the scientific stack to WebAssembly using Emscripten. Pyodide was created in 2018 by Michael Droettboom at Mozilla as part of the Iodide project. Later in 2021 Pyodide became an independent open-source project, and the current announcement completes this transition....

November 10, 2021 路 1 min 路 Roman Yurchak and Hood Chatham, on behalf of the Pyodide team