BEAM (bytecode Erlang) : fichier .beam

stable

Bytecode compilé exécuté par la machine virtuelle BEAM d'Erlang, la fondation d'exécution partagée par Erlang et Elixir.

Un fichier BEAM contient du bytecode compilé destiné à la machine virtuelle du même nom, le moteur d’exécution partagé par Erlang et par Elixir, deux langages distincts en syntaxe qui compilent néanmoins vers exactement le même format binaire intermédiaire, à l’image de la relation entre différents langages de la JVM et le bytecode Java.

Un module BEAM compilé depuis Elixir interopère directement avec un module compilé depuis Erlang, sans couche de conversion ni d’adaptation intermédiaire : les deux langages partagent la même représentation intermédiaire et le même modèle d’exécution, ce qui explique pourquoi l’écosystème Elixir peut réutiliser directement l’immense bibliothèque de code Erlang existante (OTP notamment) sans réécriture.

La machine virtuelle BEAM isole chaque processus léger dans son propre espace mémoire indépendant, avec un modèle de supervision qui redémarre automatiquement un processus défaillant sans affecter le reste du système, une conception héritée directement du contexte de création d’Erlang chez Ericsson, pensé pour des équipements de télécommunication devant fonctionner en continu sur de longues durées sans interruption de service tolérable.

Cette architecture explique l’adoption du langage et de sa machine virtuelle bien au-delà des télécommunications d’origine, notamment pour des systèmes de messagerie à très forte concurrence (WhatsApp a longtemps reposé sur Erlang) où la capacité à gérer des millions de connexions simultanées avec une tolérance aux pannes élevée prime sur la performance brute d’un calcul isolé.

Signature binaire

Diagramme de la signature binaire du format BEAM (bytecode Erlang), octets mis en évidence
HexadécimalOffset
46 4F 52 310

Vérifier qu'un fichier porte bien cette signature →

Questions fréquentes

Comment ouvrir un fichier .beam ?

Erlang/OTP (machine virtuelle BEAM) permet d'ouvrir gratuitement un fichier .beam. Voir la liste complète des logiciels compatibles ci-contre.

Quel est le type MIME du format BEAM (bytecode Erlang) ?

Le type MIME du format BEAM (bytecode Erlang) est application/octet-stream.

Le format BEAM (bytecode Erlang) (.beam) est-il encore utilisé aujourd'hui ?

Oui, le format BEAM (bytecode Erlang) est stable et toujours largement utilisé, sans signe de déclin.

Peut-on ouvrir un fichier .beam sur mobile, sans installer d'application ?

Aucun outil web n'est référencé sur cette fiche pour ce format : l'ouverture nécessite un logiciel de bureau (voir la liste « Avec quoi l'ouvrir » ci-contre).

Un fichier .beam compilé depuis Elixir peut-il s'exécuter aux côtés d'un module Erlang ?

Oui, sans conversion : Elixir compile son code source vers le même bytecode BEAM qu'Erlang, et les deux langages partagent la même machine virtuelle d'exécution : un module BEAM compilé depuis Elixir peut appeler directement une fonction d'un module BEAM compilé depuis du code Erlang, et réciproquement, sans couche d'interopérabilité supplémentaire.

Pourquoi la machine virtuelle BEAM est-elle réputée pour la tolérance aux pannes ?

BEAM isole chaque processus léger dans son propre espace mémoire, avec un modèle de supervision qui redémarre automatiquement un processus défaillant sans affecter les autres, une conception héritée des systèmes de télécommunications d'Ericsson, où Erlang a été créé à l'origine pour des équipements devant fonctionner en continu sans interruption de service.

Class, JAR, WAR, PYC, BEAM : le bytecode compilé selon l'écosystème (JVM, Python, Erlang/Elixir) →

Un fichier ne s'ouvre pas : les causes possibles →

Comment savoir si un fichier est corrompu →

Sources

Dernière mise à jour :