#wasm_lab
Сегодня у нас на обзоре статья "Dynamic linking in WebAssembly with WASIX" от команды Wasmer.
Главная идея очень простая - Python в WASIX наконец-то научился работать не только с "чистыми" Python-пакетами, но и с библиотеками, которые содержат нативный код. Это стало возможным благодаря поддержке Dynamic Linking.
Но реализовать это в WASM оказалось совсем не так просто.
В статье авторы показывают, какие проблемы пришлось решить:
🔹 Как заставить несколько WASM-модулей безопасно разделять одну область памяти.
🔹 Что такое PIC (Position Independent Code) - код, который можно загрузить в любое место памяти без перекомпиляции, и почему без него Dynamic Linking невозможен.
🔹 Как работают
🔹 Почему ради всего этого команде даже пришлось дорабатывать LLVM и собственный рантайм.
Отличная статья, которая показывает, сколько фундаментальных ограничений WASM приходится обходить, чтобы привычные механизмы из мира Linux начали работать и здесь.
#wasm #webassembly #python #wasix
@prowasm
Сегодня у нас на обзоре статья "Dynamic linking in WebAssembly with WASIX" от команды Wasmer.
Главная идея очень простая - Python в WASIX наконец-то научился работать не только с "чистыми" Python-пакетами, но и с библиотеками, которые содержат нативный код. Это стало возможным благодаря поддержке Dynamic Linking.
Но реализовать это в WASM оказалось совсем не так просто.
В статье авторы показывают, какие проблемы пришлось решить:
🔹 Как заставить несколько WASM-модулей безопасно разделять одну область памяти.
🔹 Что такое PIC (Position Independent Code) - код, который можно загрузить в любое место памяти без перекомпиляции, и почему без него Dynamic Linking невозможен.
🔹 Как работают
dlopen() (загрузка внешней библиотеки во время работы программы) и dlsym() (поиск нужной функции внутри этой библиотеки), если под капотом у вас WASM а не обычная ОС.🔹 Почему ради всего этого команде даже пришлось дорабатывать LLVM и собственный рантайм.
Отличная статья, которая показывает, сколько фундаментальных ограничений WASM приходится обходить, чтобы привычные механизмы из мира Linux начали работать и здесь.
#wasm #webassembly #python #wasix
@prowasm
wasmer.io
Dynamic linking in WebAssembly with WASIX · Blog · Wasmer
At Wasmer, we've had a [WASIX](<https://wasix.org/>) build of Python for a long time now. It works too; you can run scripts, get a REPL, and even pull i...
👍4