Pyodide, Mozilla’s open-source project for running Python inside a web browser, has become an independent and community-driven project with a new home on GitHub. The company also announced the new 0.17 release as part of its announcement. 

The project aims to bring the Python runtime to the browser via WebAssembly along with NumPy, Pandas, Matplotlib, parts of SciPy and NetworkX. 

According to Mozilla, Pyodide contains the CPython 3.8 interpreter compiled to WebAssembly, which allows Python to run in the browser and it can install any Python package with a pure Python wheel from the Python Package Index (PyPi).

RELATED CONTENT: Python named TIOBE’s programming language of 2020

The new version contains major maintenance improvements, a large redesign of the central APIs and careful elimination of error and memory leaks. 

The type translation module was significantly reworked so that the round trip translations of objects between Python and JavaScript produce identical objects.

Previously, issues with round trip translations were caused by implicit change of Python types to Javascript, which surprised users. 

Another new feature is a Python event loop that schedules coroutines to run on the browser event loop which makes it possible to use asyncio in Pyodide. It’s also now possible to await JavaScript Promises in Python and await Python awaitables in JavaScript.

Error handling was also improved so that errors could be thrown in Python and caught in JavaScript and vice-versa. The error translation code is generated by C macros which simplifies implementing and debugging new logic. 

The latest release also completes the migration to the latest version of Emscripten that uses the upstream LLVM backend, reducing significant reductions, package size and execution time. 

Pyodide was originally developed inside Mozilla to allow the use of Python in Iodide to build an interactive scientific computing environment for the web. 

Moving forward, the developers behind Pyodide are focusing on reducing download sizes and initialization times, improving the performance of Python code in Pyodide and simplifying the package loading system.