Rust-компилятор Astro 7 обещает сборку быстрее на 15–61% — но не для всех

Astro 7 переписала компилятор .astro на Rust (oxc и Lightning CSS) и заменила весь стек remark/rehype для маркдауна собственным Rust-движком. Заголовки обещают ускорение сборки, но тред в основном обсуждал поломки при обновлении.

Вкратце

Переделка глубокая: движок рендеринга ускорился примерно в 2,4 раза, а Astro перешла на Vite 8 с новым бандлером Rolldown — команда заявляет ускорение в 10–30 раз по сравнению с Rollup. Некоторые сайты теперь собираются больше чем вдвое быстрее, чем на v6.

Но тред заметил нюансы: строгая компиляция HTML падает с ошибкой на незакрытых тегах, а значит блокирует апгрейд сайтов с неаккуратным внешним контентом. У одного разработчика сборка не ускорилась, а слегка замедлилась. Инженер, написавший новый Rust-компилятор, сам отвечает на вопросы в треде.

Внутри переписывания: новый компилятор и самодельный движок маркдауна

Анонс Astro 7.0
Анонс Astro 7.0

Astro 7.0 переписывает внутреннюю «сантехнику» проекта на Rust. Ощутимее всего это сказалось на времени сборки: вот собственный бенчмарк команды на M4 Pro.

Сайт Astro 6 Astro 7
astro.build 62.70s 24.24s
docs.astro.build 114.54s 73.53s
tauri.app 86.12s 55.33s
biomejs.dev 176.39s 149.90s
developers.cloudflare.com 386.89s 261.94s
aspire.dev 385.84s 326.11s

Второе крупное изменение незаметно, пока не сломает что-нибудь. Astro отказалась от стека unified/remark/rehype в пользу собственного Rust-процессора Sätteri (pulldown-cmark для CommonMark, Oxc для MDX), забрав в ядро поддержку GFM, математики, ID заголовков, умной пунктуации и вики-ссылок. Переписанный компилятор больше не чинит вашу разметку молча: незакрытые теги и незавершённые атрибуты теперь выбрасывают ошибку, а пробелы между инлайн-элементами схлопываются по правилам JSX. Также в релизе: совместимый с Hono конвейер запросов через новый src/fetch.ts, стабильное кеширование маршрутов и AI-режим, в котором astro dev работает в фоне и пишет структурированные JSON-логи; команда называет это самым востребованным пунктом в дорожной карте.

Налог на обновление, о котором никто не предупредил

Переход на Rust принёс более строгий компилятор, и именно здесь появились первые жалобы. Astro больше не исправляет разметку автоматически, а это проблема, если разметку чинить не вам.

«Переход на строгую компиляцию HTML попросту не крут: он реально мешает обновлять сайты, которым приходится иметь дело с внешним контентом, написанным не по строгим правилам HTML». — разработчик, которому приходится рендерить внешний контент

Замена движка маркдауна вызвала похожее беспокойство, но с другой стороны: ради скорости Astro оставляет позади экосистему rehype.

«Менять широко поддерживаемый unified/rehype на свои, несовместимые с rehype инструменты только ради скорости сборки: довольно печально. Хорошо, что оставили способ продолжать использовать rehype, но не уверен, что он продержится долго». — разработчик, зависящий от плагинов rehype

Инженер, который всё это написал, сам отвечает на вопросы

Автор нового конвейера пришёл в тред принимать удар лично:

«Это я сделал Rust-компилятор и Rust-конвейер для маркдауна в этом релизе. Если есть вопросы, спрашивайте, с радостью отвечу на всё!» — инженер, создавший Rust-компилятор Astro 7 и Sätteri

Не все цифры сдвинулись в обещанную сторону. Апгрейд одного разработчика пошёл вразрез с заголовками релиза:

«Я недавно обновил свой сайт, и это круто! Тем не менее… мои сборки не ускорились (в среднем они даже немного замедлились)». — разработчик, у которого обновление замедлило сборку

Менее заметную победу приняли теплее: число зависимостей упало с 247 в v6 до 190 в v7, и разработчик, который отслеживал эти цифры расценил это как знак, что экосистема JS наконец-то худеет.

Значит ли «7» в номере версии семь ломающих изменений?

За списком новых возможностей пряталось постоянное беспокойство насчёт темпа Astro. Каждый мажорный релиз ускоряет сборку и приносит с собой миграцию.

«Значит ли номер v7, что уже было 7 ломающих изменений? То есть если я начал проект на v1, мне пришлось переделывать его 6 раз? Если да, то эта нестабильность меня всерьёз беспокоит». — разработчик, который решает, стоит ли переходить на Astro

Другой только что закончил переезд на Astro 6, когда вышла версия 7. Если вы поддерживаете сайт на Astro, вот реальная цена этого релиза: сборка стала быстрее, и за это снова придётся заплатить при следующем мажорном обновлении.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 21 из 29 Читать дальше
🚀Tech

Первокурсник собрал сайт по «списку Ильи» — источник списка потерялся

notmcrowley, первокурсник факультета computer science в Trinity College Dublin, сделал сайт 30papers.com, потому что тратил лимит Claude на одни и те же базовые вопросы об известных статьях по машинному обучению. А читатели тут же спросили очевидное: есть ли вообще доказательства, что список составил именно Илья Суцкевер?

★ 387 · 💬 63 · 30papers.com · 3 мин