OxyMake: A Formally-Specified, Content-Addressable Workflow Engine

OxyMake est un moteur de workflow en Rust, spécifié formellement et contenu dans un binaire unique, qui remplace les horodatages de modification de fichiers peu fiables par le hachage BLAKE3 adressé par le contenu afin d'assurer une mise en cache robuste et multi-machines et d'éliminer les réexécutions intempestives tout en maintenant la compatibilité avec les pipelines de type Make existants.

Auteurs originaux : Emmanuel Sérié (CMAP, CNRS, École Polytechnique, Institut Polytechnique de Paris)

Publié 2026-06-24
📖 6 min de lecture🧠 Analyse approfondie

Auteurs originaux : Emmanuel Sérié (CMAP, CNRS, École Polytechnique, Institut Polytechnique de Paris)

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous dirigiez une compétition de cuisine massive s'étendant sur plusieurs jours. Vous avez un livre de recettes (le flux de travail ou workflow) qui vous explique comment transformer des ingrédients bruts en un festin final.

Autrefois, le chef de cuisine (les moteurs de workflow comme GNU Make ou les premières versions de Snakemake) décidait de recuire un plat en se basant sur une règle très simple : « Est-ce que l'horloge sur le bocal d'ingrédients a changé ? »

Cela revient à vérifier l'horodatage « Dernière modification » d'un fichier. Mais cette règle est défectueuse.

  • La fausse alerte : Si vous déplacez vos ingrédients dans une nouvelle cuisine, ou si vous les restaurez à partir d'une sauvegarde, les bocaux reçoivent de nouveaux horodatages même si la nourriture à l'intérieur est identique. Le vieux chef voit le nouveau temps, panique et recuit tout le repas à partir de zéro, gaspillant des heures de temps et d'énergie.
  • L'échec silencieux : À l'inverse, si vous remplacez la nourriture à l'intérieur d'un bocal sans changer l'étiquette du bocal (l'horodatage), le chef voit l'ancien temps, suppose que tout va bien et vous sert une nourriture rance ou avariée sans s'en rendre compte.

OxyMake est un nouveau moteur de cuisine super intelligent conçu pour corriger cela. Au lieu de regarder l'horloge sur le bocal, il goûte la nourriture (vérifie le contenu réel).

Voici comment fonctionne OxyMake, décomposé en concepts simples :

1. Le « Test de Goût » (Mise en cache par adresse de contenu)

Au lieu de demander « Quand cela a-t-il été touché pour la dernière fois ? », OxyMake demande : « De quoi cela est-il fait ? »
Il crée une « empreinte digitale » unique (un hachage cryptographique) pour chaque ingrédient, chaque étape de la recette et chaque outil utilisé.

  • Si vous copiez vos ingrédients dans une nouvelle cuisine, les empreintes restent les mêmes. OxyMake voit qu'elles n'ont pas changé et dit : « Pas besoin de cuisiner ; nous avons déjà le plat parfait. »
  • Si vous remplacez une tomate par une pomme de terre, l'empreinte change instantanément. OxyMake sait immédiatement que le plat est différent et ne cuit que la partie spécifique qui doit être modifiée.

Cela élimine les « réexécutions fantômes » (perdre du temps à cuisiner ce que vous avez déjà) et les « sorties périmées silencieuses » (servir une mauvaise nourriture parce que l'étiquette semblait correcte).

2. Le « Plan vs La Construction » (Architecture à trois graphes)

OxyMake réfléchit en trois couches, comme un architecte, un bâtisseur et un contremaître :

  • Le Plan (RuleGraph) : C'est votre livre de recettes. Il est abstrait. Il dit : « Préparez une soupe pour chaque légume. » Il ne sait pas encore de quels légumes il s'agit.
  • Le Plan de Construction (JobGraph) : OxyMake prend le plan et l'étend. « D'accord, nous avons des carottes, des pommes de terre et des oignons. Cela signifie que nous devons préparer trois soupes spécifiques. » Il détermine exactement ce qui doit être fait avant de commencer à cuisiner.
  • Le Chantier (ExecGraph) : C'est la cuisine réelle en cours. Il suit quelle marmite bout, laquelle est terminée et laquelle a brûlé.

Parce qu'OxyMake planifie tout à l'avance (en une fraction de seconde), il peut gérer d'énormes recettes comprenant des milliers d'étapes bien plus rapidement que les autres moteurs qui essaient de comprendre ce qu'ils font au fur et à mesure.

3. La Cuisine « Sans Patron » (Exécution sans démon)

La plupart des moteurs de workflow nécessitent un ordinateur central (un démon) pour surveiller la cuisine 24h/24 et 7j/7. Si le patron plante, la cuisine s'arrête.
OxyMake est différent. C'est comme une équipe de cuisiniers indépendants qui peuvent entrer et sortir de la cuisine à tout moment.

  • Revendication coopérative : Si deux cuisiniers essaient de saisir la même marmite, ils utilisent un protocole de poignée de main poli pour décider qui cuisine.
  • Aucun point de défaillance unique : Si un cuisinier part ou si son ordinateur plante, les autres prennent simplement le relais. Vous n'avez pas besoin d'un gestionnaire central pour maintenir la cuisine en marche.

4. Le « Traducteur Universel » (Exécution polyglotte)

Dans une cuisine normale, vous pourriez être contraint d'utiliser un seul type de couteau ou un seul langage. OxyMake est polyglotte.

  • Vous pouvez écrire la recette en TOML (un format de texte simple et propre), qui est facile à lire pour les humains et à comprendre instantanément pour les ordinateurs.
  • Mais la cuisine réelle peut se faire en Python, R, Shell scripts ou Julia. OxyMake ne se soucie pas de la langue parlée par le cuisinier ; il transmet simplement les ingrédients et récupère le plat fini.

5. Le « Registre Honnête » (Reproductibilité)

OxyMake tient un journal strict et immuable (un fichier de verrouillage appelé ox.lock).

  • Il enregistre exactement quels ingrédients ont été utilisés, ce que disait la recette et quel était le goût final du plat.
  • Même si vous revenez dans cette cuisine cinq ans plus tard, sur un ordinateur complètement différent, OxyMake peut regarder le journal et dire : « Oui, si nous suivons exactement ce chemin, nous obtiendrons exactement le même résultat. »
  • Il utilise même les mathématiques formelles (TLA+) pour prouver que son « protocole de poignée de main » pour les cuisiniers est sûr, garantissant que deux cuisiniers ne cuisinent jamais accidentellement le même plat ou ne se gênent pas.

Le Compromis : Vitesse vs Sécurité

L'article est très honnête sur un inconvénient :

  • Démarrage à froid (Cold Start) : La toute première fois que vous lancez une recette, OxyMake est légèrement plus lent que les anciens moteurs car il doit « goûter » (hacher) chaque ingrédient pour construire ses empreintes.
  • Exécution à chaud (Warm Run) : Mais une fois qu'il a fait cela, la deuxième fois que vous lancez la recette (ou si vous la lancez sur un autre ordinateur), il est beaucoup plus rapide et bien plus fiable. Il saute l'étape de la cuisine si les empreintes correspondent, là où les anciens moteurs pourraient être confus par les horodatages et tout recuire.

Résumé

OxyMake est un moteur de workflow qui arrête de deviner en fonction des horodatages et commence à vérifier le contenu réel de vos données. Il est construit avec un langage moderne et rapide (Rust), n'a pas besoin d'un patron central pour fonctionner, et tient un registre parfait et auditable de tout ce qu'il fait. Il échange un peu de temps de configuration initial contre des gains massifs en vitesse, en sécurité et en fiabilité lorsque vous exécutez vos flux de travail de manière répétée.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →