Projet open source
bruits/satteri avatar
bruits/satteri

Sätteri : Traitement haute performance de Markdown et MDX

Traitement Markdown et MDX hautes performances pour l'écosystème JavaScript.

1 257 étoiles34 forksRustMIT

En bref

De quoi s’agit-il ?
Un pipeline basé sur Rust qui analyse et compile Markdown et MDX, avec prise en charge des plugins JavaScript.
À qui s’adresse-t-il ?
Sätteri est distribué sous la licence MIT, sans garantie ni responsabilité comme indiqué dans le texte de la licence.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 2 jours.
En quel langage est-il écrit ?
Principalement Rust, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Ce que fait Sätteri

Sätteri est un outil de traitement haute performance pour Markdown et MDX qui analyse et compile le contenu en Rust tout en permettant aux plugins de s'exécuter en JavaScript. Selon son README, le pipeline gère l'analyse, la conversion et la compilation. Le projet est un monorepo Rust + TypeScript sous l'organisation Bruits, avec une page d'accueil à satteri.bruits.org. Le README dirige les utilisateurs vers le site de documentation pour les instructions d'installation, la référence API et les exemples d'utilisation, et indique un terrain de jeu en ligne pour essayer l'outil.

La séparation entre le pipeline Rust et les plugins JavaScript vise un compromis clair : la partie analyse et compilation profite d’un cœur natif, alors que les transformations restent accessibles depuis l’écosystème web. Le README ne décrit pas les coûts de conversion entre arbres ni la compatibilité exacte de chaque extension ; ces points ne doivent pas être déduits des seuls noms de crates.

Architecture

Le pipeline de traitement est principalement implémenté en Rust, avec des liaisons NAPI exposant le pipeline à JavaScript. Cette conception permet à l'analyse et à la compilation gourmandes en CPU de s'exécuter en Rust tandis que les auteurs de plugins peuvent écrire des transformations en JavaScript, un langage familier à de nombreux développeurs web. Le monorepo contient sept crates Rust et trois packages npm, chacun avec un rôle ciblé. Le crate `satteri-napi-binding` fournit le pont entre Rust et JavaScript. Le README ne détaille pas l'architecture interne au-delà des descriptions des crates.

Pour une intégration Vite, le point d’entrée le plus concret est `vite-plugin-satteri`, qui importe les fichiers `.md` et `.mdx`. Pour une intégration plus bas niveau, les crates `satteri-ast` et `satteri-plugin-api` donnent les repères annoncés. Il faut comparer la sortie avec celle attendue, tester un bloc MDX et consulter la documentation officielle pour les options que le README ne détaille pas.

Paquets

Les crates Rust incluent le crate principal `satteri` pour l'API pipeline de haut niveau, `satteri-arena` pour l'allocation arène, `satteri-ast` pour les types et opérations MDAST et HAST, `satteri-plugin-api` pour le trait Plugin Rust et l'exécuteur, `satteri-napi-binding` pour les liaisons NAPI, `satteri-mdxjs-rs` pour la compilation MDX (un fork de mdxjs-rs adapté pour OXC), et `satteri-pulldown-cmark` pour l'analyse CommonMark avec extensions MDX (un fork de pulldown-cmark). Les packages npm sont `satteri` (couche TypeScript), `satteri-expressive-code` (plugin HAST pour les blocs de code) et `vite-plugin-satteri` (plugin Vite pour importer des fichiers .md et .mdx). Tous sont publiés dans leurs registres respectifs, avec des badges de version dans le README.

Système de plugins

Sätteri prend en charge les plugins écrits à la fois en Rust et en JavaScript. En Rust, le crate `satteri-plugin-api` définit un trait `Plugin` ainsi que des visiteurs typés et un exécuteur. Les plugins JavaScript sont écrits à l'aide de la couche TypeScript fournie par le package npm `satteri`. Le README ne spécifie pas l'interface de l'API des plugins JavaScript, mais renvoie à la documentation pour plus de détails. Les étapes du pipeline sont l'analyse, la conversion et la compilation, bien que le README n'explique pas comment les plugins s'intègrent à chaque étape. La conception du projet est influencée par l'écosystème unifiedjs.

Remerciements

Le README remercie explicitement plusieurs projets open source sur lesquels Sätteri s'appuie. Il cite unifiedjs, l'écosystème d'outils de traitement de contenu avec arbres syntaxiques (y compris remark et rehype). Il utilise des forks de pulldown-cmark pour l'analyse CommonMark et de mdxjs-rs par Titus Wormer pour la compilation MDX. Le fork du compilateur MDX adapte pulldown-cmark et OXC, un analyseur et compilateur JavaScript en Rust. La conception de l'interopérabilité haute performance entre Rust et JavaScript a été inspirée par Lightning CSS. Un remerciement spécial est adressé à l'équipe OXC et au projet Lightning CSS.

Licence et état du dépôt

Sätteri est sous licence MIT, comme indiqué dans l'extrait LICENSE. La licence permet l'utilisation, la modification, la distribution et la sous-licence libres, à condition que l'avis de droit d'auteur soit inclus. Le logiciel est fourni « en l'état » sans aucune garantie, et les auteurs ne sont pas responsables des réclamations ou dommages. D'après les métadonnées du dépôt, le projet compte 1 112 étoiles, 29 forks et 22 problèmes ouverts. Il n'est pas archivé. Le README ne mentionne pas de numéros de version ou de dates de publication spécifiques ; la documentation de la page d'accueil doit être consultée pour obtenir les informations de version actuelles.

Contrôle propre au dépôt · bruits satteri

Le contrôle doit rester attaché à satteri. La séparation entre le pipeline Rust et les plugins JavaScript vise un compromis clair : la partie analyse et compilation profite d’un cœur natif, alors que les transformations restent accessibles depuis l’écosystème web. Le README ne décrit pas les coûts de conversion entre arbres ni la compatibilité exacte de chaque extension ; ces points ne doivent pas être déduits des seuls noms de crates.

Conclusion éditoriale

Sätteri est distribué sous la licence MIT, sans garantie ni responsabilité comme indiqué dans le texte de la licence.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté