Go 运行时如何用 Go 编写?

use*_*783 3 bootstrapping runtime go

我从 Go 1.4 中读到,Go 运行时是用 Go 本身(而不是 C)编写的。

这怎么可能?如果 Go 程序运行在运行时之上,而运行时是一个 Go 程序,那么运行时是否运行在其自身之上?

小智 5

简而言之:仔细。

长: unsafe 包允许您进行指针运算和任意强制转换,您需要实现 go 的 gc。您避免在 gc go 代码中使用 gc,就像在普通 go 代码中一样:通过使用堆栈或静态分配的数据。下面的链接提到主线 go 编译器通过未记录的选项在运行时强制执行此操作。一些汇编位允许您进行系统调用,这使您可以执行从生成过程到打开文件的所有操作。

更长更权威:请参阅Ian Lance Taylor(围棋团队的)关于 golang-nuts 的帖子