unifast とは

unifast は、Rust コアを備えた高性能な Markdown / MDX コンパイラです。GFM、サニタイズ、ハイライト、TOC を組み込みパスとして提供します。

unifast は、Rust コアを備えた高性能な Markdown および MDX コンパイラです。JS プラグイン互換ではなく、機能を組み込みパスとして直接実装することで、remark/rehype の主要なユースケースをカバーします。

なぜ unifast なのか

unified/remark/rehype などの従来の Markdown ツールチェーンは強力ですが、次のようなトレードオフがあります。

  • パフォーマンスのオーバーヘッド - 複数の JS AST 変換が積み重なり、特に大規模な処理で顕著になる。

  • プラグインの調整 - 数十ものプラグイン間で順序、互換性、重複に悩まされる。

  • 組み込み機能がない - GFM やサニタイズのような基本的な処理でも、個別のパッケージが必要となる。

unifast は異なるアプローチを取っています。

  • Rust コア - パース、変換、出力のすべてをネイティブコードで実行する。

  • 組み込みパス - よく使われる機能 (GFM、サニタイズ、ハイライト、TOC) は後付けではなく、最初から組み込まれている。

  • 単一のコンパイル - 1 回の呼び出しで Markdown を HTML にコンパイルし、すべての機能を適用する。

主な機能

機能説明
CommonMark + GFMテーブル、タスクリスト、取り消し線、自動リンク、脚注
FrontmatterYAML、TOML、JSON のメタデータ抽出
MDXMarkdown 内での JSX 式と import
診断行・列のマッピング付きの正確なエラー範囲

組み込みパス

よく使われる remark/rehype プラグインは、ネイティブの Rust パスとして再実装されています。npm install も順序の悩みも不要です。

パス説明
サニタイズ安全なデフォルトを備えたスキーマベースの HTML 許可リスト
シンタックスハイライトプラガブルなエンジン (syntect、Shiki)
目次見出しツリーの自動抽出

対応プラットフォーム

unifast は単一の Rust コアから複数のプラットフォームで動作します。

  • @unifast/node - N-API (napi-rs) による Node.js バインディング。メインのターゲット。

  • @unifast/core - すべてのパッケージで共有される TypeScript の型定義。

  • unifast (CLI) - スクリプトや CI 向けのコマンドラインインターフェース。

  • WASM - ブラウザおよびエッジランタイムへの対応 (セカンダリターゲット)。

目的としないこと

unifast は unified の ドロップイン置き換えではありません。次のことは行いません。

  • 既存の remark/rehype JS プラグインをコア内で実行すること。

  • unified エコシステムとの API 互換性を提供すること。

  • コアのコンパイルパスで Node のモジュール解決に依存すること。

その代わり、ユースケースの網羅性 を重視しています。プラグインパイプラインを組み立てる複雑さを伴うことなく、ほとんどのプロジェクトが必要とする機能をカバーします。