Wasmtime 47 : GC et exceptions activés par défaut

Original : GC and Exceptions in Wasmtime

Pourquoi c'est important

Ces fonctionnalités élargissent significativement l'écosystème des langages compilables vers WebAssembly.

Bytecode Alliance a publié Wasmtime 47 le 20 juillet 2026, activant par défaut les propositions Wasm GC et Wasm Exceptions. Cette version, fruit de plusieurs années de travail, vise à faciliter l'intégration de langages supplémentaires dans WebAssembly.

La version 47 de Wasmtime, runtime WebAssembly rapide, sûr et portable, intègre désormais par défaut deux propositions majeures : Wasm GC et Wasm Exceptions.

Wasm GC permet aux langages utilisant un modèle objets-références (plutôt que pointeurs bruts) de déléguer la gestion mémoire au runtime, éliminant le besoin d'embarquer un collecteur dans chaque binaire .wasm. Cela réduit la taille des binaires et ouvre WebAssembly à de nombreux langages supplémentaires. Concrètement, les programmes Wasm peuvent désormais définir leurs propres types struct et array avec des relations de sous-typage.

Wasm Exceptions, de son côté, introduit des constructions throw/try/catch natives, supprimant les conventions d'appel personnalisées coûteuses que les toolchains devaient auparavant implémenter. Résultat : un chemin d'exécution normal sans surcharge et des binaires plus légers.

L'implémentation GC de Wasmtime repose sur un collecteur semi-space de style Cheney : le tas GC est divisé en deux moitiés, les objets vivants étant copiés lors de la collecte. L'allocation utilise un simple bump pointer, sans barrières de lecture ou d'écriture. Les références GC sont des index 32 bits, non des pointeurs natifs, réutilisant les mémoires linéaires WebAssembly pour le sandboxing.

Source

bytecodealliance.org — Lire l'original →