Erlang写的是什么?

什么是爱立信的Erlang和Erlang / OTP的编写和编译的实现? 是汇编,C还是Erlang本身?

更新1:感谢DrJokepu。 如果我理解正确,Erlang源到VM编译器是用Erlang编写的。 但是虚拟机是用C写的

更新2:Hynek-Pichi-Vychodil指出了很多细节。

  • VM和HW交互驱动程序:在C.
  • 编译器(到VM)和库:在Erlang。
  • 扩展:通过使用该语言编写端口或Erlang节点,可以使用任何语言。

Erlang本身是用Erlang编写的。 听起来很奇怪? 是的,因为这只是部分真实的。 好的,仔细看看它:

  1. Erlang预处理器是用Erlang编写的。
  2. Erlangparsing器是用Erlang编写的。
  3. Erlang编译为BEAM(字节码VM)是用Erlang编写的。
  4. Erlang编译器到HiPE(本地VM扩展)是用Erlang编写的。
  5. Erlang VM BEAM和HiPE大部分都是用C写的
  6. 链接的驱动程序主要以C语言编写(它们被插入虚拟机并与外界通信)。
  7. OTP是用Erlang编写的。
  8. 另一个端口或节点可以用任何语言编写。

从Erlang常见问题解答 :

10.7第一个Erlang编译器如何写入?

(或者: Erlang是如何引导的? )用Joe的话来说:

首先我devise了一个抽象机器来执行Erlang。 这被称为JAM机器; JAM =乔的抽象机器。

然后我从Erlang编写了一个编译器到JAM和一个仿真器,看看机器是否工作。 这两个都是在序言中写的。

与此同时,Mike Williams为JAM写了一个C模拟器。

然后我重写了Erlang中的erlang-to-jam编译器,并使用prolog编译器进行编译。 生成的目标代码在C仿真器中运行。 然后,我们扔掉了序言。

  • erlang代码中有65.9%是用Erlang编写的。
  • erlang的13.4%是用XML编写的。
  • Erlang中的13.6%是用C语言编写的
  • Erlang的1.4%是用C ++编写的

你可以在ohloh站点看到live和update的统计信息,这个报告从主erlang git仓库生成。