Golang 1.12.2 和 1.11.7 版本正式发布

Golang 1.12.2 和 1.11.7 版本正式发布 大家好,

我们刚刚发布了 Go 1.12.2 和 1.11.7 版本,这是两个小版本更新。

查看发布说明以获取更多信息:
https://golang.org/doc/devel/release.html#go1.12.minor

您可以从 Go 官网下载二进制文件和源代码:
https://golang.org/dl/

如果使用 Git 克隆方式从源代码编译,请通过以下命令更新到该版本:

git checkout go1.12.2

然后按常规方式构建。

感谢所有为本次发布做出贡献的人。

致意,
Go 团队 Andy


更多关于Golang 1.12.2 和 1.11.7 版本正式发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang 1.12.2 和 1.11.7 版本正式发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Go 1.12.2 和 1.11.7 的发布主要修复了一些关键问题,包括运行时、编译器和标准库中的bug。以下是这些版本中一些重要的修复示例:

1. 运行时修复:
在 Go 1.12.2 中,修复了在特定情况下 runtime.Gosched 可能导致 goroutine 调度异常的问题。例如,在并发场景下,如果多个 goroutine 频繁调用 Gosched,旧版本可能引发意外的阻塞。修复后,调度行为更加稳定。

2. 编译器修复:
Go 1.12.2 解决了在某些架构(如 ARM)上编译器可能生成错误指令的问题。例如,在优化代码时,旧版本可能错误处理内联函数调用,导致运行时崩溃。修复后,编译器生成更可靠的代码。

3. 标准库修复:
net/http 包中,修复了 HTTP/2 连接在特定超时条件下可能泄漏的问题。例如,如果服务器在处理请求时发生超时,旧版本可能无法正确关闭连接,导致资源耗尽。修复后,连接管理更加健壮。

示例代码演示修复后的行为(以 HTTP 服务器为例):

package main

import (
    "fmt"
    "net/http"
    "time"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // 模拟处理超时场景
        time.Sleep(2 * time.Second)
        fmt.Fprintf(w, "Hello, Go 1.12.2!")
    })

    server := &http.Server{
        Addr:         ":8080",
        ReadTimeout:  1 * time.Second, // 修复后,超时连接被正确关闭
        WriteTimeout: 1 * time.Second,
    }
    server.ListenAndServe()
}

在 Go 1.12.2 中,当请求处理超时时,服务器会正确终止连接,避免资源泄漏。

对于从源代码编译的用户,使用 git checkout go1.12.2 更新后,运行 ./all.bash(在 Unix 系统)或 all.bat(在 Windows)构建即可。这些修复提升了 Go 的稳定性和性能,建议用户尽快升级。

回到顶部