写点什么

Google 即将发布 Go 语言 1.1 版,含多项重大更新

2013 年 3 月 29 日

继 2012 年 3 月 Google 发布 Go 语言的第一个正式版本 Go 1 之后,时隔一年,Google 将于近期发布 Go 1.1。通过从 Google 网站内收集到的信息,我们了解到新版本保持了对旧版本的兼容性,同时还添加了一些重大的语言特性,修改了大量类库,并且改善了编译器、类库和运行时的实现。

Google 相信,很多用户仅仅通过安装新版本并重新编译已有程序就能看到显著的性能提升。以下就是 InfoQ 了解到的,即将发布的新版 Go 语言将为我们带来的新特性(具体信息以正式发布时的特性列表为准)。

语言方面的变化如下:

  • 在 Go 1.1 中常量 0 作为除数时会引发编译错误而不是运行时错误。
  • Unicode 文本中的代理项做了处理,在 Go1.1 中代理项约束内置到了编译器、类库和运行时中。
  • 实现了方法值,也就是能够绑定到指定接收值的函数。
  • 引入了终止语句的概念,能够更加自由地使用“return”语句。

在实现和工具方面,新版本也做了诸多改进,包括:

  • 命令行标记解析。
  • 64 位平台上的 int 大小。
  • Unicode 文本。
  • gc 编译器。
  • 修改了 go/go test/go fix 命令。

在性能方面,使用 Go 1.1 gc 工具套件编译的代码将为大多数应用带来 30% 到 40% 的性能提升,甚至会更高,当然对于少数程序性能提升并不明显或者没有提升。基于性能考虑,新版本对工具和类库做了很多微调,其中特别需要注意的几个主要变动如下:

  • gc 编译器在大多数情况下会生成更好的代码,最重要的莫过于 32 位 Intel 架构上的浮点数。
  • gc 编译器会做更多的内联,包括一些运行时操作,如 append 和接口转换。
  • 重新实现了 Go Map,大大降低了内存占用和 CPU 时间消耗。
  • 优化了垃圾回收器的并行化处理,降低了程序在多 CPU 上运行的延迟。
  • 垃圾回收器更加精确,花费的 CPU 时间更少,并能显著降低堆大小,在 32 位架构上尤为明显。
  • 运行时和网络类库紧耦合,网络操作仅需要少量的上下文切换。

新版本 Go 语言对标准类库也做了大量更新,包括:

对于类库所做变更还有很多,在此无法一一列举了,感兴趣的读者可以查看 Google 提供的介绍。


感谢侯伯薇对本文的审校。

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

2013 年 3 月 29 日 07:134331
用户头像

发布了 321 篇内容, 共 103.6 次阅读, 收获喜欢 8 次。

关注

评论

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

分布式系统架构学习总结

qihuajun

ARTS打卡(2020.06.29-2020.07.04)

小王同学

ARTS 打卡计划

一篇告诉你什么是Spring

JavaPub

spring

第一个Spring程序(代码篇)

JavaPub

spring

一致性Hash算法——架构师训练营第5周

架构 极客大学架构师训练营 一致性Hash算法 第5周作业 负载均衡算法

分布式系统架构设计 - 一致性hash算法及其改进

常平

分布式 架构设计

架构师训练营作业-20200705

caibird1984

极客大学架构师训练营

唯一路径的动态规划解法,阿里巴巴架构演化路径 John 易筋 ARTS 打卡 Week 07

John(易筋)

动态规划 ARTS 打卡计划 系统架构演化 唯一路径

分布式系统架构设计 - 从CAP到PACELC

常平

架构 分布式

第五周作业

赵龙

ARTS|Week 6 合并有序列表、团队、MIME类型和IIS

Puran

LeetCode ARTS 打卡计划

Dig101-Go 之深入理解 mutex

newbmiao

golang Atomic mutex futex memory reordering

ARTS Week6

丽子

从“金 木 水 火 土”到分布式系统架构设计

常平

分布式 架构设计

第五周作业

秦宝齐

学习

LeetCode | 7. Merge Two Sorted Lists 合并两个有序列表

Puran

Python C# 算法 LeetCode

一文搞懂分布式消息中间件设计

小隐乐乐

消息队列

极客大学架构师训练营 系统架构 消息队列 数据库备份 第10课 听课总结

John(易筋)

负载均衡 极客时间 极客大学 极客大学架构师训练营 消息队列

Python设计模式 单例模式

早睡蟒

Python 面向对象 设计模式 单例模式

分布式缓存架构作业

qihuajun

第五周学习总结

赵龙

架构师训练营第五周 - 作业

Eric

极客大学架构师训练营

Git【入门】这一篇就够了

JavaPub

spring

游戏夜读 | 简单认识一下爬虫

game1night

总结

Mr.Monkey

程序人生 | 春风得意马蹄疾,一日看尽长安花

YourBatman

Java 程序人生 大龄程序员

如何写好一封简历?

石云升

职场 简历优化 职场成长 简历

架构师训练营 第 5 周总结

Lingjun

极客大学架构师训练营

架构第五周 - 学习总结

J.Smile

极客大学架构师训练营

架构师训练营总结-20200705

caibird1984

极客大学架构师训练营

工业4.0|要不要用 IO-Link ?

清水河路人甲

工业4.0 IO-Link 工控

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Google即将发布Go语言1.1版,含多项重大更新-InfoQ