【发布时间】:2016-01-13 00:16:18
【问题描述】:
我 read 从 Go 1.4 开始,Go 运行时是用 Go 本身(而不是 C)编写的。
这怎么可能?如果 Go 程序运行在运行时之上,并且运行时是 Go 程序,那么运行时是否运行在自身之上?
【问题讨论】:
-
@TimCooper - 谢谢,这很有用。似乎用那种语言为一种语言编写编译器是可能的,因为一旦启动,编译器就能够自行编译。但是,在我看来,运行时无法支持自己:例如,垃圾收集器可以收集自己的垃圾吗?
-
为什么很难理解一种语言可以使用以相同语言编写(并由相同编译器编译)的库(和框架)?为什么它不能够像使用该语言的其他任何东西一样进行自己的垃圾收集?
-
不要把 Go 的运行时想成 Ruby 或 Java 的。 Go 的运行时实际上只是一个链接到您的本机应用程序的库,它执行诸如 GC、管理网络 I/O 等之类的事情……而说,由于 java 缺乏本机编译,Java 的运行时不能用 java 编写。
标签: go runtime bootstrapping