Skip to content

feat(rust): start native runtime migration - #78

Draft
hoklims wants to merge 9 commits into
mainfrom
feat/rust-migration
Draft

hoklims wants to merge 9 commits into
mainfrom
feat/rust-migration

Conversation

@hoklims

@hoklims hoklims commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Cette PR amorce la migration complète d’AssertLedger vers Rust, avec maintien prévu du package npm et du SDK JavaScript. Elle reste en brouillon : la migration complète n’est pas terminée et le runtime public utilise encore TypeScript.

Le code Rust couvre la canonicalisation, les décisions et la relecture des preuves v1 à v5, les profils et benchmarks v1, ainsi que la supervision des processus. Une liaison Node-API et une façade interne servent aux comparaisons avec le comportement JavaScript. Les 14 cas du corpus publié sont exécutés intégralement, avec contrôle des bytes figés ; les attentes et schémas publiés restent inchangés.

La supervision conserve les arguments littéraux, les budgets de sortie, les digests des flux complets, le refus du crédit pour les timeouts et les erreurs d’infrastructure, ainsi que le caractère explicitement non isolé de trusted-local. La CI native couvre Windows, Linux et macOS avec Node 22 et 24.

Validation locale sous Windows, Rust 1.95 :

  • pnpm check : 886 tests existants passent ; leur code TypeScript, leurs fixtures et leurs dépendances restent inchangés après les corrections Rust.
  • pnpm run check:rust : format, Clippy avec refus des warnings, 22 tests Rust et 11 tests JavaScript de comparaison passent.
  • Dix témoins négatifs sur le commit final : refus du crédit de timeout, intégrité du corpus, erreur de capture, ordre UTF-16, getters de tableau, propagation d’un code non nul, couverture du contrôle de formatage, débordement des durées, sélection de l’artefact avec un répertoire Cargo alternatif et refus explicite des tableaux Proxy. Chaque défaut provoque un échec ; la version restaurée passe. Ces contrôles sont limités à cette première partie et ne constituent pas une preuve couvrant toute la migration ; les refus ne sont pas présentés comme des assertions détectant une cible.

La façade de développement conserve deux limites explicites : profondeur JSON de 128 niveaux et refus des tableaux Proxy. Leur compatibilité complète fait partie des obligations avant bascule du SDK public.

Le contrat de fin et les limites figurent dans docs/rust-migration.md. Restent notamment les parsers et objets Zod publics, snapshots et fermeture des imports, adaptateurs Node/Bun et conteneurs, qualification et corpus, callbacks/handles, bascule CLI/MCP/SDK et distribution npm des binaires. Aucun merge, release ni changement du runtime installé n’est inclus.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant