Month: June 2013

  • [翻译]Go 的竞态检测器

    理解竞态对于并发编程来说很重要,如果能通过某种手段来了解程序中存在的竞态,以便进一步的调整避免竞态,也是非常有效的优化手段。Go 1.1 的工具链引入了竞态检测器可以检测并展示程序中存在的竞态情况。Go 团队撰写了博文详细介绍了这一工具的原理和使用。原文在此《Introducing the Go Race Detector》。

    ————翻译分隔线————

    Go 的竞态检测器

    Dmitry Vyukov 和 Andrew Gerrand

    竞态条件几乎是最为隐蔽和难以发现的程序错误。它们通常会导致诡异且无法解释的错误,尤其是在代码已经部署到生产环境很长时间之后。虽然 Go 的并发机制使得编写清晰的并发代码变得容易,但是它们无法避免竞态条件。认真、勤快的测试是必须的。而工具可以给予帮助。

    我们很高兴的宣布 Go 1.1 包含了竞态检测器,一个用于发现 Go 代码中的竞态条件的新工具。它当前在 64 位 x86 处理器的 Linux、MacOS 和 64 位 x86 处理器的 Windows 系统中可用。 (more…)

  • [翻译]Go 是如何用 go 编译自己的

    原文在此《How Go uses Go to build itself》,作者为 Dave Cheney。

    ————翻译分隔线————

    Go 是如何用 go 编译自己的

    这篇文章基于 2013 年四月中旬我为悉尼 Go 用户组做的一次关于 Go 构建过程的演讲而成。

    在邮件列表或 IRC 的频道里经常有人寻求关于 Go 编译器、运行时和内部原理的细节文档。当前,关于 Go 的内部原理的权威文档的来源就是我鼓励每个人都去阅读的源代码。虽然这样说,但是从 Go 1.0 发布以来 Go 的构建过程就已经稳定了,因此将其记录在这里或许也会有其相应的价值。

    这篇文章大致介绍了 Go 编译过程的九个步骤,从源代码开始,结束于经过充分测试的安装好的 Go 。为了简明扼要,所有路径都相对与源代码检出的根路径,$GOROOT/src。

    你应当通过阅读在 golang.org 网站上的从源代码安装 Go 来了解更多背景知识。
    (more…)