Go 语言将使用 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 代码行数,甚至可能完全清除

注意

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

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

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

本文来自开源中国社区 [http://www.oschina.net]

时间: 2025-01-21 03:46:28

Go 语言将使用 Go 代替 C 重写运行时环境的相关文章

c语言之贪吃蛇游戏,为什么最后运行时没有苹果出现?求助大神!!!

问题描述 c语言之贪吃蛇游戏为什么最后运行时没有苹果出现求助大神 /* c语言之贪吃蛇 */ #include #include #include #include #include #include #define N 21 int apple[3]; //食物 char score[3]; //分数 char tail [3];//蛇尾前面一节 //输出坐标 void gotoxy(int x,int y) { COORD pos; pos.X=x; pos.Y=y; SetConsoleC

编写执行你的第一个Yukon CLR(通用语言运行时)存储过程

存储过程|执行 编写执行你的第一个Yukon CLR(通用语言运行时)存储过程 作者:Suhil Srinivas 翻译:朱二 原文出处:http://www.c-sharpcorner.com/Longhorn/Yukon/First-CLR-Procedure.asp 描述这篇文章描述了种种编写和执行一个Yukon CLR 通用语言运行时存储过程的步骤.对开发混合数据类型的SQL 存储过程来说,本文也是一个起点.需求正确安装SQL Server Yukon beta1介绍Yukon 是微软公

pat-PAT1009 c语言字符串问题 我写的程序输出时起始位置会多一个空格,如何改正才能没有空格

问题描述 PAT1009 c语言字符串问题 我写的程序输出时起始位置会多一个空格,如何改正才能没有空格 #include #include int main(){ int i,j=0,m,k=0; char sen[100]; char s[10][20]; gets(sen); m=strlen(sen)+1; for(i=0;i<m;i++){ if(sen[i]==''){ s[j][k]=''; k=0; j++; } if(sen[i]==' ') { s[j][k]=''; k=0;

c语言 封装 运行-C语言程序如何在别人电脑上运行的问题

问题描述 C语言程序如何在别人电脑上运行的问题 我编写了一个小程序,一道选择测试的题目.写完后,拷贝了bug文件中的exe程序.运行exe程序后,可以输入数据.问题是最后出现结果后一闪而过,程序就跳出了.请问有什么办法可以清楚的显示结果,不跳出程序? 解决方案 程序结束前用下面两行代码 getchar(); getchar(); 第一行用于"吃掉"你输入你的数据末尾的'n',但它并不需要送给任何变量. 第二个用于等待用户输入一个字符,这样程序就需要等待这一操作发生才会结束. 解决方案二

c语言问题-C语言程序运行时出现的问题

问题描述 C语言程序运行时出现的问题 /* Note:Your choice is C IDE */#include ""stdio.h""int main(){int fac(int n);int n;int y;printf(""input an integer number:n"");scanf(""%d&n"");y=fac(n);printf(""%

编译器-C语言,编译和链接均未报错,运行时出现异常。

问题描述 C语言,编译和链接均未报错,运行时出现异常. 编译器报告异常信息(http://img.ask.csdn.net/upload/201508/30/1440920346_80190.png) 代码如下 #include #include #include #define TRUE 1 #define FASLE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef struct el

文件传输-下面c语言中要将操作结果存入文件(当遇到#时为止)。程序运行时为什么老是中断出错?

问题描述 下面c语言中要将操作结果存入文件(当遇到#时为止).程序运行时为什么老是中断出错? #include(stdio.h)#include(stdlib.h)void main(){FILE *fp;char ch;if((fp=fopen(""C:UsersAdministratorDesktopEnglish.doc""w""))=NULL){ printf(""cannot open filen"&quo

编程c语言-C语言大型程序一个例子为什么不能运行

问题描述 C语言大型程序一个例子为什么不能运行 我编写了两张图里四个文件,一个.h和三个.c,然后按照给出的那个命令运行,却出现一堆错误和warning,怎么回事?一般大点的程序按这种编写方法怎么链接和用什么命令运行? 解决方案 warning不影响运行,没有error就行 解决方案二: 有时候编译器的版本不一样也会出错的,也有课能本上给出的代码是伪代码 解决方案三: C语言实现的一个程序只能运行一次,不能重复运行 解决方案四: 这是用gcc运行是的错误 解决方案五: 要用gcc -o命令先编译

struct-自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急.

问题描述 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. #include #include typedef struct tnode Tnode; struct tnode { Tnode *left; Tnode *right; int data; }; Tnode *new_tnode(int data) { Tnode *new = malloc(sizeof(Tn