Skip to content

Commit 3f8382a

Browse files
committed
Describe free-standing
1 parent 467fdee commit 3f8382a

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

peps/pep-0783.rst

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,23 @@ This creates friction both for package maintainers and for users.
5151
Rationale
5252
=========
5353

54-
Emscripten uses a variant of musl libc. The Emscripten compiler makes no ABI
55-
stability guarantees between versions. Many Emscripten updates are ABI
56-
compatible by chance, and the Rust Emscripten target behaves as if the ABI were
57-
stable with only `occasional negative consequences
58-
<https://github.com/rust-lang/rust/issues/131467>`__.
59-
60-
There are several linker flags that adjust the Emscripten ABI, so Python
61-
packages built to run with Emscripten must make sure to match the ABI-sensitive
62-
linker flags used to compile the interpreter to avoid load-time or run-time
63-
errors. The Emscripten compiler continuously fixes bugs and adds support for new
64-
web platform features. Thus, there is significant benefit to being able to
65-
update the ABI.
54+
When Emscripten builds an application, it builds it as a free-standing program,
55+
including the entire operating system. Emscripten primarily targets the use case
56+
of fully static programs. When dynamic linking is used, the primary target use
57+
case is bundle splitting and lazy loading, where the dynamic libraries are built
58+
at the same time as the application.
59+
60+
As a result of that, the Emscripten compiler makes no ABI stability guarantees
61+
between versions. Many Emscripten updates are ABI compatible by chance, and the
62+
Rust Emscripten target behaves as if the ABI were stable with only `occasional
63+
negative consequences <https://github.com/rust-lang/rust/issues/131467>`__.
64+
65+
There are several linker flags that adjust the Emscripten ABI or system
66+
libraries. Python packages built to run with Emscripten must make sure to match
67+
the ABI-sensitive linker flags used to compile the interpreter to avoid
68+
load-time or run-time errors. The Emscripten compiler continuously fixes bugs
69+
and adds support for new web platform features. Thus, there is significant
70+
benefit to being able to update the ABI.
6671

6772
In order to balance the ABI stability needs of package maintainers with the ABI
6873
flexibility to allow the platform to move forward, Pyodide plans to adopt a new
@@ -249,7 +254,7 @@ packages <https://pyodide.org/en/stable/usage/loading-packages.html>`__.
249254

250255
For package maintainers, we recommend the `Pyodide documentation on building and
251256
testing packages
252-
<https://pyodide.org/en/stable/development/building-and-testing-packages.html>`__.
257+
<https://pyodide.org/en/stable/development/building-packages-from-source.html>`__.
253258

254259
Reference Implementation
255260
========================

0 commit comments

Comments
 (0)