wasm в ядре Linux
2019-12-03 09:14 pmПосле того, как стандарт wasm доказал свою эффективность в роли быстрой и безопасной виртуальной машины для исполнения потенциально недоверенного кода в браузерах, возникла идея портировать среду исполнения wasm в ядро Linux:
https://medium.com/wasmer/running-webassembly-on-the-kernel-8e04761f1d8e
https://github.com/wasmerio/kernel-wasm
Зачем? Автор отмечает, что благодаря быстрой JIT-компиляции на основе LLVM и благодаря экономии на переключении контекста userspace/kernelspace есть прирост производительности, например для http-сервера. Как по мне, для целей подобной экономии лучше годится F-Stack, а вот чем kernel-wasm действительно интересен — так это потенциальной возможностью запускать out-of-tree драйверы для Linux, работающие поверх стабильного ядерного API (интерфейса между wasm-программами и ядром). Вряд-ли мы когда-нибудь дождёмся стабилизации сишного ядерного API в Линуксе (скорее по идеологическим, чем по техническим причинам), а так, благодаря kernel-wasm, хоть какой-то метод написания стабильных closed source драйверов для Линукса мог бы быть.
Как я уже ранее отмечал, невозможность написания стабильных out-of-tree closed-source драйверов — сейчас главная проблема, которая сдерживает экспансию Linux. Не все hardware-вендоры являются религиозными GPL-фанатиками наподобие Ричарда Столлмэна, кое-кто из них ещё и деньги попутно зарабатывать пытается, поэтому покуда их интересами пренебрегают, они будут смотреть на Linux сквозь пальцы. В Линуксе же есть стандарт для API в userspace (POSIX, Single UNIX Specification), теперь ему нужен подобный стандарт для API в kernelspace, по-моему всё просто.
https://medium.com/wasmer/running-webassembly-on-the-kernel-8e04761f1d8e
https://github.com/wasmerio/kernel-wasm
Зачем? Автор отмечает, что благодаря быстрой JIT-компиляции на основе LLVM и благодаря экономии на переключении контекста userspace/kernelspace есть прирост производительности, например для http-сервера. Как по мне, для целей подобной экономии лучше годится F-Stack, а вот чем kernel-wasm действительно интересен — так это потенциальной возможностью запускать out-of-tree драйверы для Linux, работающие поверх стабильного ядерного API (интерфейса между wasm-программами и ядром). Вряд-ли мы когда-нибудь дождёмся стабилизации сишного ядерного API в Линуксе (скорее по идеологическим, чем по техническим причинам), а так, благодаря kernel-wasm, хоть какой-то метод написания стабильных closed source драйверов для Линукса мог бы быть.
Как я уже ранее отмечал, невозможность написания стабильных out-of-tree closed-source драйверов — сейчас главная проблема, которая сдерживает экспансию Linux. Не все hardware-вендоры являются религиозными GPL-фанатиками наподобие Ричарда Столлмэна, кое-кто из них ещё и деньги попутно зарабатывать пытается, поэтому покуда их интересами пренебрегают, они будут смотреть на Linux сквозь пальцы. В Линуксе же есть стандарт для API в userspace (POSIX, Single UNIX Specification), теперь ему нужен подобный стандарт для API в kernelspace, по-моему всё просто.