Что такое 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
MDXJSX-выражения и импорты внутри 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 в горячем пути компиляции ядра.

Вместо этого он ориентирован на полноту сценариев использования — покрытие того, что нужно большинству проектов, без сложностей сборки конвейера из плагинов.