🚧 Attention, peinture fraîche !
Cette page a été traduite par une seule personne et n'a pas été relue et vérifiée par quelqu'un d'autre ! Les informations peuvent par exemple être erronées, être formulées maladroitement, ou contenir d'autres types de fautes.
Les outils que vous devriez connaître
Ceci est une compilation d'outils très intéressants que vous devriez connaître lorsque vous développez en Rust et WebAssembly.
Développement, compilation, et organisation des flux de travail
wasm-pack
| dépôt
wasm-pack
aspire à être un outil générique pour travailler et compiler le
WebAssembly avec Rust, qui interagira avec le JavaScript, sur le Web ou avec
Node.js. wasm-pack
vous aide à compiler et publier du WebAssembly généré par
Rust dans le registre de npm pour être utilisé avec n'importe quel autre paquet
JavaScript dans les systèmes que vous utilisez déjà.
Optimiser et manipuler des binaires .wasm
wasm-opt
| dépôt
L'outil wasm-opt
lit en entrée du WebAssembly, procède à des transformations,
des optimisations, et/ou fait des passes d'outillages dessus, et retourne
ensuite le WebAssembly en sortie. L'exécution sur des binaires .wasm
produits
par LLVM avec rustc
devrait généralement créer des binaires .wasm
qui sont
à la fois léger et qui devraient s'exécuter plus rapidement. Cet outil fait
partie du projet binaryen
.
wasm2js
| dépôt
L'outil wasm2js
compile du WebAssembly en "presque du asm.js". C'est
intéressant pour prendre en charge des navigateurs qui n'implémentent pas le
WebAssembly, comme Internet Explorer 11. Cet outil fait partie du projet
binaryen
.
wasm-gc
| dépôt
C'est un petit outil pour exécuter un ramasse-miettes sur un module WebAssembly
et enlève les exports, imports, fonctions et autres qui ne sont pas utiles.
C'est comme le drapeau de liaison --gc-sections
pour WebAssembly.
Vous ne devriez pas normalement avoir besoin de cet outil pour deux raisons :
rustc
a maintenant une version assez récente delld
qui supporte le drapeau--gc-sections
pour le WebAssembly. Il est activé automatiquement pour les compilations LTO.- L'outil en ligne de commande
wasm-bindgen
exécute automatiquementwasm-gc
pour vous.
wasm-snip
| dépôt
wasm-snip
remplace le corps d'une fonction WebAssembly par une instruction
unreachable
.
Peut-être que vous connaissez des fonctions que ne seront jamais utilisées à
l'exécution, mais que le compilateur ne peut pas le détecter à la compilation ?
Découpez-les ! Ensuite exécutez à nouveau wasm-gc
et toutes les fonctions
qu'elles seules utilisaient (qui ne devraient donc pas être appelées à
l'exécution) devraient aussi être enlevées.
C'est utile pour enlever de force les infrastructures de panique pour les compilations destinées à l'environnement de production sans débogage.
Inspecter des binaires .wasm
twiggy
| dépôt
twiggy
est un profileur de la taille de code pour les binaires .wasm
. Il
analyse l'arbre des appels pour répondre aux questions comme celles-ci :
- Pourquoi cette fonction est présente dans le binaire ? Par exemple, pour comprendre quelles sont les fonctions exportées qui les appellent indirectement ?
- Quelle est la taille totale de cette fonction ? Par exemple, quelle taille pourrait être économisée si je l'enlève et quelles fonctions deviendront inutilisables après ce nettoyage ?
Utilisez twiggy
pour alléger vos binaires !
wasm-objdump
| dépôt
Affiche des informations de bas-niveau sur un binaire .wasm
et sur chacune de
ses sections. Elle permet aussi de désassembler au format texte WAT. C'est
l'équivalent objdump
mais pour le WebAssembly. Il fait partie du projet WABT.
wasm-nm
| dépôt
Liste les symboles de fonctions importées, exportées, et privées qui sont
définies dans le binaire .wasm
. C'est comme nm
mais pour le WebAssembly.