# pyemscripten_2026_0

By default, all builds of the Pyodide runtime with Python 3.14 use the
`pyemscripten_2026_0` platform.

This section reflects the planned definition for the `pyemscripten_2026_0`
platform.

## Platform Specification

### CPython and Emscripten Version

- **CPython**: 3.14
- **Emscripten**: 5.0.3

### Unwinding ABIs

C++ libraries are built with WebAssembly exception handling (`-fwasm-exceptions`)
and WebAssembly-based `setjmp`/`longjmp` (`-sSUPPORT_LONGJMP=wasm`). To enable
exceptions and `setjmp`/`longjmp`, `-fwasm-exceptions` must be passed at compile
time and link time.

### Rust Toolchain

When building Rust packages to target the `pyemscripten_2026_0` platform, use
Rust version 1.93.0 or later.

### Runtime Library Loading Path

There is full support for `RPATH`. The dynamic loader will only load
dependencies that are properly specified on the `RPATH`, just being in
`/lib/python3.14/site-packages/wheel_name.libs` is not sufficient.

### Libraries Linked to the Main Binary

The following libraries are statically linked to the binary:

- `libegl.js`
- `libeventloop.js`
- `libGL`
- `libhtml5_webgl.js`
- `libhtml5.js`
- `liblz4`
- `libsdl.js`
- `libwebgl.js`
- `libwebsocket.js`
- `bzip2`
- `zlib`
- `sqlite3` version 3.39.0
- `lzma` (xz) version 5.2.2

Aside from `sqlite3` and `lzma`, these libraries come from Emscripten ports and
the versions of the libraries are determined by the version of Emscripten we
build with. Any symbols from these static libraries may be used by shared
libraries.

## Changes from pyemscripten_2025_0

### Platform Name

The platform name was changed from `pyodide` to `pyemscripten`.

### Emscripten version

Emscripten was upgraded from **4.0.9** to **5.0.3**.

### Rust toolchain simplified

In `pyemscripten_2025_0`, a Rust nightly was required with the unstable
`-Z emscripten-wasm-eh` flag and a custom sysroot. In `pyemscripten_2026_0`, Rust
1.93.0 or later is sufficient — no custom sysroot or nightly-only flags are
needed.

Technically speaking, this is not a change to the platform. `pyemscripten_2025_0`
also works with stable Rust 1.93.0.

### Additional statically linked libraries

The following libraries are now statically linked to the interpreter in addition
to the Emscripten port libraries:

- `sqlite3` (3.39.0)
- `lzma` (xz) (5.2.2)
