erlang bootstrapping

¿En qué está escrito Erlang?



bootstrapping (3)

¿Qué es la implementación de Ericsson de Erlang y Erlang / OTP escrita y compilada? ¿Es ensamblador, C o Erlang?

Actualización 1: Gracias a DrJokepu. Si entiendo correctamente, el compilador fuente-a-VM de Erlang está escrito en Erlang. Pero la VM está escrita en C.

Actualización 2: Hynek-Pichi-Vychodil señaló una gran cantidad de detalles.

  • Controladores que interactúan VM y HW: en C.
  • Compilador (a VM) y bibliotecas: en Erlang.
  • Extensiones: Posible en cualquier idioma escribiendo un puerto o un nodo Erlang en ese idioma.

De las preguntas frecuentes de Erlang :

10.7 ¿Cómo se escribió el primer compilador de Erlang?

(o: ¿cómo fue Erlang bootstrapped? ) En palabras de Joe:

Primero diseñé una máquina abstracta para ejecutar Erlang. Esto se llamaba la máquina JAM; JAM = La máquina abstracta de Joe.

Luego escribí un compilador de Erlang a JAM y un emulador para ver si la máquina funcionaba. Ambos fueron escritos en prólogo.

Al mismo tiempo, Mike Williams escribió un emulador C para el JAM.

Luego reescribí el compilador Erlang-to-jam en Erlang y usé el compilador de prólogos para compilarlo. El código objeto resultante se ejecutó en el emulador C. Luego tiramos prólogo.


Erlang en sí está escrito en Erlang. ¿Suena extraño? Sí, porque es parcialmente cierto. OK, míralo con más detalle:

  1. El preprocesador de Erlang está escrito en Erlang.
  2. El analizador de Erlang está escrito en Erlang.
  3. El compilador de Erlang para BEAM (VM de código de bytes) está escrito en Erlang.
  4. El compilador de Erlang para HiPE (extensión de VM nativa) está escrito en Erlang.
  5. Erlang VM BEAM y HiPE está escrito principalmente en C.
  6. Los controladores vinculados se escriben principalmente en C. (Están conectados a VM y sirven para comunicarse con el mundo exterior).
  7. OTP está escrito en Erlang.
  8. Se pueden escribir otros puertos o nodos en cualquier idioma.

  • 65.9% del código de erlang está escrito en Erlang.
  • 13.4% de erlang está escrito en XML.
  • 13.6% de erlang está escrito en C.
  • 1.4% de erlang está escrito en C ++
  • ...

Puede ver una estadística en vivo y actualizada en el sitio ohloh , este informe se genera a partir del repositorio principal de erlang git.