ABI changes in 1.38.47

29 views
Skip to first unread message

Alon Zakai

unread,
Oct 2, 2019, 5:34:56 PM10/2/19
to emscripte...@googlegroups.com
Hello everyone,

In the just-tagged release 1.38.46 there are changes to our internal ABI, specifically, the errno constants have changed.

This should not be noticeable in portable code, that is, if you use the errno C constants (EBADF, EINVAL, etc.) then everything should be fine. However, if you assume the actual integer value of those, or mix code built with the old ABI with the new compiler, you can get errors.

To be safe, you should always rebuild from source all code and libraries in every emscripten release, as we do not guarantee that the internal ABI is stable (intentionally, so that we can improve it over time, as we are doing now).

Background: The new errno constants match the ones in wasi, see https://github.com/emscripten-core/emscripten/pull/9545 This is part of a refactoring of our syscalls that will both decrease code size (by avoiding annoyances in musl's syscalls like being variadic) and also allow emcc output to run in wasm runtimes like wasmer and wasmtime. Note that this process will take more than one release (we are doing one syscall at a time, gradually), so the ABI will keep changing for a while.

Please test and report any unexpected breakage!

- Alon

Reply all
Reply to author
Forward
0 new messages