写点什么

Go 1.5 编译器与运行时环境由 Go 语言自身编写

  • 2015-08-27
  • 本文字数:1203 字

    阅读完需:约 4 分钟

Go 语言 1.5 版本拥有一个用 Go 语言自身编写的完整工具链,一个更快的垃圾回收器和在每一个可用的 CPU 上运行的 goroutine。

Go 语言以前的版本通过改善编译器、垃圾回收器、开发工具和对更多平台(比如:Android/ARM, BSD, Solaris, NaCl)的支持来获得更优秀的性能。Google 曾经提到,它对每个 Go 语言版本都许下了兼容性的承诺,基本上说“除了安全问题,不会做出不兼容的更改”

Go 语言 1.5 版本和原来的版本相比没有什么不同,尽管一些用户抱怨在编译和运行他们的程序时会遇到一些问题, 并在 Go问题列表中罗列了出来。然而 Google 认为 1.5 版本是一个“有意义的版本”,大部分变化是底层的变化,以及性能的提升。下面是一些改进:

  • 编译器、链接器、汇编器和运行时环境已经从 C 语言编写转换成了 Go 语言编写,还有一小部分是汇编语言编写的,已经彻底摒弃了最初的 C 语言代码。根据 Go 语言的设计者 Robert Pike 的说法,Go 语言编译器通过工具自动转换和一些最终的手动清理操作来避免引入新的 bug。在一些工具的帮助下,开发者手动重写了 Go 语言运行时环境。刚开始时,新的编译器由于一些 C 语言结构体没有转换成有效的 Go 语言代码,导致编译速度慢了 10 倍,但是在后来的开发完善过程中,性能得到了彻底的提高。摒弃 C 语言的一些好处如下:一个代码库适用于所有平台,可以更容易的加入新平台,拥有一个统一的采用较少代码量和简易维护量的工具链。缺点是:构建需要花费两倍时间,这是因为 Go 语言代码也是由工具编译生成的。Google 计划在 1.6 版本中降低构建所花费的时间。
  • 一个编译器、一个链接器、一个汇编器的目标是要实现通过 $GOARCH 和 $GOOS 这两个环境变量来配置 CPU 架构和操作系统。
  • Go 1.5 很有必要从源代码来创建分布式。
  • 在标准的 stop-the-world 垃圾回收器中加入了新的并发垃圾回收器,将垃圾回收活动从原来的 50 毫秒降低到 10 毫秒以下。大家可以在设计文档和这些幻灯片中找到新的并发垃圾回收器的更多细节。由于有了并发垃圾回收器,程序运行速度与 Go1.4 相比,提高了几个百分点。
  • 在 64 位架构的大趋势下,一些 32 位的分支将无法再使用。
  • 新的 Go 指令追踪工具可以对程序执行细粒度的追踪。

在 Go 1.5 中引入的一个重大改变是并发的最大线程数量从 1 上升到了可用的 CPU 的数量。如果一个程序依赖于协同程序的执行顺序,它很有可能遇到意想不到的结果,并且需要修复。更多的细节参考设计文档

其他改进如下:所有资源库支持内部包,外部依赖,go 文档命令以及其他一些改进。我们在发行通知中介绍了关于Go 1.5 新特性的更多细节。

查看英文原文 The Go 1.5 Compiler and Runtime Are Written in Go


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-08-27 19:003672

评论

发布
暂无评论
发现更多内容

有哪些好用的企业级即时通讯平台推荐

BeeWorks

云开发让 Unity 微信小游戏实时聊起来

蛋先生DX

腾讯云 Unity 云开发 实时聊天 微信小游戏

【Paper Reading】结合 NanoFlow 研究,优化大语言模型服务效率的探索

阿里云大数据AI技术

人工智能 大语言模型 NanoFlow

金融行业中如何利用数据中台的数据来有效的驱动业务决策呢?

桃花键神

凡人歌:平凡公司的技术面试

iofomo

生活 职业成长 #面试

IM即时通讯软件,WorkPlus助力企业高效协作的企业级即时通讯系统

BeeWorks

面试官:单核服务器可以不加锁吗?

王磊

小间距显示屏方案的具体要求

Dylan

应用 LED LED display LED显示屏 效果广告

即时通讯平台是什么?

BeeWorks

什么是即时通讯平台

BeeWorks

天猫商品详情数据API接口:解锁高效数据获取的钥匙

代码忍者

API 接口 pinduoduo API

VMware NSX Advanced Load Balancer (NSX ALB) 22.1.7 发布下载,新增功能概览

sysin

负载均衡 Lab nsx

企业级即时通讯平台有哪些?探究适合企业使用的即时通讯工具

BeeWorks

ROS 编程入门的介绍

芯动大师

ROS

【Tomcat源码分析】启动过程深度解析 (二)

派大星

tomcat源码解读

MES系统与其他系统的集成:提升制造业智能化的关键路径

万界星空科技

数字化转型 系统集成 ERP mes 智能制造业

MES系统助力塑料制品行业数字化转型

万界星空科技

制造业 mes 万界星空科技 注塑行业 塑料制品行业

数据中台进化为数据飞轮的必要

桃花键神

macOS Ventura 13.7 (22H123) 正式版发布,ISO、IPSW、PKG 下载

sysin

macos ventura

为什么全球顶尖银行纷纷选择与华为合作?

脑极体

AI

Java音视频文件解析工具

江南一点雨

从数据仓库到数据中台再到数据飞轮:金融行业的数据技术进化史

桃花键神

FinOps三人行:共话FinOps云成本管理与AI的未来在线分享(文字+视频)

雅菲奥朗

FinOps AIGC 云成本管理 云财务管理 FinOps认证

人工智能(大模型)工程师中级课程,正式开始报名!

雅菲奥朗

人工智能 AI AIGC 人工智能工程师 人工智能工程师培训

我一进门就看见 AI 在啪啪啪狂敲代码

江南一点雨

Go 1.5编译器与运行时环境由Go语言自身编写_开源_Abel Avram_InfoQ精选文章