Команда JavaScript for Devs подготовила перевод статьи о том, как инструменты JavaScript переживают сдвиг в сторону системных языков. Rust, Go и Zig уже не эксперимент, а основа нового поколения бандлеров, линтеров и компиляторов. Выясняем, почему экосистема сознательно уходит от JavaScript в собственных инструментах, какие выгоды это даёт и какие компромиссы приносит.
За последние пару лет мы стали свидетелями заметных изменений в экосистеме JavaScript: многие популярные инструменты для разработчиков были переписаны на системных языках программирования — таких как Rust, Go и Zig.
Этот переход принес впечатляющий прирост производительности и другие инновации, которые меняют сам подход к созданию приложений на базе JavaScript.
В этой статье мы рассмотрим движущие силы этой революции, её последствия для всей экосистемы, а также самые значимые проекты, которые находятся в авангарде изменений.
Почему происходит этот сдвиг в инструментах JavaScript?
Переход к созданию инструментов JavaScript на системных языках — это ответ на реальное и нарастающее давление внутри экосистемы. Хотя движки JavaScript за последние годы стали поразительно быстрыми, сам язык изначально не предназначался для задач с высокой нагрузкой на CPU.
Современные JavaScript-приложения — это уже не несколько скриптов, а разросшиеся кодовые базы с тысячами зависимостей, сложными графами модулей и обширными пайплайнами сборки.
Инструменты, написанные на JavaScript, которые раньше были «достаточно хороши», теперь с трудом справляются с нагрузкой. В результате — медленные сборки, тормозящие редакторы и мучительно долгие циклы обратной связи.
Именно здесь на сцену выходят такие языки, как Rust и Go. Они обеспечивают нативную производительность, более эффективное управление памятью и развитую поддержку конкурентности — всё это позволяет создавать инструменты, которые не просто быстрее, но и надёжнее, и лучше масштабируются.
Особенно выделяется Rust — с его почти культовой аудиторией он стал языком выбора для значительной части этой новой волны. Рост его популярности вдохновил новое поколение разработчиков, для которых критически важны корректность, скорость и пользовательский опыт. Это запустило позитивный цикл: появляется всё больше инструментов, а инновации происходят всё быстрее.
Всё это указывает на более широкое осознание внутри мира JavaScript: если мы хотим, чтобы инструменты масштабировались вместе с требованиями современной разработки, нам придётся смотреть за пределы самого JavaScript.
Изучаем новое поколение инструментов JavaScript
Рассмотрим некоторые из самых влиятельных и перспективных инструментов, которые переосмысливают опыт разработки на JavaScript: SWC, ESBuild, BiomeJS, Oxc, FNM/Volta и TypeScript на Go.
1. SWC
SWC стал одним из первых крупных инструментов для JavaScript, написанных не на самом JavaScript, а на другом языке — Rust, тем самым задав шаблон, которому позже последовали многие.
По своей сути это высокопроизводительная платформа для транспиляции, бандлинга, минификации и трансформации JavaScript/TypeScript с использованием WebAssembly.
Он во многом успешно выполнил задачу стать полной заменой Babel «из коробки», обеспечивая скорость транспиляции до 20 раз выше при сохранении широкой совместимости с большинством конфигураций Babel.
2. ESBuild
В то время, когда большинство инструментов для разработчиков всё ещё писались на JavaScript, идея использовать системные языки вроде Go или Rust воспринималась скорее как эксперимент, чем как устоявшийся подход.
Но ESBuild всё изменил. Во многом именно он запустил более широкую волну интереса к созданию быстрых, низкоуровневых инструментов, способных радикально улучшить опыт разработчиков.
Созданный Эваном Уоллесом (бывшим CTO Figma), ESBuild изначально проектировался как замена устаревшим бандлерам вроде Webpack и Rollup — более быстрая и простая альтернатива. Благодаря архитектуре на Go он обеспечивает прирост производительности в 10–100 раз в задачах бандлинга, минификации и транспиляции.
Его скорость, минимальная настройка и современная архитектура повлияли на целое поколение инструментов и изменили ожидания от того, каким должен быть JavaScript-инструментарий. Именно поэтому на сегодняшний день ESBuild остаётся самым распространённым инструментом не на JavaScript — с более чем 50 миллионами загрузок в неделю на NPM.

3. BiomeJS
BiomeJS — амбициозный проект на Rust, объединяющий форматирование кода и линтинг в единую высокопроизводительную цепочку инструментов для JavaScript.
Изначально это был форк ныне закрытого проекта Rome, однако BiomeJS обеспечивает существенный прирост производительности по сравнению с устоявшимися решениями:
форматтер примерно в 25 раз быстрее Prettier;
линтер более чем в 15 раз быстрее ESLint;
благодаря многопоточной архитектуре Rust достигается впечатляющий прирост скорости (до ~100 раз в зависимости от железа).
BiomeJS упрощает процесс разработки, объединяя эти возможности в единую систему конфигурации и избавляя от необходимости поддерживать несколько отдельных инструментов с пересекающейся ответственностью.
Хотя по поддержке языков и расширяемости он пока догоняет более зрелые аналоги, для тех, кто ищет лучшую производительность и более простой инструментарий, BiomeJS становится всё более привлекательным выбором.
4. Oxc
Oxc — более новый игрок на рынке, представляющий собой набор инструментов для JavaScript на Rust с фокусом на линтинг, форматирование и трансформацию JavaScript/TypeScript-кода.
Он является частью проекта VoidZero, основанного Эваном Ю (создателем Vue.js и Vite), и задуман как фундамент для следующего поколения инструментов JavaScript.
Ключевые возможности Oxc включают:
парсер JavaScript, который в 3 раза быстрее SWC;
трансформер TypeScript/JSX, работающий в 20–50 раз быстрее Babel;
линтер, совместимый с ESLint, но значительно более быстрый (~50–100 раз).
oxlint стал для нас в Shopify огромным шагом вперёд. Наш прежний линтинг выполнялся 75 минут, поэтому мы распараллеливали его на более чем 40 воркеров в CI. Для сравнения, oxlint проверяет тот же код за примерно 10 секунд на одном воркере, а вывод стал гораздо понятнее. При миграции мы даже нашли несколько багов, которые раньше были скрыты или пропущены!
— Джейсон Миллер, создатель Preact
5. FNM / Volta
Управление версия��и Node.js заметно улучшилось благодаря таким инструментам, как Fast Node Manager (fnm) и Volta — достойным альтернативам NVM. Ещё один вариант — Mise, который поддерживает Node.js наряду со многими другими инструментами разработки.
Эти инструменты на Rust обеспечивают существенно более быстрое время инициализации shell, полноценную кроссплатформенную поддержку и гораздо меньший расход памяти.
Они решают давние проблемы NVM — медленный запуск и отсутствие поддержки Windows — и при этом добавляют удобства вроде переключения версий на уровне проекта и прозрачного управления глобальными пакетами.
6. TypeScript на Go
Пожалуй, самым неожиданным событием последних месяцев стала работа Microsoft над переносом компилятора TypeScript на Go.
Хотя проект всё ещё находится в активной разработке, предварительные бенчмарки уже показывают впечатляющие результаты: ускорение сборок примерно в 10 раз (на кодовой базе VS Code), более быстрый запуск редактора и снижение потребления памяти.
Этот нативный порт решает проблемы масштабирования TypeScript в крупных кодовых базах, где раньше разработчикам приходилось выбирать между отзывчивостью редактора и богатой обратной связью от системы типов.
Некоторые восприняли выбор Go вместо Rust как упущенную возможность — учитывая доминирование Rust в современных инструментах JavaScript, — однако объяснение этого решения хорошо согласуется с практическими целями проекта:
Существующая кодовая база делает определённые предположения — в частности, она исходит из наличия автоматической сборки мусора, — и это сильно ограничило наш выбор. По сути, это сразу исключило Rust. Да, в Rust есть управление памятью, но оно не автоматическое: можно использовать подсчёт ссылок или что-то подобное, но поверх этого появляется borrow checker и довольно жёсткие ограничения на владение структурами данных. В частности, он фактически запрещает циклические структуры данных, а у нас почти все структуры данных сильно цикличны.
— Андерс Хейлсберг, создатель TypeScript
Microsoft планирует выпустить реализацию на Go в составе TypeScript 7.0 в ближайшие месяцы, однако нативные превью-версии уже доступны для экспериментов.
Последствия для будущего инструментов JavaScript
Помимо очевидного прироста производительности, рост нативных инструментов для JavaScript несёт более глубокие, системные последствия для всей экосистемы.
Поскольку многие существующие и новые инструменты теперь опираются на совершенно иные рантаймы и экосистемы, участие в их разработке становится менее доступным для большинства JavaScript-разработчиков.
Одновременно с этим сдвиг может повлиять и на то, какие навыки разработчики в принципе выбирают для развития. Хотя писать код системного уровня требуется далеко не всем, понимание того, как работают эти языки и какие возможности они открывают, будет стимулировать появление ещё более инновационных инструментов в ближайшие годы.
Неудивительно, что, несмотря на более высокий порог входа при изучении Rust или Zig, разработчики в подавляющем большинстве предпочитают более быстрые инструменты — даже если в них сложнее вносить вклад.

Ещё один менее заметный, но важный компромисс — утрата dogfooding, когда создатели инструментов перестают использовать собственный язык для разработки этих же инструментов. Исторически это помогало им лучше чувствовать опыт разработчиков, который они формируют.
Переход на другой язык реализации может ослабить этот контур обратной связи. И хотя многие проекты осознают этот риск, долгосрочные последствия отсутствия dogfooding по-прежнему остаются открытым вопросом.
Другие инструменты
Рассмотренные здесь инструменты — лишь небольшая часть растущей экосистемы высокопроизводительных инструментов для разработчиков с нативной реализацией, и импульс, стоящий за этой новой волной, невозможно не заметить.
Среди других заметных инициатив в этом пространстве — Turbopack и Turborepo (от Vercel), Dprint (альтернатива Prettier), а также полноценные рантаймы вроде Bun (написан на Zig) и Deno (Rust). Все они по-новому переосмысливают возможное, перестраивая инфраструктуру JavaScript с самого фундам��нта.
В совокупности эти инструменты отражают более широкий сдвиг в мире JavaScript и ясно показывают: будущее инструментов JavaScript пишется на Rust, Go, Zig и языках, которые придут следом.
Подводя итог
В этом материале мы рассмотрели несколько инструментов, которые формируют новую волну производительности и инноваций в экосистеме JavaScript.
Революция производительности в инструментах JavaScript — наглядный пример эволюции целой экосистемы.
Вместо того чтобы мириться с ограничениями самого JavaScript, сообщество прагматично приняло другие языки и тем самым раздвинуло границы возможного.
Русскоязычное JavaScript сообщество

Друзья! Эту статью перевела команда «JavaScript for Devs» — сообщества, где мы делимся практическими кейсами, инструментами для разработчиков и свежими новостями из мира Frontend. Подписывайтесь, чтобы быть в курсе и ничего не упустить!
Комментарии (16)

MountainGoat
12.01.2026 15:03Очень часто компилируемые языки, и не С++, выбирают только за возможность статической компиляции. Когда у тебя ровно 1 файл, который запустится в любой современной среде без всякой подготовки, это очень полезно как для автоматизации сборки, так и наоборот для пользователей-нубов.
Я сейчас прям пишу простейшую утилиту, которая 2 файла перекладывает с места на место, для нубов. И пишу я её на Расте, а не на Питоне, именно для того, чтобы иметь 1 файл, который можно скачать и запустить и увидеть одинаковый GUI на любом линуксе, и даже на винде.

Arkaim23
12.01.2026 15:03Осталось выпилить главную загвоздку - морально устаревший джаваскрипт. Нужно сделать волевое усилие и отказаться от нытья по поводу того, что «а если мы выкинем обратную совместимость, то полынтырнета рухнет». Да и пусть рухнет к чертям собачьим - рынок и так рухнул из-за потоков вкатунов и прочей нечисти.

MountainGoat
12.01.2026 15:03/me встал в позу "богатырь на пригорке" и безнадёжно ищет на горизонте альтернативу.
Не, правда, а на что менять? Lua, Python? Это будет, как говорил мой дедушка Ирико, "менять шиш на кокуй". Они может в чём-то и лучше, но не настолько, чтобы это стоило усилий.
Пусть лучше потоки в JavaScript завезут, и по возможности TypeScript насаждают.

Alexandroppolus
12.01.2026 15:03Осталось выпилить главную загвоздку - морально устаревший джаваскрипт
Его давно выпилили, сейчас на голом JS, мимо тайпскрипта, никто не пишет

NextKolya
12.01.2026 15:03Полностью согласен. Это главная проблема js - наследие. Пусть интернет сам подстраивается под обстоятельства.
Какое бы счастье внесли статические типы, но конечно же нельзя сломать интернет.
Массив arguments, нестрогое равенство (сейчас используются осознанно только минификаторами для `null == undefined`), не строгий режим - почти самый большой багаж js, и это только начало устаревших возможностей js

cmyser
12.01.2026 15:03Многие фреймворки и пакеты страдают от лишней работы
Тот же реакт
И так во многом в вебе, но можно и качественно писать так на TS , что и переписывать будет не нужно

skthn
12.01.2026 15:03С каких пор go стал системным? Где вы видели системный язык со сборкой мусора?
И, таки да, лучше уж вообще отказаться от js. Завезли же вебассембли. Добавить доступ к DOM и всё, пиши на чем хочешь.
AccountForHabr
Eat your own dog food уже не работает?
MountainGoat
Eat your own dog food никогда не работал, если у тебя команда собак, а делаешь ты шоколадные печенья для детей.
AccountForHabr
Откуда дровишки?
MountainGoat
Наука сказала.
AccountForHabr
Похоже вы пытаетесь шутить не зная историю термина. Выглядит не очень.