WebAssembly.Module.customSections()

La méthode WebAssembly.customSections() renvoie un tableau qui contient les sections personnalisées (custom sections) disponibles dans un module WebAssembly et qui ont un nom donné.

Syntaxe

var custSec = WebAssembly.Module.customSections(module, nomSection);

Paramètres

module
L'objet WebAssembly.Module pour lequel on veut obtenir les sections personnalisées.
nomSection
Le nom de la section personnalisée qu'on souhaite obtenir.

Valeur de retour

Un tableau contenant des ArrayBuffer dont chacun contient les données d'une section personnalisée du module qui correspond à nomSection.

Exceptions

Si le module passé en argument n'est pas une instance de WebAssembly.Module, la méthode lèvera une exception TypeError.

Les sections personnalisées

Un module wasm contient une série de sections. La plupart de ces sections sont spécifiées et validées par la spécification WebAssembly mais les modules peuvent contenir certaines sections « personnalisées » (custom sections) qui sont ignorées lors de la phase de validation. Pour plus d'informations, consulter l'article sur les structures de haut niveau qui détaille la structure des sections et les différences entre les sections normales (« connues ») et les sections personnalisées.

Cela permet aux développeurs d'inclure des données personnalisées dans un module WebAssembly pour d'autres desseins. Par exemple, on peut avoir une section personnalisée name, qui permet aux développeurs de fournir des noms pour les fonctions et les variables locales du module (à la façon des « symboles » utilisé pour les programmes compilés).

Le format WebAssembly ne possède actuellement aucune syntaxe pour ajouter une section personnalisée. Il est toutefois possible d'ajouter une section nommée au module wasm pendant la conversion du texte vers .wasm. La commande wast2wasm, disponible avec l'outil wabt, possède une option --debug-names qui permet de créer un module .wasm avec une section personnalisée name :

wast2wasm simple-name-section.was -o simple-name-section.wasm --debug-names

Exemples

Dans l'exemple qui suit (tiré de ce fichier source et de cette démonstration), on compile et on instancie le bytecode simple-name-section.wasm et on importe une fonction JavaScript dans le module lors de cette étape. Ensuite, on exporte une fonction depuis le module grâce à Instance.exports.

On faut aussi une vérification sur WebAssembly.Module.customSections pour vérifier si celle-ci contient une section personnalisée "name" dont on vérifie si la longueur est supérieure à 0. Ce module contenant une section name, les appels à console.log() sont exécutés et montrent que le tableau renvoyé par la méthode contient des objets ArrayBuffer.

WebAssembly.compileStreaming(fetch('simple-name-section.wasm'))
.then(function(mod) {
  var nameSections = WebAssembly.Module.customSections(mod, "name");
  if (nameSections.length != 0) {
    console.log("Le module contient une section nommée");
    console.log(nameSections[0]);
  };
});

Spécifications

Spécification État Commentaires
WebAssembly JavaScript Interface
La définition de 'customSections()' dans cette spécification.
Version de travail Brouillon de définition initiale pour WebAssembly.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet 57Edge Support complet 16Firefox Support complet 52
Notes
Support complet 52
Notes
Notes Disabled in the Firefox 52 Extended Support Release (ESR).
IE Aucun support NonOpera Support complet 44Safari Support complet 11WebView Android Support complet 57Chrome Android Support complet 57Edge Mobile Support complet Oui
Désactivée
Support complet Oui
Désactivée
Désactivée This feature is behind the Experimental JavaScript Features preference.
Firefox Android Support complet 52
Notes
Support complet 52
Notes
Notes Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Support complet 11Samsung Internet Android Support complet 7.0nodejs Support complet 8.0.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,