Astro представила Sätteri — быстрый обработчик Markdown и MDX на Rust

Команда Astro представила высокопроизводительный обработчик Markdown и MDX для JavaScript-экосистемы — Sätteri. Решение вошло в состав релиза Astro 7.0 в качестве основного обработчика по умолчанию. 

В основе Sätteri лежит язык Rust. Разработкой и поддержкой инструмента в рамках независимого коллектива Bruits занимается Erika — контрибьютор ядра Astro. По заявлению создателей фреймворка, общий прирост скорости сборки в Astro 7 составляет от 15% до 61%. Значительная часть этого ускорения достигнута благодаря переходу на Sätteri и переносу парсинга из JavaScript, а также комплексному обновлению экосистемы Astro 7 (включая нативный Rust-компилятор .astro и переход на Vite 8/Rolldown).

Причины ускорения сборки

Ранее для обработки и преобразования контента Markdown и MDX разработчики использовали цепочку unified, которая состояла из плагинов remark, rehype и большого количества сопутствующих библиотек. Этот процесс требовал последовательного запуска плагинов для обработки синтаксического дерева в среде JavaScript.

Sätteri решает эту задачу быстрее, поскольку переносит парсинг из JavaScript в среду выполнения Rust. Перевод сайтов документации Astro и Cloudflare на новый обработчик сократил время сборки каждого проекта более чем на минуту.

Архитектура и функциональность

Для разбора спецификации CommonMark обработчик использует pulldown-cmark, а для обработки MDX-выражений — Oxc. Инструмент поставляется в виде нативных бинарных файлов для различных платформ с резервным запуском через WebAssembly (WASM). Проверить работу Sätteri можно в браузере с помощью интерактивной песочницы на официальном сайте проекта.

Новый инструмент нативно поддерживает функции, которые раньше требовали установки отдельных плагинов. В список стандартных возможностей входят GitHub Flavored Markdown (GFM), умная пунктуация, директивы контейнеров, математические формулы, frontmatter, надстрочные и подстрочные индексы, а также вики-ссылки. Разработчики могут включать эти опции в конфигурации обработчика.

Создайте веб‑приложение и получите бонусы на его деплой в облако

В новом бесплатном курсе по JavaScript.

Подробнее →

Совместимость и миграция

Sätteri не поддерживает прямую работу с плагинами remark и rehype. При этом авторы спроектировали конвейер обработки расширяемым, чтобы системы могли существовать параллельно. Поскольку большинство пользователей фреймворка не применяют плагины unified, разработчики выбрали более легкую и быструю цепочку в качестве стандарта по умолчанию.

Для проектов без кастомных плагинов переход на Sätteri не требует изменений в коде. Если проект зависит от плагинов remark или rehype, их можно перенести на формат плагинов Sätteri MDAST или HAST либо остаться на unified с помощью пакета @astrojs/markdown-remark. Обновить проект можно с помощью стандартной команды npx @astrojs/upgrade.

В отличие от других быстрых обработчиков Markdown, таких как Bun.markdown на языке Zig, Sätteri сохраняет возможность расширения благодаря совместимости с форматом синтаксического дерева (AST) из экосистемы unified.

Инструмент распространяется по свободной лицензии MIT и доступен для установки через репозитории npm и crates.io.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев