Время выполнения Javascript WinterJS просит вашего внимания

WinterJS - это новая среда выполнения Javascript от Wasmer, которая утверждает, что она самая быстрая из всех. Давайте узнаем, так ли это на самом деле.

На самом деле, недостатка в JS-программах нет. Уже есть Node. js, Deno, Bun и недавно освещенный Iprogrammer LLRT от AWS, и это еще не конец списка. Так зачем же нужна новая среда выполнения? Что она делает по-другому?

В качестве справочного материала и для облегчения терминологии, среда выполнения (в данном случае WinterJS) - это место или среда, в которой выполняется ваш код. Это не то, что выполняет сам код (это движок, в данном случае SpiderMonkey), а скорее среда, которая обеспечивает доступ к определенным частям внешнего мира.

Таким образом, WinterJS - это фактически среда выполнения сервера, который использует движок SpiderMonkey для выполнения JavaScript. Утверждается, что он молниеносно быстр; быстрее, чем Bun и Node.
Это объясняется тем, что WinterJS способен обрабатывать 150 тыс. запросов в секунду при нативном исполнении и 20 тыс. запросов в секунду при компиляции в Wasm с помощью WASIX.

Напомним, что WASIX - это расширение системного интерфейса WebAssembly (WASI), призванное сделать WebAssembly (Wasm) более совместимым с POSIX-программами, обеспечивая беспрепятственное выполнение более сложных приложений как в браузере, так и на сервере. Он расширяет WASI большинством недостающих POSIX-функций и предназначен для работы как на сервере, так и в браузере.

Как таковая, она обеспечивает полную поддержку эффективной многопоточности, сокетов, текущего каталога pthreads, форкинга процессов, порождения и ожидания подпроцессов (exec, wait), поддержки TTY, асинхронного опроса сокетов и файлов, поддержки труб и событий и т. д.

Однако в настоящее время единственной средой исполнения, поддерживающей WASIX, является Wasmer, создатель WinterJS. Вы видите связь здесь. Все это звучит неплохо, но падение производительности более чем на 80 % при развертывании в качестве WASM по сравнению с Native кажется мне важным. Может ли он работать лучше?

Если да, то время, когда вы сможете упаковать весь свой сервер в один бинарник WASM и развернуть его в облаке, станет еще на шаг ближе. И это еще больше подогреет дискуссию о Webassembly как замене Docker.

С точки зрения времени выполнения, WinterJS жалуется на WinterCG, что означает, что он не может быть заменой Node.js, что очевидно при одном только взгляде на таблицу сравнения совместимости времени выполнения. Если вы продолжите проверку, то увидите, что поддерживаемые API не соответствуют Nodejs.

Более или менее, этого следовало ожидать, поскольку Nodejs обладает большей функциональностью, чем WinterCG. Однако, как показывает тенденция, новейшие выпускаемые среды исполнения предназначены для выполнения особых задач. Чтобы быть более экономными в памяти и быстрыми, они выбрасывают много функциональности. Пример этого мы рассмотрели в статье "AWS Introduces A New JavaScript Runtime For Lambda" :

LLRT полностью оптимизирован для использования в Lambda. Он не пытается конкурировать с остальными; он просто создан только для одной цели, в контексте Lambda. Это также означает, что ее размер крошечный, порядка нескольких килобайт, в отличие от 20+ МБ, требуемых ее аналогами.

WinterJS - это библиотека, предназначенная и оптимизированная для веб-серверов.

Сервер, который поставляется с полной совместимостью с API Cloudflare. Это был сознательный выбор, поскольку этот API совместим с большинством фронтенд-фреймворков и, вероятно, является самым используемым в природе. Эта интеграция открыла дверь к широкой совместимости с такими веб-фреймворками, как:

  • Next.js
  • Next.js React Server Components
  • Hono
  • Astro.build
  • Remix.run
  • Svelte
  • Gatsby
  • Nuxt

Теперь перейдем к кодированию. Вы можете установить WinterJS нативно с помощью:

cargo install --git https://github.com/wasmerio/winterjs winterjs

После установки WinterJS вы можете просто запустить HTTP-сервер:

winterjs tests/simple. js

и затем получить доступ к серверу в https://localhost:8080/.

В качестве альтернативы можно запустить его под Wasmer:

wasmer run wasmer/winterjs --net --mapdir=tests:tests tests tests/simple.js

Где находится simple.js:

addEventListener('fetch', (req) => {
req. respondWith(new Response('hello'));
});

Теперь ваше серверное приложение работает!

Итак, это еще одна среда выполнения JavaScript, которая пытается привлечь ваше внимание. Как вы думаете, удалось ли ей это сделать?

Время выполнения Javascript WinterJS просит вашего внимания
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
12 апреля 2024 г.
58
Теги: WinterJS

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще