JetBrains представила дорожную карту Ktor
Плагины OpenTelemetry, поддержка gRPC, упрощенная инъекция зависимостей и управляемые транзакции с базами данных появятся в фреймворке для создания асинхронных приложений на базе Kotlin.
Компания Amazon объявила о доступности, хотя и в экспериментальных целях, новой среды выполнения на базе JavaScript под названием Low Latency Runtime или сокращенно LLRT, призванной поднять производительность JavaScript до уровня низкоуровневых языков, таких как Rust или C++.
Я слышу, как вы говорите? "Что? Еще один Javascript runtime?". И вы будете правы, поскольку экосистема Javascript раздроблена не только на фреймворки, но и на среды исполнения. Уже есть Node.js, Deno и Bun. Так зачем же нужна новая среда исполнения в виде LLRT? Разве их уже не достаточно?
Возможно, это и так, но LLRT полностью оптимизирован для использования Lamda. Он не пытается конкурировать с остальными; он просто создан только для одной цели - в контексте Lambda. Это также означает, что его размер крошечный, порядка нескольких килобайт, в отличие от 20+ МБ, требуемых его аналогами.
Это очень важно, поскольку минимизирует холодный старт, необходимый AWS для загрузки среды Lambda, чтобы запустить ваши функции. Это свойство холодного старта, конечно, относится и к другим языкам и средам выполнения. Мы недавно рассмотрели, как это происходит в Java, в статье "AWS Lambda Updated With SnapStart", которая кратко объясняет эти проблемы:
Проблема, которую призван решить SnapStart, заключается в инициализации. Для функции Lambda это включает загрузку кода функции, запуск среды выполнения и любых внешних зависимостей, а также запуск кода инициализации функции. Как правило, для функции Lambda такая инициализация происходит каждый раз, когда ваше приложение масштабируется, создавая новую среду выполнения.
С помощью SnapStart инициализация функции выполняется заранее, когда вы публикуете версию функции. Lambda делает снимок Firecracker microVM состояния памяти и диска инициализированной среды выполнения, шифрует снимок и кэширует его для доступа с низкой задержкой. Когда ваше приложение запускается и масштабируется для обработки трафика, Lambda возобновляет работу новых сред выполнения из кэшированного снимка вместо того, чтобы инициализировать их с нуля, что повышает производительность при запуске.
LLRT может идти по другому пути, чем SnapStart, но концепция холодного времени запуска, которую пытаются решить обе системы, остается одной и той же. Поэтому путь, по которому идет LLRT, - это путь меньшего размера, поскольку чем больше пакет времени выполнения, тем больше времени требуется AWS для загрузки среды Lambda и, соответственно, тем больше времени занимает холодный запуск.
Однако малый размер несет в себе ограничение. Он выбрасывает много всего, поэтому ваш код может не работать как есть. Например, если ваш код опирается на библиотеку Node.js или API, они могут быть не включены в среду выполнения, что приведет к поломке вашего кода. Это, конечно, отражается в большом неоновом знаке "только для экспериментального использования". Поэтому перед развертыванием вы должны проверить свой код на соответствие ему.
Если говорить о производительности, то еще одним преимуществом LLRT является портирование языка Javascript на Serverless, чтобы разработчики со знанием этого языка чувствовали себя как дома. Конечно, это уже можно сделать, перейдя на Node.js, но не с теми преимуществами в производительности, о которых говорит LLRT.
Еще одна новинка LLRT - использование нестандартного движка Javascript. Еще один фрагментированный ландшафт: Bun использует JavaScriptCore Engine, в то время как такие среды исполнения, как Node.js и Deno, используют JavaScript V8 Engine. LLRT же использует движок QuickJS.
Чтобы освежить в памяти терминологию, скажу, что среда выполнения (в данном случае LLRT) - это место или среда, в которой выполняется ваш код. Это не то, что выполняет сам код (это движок, в данном случае QuickJS), а скорее среда, которая предоставляет доступ к определенным частям внешнего мира.
Итак, QuickJS - это небольшой и встраиваемый движок Javascript. Он поддерживает большую часть спецификации ES2023 1, включая модули, асинхронные генераторы, прокси и BigInt. Его основные возможности с первого взгляда:
В общем, он позволяет повысить производительность языка высокого уровня, такого как Javascript, за счет использования низкоуровневого языка, такого как C, C++, Rust или Go, без необходимости владения таким языком.
Разумеется, проект имеет открытый исходный код и активно ищет участников. Если будет сделано достаточно вкладов, он может достичь производственного стандарта. Может быть, вы хотите внести свой вклад?
Плагины OpenTelemetry, поддержка gRPC, упрощенная инъекция зависимостей и управляемые транзакции с базами данных появятся в фреймворке для создания асинхронных приложений на базе Kotlin.
"Невероятно быстрая" среда выполнения JavaScript от Wasmer поддерживает приложения Cloudflare и компоненты React Server Components и может быть скомпилирована в WebAssembly.
Как один профессор информатики из Монтаны стремится вытеснить реактивность, конкурировать с JavaScript, восстановить истинный REST и сделать веб более дружелюбным к разработчикам.
Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!
Только свежие новости программирования и технологий каждый день.
Комментарии