Что такое unifast?
unifast — высокопроизводительный компилятор Markdown и MDX с ядром на Rust. Встроенные проходы для GFM, санитизации, подсветки и оглавления.
unifast — высокопроизводительный компилятор Markdown и MDX с ядром на Rust. Он покрывает основные сценарии использования remark/rehype, реализуя возможности непосредственно как встроенные проходы, а не через совместимость с JS-плагинами.
Зачем нужен unifast?
Традиционные инструментарии Markdown вроде unified/remark/rehype мощны, но не лишены компромиссов:
Накладные расходы на производительность — многократные преобразования JS AST складываются, особенно при масштабировании.
Координация плагинов — порядок, совместимость и дублирование среди десятков плагинов.
Отсутствие встроенных возможностей — даже базовые задачи вроде GFM или санитизации требуют отдельных пакетов.
unifast использует иной подход:
Ядро на Rust — парсинг, преобразования и эмиссия происходят в нативном коде.
Встроенные проходы — типичные возможности (GFM, санитизация, подсветка, TOC) встроены, а не прикручены сверху.
Одна компиляция — один вызов компилирует Markdown в HTML со всеми применёнными функциями.
Ключевые возможности
| Возможность | Описание |
|---|---|
| CommonMark + GFM | Таблицы, списки задач, зачёркивание, автоссылки, сноски |
| Frontmatter | Извлечение метаданных в форматах YAML, TOML и JSON |
| MDX | JSX-выражения и импорты внутри Markdown |
| Диагностика | Точные диапазоны ошибок с сопоставлением по строкам и колонкам |
Встроенные проходы
Популярные плагины remark/rehype переписаны как нативные проходы на Rust. Никаких npm install и головной боли с порядком.
| Проход | Описание |
|---|---|
| Санитизация | Белый список HTML на основе схемы с безопасными значениями по умолчанию |
| Подсветка синтаксиса | Подключаемые движки (syntect, Shiki) |
| Оглавление | Автоматически извлекаемое дерево заголовков |
Поддержка платформ
unifast работает на нескольких платформах из единого ядра на Rust:
@unifast/node— биндинг для Node.js через N-API (napi-rs). Основная цель.@unifast/core— определения типов TypeScript, общие для всех пакетов.unifast(CLI) — интерфейс командной строки для скриптов и CI.WASM — поддержка браузеров и edge-рантаймов (второстепенная цель).
Чего нет в планах
unifast не является прямой заменой unified. Он не:
Исполняет существующие JS-плагины remark/rehype внутри ядра.
Предоставляет API-совместимость с экосистемой unified.
Зависит от разрешения модулей Node в горячем пути компиляции ядра.
Вместо этого он ориентирован на полноту сценариев использования — покрытие того, что нужно большинству проектов, без сложностей сборки конвейера из плагинов.