Brimstone: ES2025 JavaScript engine written in Rust
Разработчик представил Brimstone - новый JavaScript-движок, полностью написанный на Rust. Проект стремится создать альтернативу существующим движкам таким как V8 и SpiderMonkey, но с акцентом на безопасность и производительность за счет использования системы типов Rust и его современных возможностей. Rust обеспечивает безопасность памяти и потоков, что может снизить количество уязвимостей в движке по сравнению с традиционными реализациями на C++.
На данный момент проект находится на ранней стадии разработки, но уже демонстрирует потенциал для создания более безопасных и эффективных JavaScript-движков. Использование Rust для реализации движка JavaScript - это интересный тренд в индустрии, который также наблюдается в других проектах, таких как Deno и Boa, что указывает на растущий интерес к альтернативным языкам для критически важных компонентов веб-платформы.
Комментарии (103)
- Обсуждение началось с благодарности за включение проекта в список и запуск бенчмарков, но быстро перешло к сравнению размеров бинарников Brimstone и Boa, где последний оказался в 3,5 раза больше из-за включённых ICU-таблиц Unicode.
- Участники обсудили, что "написано на Rust" стало маркетинговым клише, и как оно влияет на восприятие проекта, а также затронули тему лицензий и отсутствия лицензии в репозитории.
- Разговор затронул вопросы безопасности памяти и использования unsafe в контексте Rust, где участники обменялись мнениями о том, что именно подразумевается под этим и как это соотносится с выбором языка программирования.
Boa: A standard-conforming embeddable JavaScript engine written in Rust 🔥 Горячее
Boa — это встраиваемый JavaScript-движок, полностью реализованный на языке программирования Rust. Проект с открытым исходным кодом предлагает разработчикам альтернативу для выполнения JavaScript-кода в различных приложениях с преимуществами безопасности и производительности, которые обеспечивает Rust. Движок стремится соответствовать стандартам ECMAScript, обеспечивая совместимость с современным JavaScript.
Проект активно развивается сообществом и уже поддерживает множество возможностей языка JavaScript, включая ES6+ функции. Boa позиционируется как легковесное решение для встраивания JavaScript в десктопные, веб и другие типы приложений. Его реализация на Rust обеспечивает безопасность памяти и потоков, что особенно важно для критически важных систем.
Комментарии (67)
- Boa — встраиваемый JavaScript-движок на Rust, разработанный командой мейнтейнеров, изначально созданный для использования в Servo.
- Текущая версия (v0.21) не полностью соответствует стандарту ECMAScript, проваливая около 900 из 50 000 тестов; разработчики рассматривают фиксацию конкретной версии стандарта для 100% соответствия.
- Проект позиционируется как альтернатива Lua для встраивания скриптов в Rust-приложения, с фокусом на безопасность и детерминированность, но не конкурирует напрямую с V8/SpiderMonkey по производительности.
- В бенчмарках Boa сравнивается с JIT-less версиями V8 и SpiderMonkey, но отсутствуют полные версии движков; пользователи отмечают отсутствие конкурентных сравнений как потенциальный недостаток.
- Основные сценарии использования включают встраиваемое выполнение JavaScript в нативных приложениях, замену Lua и создание скриптовых слоёв в фреймворках на других языках.
Why SSA Compilers?
SSA (Static Single Assignment) — это популярная форма промежуточного представления, используемая в большинстве современных компиляторов, включая LLVM, GCC, V8 и HotSpot. Её главная сила — в упрощении анализа и оптимизации программ. SSA преобразует императивный код с изменяемыми переменными в форму, где каждая переменная присваивается только один раз, что делает зависимости между значениями явными и легко отслеживаемыми.
Эта трансформация превращает программы с состоянием в комбинационные схемы без памяти, значительно упрощая оптимизации. Вместо отслеживания изменений переменных по всему коду компилятор может работать с чётко определёнными зависимостями. Например, программа с множественными присваиваниями одной переменной преобразуется в несколько переменных, каждая из которых имеет одно назначение, что позволяет легко находить и устранять избыточные вычисления.
Комментарии (84)
- Обсуждение разошлось в сторону: от обсуждения SSA как формы IR и её влияния на оптимизации, к дискуссии о том, что такое SSA, как она соотносится с CPS и какие у неё есть trade-off'ы, а также к тому, что именно делает SSA «особенной» и как она влияет на компиляторы и языки.
How we made JSON.stringify more than twice as fast 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (165)
JSON encoding is a huge impediment to interprocess communication in NodeJS.Sooner or later is seems like everyone gets the idea of reducing event loop stalls in their NodeJS code by trying to offload it to another thread, only to discover they’ve tripled the CPU load in the main