Go语言将使用Go代替C重写运行时环境

开发 开发工具
Go 1.4 最主要的变化是将使用 Go 语言本身来重写 Go 的运行时,而之前是采用 C 语言开发。这也是为什么 Go 的发行版中包含一个 C 编译器的原因。

Go 1.4 的合并窗口在 9 月份将关闭,从现在开始到12月份发布 Go 1.4 之前将只接受 bug 修复和小调整。

 

Go 1.4 最主要的变化是将使用 Go 语言本身来重写 Go 的运行时,而之前是采用 C 语言开发。这也是为什么 Go 的发行版中包含一个 C 编译器的原因。

使用 Go 重写的好处是:

  • 当前如果在 Goroutine 的调用堆栈中发现 C 代码,runtime 将在需要增长堆栈时回滚到老的堆栈方法。如果使用 Go 来重写 runtime,那么堆栈拷贝的方法就会更加高效

  • 目前转换工作只计划转 Go 编译器 (5g, 6g, 8g), 而不是 C 编译器,降低运行时中的 C 代码行数,甚至可能完全清除

注意

  1. 这是 golang.org 分发版,也就是 gc ,而不是 gccgo

  2. 这是不同的 C 编译器,gc 工具链将使用你系统的 C 编译器来编译,gc 运行时则使用它的 C 编译器来编译

  3. 8月20日后增加的转换行可能跟 this request 有关

来自:dave.cheney.net

责任编辑:林师授 来源: dave.cheney.net
相关推荐

2020-12-07 13:31:43

GoMutex开发者

2017-12-18 16:50:26

Gobug编译

2015-07-20 15:44:46

Swift框架MJExtension反射

2023-02-12 12:00:57

2021-09-18 08:02:49

Go程序工具

2022-08-08 08:31:55

Go 语言闭包匿名函数

2022-08-08 06:50:06

Go语言闭包

2024-03-21 09:15:58

JS运行的JavaScrip

2020-07-10 16:52:43

DelveGo程序开源

2011-12-27 09:39:12

C#运行时

2023-11-01 13:40:25

GolangGo

2010-01-27 14:14:48

C++程序运行时间

2011-08-19 15:05:29

异常处理

2018-06-24 15:23:05

软件工程环境开发

2009-02-10 09:03:59

动态语言CLRVB.NET

2023-08-30 15:49:51

GraphQLAPI 开发

2018-03-12 22:13:46

GO语言编程软件

2009-06-17 15:46:36

Java运行时本机内存

2019-07-12 09:30:12

DashboardDockerDNS

2021-09-11 15:38:23

容器运行镜像开放
点赞
收藏

51CTO技术栈公众号