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 и создание скриптовых слоёв в фреймворках на других языках.
Who needs Graphviz when you can build it yourself? 🔥 Горячее
Команда SpiderMonkey разработала новый инструмент для визуализации компиляции JavaScript и WebAssembly, создав собственный алгоритм расположения графов вместо использования Graphviz или Mermaid. Когда оптимизирующий компилятор Ion активен, система генерирует интерактивные графики, показывающие обработку и оптимизацию функций. Пользователи могут писать JavaScript-код и видеть в реальном времени, как изменяется граф, с возможностью навигации, масштабирования и просмотра различных этапов оптимизации.
Автор статьи не был удовлетворен выводом существующих инструментов, которые не отражали структуру исходного кода и создавали нестабильные макеты. Новый алгоритм, реализованный менее чем в 1000 строк кода, прост, быстр и produces высококачественный результат. Он учитывает специфические ограничения графов управления потоком, такие как наличие хорошо определенных циклов и необратимость потока управления, что позволяет создавать более интуитивные визуализации.
Для разработки автор изучал алгоритм Сугиямы, используемый в Graphviz, но создал собственное решение, специально адаптированное под нужды компилятора. Интерактивный инструмент значительно упрощает анализ и отладку сложных графов компиляции, позволяя отслеживать инструкции и блоки кода на разных этапах оптимизации.
Комментарии (95)
- Обсуждение показало, что специализированные решения для визуализации превосходят универсальные инструменты вроде Graphviz, но сообщество продолжает использовать последние из-за инерции и отсутствия альтернатив.
- Участники жалуются на то, что Graphviz и подобные инструменты не справляются с задачами даже средней сложности, и что их использование часто требует ручной доводки.
- Проект Microdiagram нацелен на создание DSL для каждого типа диаграмм вместо одного языка для всех типов диаграмм.
- Обсуждение также затронуло вопросы производительности и надежности инструментов, а также то, что сгенерированные ими диаграммы не всегда читаемы без дополнительной ручной работы.
- Участники поделились ссылкой на исходники на GitHub, где можно найти код, который может быть использован как стартовая точка для собственных экспериментов в этой области.