```html

本页汇总了Go语言标记的每周快照之间的变更。此类快照现已不再创建。本页仅作为历史参考保留。

有关最新信息,请参阅变更日志开发邮件列表

2012-03-27 (Go 1)

* cmd/dist: 修复go1版本的检测。
* cmd/go: 添加缺失的错误检查(感谢Evan Shaw),
    允许工具名称中包含下划线(感谢Shenghou Ma),
    错误修复,
    从goinstall复制tag_test.go,
    更好地解释版本信息,
    始终遵守$GOBIN设置,
    更新以适应go1标签格式。
* cmd/godoc: 规范化自定义路径重定向,
    修复应用引擎版本,
    使用虚拟文件系统实现-templates标志。
* codewalk/sharemem.xml: 修复文件引用。
* crypto/tls: 不选择没有共同曲线的ECC密码套件。
* doc: 添加文章《JSON-RPC:一个接口的故事》(感谢Francisco Souza),
    描述Windows MSI安装程序为实验性功能,
    从包列表链接到Go项目仪表板,
    更新Wiki教程模板和模板讨论,
    以及许多小修复。
* exp/types: 泛化GCImporter API。
* go/build: cgoEnabled不再被cmd/dist识别(感谢Shenghou Ma),
    修复导入检查。
* godoc: 使"概述"部分可折叠。
* misc/dist: 许多修复和调整。
* misc/emacs: 修复缩进错误。
* misc/goplay: 修复IE8上的错误(感谢Yasuhiro Matsumoto)。
* net: 忽略来自syscall.Accept的ECONNABORTED(感谢Devon H. O'Dell)。
* os: 在FileMode缓冲区中添加缺失的字节(感谢Stefan Nilsson)。
* path/filepath: 在Windows EvalSymlinks中将驱动器盘符转换为大写(感谢Alex Brainman),
    更正EvalSymlinks中的注释(感谢Alex Brainman),
    使用Windows GetShortPathName API强制GetLongPathName执行其工作(感谢Alex Brainman),
    Windows驱动器盘符不能是数字(感谢Alex Brainman)。
* run.bash: 编译codewalks。
* runtime: 恢复最简单情况下的死锁检测(感谢Rémy Oudompheng),
    解决死锁检测中的假阴性问题。
* text/template: 修复包注释中的拼写错误。
* windows: 安装程序修复(感谢Joe Poirier)。

2012-03-22 (Go 1 候选发布版 2)

与上周的快照一样,此快照是另一个Go 1候选发布版。
此快照中一个值得注意的变化是Windows安装程序的修复。
```**此快照中的变更:**

*   5l, 6l, 8l:修复栈大小接近默认段大小时的栈分割逻辑。
*   archive/zip:将r.zip从磁盘移至reader_test.go文件中。
*   build:在构建期间捕获API变更,在Windows构建中执行更多操作(感谢Alex Brainman),为耗时的运行时测试延长超时时间(感谢Shenghou Ma),在测试前取消设置GOPATH(感谢Shenghou Ma)。
*   cmd/cgo:为gccgo添加函数导出支持(感谢Rémy Oudompheng),修复gccgo的errno处理。
*   cmd/go:在Darwin上默认添加-fno-common选项(感谢Shenghou Ma),不对errPrintedOutput添加详细信息,修复目录到导入路径的转换,使构建错误更明显,为gccgo创建的目标文件使用.o而非.{5,6,8},解决偶尔出现的运行cgo时ETXTBSY错误。
*   cmd/godoc:在Playground中添加玩具和导览按钮,告知用户本地godoc无法使用Playground,将示例标题样式设为链接样式,在zip文件中使用*goroot作为基础路径,在html模板中使用FormatText格式化代码,使用更短的标签页标题。
*   cmd/gofmt:在用法说明中显示ASCII(感谢Yasuhiro Matsumoto)。
*   cmd/pack:在文件名中也识别'\\'作为路径分隔符(感谢Shenghou Ma)。
*   crypto/tls:如果请求了证书消息,则始终发送。
*   doc/install:移除对"Go Tutorial"的引用(感谢Shenghou Ma)。
*   doc/play:使用[]rune代替[]int(感谢Yasuhiro Matsumoto)。
*   doc:添加文章《Go并发模式:超时与继续》(感谢Francisco Souza),添加文章《Go image/draw包》并转换代码片段至Go1,添加文章《海量数据》(感谢Francisco Souza),添加文章《Godoc:Go代码文档化》(感谢Francisco Souza),添加文章《JSON与Go》(感谢Francisco Souza),全面更新gccgo安装说明,对大多数文档进行小规模更新。
*   flag:添加示例。
*   gc:修复新布尔规则下的结构体和数组比较(感谢Anthony Martin),在导入错误中使用带引号的字符串格式,内联展开append时保留参数。
*   go/build:澄清为何排除以'_'或'.'开头的文件(感谢Shenghou Ma),为Import函数使用更清晰的参数名(src -> srcDir),不对本地导入报告Target,修复匹配逻辑。
*   go/printer, gofmt:修复多行逻辑。
*   html/template:添加Templates和XXXEscape函数,修复空指针错误,修复Clone时的恐慌。
*   io/ioutil:修复Stat失败时的崩溃。
*   make.bat:为旧文件修复(感谢Christopher Redden),如果旧的生成文件不存在则不显示错误消息(感谢Shenghou Ma),正确处理带空格的目录(感谢Alex Brainman)。
*   misc/cgo/gmp:为Go 1更新(感谢Shenghou Ma)。
*   misc/dashboard:移除旧的Python包仪表板。
*   misc/dist:不附带cmd/cov或cmd/prof,在tarball中强制设置模式为0755或0644,构建前移除exp和旧文件。
*   misc/vim:恢复fileencodings(感谢Yasuhiro Matsumoto)。
*   net/http:对triv.go进行更多现代化改进,确保triv.go可编译和运行(感谢Robert Hencke)。
*   net:移除不必要的类型断言并修复测试中的泄漏(感谢Mikio Hara)。
*   os:IsNotExist()在Windows上也应考虑ERROR_PATH_NOT_FOUND(感谢Shenghou Ma),不要假设syscall.Write会写入所有数据,移除错误谓词函数中的文档重复(感谢Shenghou Ma),在Windows上从Stat(DevNull)返回一些虚构数据(感谢Alex Brainman)。
*   path/filepath:在Windows上实现Match和Glob(感谢Alex Brainman)。
*   reflect:记录PkgPath、Method、StructField,如果MakeSlice的len/cap参数无效则引发恐慌。
*   run.bat:禁用test\bench\go1中的测试以修复构建(感谢Alex Brainman)。
*   runtime/cgo:Darwin信号屏蔽(感谢Mikio Hara),Linux信号屏蔽(感谢Mikio Hara)。
*   runtime:在配置处理器之前不处理信号,为Windows/amd64上的badcallback自行管理栈(感谢Shenghou Ma),移除未使用的goc2c.c(感谢Shenghou Ma)。
*   sort:在文档中添加时间复杂度(感谢Stefan Nilsson),修复maxDepth计算以避免无限循环(感谢Stefan Nilsson)。
*   spec:删除对unsafe.Reflect、Typeof、Unreflect的引用。
*   syscall:在Linux上测试SCM_CREDENTIALS、SO_PASSCRED(感谢Albert Strasheim),添加一个通过Unix套接字传递文件描述符的测试,删除passfd_test.go。
*   test:在更多情况下使用testlib(感谢Shenghou Ma)。
*   text/template:修复标识符附近的几个解析错误,变量不接受参数。

**

2012-03-13 (Go 1 候选发布版 1)

** 此周快照与我们预期Go 1发布版的内容非常接近。仍有少量文档问题需要解决,以及一些应在发布前修复的错误,但绝大多数Go程序应完全不受从现在到正式发布期间我们所做的任何变更影响。 如果您有兴趣帮助我们测试、渴望尝试Go 1,或者只是好奇,那么这个周快照正是您该尝试的版本。我们将很快发布新的App Engine Go 1测试版SDK,因此如果您是App Engine用户,也可以在那里进行尝试。 为了帮助我们专注于任何剩余的错误并避免引入新的错误,我们将仅限关注关键修复和问题跟踪器中标记为Go1-Must的问题。所有非必要的内容将推迟到Go 1发布版发布并实际运行一段时间之后再处理。本次快照变更内容: * **archive/zip**: 验证非流式文件中的CRC32校验和;为OS X写入数据描述符签名;修复读取相关错误。 * **build**: 构建与GOHOSTARCH匹配的正确cmd/dist(感谢Shenghou Ma);在run.bash中重新启用部分损坏的测试(感谢Shenghou Ma);移除对Make.inc等的引用;使用run.go运行测试。 * **builder**: 对子仓库使用快速测试(感谢Shenghou Ma)。 * **cgo, runtime**: 诊断非Go线程上的回调。 * **cmd/api**: 为所有构建上下文设置编译器;重新支持Windows,并使gccgo文件进一步生效。 * **cmd/cgo**: 记录CGO_LDFLAGS和CGO_CFLAGS;屏蔽const警告。 * **cmd/dist, cmd/go**: 将CGO_ENABLED从'go tool dist env'移至'go env'(感谢Shenghou Ma)。 * **cmd/dist**: 修复Linux/ARM构建(感谢Shenghou Ma);使用正确的hg标签设置go版本(感谢Alex Brainman)。 * **cmd/fix**: 添加net/http -> net/http/httputil重命名规则。 * **cmd/gc**: 允许导入路径中包含~;在walk阶段删除旧的map delete操作;不混淆同名的未导出方法;若设置$GOROOT_FINAL,则重写目标文件中的文件名;实现len(array)/cap(array)规则;Windows上导入路径不能以斜杠开头(感谢Shenghou Ma);不得内联panic、recover;在错误中显示重复键;未命名结构体类型可以拥有方法。 * **cmd/go**: 添加-compiler选项;添加env命令,用于修复misc/cgo/testso;允许go get使用任意URL;支持通过ssh隧道使用bzr、git和svn(感谢Ingo Oeser);在Windows上始终提供.exe后缀(感谢Shenghou Ma);在go help remote中记录导入路径元标签发现机制;在run、test中遵循buildflags(感谢Rémy Oudompheng);本地导入修复;使go get new.code/...生效;重建外部测试包依赖;始终遵循$GOBIN;为go list支持-compiler选项,修复gccgo的isStale问题(感谢Rémy Oudompheng)。 * **cmd/godoc**: 添加模板服务支持;修复codewalk处理器(感谢Francisco Souza);移除路径中多余的/(感谢Ugorji Nwoke);支持$GOPATH,简化文件系统代码;启用+1按钮。 * **cmd/gofmt**: 修复长时间测试中的竞态条件(感谢Mikio Hara)。 * **codereview**: 适配Mercurial 2.1。 * **crypto/x509**: 在Windows系统验证中允许服务器门控加密(感谢Mikkel Krautz);释放证书上下文(感谢Alex Brainman);不包含PKCS#1私钥中的空附加素数;强制路径长度约束;根证书获取器新位置;使用Windows API构建证书链(感谢Mikkel Krautz)。 * **csv**: 说明FieldsPerRecord为负数的含义。 * **database/sql**: 添加关于连接状态、池的文档;确保Stmt正确关闭(感谢Gwenael Treguier);修复Stmt.Query错误时的双重连接释放问题;修复导致双重Prepare的拼写错误。 * **database/sql**: 添加ErrBadConn。 * **doc/go1**: 自r60起模板包已变更。 * **doc/go_mem**: init创建的goroutine行为在Go 1中有所变化(感谢Shenghou Ma)。 * **doc/gopher**: 翻转首页gopher的眼睛。 * **doc**: 添加"About the go command"文章;添加C? Go? Cgo!文章(感谢Francisco Souza);添加Go's declaration syntax文章(感谢Francisco Souza);添加更多gopher形象;在Go 1兼容性说明中添加关于import .的说明;多处文档修复与改进;更新Effective Go的init部分;更新progs/run(感谢Shenghou Ma);更新参考gopher;网站微调。 * **encoding/asn1**: 处理2000年之前的UTCTime。 * **encoding/binary**: 改进包注释(感谢Stefan Nilsson)。 * **encoding/gob**: 修复内存损坏问题。 * **encoding/json**: 记录nil slice编码为`null`。 * **exp/wingui**: 迁移至code.google.com/p/gowingui。 * **expvar**: 为String添加锁,并在整个包中正确使用RWMutex;为String方法添加缺失的锁。 * **fmt, log**: 停止使用unicode包。 * **fmt**: 微调包文档以在godoc中显示标题(感谢Volker Dobler)。 * **go/build, cmd/go**: 添加对.syso文件的支持。 * **go/build**: 添加NoGoError;添加依赖测试;不解析.syso文件(感谢Alex Brainman)。 * **go/parser**: 避免内部错误时的无限循环;改进错误同步。 * **go/printer, gofmt**: 多行return语句格式更美观。 * **go/printer**: Fprint示例。 * **go/scanner**: 改进panic诊断信息。 * **go spec**: 已无已知实现差异;修正类型同一性定义中的不准确之处。 * **io**: 改进WriterAt的文档。 * **misc/dashboard**: 移除过时的包构建器代码。 * **misc/dist**: 添加源代码归档支持;添加Windows安装程序和zip支持;Darwin的最低目标要求为10.6(感谢Shenghou Ma)。 * **misc/emacs**: 修复以句号结尾的注释后额外的缩进问题。 * **misc/xcode**: 为Xcode 4.x示例安装语言规范(感谢Emil Hessman)。 * **net, net/rpc, reflect, time**: 记录并发保证。 * **net/http**: 修复Transport.CloseIdleConnections崩溃问题;从ReadRequest返回适当的错误。 * **net**: 为测试添加跳过信息(感谢Mikio Hara);与其他外部网络使用一起禁用外部监听;不使用reflect处理DNS消息(感谢Rémy Oudompheng);记录ReadMsgUnix、WriteMsgUnix;修复Windows构建器上的TestDialTimeout;改进服务器和文件测试(感谢Mikio Hara);使Dial和Listen行为在各平台保持一致(感谢Mikio Hara);移除对bytes、fmt、strconv的依赖;屏蔽另一条epoll打印信息;使用IANA保留端口测试拨号超时(感谢Mikio Hara)。 * **os**: 文档说明FileInfo.Size对于非规则文件依赖于系统;修复SameFile使其在Windows上对目录有效(感谢Alex Brainman)。 * **path/filepath/path_test.go**: 修复并启用TestAbs。 * **path/filepath**: 在Windows上禁用AbsTest;在Windows的EvalSymlinks中获取真实文件名(感谢Alex Brainman)。 * **runtime/pprof**: 在64位Leopard上禁用测试。 * **runtime**: 添加Compiler;修复windows/amd64异常处理器(感谢Alex Brainman);内联对notok的调用;将runtime.write移回C代码;在非Go线程收到信号时打印错误;移除未使用的runtime·signame和runtime·newError;在32位分配器中尝试扩展arena大小(感谢Rémy Oudompheng);在设置GOMAXPROCS前等待主goroutine(感谢Rémy Oudompheng)。 * **strconv**: 添加基于表的isPrint,移除对bytes、unicode和strings的依赖。 * **sync/atomic**: 在单处理器机器上禁用store和load测试(感谢Mikio Hara)。 * **syscall**: 修复mkall.sh、mksyscall_linux.pl,并为Linux/ARM重新生成(感谢Shenghou Ma)。 * **test/run**: 在ARM系统上使用所有可用核心(感谢Shenghou Ma)。 * **test**: 在Windows上实际运行它们(感谢Alex Brainman);在ddd.go中添加继承接口测试;在ddd.go中启用方法表达式测试;在run.go中调用go命令;匹配bug388.go的gccgo错误消息;跳过目录中的.文件。 * **testing**: 当存在示例时不打印'no tests'。 * **time**: 在快速测试期间,不因ticker耗时超过预期而中断(感谢Shenghou Ma);在Unix、UnixNano文档中提及接收器。 * **unicode/utf16**: 移除对unicode包的依赖。 * **unicode/utf8**: 移除对unicode的依赖。 * **windows**: 使gopher图标背景透明(感谢Volker Dobler)。

2012-03-04

本次快照包含了对 go/build 包的重大重设计。其原有的 FindTree、ScanDir、Tree 和 DirInfo 类型已被 Import 和 Package 类型取代。目前没有 gofix 工具支持。使用 go/build 的代码需要手动更新以使用包的新接口。
其他变更: * 6a/6l: 新增 IMUL3Q 和 SHLDL 指令。 * 所有: 移除未使用的未导出函数和常量(感谢 Rémy Oudompheng)。 * 构建: 为 LDFLAGS 和 GCFLAGS 添加 GO_ 前缀(感谢 Gustavo Niemeyer)。 * cmd/cc: 修复数组越界访问问题(感谢 Anthony Martin), 扩展某些全局数组的大小。 * cmd/dist: 在 Unix 上强制 stdout/stderr 使用行缓冲(感谢 Shenghou Ma), 识别 CC="ccache clang" 为 clang。 * cmd/go: 避免重复包含目录(感谢 Rémy Oudompheng), 修复 gc 命令的 -I 标志(感谢 Gustavo Niemeyer), 修复详细命令输出(感谢 Gustavo Niemeyer), 修复 gccgo 相关问题(感谢 Rémy Oudompheng), 多处修复, 测试 -i 不应禁用 -c(感谢 Shenghou Ma)。 * cmd/vet: 对于 Printf("%+5.2e", x) 不再报错(感谢 Shenghou Ma)。 * cmd/yacc/units.y: 更新注释,在 $GOROOT 未设置时给出更好的错误信息(感谢 Shenghou Ma)。 * crypto/tls: 为 API 兼容性强制指定 OS X 目标版本为 10.6(感谢 Mikkel Krautz)。 * crypto/x509: 修复 Verify 文档中的拼写错误(感谢 Mikkel Krautz)。 * dist: 将 CC 视为一个整体单元(感谢 Scott Lawrence)。 * doc/go1: 为主要变更添加理由讨论, 进行轻微的修正和更新。 * 文档: 描述 go/build 包的 API 变更, 详细说明 cmd/vet 的可用检查项(感谢 Shenghou Ma), 扩展 code.html 以更深入地讨论 go 工具, 指示 FreeBSD/Linux 用户先删除旧版本, 移除《Go 语言 for C++ 程序员》, 移除路线图文档, 移除教程, 更新 codelab/wiki 至 Go 1 版本(感谢 Shenghou Ma), * encoding/gob: 修复 debug.go 中的 "// +build" 注释(感谢 Shenghou Ma), 加强输入字符串长度的防护。 * encoding/json: 移除 MarshalForHTML;gofix 对 Marshal 的调用, 对 Marshalers 的输出进行转义。 * encoding/xml: 修复匿名字段的 Unmarshal 示例(感谢 Gustavo Niemeyer), 修复 xml 测试标签的用法(感谢 Gustavo Niemeyer)。 * gc: 禁止使用绝对导入路径, 修复逃逸分析+内联+闭包 bug, 修复新布尔规则下的字符串比较问题(感谢 Anthony Martin), 拒绝包含特殊字符的导入路径(感谢 Anthony Martin)。 * go/ast: 为 ast.Print 和 ast.Inspect 添加示例。 * go/doc, godoc: 修复类型声明的范围。 * go/parser: 检查导入路径限制, 扩展错误导入的测试用例。 * go/printer, gofmt: 改进注释放置位置。 * go/printer: 修复可变参数函数调用的打印(感谢 Anthony Martin), 修复新导入路径限制的测试(感谢 Anthony Martin), 替换多行逻辑, 更简洁的 exprList 代码,更多测试。 * godoc: 在顶层索引中添加 Examples 链接, 恢复高亮显示、选择和警告功能, 文档章节位置保持一致, 在平铺目录模式下不显示无包的目录, 不显示 testdata 目录, 修复代码漫步功能。 * gotype: 提供 -comments 标志。 * html/template: 使 doctype 检查不区分大小写(感谢 Scott Lawrence), 在入门示例中使用正确的方法签名(感谢 Mike Rosset)。 * io: 文档说明 I/O 操作不一定支持并行访问。 * ld: 允许更多 -L 选项(感谢 Shenghou Ma), 修复 rodata 段的对齐。 * misc: 为 go 工具添加 zsh 补全(感谢 Rémy Oudompheng)。 * misc/bash: go 工具的补全(感谢 Yissakhar Z. Beck)。 * misc/dashboard: 修复 UI 模板中的 bug, 记录外部包的安装次数。 * misc/dist: 用 Go 实现二进制分发脚本。 * misc/gobuilder: 以 RFC3339 格式发送提交时间。 * misc/xcode: 将 Xcode3 专用文件移至子目录。 * net/http/cgi: 添加空响应测试, 修复空响应问题。 * net/http/httptest: 使 Server.Close 等待未完成的请求结束。 * net/http/httputil: 修复 https URL 上的 DumpRequestOut, 减少 https DumpRequestOut 的竞态条件。 * net/http: 根据 RFC 2324 添加被遗漏的 418 状态码, 修复 ProxyFromEnvironment 的 bug、文档,添加测试, 使测试在 Windows 上更严格且可靠。 * net/rpc: 关闭连接时静默读取错误。 * net: 为 NetBSD 添加桩函数(感谢 Benny Siegert), 使测试的 -external 标志默认为 true(感谢 Mikio Hara), 重新组织测试文件(感谢 Mikio Hara)。 * os: 诊断 StartProcess 过程中的 chdir 错误, 在 Windows 上实现 UserTime/SystemTime(感谢 Alex Brainman), 在 Windows 上实现 sameFile(感谢 Alex Brainman), 在 Windows 的 (*Process).Wait 结束时释放进程句柄(感谢 Alex Brainman), 在 Windows 上进程退出后休眠 5ms(感谢 Alex Brainman)。 * path/filepath: 注明 SplitList 与 strings.Split 不同, 引导用户避免使用 HasPrefix。 * reflect: 修复 DeepEqual 中比较函数时发生 panic 的问题。 使 Value.Interface 返回不可变数据。 * runtime/pprof: 支持 OS X CPU 性能分析。 * runtime: 为 runtime-gdb.py 的美化打印器添加健全性检查, 检查 ARM 系统调用失败(感谢 Shenghou Ma), darwin 和 linux 的信号屏蔽, 在主线程上运行 init, 调整 arena 大小以适应虚拟地址空间限制。 * 规范: 允许/禁止在导入路径中使用 \uFFFD, 将方法集、嵌入应用于所有类型,而不仅仅是命名类型, 关于导出、标识符唯一性的澄清, 导入路径的实现限制, 在函数内部,变量必须被求值, 使用术语“词法标记”(而非“词法符号”)。 * sync: 添加 Once 示例,移除旧的 WaitGroup 示例。 * test/bench/shootout: 更新 post-Makefile。 * test: 添加文档,杂项修复。 * testing: 添加 -test.example 标志以控制示例的执行。 * text/template: 添加展示使用自定义函数的示例, 添加使用多个模板的示例, 修复重定义 bug。 * time: 添加关于如何使用 Duration 常量的注释。

2012-02-22

本次每周快照包含对 os 和 runtime 包的变更。

这应该是 Go 1 之前最后一个重大不兼容变更。os 包中不再包含如 EINVAL 等错误常量,因为这些值的集合因底层操作系统而异。新增了一些可移植的函数(如 IsPermission)来测试常见的错误属性,以及一些采用更符合 Go 风格命名的新错误值(如 ErrPermission 和 ErrNoEnv)。

os.Getenverror 函数已被移除。若要区分环境变量不存在与环境变量为空字符串的情况,请使用 os.Environ 或 syscall.Getenv。

Process.Wait 方法已移除其 option 参数,相关的常量也已从包中删除。同时,Wait 函数也被移除;仅保留了 Process 类型的方法。

不可移植的 Waitmsg 类型已被可移植的 ProcessState 取代。

runtime 包导出的大量 API 已被移除,相关功能由其他包提供。使用 runtime.Type 接口或其具体实现类型的代码现在应使用 reflect 包。使用 runtime.Semacquire 或 runtime.Semrelease 的代码应使用通道(channel)或 sync 包中的抽象。

runtime.Alloc、runtime.Free 和 runtime.Lookup 函数(这是一套用于调试内存分配器的不安全 API)已无替代方案。

runtime.Cgocalls 和 runtime.Goroutines 函数已分别重命名为 runtime.NumCgoCall 和 runtime.NumGoroutine。

"go fix" 命令将更新代码以适应大多数此类变更。

其他变更:
*   5c, 6c, 8c, 6g, 8g:修正边界检查(感谢 Shenghou Ma)。
*   5g, 6g, 8g:积极刷新已修改的全局变量。
*   8a, 8l:添加 EMMS 指令(感谢 Evan Shaw)。
*   bufio:对正确的 Peek 操作不再返回错误。
*   build:添加 make.bash --no-clean 选项,改进 Windows 支持。
*   builder:如有可能,重用现有工作区(感谢 Shenghou Ma),更新以适应 os.Wait 变更。
*   bytes:记录参数为 nil 时 Compare/Equal 的语义,并添加测试。
*   cgo:修复不透明类型的定义(感谢 Gustavo Niemeyer)。
*   cmd/api:记录函数返回类型以用于变量类型检查(感谢 Rémy Oudompheng)。
*   cmd/cgo:错误修复。
*   cmd/dist:添加针对 clang 的 -Wno 选项(感谢 Bobby Powers),修复在非 ARM 系统上安装 cmd/5g 的问题,修复 pprof 权限(感谢 Bobby Powers),使 defaulttarg() 中的目录检查更健壮(感谢 Shenghou Ma),交叉编译时使用正确的包目标(感谢 Alex Brainman)。
*   cmd/gc:正确类型检查 return 中的表达式列表(感谢 Rémy Oudompheng),不再认为被提及 256 次的变量是未使用的(感谢 Rémy Oudompheng),常量移位溢出时报错(感谢 Rémy Oudompheng),修复包含 _ 字段的结构体比较问题,修复浮点常量 % 的错误,新的、更宽松的布尔规则。
*   cmd/go:添加 tool -n 标志,go test -i 正确处理 cgo 包(感谢 Shenghou Ma)。
*   codereview:为新的克隆 URL 修复提交消息(感谢 Shenghou Ma)。
*   database/sql/driver:API 清理。
*   doc:许多修复和调整。
*   encoding/gob:为用户类型(而非基础类型)缓存引擎,捕获发生时的内部错误,修复相互递归的结构体切片。
*   encoding/json:忽略匿名字段。
*   go/doc:按名称顺序返回 Examples。
*   go/parser:虚数常量和 ! 可以开始一个表达式。
*   go/printer, gofmt:改进了逗号的放置。
*   go/printer:重写选择器表达式时不要丢失相关的括号。
*   godoc:调整 pre 块中的行高,运行 "go doc foo" 时不打印无用的建议,修复绝对->相对路径映射,修复标签不匹配的验证错误(感谢 Scott Lawrence),导入示例代码支持,再次支持平铺目录视图。
*   html/template:添加 Clone 和 AddParseTree,不要在 Stringer 之后进行间接引用,对文档进行微小调整以改善 HTML 排版。
*   image:添加 Decode 示例。
*   ld:为大型、无指针的未初始化数据添加 NOPTRBSS。
*   math/rand:Intn 等函数在参数 <= 0 时应 panic。
*   misc/dist/windows:发行版构建器更新(感谢 Joe Poirier)。
*   misc/goplay:留在工作目录,在临时目录中构建。
*   net, os, syscall:删除 os.EPLAN9(感谢 Mikio Hara)。
*   net/http:添加可选的 Server.TLSConfig 字段。
*   net/smtp:使用 EHLO 然后是 HELO。
*   net/textproto:像浏览器一样接受错误的 MIME 头。
*   net/url:统一接收者名称。
*   net:使组播上的 LocalAddr 返回组地址(感谢 Mikio Hara),使 parseProcNetIGMP 更健壮(感谢 Mikio Hara),更多的自连接调试:在 internetSocket 中如果 ra == nil 则 panic,如果 sockaddrToTCP 错误地返回 nil 则 panic,其他杂项修复。
*   path, path/filepath:完善文档(感谢 Rémy Oudompheng)。
*   pprof:添加 Profile 类型。
*   runtime:避免在 malloc 期间进行 malloc,定义 NSIG 以修复 plan 9 构建(感谢 David du Colombier),修复 FreeBSD 上线程创建周围的信号处理(感谢 Devon H. O'Dell),goroutine 配置文件、栈转储,在 FreeBSD 386、amd64 上实现 runtime.osyield(感谢 Devon H. O'Dell),允许 SIGTSTP、SIGTTIN、SIGTTOU 的默认行为,将未使用的内存释放给操作系统(感谢 Sébastien Paolacci),删除过时的文件(感谢 Mikio Hara)。
*   spec:使所有比较结果为无类型 bool,细化类型开关中关于变量的措辞,结构体比较只比较非空白字段。
*   syscall:在 Linux 的 SysProcAttr 中将 Pdeathsig 类型设为 Signal(感谢 Albert Strasheim),修复 Error 中的边界检查,强制 Windows 始终使用美国英语错误消息(感谢 Shenghou Ma)。
*   test:迁移到新的基于 Go 的测试框架。
*   text/template:计算函数字段。
*   time:如果未找到系统副本,则使用 Go 发行版的 zoneinfo。

2012-02-14

此版本包含一些需要客户端代码进行相应修改的包变更。

flate、gzip 和 zlib 的 NewWriterXxx 函数不再返回错误。编译器将标记所有受影响的代码,这些代码随后必须手动更新。os 包的 Exec 和 Time 函数已被移除。调用方应改用 syscall.Exec 和 time.Now。ShellExpand 函数已重命名为 ExpandEnv。NewFile 函数现在接受 uintptr 参数,且 *File.Fd 方法返回 uintptr。

runtime 包的 Type 类型及其方法已被移除。
请改用 reflect 包。

其他变更:
* 8a、8l:新增 LFENCE、MFENCE、SFENCE(感谢 Darren Elwood)。
* all.bat:将错误代码报告给 gobuilder(感谢 Alex Brainman)。
* archive/zip:对 *Writer 类型隐藏 Write 方法。
* build:创建正确的 $GOTOOLDIR,
    移除 deps.bash(感谢 Anthony Martin),
    在 Windows 上拒绝 make.bash。
* builder:为 Windows 设置 $GOBUILDEXIT(感谢 Alex Brainman),
* bytes:新增 Reader,
    如果缓冲区未完全排空,WriteTo 返回错误。
* cgo:支持使用 gccgo 返回 errno(感谢 Rémy Oudompheng)。
* cmd/api:跟踪常量引用。
* cmd/cgo:在 -godefs、-cdefs 输出中省略 //line。
* cmd/dist:修复(感谢 Alex Brainman、Gustavo Niemeyer、Mikio Hara、Shenghou Ma)。
* cmd/fix:对 exp、old、deleted 包发出警告。
* cmd/gc:在类型检查内联函数体期间暂停安全模式。
* cmd/go:大量修复,
    为 go run 和 go tool 连接 os.Stdin,
    go get 方案检测(感谢 Daniel Krech),
    尊重 test -timeout 标志。
* cmd/vet:对构造 'Println(os.Stderr, ...)' 发出警告(感谢 Shenghou Ma)。
* compress/gzip:移除无用代码(感谢 Alex Brainman)。
* container/heap:添加示例。
* dashboard:添加 gobuilder -fail 模式。
* database/sql:更多测试,
    从 ScannerInto/ScanInto 中移除 Into,
    将 ErrTransactionFinished 重命名为 ErrTxDone,
    支持在 Tx.Exec 中使用 ErrSkip(感谢 Andrew Balholm),
    像 encoding/json 一样将指针视为可空类型(感谢 Andrew Pritchard)。
* debug/macho:从包注释中移除极其冗长的 URL。
* dist:在 Windows 上当调用 fatal() 时防止递归循环(感谢 Daniel Theophanes)。
* doc:在 'learn' 和 'reference' 页面添加 App Engine 文档,
    添加 playground.js,
    关于发布版本兼容性的新文档,
    更新 install.html 以适用于二进制发行版,添加 install-source.html。
* effective_go:使用新的 map 删除语法。
* encoding/binary:新增 Size,用于替代旧的 TotalSize 功能,
    再次尝试描述 Read 和 Write 数据的类型,
    允许使用 slice;明确说明。
* encoding/json:记录缓冲。
* encoding/xml:支持 omitempty 标志(感谢 Gustavo Niemeyer)。
* exp/norm:合并了字符信息和分解表。
* exp/types:在 GcImporter 中使用 build.FindTree(感谢 James Whitehead)。
* flate:删除 WrongValueError 类型。
* fmt:诊断应用于指针的无效动词,
    正确扫描 FALSE。
* gc:错误修复,更好的错误消息。
* go/doc:处理递归嵌入类型(感谢 Gary Burd),
    不丢失具有未导出类型的导出常量/变量,
    将预声明的 error 接口视为导出类型。
* go/printer:实现 SourcePos 模式。
* godoc:在索引中列出示例,
    新设计,
    将独立示例视为“整个文件”示例。
* html/template:添加了关于示例和文档的更多说明(感谢 Bjorn Tipling)。
* log/syslog:返回用户提供的数据长度,而不是头部长度。
* make.bat:移除双引号(感谢 Alex Brainman)。
* math:修复 gamma 文档,链接到 OEIS。
* mime:隐藏一些内部细节。
* misc/dist:添加用于 Linux 的二进制发行版打包脚本,
    二进制发行版打包脚本的新层次结构。
* net/http:添加 ServeContent,
    不要在临时接受失败时忙等待,
    修复持久连接的客户端 goroutine 泄漏,
    修复文档中对 URL.RawPath 的引用(感谢 Bjorn Tipling),
    重复注册时 panic,
    使用 mtime < t+1s 检查未修改(感谢 Hong Ruiqi)。
* net:在 Close 期间避免 Shutdown,
    避免 TCP 自连接,
    在 Windows 上禁用 TestDialTimeout,
    在 Alpha GNU/Linux 上禁用多播测试,
    在 BSD 变体上禁用 SO_REUSEPORT 的野蛮使用(感谢 Mikio Hara),
    为多播监听器启用流上的标志(感谢 Mikio Hara),
    利用 listenerBacklog(感谢 Mikio Hara),
    如果未给出地址,优先监听 IPv4(感谢 Mikio Hara)。
* os/exec:添加 Cmd.Waitmsg。
* os/signal:重新启用此包。
* regexp/syntax:添加包和 Parse 的注释。
* regexp:允许在 Replace、ReplaceString 中使用替换。
* runtime、pprof:添加线程创建的性能分析。
* runtime、time:加速短模式下的测试(感谢 Rémy Oudompheng)。
* runtime:在 OABI 系统上提前退出(感谢 Shenghou Ma),
    如果 64 位无法工作则降级到 32 位 malloc,
    修复 32 位系统上的 "SysReserve returned unaligned address" 错误(感谢 Shenghou Ma),
    修复 grsec 支持(感谢 Gustavo Niemeyer),
    在 386 上,修复所有线程的 FP 控制字,而不仅仅是初始线程,
    在 Select 内存块中将 lockorder 放在 pollorder 之前,
    使用 startpanic,使得只有一个线程处理传入的 SIGQUIT。
* spec:添加从 'method set' 到其使用位置的正向链接,
    澄清对无类型浮点数的实现限制,
    禁止递归嵌入接口,
    方法名必须唯一,
    在关闭的 channel 上发送计为“继续”,
    字符串更像 slice 而不是数组。
* strconv:处理非常大的输入。
* strings:为 Reader 添加 Seek 和 ReadAt 方法。
* sync/atomic:在错误的系统上禁用锤子指针测试。
* testing:让运行时捕获 panic。
* text/template:建议 HTML 用户使用 html/template。
* text/template/parse:节点的深拷贝方法。
* time:清理 MarshalJSON,添加 RFC3339 方法,
    使用 "2006-01-02 15:04:05.999999999 -0700 MST" 作为 String 格式。

2012-02-07

本周快照包括 Go 工具的重新组织。
只有 go、godoc 和 gofmt 工具会被安装到 $GOROOT/bin(或 $GOBIN)目录。 其余工具将安装至 $GOROOT/bin/tool 目录。 这使得使用频率较低的工具(如 6g、cgo、govet 等)不会出现在用户 PATH 环境变量中。 这些工具可通过 go tool 命令调用,格式为 'go tool 命令'。 例如,要对 hello.go 进行 vet 检查,可输入 'go tool vet hello.go'。 输入 'go tool' 可查看可用工具列表。 此次调整中,部分工具被简化了名称: 6cov → cov 6nm → nm goapi → api gofix → fix gopack → pack gopprof → pprof govet → vet goyacc → yacc os/signal 包已迁移至 exp/signal。 新引入了名为 'dist' 的工具,用于构建 GC 工具链并引导启动 go 工具。旧的构建脚本和 Makefile 文件已被移除。其他变更: * 5a、6a、8a、cc:提交 y.tab.[ch] 文件。 * 5l、6l、8l、ld:修复内存泄漏(感谢马圣厚)。 * 5l、6l、8l:实现 -X 标志。 * 5l:使 -v 选项输出更少非必要杂项信息(感谢马圣厚), 优化 patch() 中的常见情况(感谢马圣厚)。 * 8a、8l:实现 RDTSC 指令支持(感谢马圣厚)。 * 8g:对局部 pc 使用 uintptr 类型。 * archive/zip:支持完整的 FileMode 标志范围(感谢古斯塔沃·尼迈耶)。 * bufio:移除特殊错误类型,更新文档。 * build:将 "-c" 标志移至 HOST_CFLAGS(感谢安东尼·马丁), 移除不必要的 pragma 指令(感谢安东尼·马丁)。 * builder:移除 recover 代码块。 * bytes:API 调整。 * cgo:在 gccgo 风格的 C.GoString 中接受空指针(感谢雷米·乌东芬), 在相关情况下于致命错误中打印行号(感谢雷米·乌东芬)。 * cmd/dist:在环境输出中添加 GOBIN(感谢古斯塔沃·尼迈耶), 修复 bsubst 中的 bug(感谢亚历克斯·布雷恩曼), 修复 openbsd 上的构建(感谢原三雄), 生成 runtime 包的文件, 忽略以 . 或 _ 开头的文件名, 防止 VERSION 创建时的竞态条件(感谢古斯塔沃·尼迈耶)。 * cmd/gc:方法名称的另一种特殊情况(%hhS), 描述调试标志(感谢安东尼·马丁), 诊断导入路径中的 \, 禁止 switch _ := v.(type) 形式, 在导出时不在结构体字面量中打印隐式类型, 修复涉及 && 和 || 的表达式的代码生成重排序, 在 mkopnames 中使用八进制转义(感谢安东尼·马丁), 在错误消息中使用原始常量表达式(感谢雷米·乌东芬)。 * cmd/go:通过 git 分支添加对发布标签的支持(感谢古斯塔沃·尼迈耶), 构建:当调用文件时打印导入错误(感谢凯尔·莱蒙斯), 测试完成后清理测试目录, 修复关于不存在工具的错误消息(感谢雷米·乌东芬), 修复 gccgo 标准库的处理(感谢雷米·乌东芬), 修复 `go clean -n` 和 `go clean -x` 时的 panic(感谢桑贾伊·梅纳库鲁), 引入对使用 gccgo 的 "go build" 的支持(感谢雷米·乌东芬), 使 vcs 命令实际收集输出(感谢罗杰·佩普), 将环境变量 CGO_CFLAGS 传递给 cgo(感谢杰夫·霍奇斯), 记录导入失败的位置以供错误报告(感谢雷米·乌东芬)。 * cmd/goapi:扩展嵌入式接口。 * cmd/goinstall:现已移除,因为 'go get' 可用(感谢古斯塔沃·尼迈耶)。 * cmd/ld:修复 gdbscript(感谢魏广晶)。 * cmd/pack:将错误消息中的 gopack 更改为 pack。 * codereview:杂项修复和改进。 * crypto/elliptic:p224Contract 可能产生非最小表示。 * crypto/tls:连接到 SSLv3 服务器时提供更好的错误消息。 * crypto/x509:使用不区分大小写的主机名匹配。 * dashboard:支持子仓库,更新至 go1beta。 * database/sql:允许扫描到 interface{}。 * doc:更新 go1.html 以反映最近的变更。 * encoding/base32:添加 DecodeString 和 EncodeToString 辅助方法, 解码时忽略换行符。 * encoding/base64:解码时忽略换行符。 * encoding/gob:为 CommonType 编写文档。 * encoding/hex:规范化错误类型名称。 * encoding/json:对可寻址的 T 值调用 (*T).MarshalJSON。 * encoding/xml:修复具有子元素的 xml.Name 的解码(感谢古斯塔沃·尼迈耶), 修复 Decoder.Skip 的文档。 * exp/norm:添加了一些用于特定形式性能测量的基准, 为表格式更改做了一些小改动。 * expvar:修订 API。 * fix:将 image/{bmp,tiff} 添加到 go1pkgrename。 * flag:允许 FlagSet 不写入 os.Stderr, 描述 Duration 标志的有效输入。 * fmt:添加 NaN 映射键的测试, 修复 Scan 中的缓存 bug。 * go/build:在 'generated by make' 和包声明之间添加空格, 更新 syslist.go 的包注释。 * go/doc:修复 ToHTML 中的 URL 链接(感谢加里·伯德), 将 error、rune 添加到预声明类型列表, 不要丢失非导出类型的工厂函数, 不要显示导出匿名字段的方法, 启用 AllMethods 标志(并修复逻辑)。 * go/printer:不打印不正确的程序。 * go/scanner:使用惯用的接收器名称。 * go/spec:更新关于映射类型的语言描述。 * go/token:移除对 encoding/gob 的依赖。 * gob:模糊测试,以及针对非常大的类型名称的修复。 * gobuilder:使用 go tool 构建和测试子仓库。 * godoc:添加 URL 模式 m=methods, 为空的文件系统树提供诊断, 修复标识符搜索, 修复 URL "/" 的重定向循环, 提供指向子目录的链接(如果存在), 排序"其他包"列表, 更新 appinit.go 中的元数据。 * gophertool:修复构建状态仪表板的链接(感谢金钟民)。 * hgignore:添加 VERSION.cache(感谢古斯塔沃·尼迈耶), 删除残留文件,忽略 tmpltohtml。 * html:添加包文档。 * image:添加包文档,将 s/UnknownFormatError/ErrFormat/ 重命名, 删除 image.Repeated 类型, 从标准库中移除 image/bmp 和 image/tiff。 * io/ioutil:在 ReadFile 和 ReadAll 中记录 EOF 行为。 * io:API 调整。 * libmach:添加 Plan 9 的存根(感谢安东尼·马丁)。 * make.bash:不删除 hgpatch。 * math/big:添加对 Int 位的原始访问, API 和文档清理。 * misc/goplay:使用 go tool "run"(感谢奥利维埃·迪佩雷)。 * misc/osx:不设置 GOROOT 或修改配置文件, 更新以适应 dist 工具,删除 image.bash,更新 readme。 * net、syscall:为 windows 添加 IPv4 多播辅助函数(感谢原三雄)。 * net/http/httputil:修复 DumpRequestOut 中的竞态条件, 在反向代理中保留查询参数。 * net/http:默认不为 HEAD 请求设置 Content-Type 头(感谢帕特里克·迈隆·尼尔森), 修复错误情况下的空指针解引用(感谢沃尔克·多布勒), 在响应读取错误时尽早关闭客户端 fd, 在 POST 请求时在客户端 jar 中设置 cookie(感谢沃尔克·多布勒)。 * net/rpc:修复 Call.Error 上的数据竞态。 * net:ListenMulticastUDP 支持跨多个监听器并发监听(感谢原三雄), 在 linux/arm 上禁用常规多播测试(感谢原三雄), 修复 Plan 9 构建(感谢安东尼·马丁), 修复 windows 构建(感谢亚历克斯·布雷恩曼), 将 DNSConfigError 移至可移植文件, 移除类型 InvalidConnError 和 UnknownSocketError, 将错误变量名 e、errno 替换为 err(感谢原三雄), 在 windows 上运行 TestDialTimeout(感谢亚历克斯·布雷恩曼), 更新注释以移除冗余的 "net" 前缀(感谢原三雄)。 * os/exec:TestExtraFiles - 关闭任何泄漏的文件描述符, 确保在泄漏 fd 测试中文件不会提前关闭。 * os/signal:迁移至 exp/signal。 * os/user:windows 实现(感谢亚历克斯·布雷恩曼)。 * os:Process.handle 使用 syscall.Handle(感谢魏广晶), 文件 windows 使用 syscall.InvalidHandle 代替 -1(感谢魏广晶), 移除 SIGXXX 信号变量, 将 FileStat.Sys 转为 FileInfo 上的方法(感谢古斯塔沃·尼迈耶)。 * path/filepath:修复并简化符号链接测试。 * reflect:添加关于 Type.Field 分配的注释, 测试 PtrTo 返回与程序类型匹配的类型。 * runtime:添加 runtime.cputicks() 并用其初始化 fastrand 的种子(感谢达米安·格里斯基), 删除 UpdateMemStats,替换为 ReadMemStats(&stats)(感谢雷米·乌东芬), 修复 float64 哈希, 使用 GOTRACEBACK 决定是否显示运行时帧, 使用每映射哈希种子(感谢达米安·格里斯基)。 * spec:向斐波那契数列添加一个数字。 * std:向无标签字面量添加结构体字段标签。 * strings:添加 Fields 示例。 * syscall:添加 Timeval.Nano、Timespec.Nano,用于转换为 Duration, 在 Plan 9 上缓存环境变量(感谢安东尼·马丁), 修复 types_*.go 中的 // +build 注释, 修复 types_linux.go 中的构建指令, 更新引导脚本以与新 go 命令同步(感谢原三雄)。 * test:添加导致不正确 gccgo 错误的导入测试, 添加接收器名为 _ 的测试, 添加映射中 NaN 的测试, 添加导致 gccgo 编译器崩溃的测试, 对于没有 main 函数的文件不使用 package main, 修复 bug 头信息, 浮点数到整数的测试用例, 使映射 nan 计时测试更健壮, 匹配 gccgo 错误消息, 测试使用具有相同元素类型的两个不同命名类型的 append, 测试带参数的方法表达式,以及带导入的方法表达式, 测试超出 len 的切片, 测试 x := <-c 接受一般表达式。 * testing:捕获 panic,呈现它们,并将测试标记为失败。 * unicode:为大 var 块和 SpecialCase 变量编写文档。 * vet:添加对无标签结构体字面量的检查。

2012-01-27

本次每周快照将 html 包重命名为 exp/html。该包不会包含在 Go 1 发行版中,但可从源代码安装。

archive/tar、archive/zip、compress/gzip、compress/zlib 和 crypto/bcrypt 包中的错误变量已从 FooError 重命名为 ErrFoo。暂无对应的 gofix 修复工具,但编译器会标记需要更新的代码。

本次每周快照将众多包迁移至主 Go 仓库的子仓库。以下是新旧导入路径对照:

	crypto/bcrypt          code.google.com/p/go.crypto/bcrypt
	crypto/blowfish        code.google.com/p/go.crypto/blowfish
	crypto/cast5           code.google.com/p/go.crypto/cast5
	crypto/md4             code.google.com/p/go.crypto/md4
	crypto/ocsp            code.google.com/p/go.crypto/ocsp
	crypto/openpgp         code.google.com/p/go.crypto/openpgp
	crypto/openpgp/armor   code.google.com/p/go.crypto/openpgp/armor
	crypto/openpgp/elgamal code.google.com/p/go.crypto/openpgp/elgamal
	crypto/openpgp/errors  code.google.com/p/go.crypto/openpgp/errors
	crypto/openpgp/packet  code.google.com/p/go.crypto/openpgp/packet
	crypto/openpgp/s2k     code.google.com/p/go.crypto/openpgp/s2k
	crypto/ripemd160       code.google.com/p/go.crypto/ripemd160
	crypto/twofish         code.google.com/p/go.crypto/twofish
	crypto/xtea            code.google.com/p/go.crypto/xtea
	exp/ssh                code.google.com/p/go.crypto/ssh
	net/dict               code.google.com/p/go.net/dict
	net/websocket          code.google.com/p/go.net/websocket
	exp/spdy               code.google.com/p/go.net/spdy
	encoding/git85         code.google.com/p/go.codereview/git85
	patch                  code.google.com/p/go.codereview/patch

Gofix 工具会将这些包的导入路径更新为新路径。依赖这些包的用户需要通过 'go get' 命令重新安装。
其他变更: * 6c, 8c:使浮点代码对NaN安全。 * 6l, 8l:移除未使用的宏定义(感谢Shenghou Ma)。 * archive/tar:修复TestNonSeekable中的竞态条件。 * archive/zip:新增os.FileInfo与FileHeader之间的转换函数。 * build:不再构建所有C编译器(感谢Shenghou Ma),移除现已在子仓库中的代码。 * bytes:移除无用代码,完善文档,恢复内存不足时的panic,将缓冲区大小溢出转为错误。 * cgo:-cdefs应将unsafe.Pointer翻译为void *(感谢Shenghou Ma)。 * cmd/gc:修复order.c中ninit本身的递归遗漏。 * cmd/go:修复bug,实现go get,正确处理'go run'的-n和-x标志(感谢Shenghou Ma),解决get lp.net/project/foo的歧义问题(感谢Gustavo Niemeyer),用使用说明字符串生成的文本更新doc.go。 * cmd/goapi:新增用于跟踪导出API随时间变化的工具。 * codereview:支持子仓库。 * compress/flate:修复一处拼写错误,压缩率提升3-4%,将哈希表长度从1<<15增加到1<<17,速度提升0%-16%,启用惰性匹配,以增加算术操作为代价减少内存压力,使用append替代slice+counter。 * crypto:将部分FooError重命名为ErrFoo。 * dashboard:修复对新xml包的-commit支持。 * database/sql:新增NullInt64、NullFloat64、NullBool(感谢James P. Cooper),将SQL空值转换为[]byte时设为nil(感谢James P. Cooper),修复Tx.Query(感谢Blake Mizerany)。 * doc:扩展GOMAXPROCS的常见问题解答,更新至Go 1版本。 * doc/go1:新增encoding/xml和net/url变更说明(感谢Gustavo Niemeyer),补充hash和net变更的更多信息,删除html相关引用,新增flag、runtime、testing、image、mime、filepath.Walk等内容,记录子仓库。 * encoding/binary:文档说明PutVarint、PutUvarint可能引发panic。 * encoding/varint:删除WriteXvarint。 * encoding/xml:新增忽略标签的文档(感谢Gustavo Niemeyer),使API更贴近其他包(感谢Gustavo Niemeyer),改进[]byte处理(感谢Gustavo Niemeyer),移除Marshaler支持(感谢Gustavo Niemeyer),支持用"-"忽略字段(感谢Gustavo Niemeyer)。 * exp/ebnflint:在'go test'期间测试规范。 * exp/norm:修复变更10087引入的微妙bug:随机偏移。 * gc, runtime:处理浮点映射键。 * gc:避免错误信息中出现DOT,不尝试将类型不正确的键添加到哈希(感谢Jeff R. Allen),修复求值顺序,修复接口比较中的递归循环,处理内建complex操作参数中的函数调用,修复下标访问常量字符串时遗漏的类型检查,允许内联函数使用unsafe.Pointer,放宽内联条件,类型开关的静态implements检查仅适用于具体case类型,为递归接口bug添加测试用例。 * go/ast:尊重ImportSpec.EndPos(感谢Scott Lawrence)。 * go/build:在Context中新增BuildTags,允许!tag。 * go/doc:重写并新增大量测试。 * go/parser:使用显式的parser.Mode类型。 * go/printer, gofmt:尊重签名中的换行符。 * go/scanner:使用显式的scanner.Mode类型。 * gob:为debug.go添加注释使其通常不被构建,减少最大消息大小。 * godoc:记录节点打印错误,将概述移至API目录之前,启动时更新元数据。 * gofix:新增-debug标志以更快诊断内部错误,处理xmlapi修复中的xml.Unmarshal(感谢Gustavo Niemeyer),更新go1pkgrename以支持子仓库。 * goyacc:修复yydebug >= 2时的索引bug。 * ld:修复非cgo二进制文件的Mach-O代码签名(感谢Mikkel Krautz)。 * libmach:交叉编译支持(感谢Shenghou Ma)。 * math/big:为x86-64、386和ARM新增bitLen的汇编版本(感谢David G. Andersen),bitLen返回类型为int;在amd64上使用MOVL(感谢David G. Andersen),为Rat和Int的SetString和Scan方法新增示例,内部bitLen函数使用的算法略有改进(感谢David G. Andersen),同时测试bitLen和bitLen_g。 * net/http:新增Request.RequestURI字段,禁用Transport竞态/死锁bug的测试,修复Transport死锁(感谢Yoshiyuki Kanno),使ParseForm忽略未知内容类型(感谢Roger Peppe),解析CONNECT请求(感谢Andrew Balholm)。 * net/rpc:修复基准测试中的数据竞争,修复TestClientWriteError测试中的竞态,记录Call应答丢弃。 * net:Dial、ListenPacket支持"ip:protocol"网络用于原始IP套接字(感谢Mikio Hara),时间归零时实际重置截止时间,统一OpError消息(感谢Mikio Hara),修复dialing google测试(感谢Mikio Hara),UDPConn已连接时使WriteTo失败(感谢Mikio Hara)。 * regexp:移除残留的Error类型。 * runtime:为零大小类型新增类型算法,将NumCPU声明移至debug.go。 * spec:函数调用,*nil时引发panic。 * syscall:在OS X上新增NOTE_*常量(感谢Robert Figueiredo)。 * test:显式使用变量以避免gccgo的"未使用"错误。 * text/template:新增Template示例。

2012-01-20

本次每周快照将exp/sql包重命名为database/sql,并将utf8.String从unicode/utf8移至exp/utf8string。

包net的SetTimeout方法已更改为SetDeadline。

os包中的许多函数现在接受os.FileMode参数而非原始uint32。同时定义了os.ModeSticky常量。

image.YCbCr首个缓冲区元素的含义已变更,以匹配image.RGBA等其他图像类型的语义。

crypto/hmac中的NewMD5、NewSHA1和NewSHA256函数已被弃用。请改用New,并显式传递哈希函数。
其他变更: * 构建脚本:移至 buildscript 目录(感谢 Shenghou Ma)。 * bytes 包:在 example_test.go 中添加常规版权声明(感谢 Olivier Duperray)。 * cmd/go:从文档中移除对 'gotest' 的引用,在包扫描中跳过 _obj 目录。 * container/heap:改进包文档。 * crypto/elliptic:添加常数时间 P224 实现。 * crypto/hmac:添加 HMAC-SHA224 和 HMAC-SHA384/512(感谢 Luit van Drongelen)。 * crypto/tls:添加 FreeBSD 根证书位置(感谢 Shenghou Ma)。 * crypto/x509:移除对 rsa 的显式使用。 * doc:各项更新(感谢 Jongmin Kim, Scott Lawrence, Shenghou Ma, Stefan Nilsson)。 * encoding/json:允许标签名称中包含 / 和 %,文档说明尖括号转义,修正注释,调整标签名称测试(感谢 Mikio Hara)。 * encoding/xml:在字段中支持 xml.Name 的序列化/反序列化(感谢 Gustavo Niemeyer)。 * exp/inotify:修复 linux 测试中的数据竞争。 * exp/proxy:在 URL 变更后修复构建(感谢 Gustavo Niemeyer)。 * exp/sql:默认在扫描到 []byte 时进行复制,将 NullableString 重命名为 NullString 并允许其作为参数使用。 * exp/ssh:为 uint32 和 uint64 类型添加序列化函数,处理仅包含 '\n' 的版本,重命名(部分)字段(感谢 Christopher Wedgwood)。 * exp/terminal:修复在非 Linux 系统上使用 Makefile 的构建。 * fmt:启用并修复 malloc 测试。 * gc:不为 error 类型输出 pkgpath,不因函数外的 return 语句报错(感谢 Scott Lawrence),导出内联函数中结构体字面量的字段名如果是嵌入的内置类型则不应被限定,修复嵌入接口的无限递归,为 esc.c 的 sink 添加 orig 以便 -mm 诊断再次工作,处理 string/arrayrune 转换的打印,移除冗余代码(感谢 Shenghou Ma)。 * go/build:FindTree 返回的包名中不包含反斜杠(感谢 Alex Brainman)。 * go/doc:收集导入信息,不遮蔽接收器。重写并完善测试框架。段落之间仅打印一个换行符。 * go/parser:表达式可以包含注释。 * go/scanner:修正示例(感谢 Olivier Duperray)。 * go/token:用 Iterate() 替代 Files()。 * godoc:为 cmd 文档标题添加锚点,移除 "need more packages?" 链接,使用 JSON 块指定 HTML 页面元数据,支持 HTML 元数据中的规范路径。 * html/template:在 API 变更后修正文档(感谢 Gustavo Niemeyer)。 * html:在外来内容中,检查突破点处的 HTML 集成点。 * image/color:将 modelYCbCr 重命名为 yCbCrModel(感谢 Benny Siegert),简化文档(感谢 David Crawshaw)。 * image:添加 PixOffset 方法。 * math/rand:在短模式下减少测试时长,文档说明全局生成器的默认初始种子(感谢 Scott Lawrence)。 * mime:为保持一致性,使 FormatMediaType 接受完整类型。 * misc/cgo/test:使测试能在 Windows 上运行(感谢 Alex Brainman)。 * net/http/cgi:增加一个不稳定测试的超时时间。 * net/http:更改测试以使用 override 参数而非 chan,在关闭 HTTP 连接前记录处理器 panic,在重定向时发送 jar 中的 cookies(感谢 Jeff Hodges),文档应使用正确签名的 NewRequest(感谢 Christoph Hack),稍微更新 Client 文档。 * net/url:清理 URL 接口(v2)(感谢 Gustavo Niemeyer)。 * net:测试中使用一致的日志格式(感谢 Mikio Hara),各项构建修复(感谢 Mikio Hara),在 fd_windows.go 中使用 NewTimer 而非 NewTicker。 * old/netchan:修复客户端哈希映射上的数据竞争。 * os/exec:在 LookPath 中移除微不足道的内存分配(感谢 Gustavo Niemeyer)。 * os:移除关于 NewSyscallError 特殊性的旧说明(感谢 Alex Brainman)。 * path:添加示例(感谢 Sanjay Menakuru)。 * pkg:为 "手动生成" 的文件添加并修正版权(感谢 Olivier Duperray),为 windows 版本添加缺失的 godoc 注释(感谢 Alex Brainman)。 * regexp:添加 SubexpNames 方法。 * runtime:为 FreeBSD/386 和 amd64 实现 runtime.usleep(感谢 Shenghou Ma),为 Darwin 实现 madvise 和 SysUnused(感谢 Dave Cheney)。 * sync/atomic:修复测试中的数据竞争。 * syscall:为 TimeSpec, TimeVal 添加 Unix 方法,修复 plan9 构建(感谢 Mikio Hara)。 * test:更改多个测试以不打印输出,修复 bug364 使其实际运行,使 bug345 的错误信息匹配 gccgo,将 golden.out 按测试拆分为期望输出。 * testing:不恢复示例的 panic(感谢 Shenghou Ma),添加示例文档。 * text/template/parse:使用人性化的错误打印。 * text/template:修复重新定义时的 nil 错误。 * time:添加 Since 函数,返回自某个过去时间 t 以来经过的时间。

2012-01-15

本次每周快照包含两个可能需要修改客户端代码的包变更。

image 包的 Tiled 类型已重命名为 Repeated。

encoding/xml 包已做出更改,以更符合习惯的方式使用结构体标签,以及其他调整。如果您使用 xml 包,请阅读变更说明以了解您的代码是否受到影响:
	http://code.google.com/p/go/source/detail?r=70e914beb409

gc 编译器现在默认启用函数内联。
**其他变更:** * **bytes:** 修复在 EOF 处读取 0 字节的 Buffer 不应报 EOF 错误的问题。 * **cgo:** 修复当常量的值无法解析时,从 DWARF 信息获取的问题;将 `_cgo_export.h` 写入对象目录而非源代码目录。 * **cmd/go:** * 添加用于并行(类似 `make -j`)的 `-p` 标志。 * 为 `build` 和 `install` 命令添加 `-v` 标志。 * 在导入路径参数中支持 `...` 模式。 * 修复构建期间的数据竞争问题。 * 修复用于编译的导入目录列表。 * 修复链接器参数。 * 处理 cgo 的 `pkg-config` 指令。 * 处理 cmd 目录路径。 * 将测试文件包含在 `fmt`、`vet` 和 `fix` 命令中(感谢 Sanjay Menakuru)。 * 在 10 分钟后终止测试进程。 * 将参数传递给 `run` 命令(感谢 Eric Eisner)。 * 依赖退出代码来判断测试是否通过。 * 在 `go fix`、`go fmt`、`go vet` 的输出中使用相对路径。 * **cmd/gofmt:** 通过对 `cmd/gofmt` 运行 `gofmt` 来修复 `simplify.go` 的问题(感谢 Olivier Duperray)。 * **crypto/openpgp:** 进行了多处清理;在检查 DSA 签名前截断哈希值。 * **crypto/tls:** 改进 TLS 客户端认证(感谢 Jeff R. Allen);为新的 `time` 包更新 `generate_cert.go`。 * **dashboard:** 更好的缓存,修复错误。 * **doc:** 更新《如何编写 Go 代码》以使用 go 工具;修复损坏的函数代码漫游示例。 * **encoding/asn1:** 记录对 `*big.Int` 的支持(感谢 Florian Weimer)。 * **encoding/gob:** 修复将 `[]byte` 解码为不兼容切片类型时的 panic 问题(感谢 Alexey Borzenkov)。 * **encoding/json:** 修复不应序列化特殊浮点值的问题(感谢 Evan Shaw)。 * **encoding/xml:** 主要针对 Go 1 进行了重大修正(感谢 Gustavo Niemeyer)。 * **exp/proxy:** 新增包。 * **exp/sql:** 增加 `time.Time` 支持;在 EOF 时关闭 `Rows`;修复 `QueryRow.Scan` 到 `*[]byte` 时可能的数据损坏问题。 * **exp/ssh:** 多处小修复(感谢 Dave Cheney)。 * **exp/terminal:** 添加 `SetPrompt` 并处理大段粘贴;为需要它的(非 Linux?)系统添加到顶层 `Makefile`。 * **flag:** 添加 `Duration` 标志类型;将 `Set` 方法的 `Value` 接口改为返回 `error` 而非 `bool`。 * **gc:** 更好的错误信息;在使用标量结构体字段时避免误报(感谢 Rémy Oudompheng);闭包代码生成改进;禁止在包外声明变量;修复对接口值进行 `switch` 的问题(感谢 Rémy Oudompheng);内联错误修复;改进 `unsafe.Pointer` 类型检查错误信息(感谢 Ryan Hitchman);限制导出递归接口的大小(感谢 Lorenzo Stoakes)。 * **go-mode.el:** 修复反引号的语法高亮问题(感谢 Florian Weimer)。 * **go/ast:** 从 `ast.Fprint`/`Print` 中移除不必要的返回值。 * **go/build:** 允许在 `#cgo` 标志中使用冒号;在链接命令末尾传递 `CgoLDFLAGS`。 * **go/doc:** 新增 API,不再忽略匿名未导出字段,增加初始测试支持。 * **go/parser:** 移除未使用的 `Parse*` 函数。简化了 `ParseExpr` 签名。 * **go/printer:** 修复当 AST 包含 `BadXXX` 节点时崩溃的问题。 * **go/scanner:** 扫描速度提升 17%,移除 `InsertSemis` 模式。 * **goinstall:** 为 Google Code 的 svn 仓库使用正确的检出 URL。 * **gotest:** 使 `_testmain.go` 符合 `gofmt` 规则(感谢 Benny Siegert)。 * **goyacc:** 修复 `units.y` 构建中断问题(感谢 Shenghou Ma)。 * **html/template:** 重新启用测试用例并修复错误的转义序列(感谢 Mike Samuel)。 * **html:** 添加“在表中的选择中”插入模式(感谢 Andrew Balholm);调整外部属性;外部元素 HTML 集成点,标签名调整;在 `` 内解析 ``(感谢 Andrew Balholm);仅在添加外部内容时传播外部命名空间。 * **json:** 当 `,string` 选项使用不当时提供更好的错误信息。 * **ld:** 解析但不实现 `-X` 标志。 * **log/syslog:** 添加 `Alert` 方法(感谢 Vadim Vygonets)。 * **make.bash:** 移除旧的残留部分(感谢 Alex Brainman)。 * **math/big:** 简化快速字符串转换。 * **math:** 修复 `all_test.go` 中的拼写错误(感谢 Charles L. Dorian)。 * **misc/windows:** 将 `src/pkg/runtime/z*` 文件添加到安装脚本(感谢 Alex Brainman)。 * **net/http:** 修复忽略 `Request.Write` 的 `Flush` 错误的问题;允许具有负 `Max-Age` 属性的 Cookie,因为它们是合法的(感谢 Volker Dobler)。 * **net/textproto:** 修复读取单个头信息时可能的数据损坏。 * **net:** 为 Unix 变体添加 IP 层级套接字选项辅助函数(感谢 Mikio Hara);修复 `ListenIP`、`ListenUDP` 上错误的模式问题(感谢 Mikio Hara);利用内核状态监听 TCP、Unix(感谢 Mikio Hara);平台相关的默认套接字选项(感谢 Mikio Hara)。 * **os:** 添加 `ModeCharDevice`。 * **runtime:** 添加 `NumCPU`;删除 `pcln` 遍历器的重复实现;对调用 nil 函数值提供不同的 panic 消息;在 FreeBSD 上启用 `runtime.ncpu`(感谢 Devon H. O'Dell);通过删除代码使垃圾收集器更快;重新生成 `defs_darwin_{386,amd64}.h`(感谢 Dave Cheney);修复 `runtime.usleep()` 在 darwin/amd64 和 linux/arm 上的错误(感谢 Shenghou Ma)。 * **spec:** 修正指向零大小变量的指针的比较方式;修改关于 `select` 语句选择的措辞。 * **strconv:** 修复四舍五入的边界情况;使用 Grisu3 算法实现更快的 `FormatFloat(x, *, -1, 64)`(感谢 Rémy Oudompheng);为已经是短数字的四舍五入实现快速路径(感谢 Rémy Oudompheng);当取消引用非法八进制序列时返回 `ErrSyntax`。 * **syscall:** 仅限 Linux 的父进程死亡信号支持(感谢 Albert Strasheim);使 `Environ` 返回原始顺序。 * **testing:** 修复 defer 的竞态条件;为 `-timeout` 标志使用 `flag.Duration`。 * **text/template:** 处理非错误类型的 panic 值(感谢 Rémy Oudompheng);对 map 进行 `range` 时,如果可行则对键进行排序。 * **time:** 添加 `ParseDuration`;修复 `After` 和 `NewTicker` 的文档。 * **windows:** 使用 `ArbitraryUserPointer` 作为 TLS 插槽(感谢 Wei Guangjing)。 ---

2011-12-22

本次快照包括对 images/ycbcr 和 testing 包的变更,以及构建系统的更改。

用于管理 Y'CbCr 图像的 image/ycbcr 中的类型已被移至 image 和 image/color 包。一个 gofix 模块将会重写受影响的代码。

testing 包的 B 类型(用于运行基准测试)现在拥有与 T 类型(用于测试)相同的方法,例如 Print、Error 和 Fatal。
本次周度快照新增了一个名为'go'的命令,用于构建和测试Go程序。对于Go 1版本,此命令将取代我们一直使用的基于Makefile的方法。该命令尚未准备好供普遍使用,但all.bash脚本已使用它来构建整个代码库。如果您在构建周度快照时遇到问题,可以在运行all.bash之前设置 `export USE_GO_TOOL=false` 以回退到使用Makefile。 其他变更: * archive/zip:为FileHeader添加SetModTime方法。 * build:使用env(感谢Mikio Hara),修复以使“go install”在Windows上工作(感谢Alex Brainman)。 * bytes:添加两个Buffer示例。 * cgo:支持内置类型的导出(感谢Maxim Pimenov)。 * cmd/go:避免使用包特定标志时的无限循环(感谢Mikio Hara),修复构建标准库的问题,实现测试命令,确保为gcc-4.5及更高版本使用pthread(感谢Mikio Hara),遵守$GCFLAGS,在帮助信息中统一使用空格(感谢Roger Peppe),以及许多其他改进。 * codereview:在codereview.py中初始化“found”变量(感谢Miki Tebeka)。 * crypto/mime/net/time:向+build标签添加netbsd(感谢Joel Sing)。 * crypto/tls:在API中不假设RSA私钥。 * crypto/x509:访问器方法中对nil接收器不崩溃。 * doc/effective_go:讨论变量重声明。 * doc:删除Go课程笔记,在适用时引用http://build.golang.org/(感谢Robert Hencke),建议使用code.google.com/p/go而非go.googlecode.com/hg。 * encoding/binary:添加Write和Read示例,增加更多基准测试(感谢Roger Peppe)。 * encoding/gob:数组仅在其元素为零时才为零值。 * encoding/json:清理数组解码中的遗留变量(感谢Rémy Oudompheng),添加Marshal和Unmarshal的示例。 * exp/ssh:将ClientAuthPublicKey辅助函数重命名为ClientAuthKeyring(感谢Dave Cheney),简化Stdin/out/errPipe方法(感谢Dave Cheney)。 * fmt:加速浮点数打印,清理部分代码,使malloc测试检查其计数。 * gc:允许在生成的代码中使用unsafe.Pointer,避免在runtime包定义中使用unsafe,改进内联函数的行号,改进对标签的循环深度分析,实现并测试原始字符串中的`\r`,内联时允许空函数体,修复`_`参数,在错误消息中省略函数类型的参数名。 * go/ast, parser:记住短变量声明及其对应的标识符对象。 * go/build:添加新的+build标签'cgo'和'nocgo'。 * go/doc, godoc:将导出过滤移至go/doc。 * go/printer, gofmt:微调行间距。 * go/scanner:从原始字面量中去除CR字符。 * gob:为结构体值实现isZero。 * godoc:允许为方法添加示例(感谢Volker Dobler),显示匿名字段的方法。 * goinstall:仅在适当时建议使用-fix处理错误的导入。 * govet:添加对printf动词的检查,将程序划分为每个检查套件一个文件。 * html:更多解析器改进(感谢Andrew Balholm)。 * json:一些测试用以展示不佳的错误信息,在编码中使用strconv.Append变体以避免分配。 * ld:添加对netbsd签名注释节的支持(感谢Joel Sing),允许IMAGE_REL_AMD64_ADDR32NB重定位类型(感谢Alex Brainman)。 * math/big:Rand在参数同时也是接收器时不应挂起。 * misc/builder:将默认构建器主机设为build.golang.org。 * misc/dashboard:删除旧的构建仪表板代码,对go实现进行改进和修复。 * misc/vim:修复go文件类型检测(感谢Paul Sbarra)。 * net, syscall, os:在epoll/kqueue描述符上设置CLOEXEC标志。 * net, syscall:接口地址和掩码(感谢Mikio Hara)。 * net/http:为cookie jar添加了接口(感谢Volker Dobler),测试修复(感谢Alex Brainman)。 * net:添加DialTimeout,排序Makefile条目(感谢Mikio Hara)。 * os, syscall:NetBSD支持的开端(感谢Christopher Nielsen)。 * os/exec:添加测试以验证net包的epoll fd不会传递给子进程,在darwin上禁用ExtraFiles测试。 * os:不信任OS X上的O_CLOEXEC,确保Remove在Windows上返回正确的错误(感谢Alex Brainman)。 * path, path/filepath:添加Dir作为Base的补充。 * path/filepath.Rel:文档说明返回的路径总是相对的。 * runtime:遇到SIGILL时不恐慌,直接崩溃。 * spec:明确关于换行符的规定。 * sql:添加Rows.Columns。 * strconv:修复基于扩展浮点数转换中的错误,实现更快速的十进制数字解析,并减少多精度十进制数的缓冲区大小(感谢Rémy Oudompheng)。 * syscall:为linux/arm重新生成z-files(感谢Mikio Hara),排序Makefile、mkall.sh和mkerrors.sh条目(感谢Mikio Hara)。 * test/bench/go1:Go 1基准测试套件的初稿。 * testing:将Log与Println进行比较(感谢Robert Hencke),使并行测试的信号传递更安全。 * text/template:为空模板提供更好的错误消息,修复向函数传递nil参数的问题(感谢Gustavo Niemeyer)。 * time:为Time添加JSON序列化器(感谢Robert Hencke),新增AddDate方法(感谢Roger Peppe)。 * various:像Make一样使用$GCFLAGS和$GCIMPORTS(感谢Maxim Pimenov)。

2011-12-14

本次周度快照包含语言变更以及对goinstall和gofmt的更改。

现在已为结构体和数组值分别定义了相等和不等(== 和 !=)运算,只要数据结构的元素本身可比较。详情请参阅Go 1版本说明:
	http://weekly.golang.org/doc/go1.html#equality

rune类型现在是int32的别名,字符字面量的默认类型为rune。代码中在应使用rune的地方使用int将会出错。详情请参阅Go 1版本说明:
	http://weekly.golang.org/doc/go1.html#rune

Goinstall现在期望Google Code的导入路径为以下格式:
	"code.google.com/p/go-tour/tree"
它将拒绝旧式格式的导入,如 "go-tour.googlecode.com/hg/tree"。
有一个gofix模块可以重命名此类导入。
使用 goinstall -fix 来更新损坏的包。Gofmt 的标志参数已进行微调。
`-tabintent` 标志已重命名为 `-tabs`。
`-spaces` 标志已被移除。

其他变更:
* 5c, 6c, 8c:支持64位switch值(感谢Anthony Martin)。
* 8c:处理64位switch值。
* archive/tar:使用结构体比较而非DeepEqual(感谢Christopher Wedgwood)。
* archive/zip:使zip能理解os.FileMode(感谢Roger Peppe)。
* bufio:将最小读取缓冲区大小设为16字节。
* build:在Windows/amd64上禁用cgo,
    规范化包以便无需Makefile即可构建。
* bytes:更快的Count、Index、Equal。
* cgo:添加基本的gccgo支持(感谢Rémy Oudompheng)。
* codereview:修复路径斜杠问题(感谢Yasuhiro Matsumoto)。
* compress/flate:修复越界错误。
* contribute.html:不填写审阅者字段(感谢Florian Weimer)。
* crypto/aes:通过消除一些间接调用提升速度(感谢Taru Karttunen)。
* crypto/dsa:不要截断输入哈希值。
* doc/go_tutorial:明确说明文件示例是Unix特定的。
* doc:添加Defer、Panic和Recover文章,
    添加错误处理文章,
    添加Go 1发布说明文档。
* encoding/gob:当类型不匹配时提供更好的错误消息。
* env.bash:导出CGO_ENABLED以便cgo测试运行(感谢Alex Brainman)。
* exp/sql:简化一些字符串转换。
* exp/ssh:Wait返回一个*ExitError(感谢Gustav Paul)。
* exp/ssh:改进客户端通道关闭行为(感谢Dave Cheney)。
* fmt:当String方法等行为异常时不递归调用。
* gc:更好的错误消息,
    内联(未使用-l时禁用),
    多项错误修复(感谢Lucio De Re和Rémy Oudompheng)。
* go/printer, godoc:在示例代码中打印注释。
* go:实现doc、fmt、fix、list、vet、build和install。
* gobuilder:在构建go树后使用goinstall安装包。
* godoc:`
` 不能出现在 `

` 内(感谢Olivier Duperray), 添加了opensearch描述文档(感谢Christoph Hack), 文本换行。 * gofix:添加httputil修复(感谢Yasuhiro Matsumoto)。 * gotest:更多使用go/build(感谢Robert Hencke)。 * gzip:在Latin-1和Unicode之间转换(感谢Vadim Vygonets)。 * html/template:在本地定义FuncMap类型。 * html:解析外来内容(MathML、SVG)的第一步, 更多解析器改进(感谢Andrew Balholm)。 * http:打印panic堆栈跟踪后关闭连接(感谢Roger Peppe), 修复使用gzip类响应的Transport HEAD请求失败问题。 * json:对重命名的字节切片与[]byte同等对待。 * ld:NetBSD二进制文件链接器支持的首次尝试(感谢Christopher Nielsen), 修复内存泄漏(感谢Scott Lawrence), 增加Windows上用于cgo的默认栈大小。 * math:删除非基于Sqrt的Hypot, 实现、记录并修复特殊情况(感谢Charles L. Dorian), * misc/benchcmp:不要求行首为"Benchmark"。 * misc/osx:将profile.go重命名为profile_go(感谢Scott Lawrence)。 * net/http:修复简单的示例服务器(感谢Olivier Duperray), net/http:使测试移除临时文件和目录。 * net/smtp:添加CRAM-MD5认证(感谢Vadim Vygonets)。 * reflect:修复Slice cap(感谢Gustavo Niemeyer)。 * regexp:性能改进;避免分配输入接口。 * runtime:提高gc 'extra bytes'检查(感谢Christopher Wedgwood), Linux的madvise和SysUnused(感谢Sébastien Paolacci), 使gc_test测试额外分配的空间,而非总空间, 支持NetBSD(感谢Christopher Nielsen)。 * spec:调整复数常量示例(感谢Robert Hencke), 底层类型为uintptr的值可以转换为unsafe.Pointer, var x = 'a' 默认类型为rune。 * strconv:在错误字符串中包含包名和函数名, 使QuoteRune等函数接受rune参数, 一些性能改进。 * syscall:添加Linux下flock()系统调用的常量, 重新生成darwin、freebsd的z文件(感谢Mikio Hara), 重新生成openbsd的z文件, 当函数返回错误时返回错误而非uintptr(感谢Alex Brainman)。 * test/bench:移至test/bench/shootout。 * test/garbage:移至test/bench/garbage。 * test:在nilptr测试中减小数组大小。 * time:允许睡眠测试运行时间延长200%, 修复Time.Add(感谢Hector Chu), 修复December的daysIn(感谢Peter Mundy), Time的gob编组器(感谢Robert Hencke), 为AfterFunc使用Duration。 * 其他:一系列time.Duration的清理工作。

2011-12-06

此快照包含一项语言变更以及strconv和go/doc包的变更。这些包的变更需要修改客户端代码。
该语言变更是向后兼容的。

复合字面量的数组、切片或映射中的类型省略已扩展至包含指向复合字面量的指针。类似下面的代码
    var t = []*T{&T{}, &T{}}
现在可以写作
    var t = []*T{{}, {}}
你可以使用gofmt -s来简化此类代码。

strconv包已获得更符合惯例且更高效的接口。
客户端代码可以使用gofix进行更新。详情请参阅文档:
    http://weekly.golang.org/pkg/strconv/

go/doc包的ToHTML函数现在接受[]byte参数而非string。其他变更:
* crypto/aes:消除部分边界检查和截断(感谢Rémy Oudompheng)。
* crypto/x509:当父证书包含原始主体字段时直接使用该值。
* encoding/gob:不再为未导出字段发送类型信息。
* exp/ssh:允许在认证过程中处理msgUserAuthBanner消息(感谢Gustav Paul)。
* fmt:增加浮点数基准测试,仅对字符串类型使用Stringer或Error接口。
* gc:为内联优化调整导出格式,禁止通过接口比较map/func类型相等性,使用gofmt格式输出map类型。
* go/doc:将冒号结尾的行排除在标题候选之外。
* gobuilder:为包增加-commit模式,临时限制-package模式,采用新仪表盘协议。
* godoc:改进HTML格式的示例输出(感谢Volker Dobler)。
* gofmt:在复合字面量简化中处理&T形式。
* goinstall:当-make=true时优先响应-install=false标志。
* hash:重写Hash.Sum方法的注释说明。
* html:进一步改进解析器(感谢Andrew Balholm)。
* image:在ColorModel比较中避免函数对比。
* math:为Sinh和Tanh函数添加特殊情况注释(感谢Charles L. Dorian)。
* misc/dashboard:继续推进仪表盘实现工作。
* net, syscall:从UDPConn和IPConn中移除BindToDevice方法(感谢Mikio Hara)。
* net/mail:在测试中正确比较解析后的时间值。
* os/exec:使LookPath在Windows下始终搜索当前工作目录(感谢Benny Siegert)。
* runtime:为类型特定算法做准备。
* strconv:字符串转换速度提升34%至63%。

2011-12-02

本次每周快照包含hash包的更新,以及针对上一快照中time和os.FileInfo变更的gofix修复。

hash.Hash的Sum方法现新增[]byte参数,允许用户将哈希值追加到现有字节切片。现有使用Sum的代码可传入nil参数,gofix将自动完成此调整。

其他变更:
* crypto/tls:清理Windows平台证书加载逻辑(感谢Alex Brainman)。
* exp/ssh:为Session添加Std{in,out,err}Pipe方法(感谢Dave Cheney)。
* dashboard:处理异常构建器名称时不再出错。
* exp/ssh:导出signal类型并重命名为Signal(感谢Gustav Paul)。
* os:添加ModeType常量以掩码文件类型位(感谢Gustavo Niemeyer)。
* text/template:用AddParseTree替代Add方法。
* go/doc:检测标题并在HTML中格式化显示(感谢Volker Dobler)。

2011-12-01

本次每周快照包含time、os和text/template包的更新。time和os包的变更具有重大意义且相互关联。使用time包、text/template包或os.FileInfo类型的代码需要相应调整。

在time包中,现在仅用time.Time单一类型表示时间。请注意time.Time应作为值类型使用,这与以往通常使用*time.Time(大型结构体指针)的旧代码不同。(请删除*号)所有此前接受*time.Time、1970年以来秒数的int64或1970年以来纳秒数的int64的函数,现在都应接受time.Time。特别当需要替代int64参数时,该类型能清晰体现数值含义。

无论您之前调用的是time.Seconds、time.Nanoseconds、time.LocalTime还是time.UTC,现在都应使用新的time.Now函数。

若此前代码形如:

       t0 := time.Nanoseconds()
       myFunction()
       t1 := time.Nanoseconds()
       delta := t1 - t0
       fmt.Printf("耗时 %.2f 秒\n", float64(t1-t0)/1e9)

现在可改写为:

       t0 := time.Now()
       myFunction()
       t1 := time.Now()
       delta := t1.Sub(t0)
       fmt.Printf("耗时 %s\n", delta)

此代码中delta变量属于新类型time.Duration,它替代了各种表示纳秒计数的int64参数(但非1970年以来的时间戳)。

gofix可完成上述转换及其他部分调整,但不会将显式int64类型重写为time.Time。运行gofix后,您很可能需要手动修改程序中的相关类型。建议始终通过版本控制系统的差异比对功能检查gofix所做的更改。

详情请参见:http://weekly.golang.org/pkg/time/

在os包中,FileInfo结构体被替换为FileInfo接口,允许操作系统之外的代码实现该接口。引用*os.FileInfo(旧结构体指针)的代码应改为引用os.FileInfo(新接口)。该接口仅包含以下方法:

       type FileInfo interface {
               Name() string       // 文件基础名称
               Size() int64        // 文件大小(字节)
               Mode() FileMode     // 文件模式位
               ModTime() time.Time // 修改时间
               IsDir() bool        // Mode().IsDir()的简写
       }

若需访问操作系统内核提供的底层stat_t结构,可将FileInfo对象断言为*os.FileStat类型,并通过其Sys字段获取*syscall.Stat_t:

       dev := fi.(*os.FileStat).Sys.(*syscall.Stat_t).Dev

当然,这种实现不具备跨操作系统可移植性。

gofix将自动把*os.FileInfo重写为os.FileInfo,并将fi.Name等表达式转换为fi.Name()方法调用。

详情请参见:http://weekly.golang.org/pkg/os/#FileInfo模板包(template package)已更新为导出全新的简化API。Set类型已被移除。现在模板通过一起解析(parsing together)自动关联;嵌套定义会隐式创建关联。只有相互关联的模板才能互相调用。这种方式显著缩小了构建API的覆盖范围。html/template包也已同步更新。针对旧版API最简单常见的用法,提供了gofix工具进行自动转换;未使用Set类型的代码运行gofix后通常可直接工作,而使用Set的代码则需要手动更新。模板定义语言本身保持不变。

详情请见:http://weekly.golang.org/pkg/text/template/

其他变更:
* cgo:新增动态库回调支持
* codereview:对非src/目录文件进行gofmt检查(感谢David Crawshaw)
* crypto/openpgp/packet:修复私钥校验和问题
* crypto/tls:新增OpenBSD根证书路径,不再依赖map迭代顺序
* crypto/x509, crypto/tls:支持PKCS#8私钥格式
* dashboard:开始用Go语言重新实现以支持App Engine
* encoding/xml:修复拷贝bug
* exp/gui:将exp/gui和exp/gui/x11迁移至http://code.google.com/p/x-go-binding
* exp/ssh:多项改进(感谢Dave Cheney和Gustav Paul)
* filepath/path:修复Rel函数缓冲区大小问题(感谢Gustavo Niemeyer)
* gc:修复Nconv bug(感谢Rémy Oudompheng)及其他修正
* go/printer, gofmt:性能优化
* gofix:测试并修复错误排序的重命名
* goinstall:新增-fix标志用于构建失败时对包运行gofix,改进错误报告,仅在需要检出或更新时访问网络,支持Google Code子仓库
* html:解析器改进(感谢Andrew Balholm)
* http:修复导致短写入的嗅探bug
* json:加速编码过程,缓存reflect调用
* ld:对齐ELF数据段
* math/big:修复目标值泄漏到结果值的问题(感谢Roger Peppe),采用递归细分法显著提升速度
* math:更快的Cbrt和Sincos实现(感谢Charles L. Dorian)
* misc/osx:新增OS X打包和磁盘映像脚本(感谢Scott Lawrence)
* os:Windows系统下调用Open("")时现在会返回错误(感谢Alex Brainman)
* runtime:确保系统调用时栈保持16字节对齐(感谢Alex Brainman)
* spec, gc:允许string与命名类型[]byte、[]rune直接转换
* sql:新增Tx.Stmt方法以在事务中使用现有预编译语句,补充驱动文档和测试;无功能性变更
* strings:新增ContainsAny和ContainsRune函数(感谢Scott Lawrence)
* syscall:新增SUSv3标准的RLIMIT/RUSAGE常量(感谢Sébastien Paolacci),修复OpenBSD系统sysctl主机名/域名的变通方案,实现Syscall15函数(感谢Alex Brainman)
* time:修复Timer停止功能

2011-11-18

此快照包含部分语言变更。

根据Go 1计划,现在禁止对Map和函数值进行比较(与nil比较除外)。函数相等性在某些场景下存在问题,而map相等性比较的是指针而非内容。

作为实验性功能,现在允许复制包含未导出字段的结构体。这使得包能在其API中返回不透明值。其他变更:
* 6a, 8a:允许 `$(-1)` 以与 `$1`、`$(1)`、`$-1` 保持一致。
* 6l:代码生成修复(感谢 Michał Derkacz)。
* build:修复在 Fedora 上对 selinux allow_execstack 的检查(感谢 Bobby Powers)。
* builtin:完善 `delete` 的文档。
* cgo:在遇到未声明的枚举/结构体时不再恐慌(感谢 Rémy Oudompheng),修复 g0 栈保护。
* crypto/tls:修复握手消息测试。
* crypto:更新了对 Cipher 接口的错误引用;应为 Block。
* doc:清理、补充并修复了多个文档。
* doc/install:添加了 openbsd(感谢 Joel Sing!)。
* doc:添加了《Go 之旅》中文翻译的链接。
* encoding/json:添加 marshal/unmarshal 基准测试,将 `[]` 解码为空切片(slice)而非 nil 切片,使 BenchmarkSkipValue 更一致。
* env.bash:检查 make/gmake 是否存在(感谢 Scott Lawrence)。
* exp/sql:`NumInput()` 允许 -1 以忽略检查(感谢 Yasuhiro Matsumoto),添加 `DB.Close`,修复错误,移除 Driver 上的 Execer(仅保留 Conn),文档说明对于驱动程序而言 `io.EOF` 表示没有更多行,添加对客户端公钥认证的支持(感谢 Dave Cheney),添加 direct-tcpip 客户端支持(感谢 Dave Cheney),更改测试监听地址,并在失败时退出测试,其他修复和改进(感谢 Dave Cheney)。
* exp/terminal:将 shell 重命名为 terminal 并添加 `SetSize`。
* fcgi:修复服务器能力发现。
* fmt:在 `%#v` 中区分空切片/映射与 nil 切片/映射。
* gc:改进错误信息、类型检查及诸多修复,移除 `m[k] = x, false` 语法(请改用 `delete(m, k)`),支持使用 Plan 9 yacc 构建(感谢 Anthony Martin)。
* go/printer:使 `//line` 格式化具有幂等性。
* godefs:已删除,由 `cgo -godefs` 替代。
* godoc:完善 `-templates` 标志的文档,修复远程搜索,提供扁平(非缩进)目录列表模式。
* gosym:从 `gofmt` 的输出中移除 `//line` 注释(感谢 Rémy Oudompheng)。
* gosym:修复了影响 godoc 和其他工具的索引问题。
* html/template:在打印前对顶层值进行间接引用。
* html:更多解析器改进(感谢 Andrew Balholm)。
* http:修复使用 `http.ServeFile` 从当前工作目录提供服务的问题,使 `Dir("")` 等同于 `Dir(".")`。
* ld:修复 ldpe 的 `.bss` 部分(感谢 Wei Guangjing)。
* math/big:将 `nat{}` 替换为 `nat(nil)`。
* math:更快的 `Lgamma`(感谢 Charles L. Dorian)。
* mime:为 windows 实现 `TypeByExtension`。
* misc/bbedit:错误和 rune 支持(感谢 Anthony Starks)。
* misc/benchcmp:基准测试比较脚本。
* misc/emacs:添加 `delete` 内置函数(感谢 Bobby Powers)。
* misc/kate:添加 error 和 rune 支持(感谢 Evan Shaw)。
* misc/notepadplus:错误和 rune 支持(感谢 Anthony Starks)。
* misc/windows:MSI 格式的 Windows 安装程序(感谢 Joe Poirier)。
* net, io/ioutil:移除 `os.Time` 的使用(感谢 Anthony Martin)。
* net/http:修复响应体 EOF 处理(感谢 Gustavo Niemeyer),修复使用 `ReadFrom` 时的嗅探,在测试中从备用 goroutine 使用 `t.Errorf`。
* os:移除未文档化的 `Envs`(请改用 `os.Environ`)。
* reflect:空切片/映射与 nil 不 DeepEqual,使 `Value` 成为不透明结构体。
* runtime, syscall:从 godefs 转换为 cgo。
* runtime:为 Plan 9 添加 `nanotime`(感谢 Anthony Martin),添加计时器支持,用于 time 包,避免对 `make([]T, 0)` 进行分配。
* strconv:添加 Ftoa 基准测试,使 Ftoa 更快。
* syscall:删除 `syscall.Sleep`,接管环境变量实现,使用 error。
* testing:在消息中添加 file:line 时间戳,将结果打印到标准输出。
* text/template:重构 set 解析。
* time:为 Time 添加 `ISOWeek` 方法(感谢 Volker Dobler)。
* 多处:避免函数比较,减少对 `os.EINVAL` 等的过度使用。

2011-11-09

此每周快照根据 Go 1 计划重命名了多个 Go 包。
客户端代码中的导入语句可以使用 gofix 自动更新。

变更如下:
	asn1              -> encoding/asn1
	big               -> math/big
	cmath             -> math/cmplx
	csv               -> encoding/csv
	exec              -> os/exec
	exp/template/html -> html/template
	gob               -> encoding/gob
	http              -> net/http
	http/cgi          -> net/http/cgi
	http/fcgi         -> net/http/fcgi
	http/httptest     -> net/http/httptest
	http/pprof        -> net/http/pprof
	json              -> encoding/json
	mail              -> net/mail
	rpc               -> net/rpc
	rpc/jsonrpc       -> net/rpc/jsonrpc
	scanner           -> text/scanner
	smtp              -> net/smtp
	syslog            -> log/syslog
	tabwriter         -> text/tabwriter
	template          -> text/template
	template/parse    -> text/template/parse
	rand              -> math/rand
	url               -> net/url
	utf16             -> unicode/utf16
	utf8              -> unicode/utf8
	xml               -> encoding/xml

2011-11-08

此每周快照包含一些包变更。

为准备 Go 1 的包重组,多个包的源代码已被移动,但导入路径保持不变。这种不一致性导致此快照的 goinstall 无法正常工作。如果您使用 goinstall,请保持同步到上一个每周快照,直到下一个快照被标记。

html、bzip2 和 sql 包中返回 error 值的 Error 方法已重命名为 Err。

http 包中的一些非核心部分已移至 net/http/httputil。Dump* 和 NewChunked* 函数以及 ClientConn、ServerConn 和 ReverseProxy 类型已从 http 移至 httputil。

html/template 的 API 现在是 template API 的直接副本,而不是暴露单个 Escape 函数。对于 HTML 模板,请像使用 template 包一样使用 html/template 包。其他变更:
*  所有包:在非代码上下文中将 `os.EOF` 重命名为 `io.EOF`(感谢 Vincent Vanackere),使用 gofix 排序导入。
*  archive/zip:关闭通过 `OpenReader` 打开的文件(感谢 Dmitry Chestnykh)。
*  bufio:如文档所述,在错误时从 `ReadLine` 返回 `nil` 行。
*  builtin:为基本类型和内置 error 类型添加文档。
*  bytes:添加 `Contains` 函数。
*  exp/sql:完成事务实现,完善类型和文档。
*  exp/ssh:改进的客户端认证支持(感谢 Dave Cheney)。
*  gc:改进对非接收通道进行 range 操作时的错误信息;修复错误和清理;检测未使用的类型开关变量;修复符号名中包路径的转义;提供在指针的指针上进行方法调用时的有用错误信息;可移植地读取归档头(感谢 Ron Minnich)。
*  gob:修复多次注册相同类型时的错误。
*  gofix:避免在 netudpgroup 中无函数体的函数上出现 panic;按日期隐式确定修复顺序。
*  gofmt, gofix:排序导入。
*  goinstall:支持 launchpad.net/~user 分支(感谢 Jani Monoses)。
*  gopack:不在非 Go 对象中查找 Go 元数据。
*  gotest:不运行没有预期输出的示例。
*  html:解析器错误修复活动继续(感谢 Andrew Balholm)。
*  http:修复嗅探器中的空白字符处理;在 `ParseForm` 中仅识别 `application/x-www-form-urlencoded`;在 `ReadRequest` 中支持 Trailer。
*  lib9:添加 `ctime`。
*  math:更快的 Gamma 函数(感谢 Charles L. Dorian);提高 Tan 函数的精度(感谢 Charles L. Dorian);改进 Cos、Sin 和 Tan 的大角度测试(感谢 Charles L. Dorian)。
*  net:为 Windows 实现 `LookupTXT`(感谢 Alex Brainman)。
*  os, text, unicode:重命名。
*  runtime/cgo:将数据声明修复为 extern。
*  runtime:为 FreeBSD 添加 timespec 定义;添加 Windows 回调测试(感谢 Alex Brainman);修复 OpenBSD `thrsleep` 的原型;修复 set and not used 问题;统一跨操作系统的 mutex 代码;Windows_386 的 sighandler 使用正确的 g(感谢 Alex Brainman)。
*  template:格式化带有指针接收者的错误;使模板集中的模板重定义更一致。
*  test:从源文件中清除执行位(感谢 Mikio Hara);使 `closedchan.go` 在失败时以失败状态退出。
*  time:更快的 `Nanoseconds` 调用。
*  websocket:对错误的 websocket 请求返回错误的 HTTP 响应。
*  xml:允许解析 `<_> `。(感谢 David Crawshaw)。

2011-11-02 (新的 error 类型)

此快照引入了内置 error 类型,其定义为

       type error interface {
               Error() string
       }

error 类型取代了 `os.Error`。请注意,方法名已从 `String` 更改为 `Error`。
包 `fmt` 的 Print 格式化同时支持 Stringer 和 error:通常无需同时实现 `String` 和 `Error` 方法。

Gofix 可以更新大部分代码。如果你的包分布在多个文件中,使用 `-force=error` 命令行选项可能会有所帮助,它会强制 gofix 应用 error 修复,即使没有明确迹象表明某个特定文件需要它。
一如既往,在将 gofix 所做的更改提交到版本控制系统之前,阅读和测试这些更改是个好主意。

2011-11-01

*  6l:移除对 -e 标志的提及——它不执行任何操作。
*  cc:将 `cas` 更改为 `newcase`(感谢 Ron Minnich)。
*  crypto/openpgp/error:在错误实现类型的名称中使用 `Error`。
*  crypto/rsa:将公钥指数从 3 更改为 65537。
*  crypto/tls:为 alert 添加 `Error` 方法。
*  doc:添加日语版 A Tour of Go 的链接;添加 'all' make 规则以构建所有文档;引用 tour.golang.org 而非 go-tour.appspot.com。
*  exp/norm:修复了在迁移到新正则表达式时引入的错误。
*  exp/ssh:修复长度头泄漏到通道数据中的问题(感谢 Dave Cheney)。
*  fmt:显式处理 `os.Error` 值(与 Stringer 区分)。
*  gc:清理打印输出;修复 `[568]g -V` 崩溃(感谢 Mikio Hara);测试并修复逃逸分析错误。
*  go/build:在测试中避免使用 `os.Error`。
*  go/doc:移除 `os.NewError` 反启发式。
*  go/parser:测试并修复 `:=` 作用域错误。
*  gob:拆分 `gobError` 的使用,移除不必要的嵌入。
*  gofix:测试导入的插入和删除。
*  goinstall:针对常见站点进行智能版本控制系统选择(感谢 Julian Phillips)。
*  gopack:将归档文件名长度改回 16。
*  html:修复测试中的打印参数;更多解析器改进(感谢 Andrew Balholm)。
*  json:正确处理 nil 切片(感谢 Alexander Reece)。
*  math:提高 Sin 和 Cos 的精度(感谢 Charles L. Dorian)。
*  misc/emacs:修复 gofmt 后窗口的恢复(感谢 Jan Newmarch)。
*  misc/vim:添加 rune 关键字(感谢 Jongmin Kim)。
*  misc/windows:可用于 amd64(感谢 Alex Brainman)。
*  net:记录为什么在 Windows 上不使用 SO_REUSEADDR(感谢 Alex Brainman)。
*  os:不要将长度为 0 的读取解释为 EOF。
*  pkg:从一些打印参数中移除 `.String()`。
*  rpc:避免输入错误时的无限循环。
*  runtime/pprof:记录 OS X 存在问题。
*  runtime:在 init 期间将主 goroutine 锁定到主操作系统线程。
*  spec:定义初始化是顺序的。
*  strconv:使用比 `os.EINVAL`、`os.ERANGE` 更好的错误。
*  syscall:修复 Plan 9 上的 Await 消息(感谢 Andrey Mirtchovski)。
*  template:不将 error 用作 stringer;修复执行时未解析的错误检查(感谢 Scott Lawrence)。
*  test/alias.go:附加测试。
*  test:错误相关的修复。
*  textproto:防止 HTTP 头部的长行导致 HTTP 400 响应。
*  time:添加带有时区的 RFC1123 格式(感谢 Scott Lawrence)。

2011-10-26 (新的 rune 类型)

此快照引入了 `rune` 类型,它是 `int` 的别名,应用于 Unicode 码点。

Go 的未来版本(Go 1 之后)将把 `rune` 从 `int` 的别名更改为 `int32` 的别名。持续使用 `rune` 是使你的代码在此更改前后都能编译的方法。

要测试你的代码是否对 rune 安全,你可以用
GOEXPERIMENT=rune32 ./all.bash 此命令将构建一个编译器,其中 `rune` 是 `int32` 的别名,而非 `int`。 此外,请在你的代码上运行 `govet` 来识别可能需要更新其签名的方法。

2011-10-25

* big:使 `SetString` 在发生错误时返回 `nil`;
  新增 `Rat.Inv` 方法;
  无需显式初始化即可使用零值 `Rat`。
* codereview:在 `hg p` 中显示 LGTM。
* crypto/x509:修复证书生成中的名称错误。
* exp/ssh:新增实验性 SSH 客户端;
  引入 `Session` 以替代 `Cmd` 用于交互式命令;
  服务器清理(感谢 Dave Cheney)。
* exp/types:修复 `parseBasicType` 在遇到未知类型时的崩溃问题。
* fmt:格式化 `nil` 接口时不再恐慌(感谢 Gustavo Niemeyer)。
* go/ast, go/token:实际运行测试;修复 go/ast 测试。
* gotest:明确使用 `-help` 标志,像 make 一样使用 `$GCFLAGS`。
* govet:检查规范的动态方法签名。
* html:改进解析(感谢 Andrew Balholm);
  解析 `