
WebAssembly как платформа расширений для Python: ускорение, встраивание и опасные ловушки API
kmoseenk 2 минуты назад WebAssembly как платформа расширений для Python: ускорение, встраивание и опасные ловушки API Уровень сложности Средний Время на прочтение 12 мин Охват и читатели 0 Блог компании OTUS...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. kmoseenk 2 минуты назад WebAssembly как платформа расширений для Python: ускорение, встраивание и опасные ловушки API Уровень сложности Средний Время на прочтение 12 мин Охват и читатели 0 Блог компании OTUS Программирование * Python * Туториал Программное обеспечение, достигающее определённого уровня сложности, как правило, обзаводится языком расширений и фактически превращается в самостоятельную программную платформу. В этой роли хорошо себя показывает Lua, а для веб-технологий, разумеется, используется JavaScript. WebAssembly обобщает этот подход: любой язык программирования, способный компилироваться в Wasm, может расширять приложение, выполняющее Wasm.
Это требует больше усилий, чем просто передать скрипт в текстовом файле, зато авторы расширений могут писать на удобном им языке и использовать более развитые инструменты разработки — отладки, тестирования и прочего — которые обычно недоступны для традиционных языков расширений. Традиционно Python расширяется с помощью нативного кода через интерфейс на C, однако в последнее время стало практично расширять Python с помощью Wasm. Это означает, что можно поставлять бинарный модуль (blob) Wasm, не зависящий от архитектуры, внутри Python-библиотеки и использовать его без необходимости иметь на целевой системе нативную цепочку инструментов.
Технические детали
Рассмотрим два разных сценария использования и связанные с ними подводные камни. Чтобы понять, какие темы в Python стоит подтянуть перед работой с расширениями, памятью и внешними модулями, можно пройти короткий тест и оценить свой текущий уровень. Обычно Python расширяют, чтобы получить доступ к внешним интерфейсам, которые он сам по себе использовать не может.
Wasm выполняется в песочнице без какого-либо доступа к внешнему миру, поэтому для этой задачи он, очевидно, не подходит. Однако расширения могут также ускорять Python — это одно из ключевых преимуществ Wasm. Кроме того, с его помощью можно подключать встраиваемые возможности , написанные на других языках программирования, если им не требуется доступ к внешней среде.
В качестве предпочтительной среды выполнения Wasm (без поддержки WASI) можно использовать wasm3 . Он написан на классическом C и хорошо подходит для встраивания, примерно так же, как, например, SQLite. Производительность у него средняя, однако программа на C, выполняемая в wasm3, всё равно заметно быстрее аналогичной программы на Python.
Отраслевые последствия
Для него есть Python-привязки — pywasm3 , но они распространяются только в виде исходного кода. Это означает, что на машине должен быть установлен компилятор C, чтобы использовать pywasm3, что противоречит моим целям. Если на системе уже есть такая цепочка инструментов, проще сразу использовать её, минуя Wasm.
Для рассматриваемых в этой статье сценариев лучшим вариантом является wasmtime-py . Дистрибутив включает готовые бинарные файлы для Windows, macOS и Linux на архитектурах x86-64 и ARM64, что покрывает практически все установки Python.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





