Golang 1.14.1和1.13.9版本已正式发布

Golang 1.14.1和1.13.9版本已正式发布 大家好,Gopher们,

我们刚刚发布了Go 1.14.1和1.13.9版本,这是两个次要的补丁版本。

这些版本包含了对go命令、工具、运行时、工具链以及crypto/cypher包的修复。

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

您可以从Go网站下载二进制和源代码发行版: https://golang.org/dl/

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

git checkout go1.14.1

然后像往常一样进行构建。

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

致意, Carlos和Alex代表Go团队


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

1 回复

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


Go 1.14.1和1.13.9的发布主要针对已知问题进行了修复,特别是crypto/cipher包中的安全漏洞。以下是关键修复的示例说明:

1. crypto/cipher包修复 在1.14.0版本中,crypto/cipher的GCM加密实现存在边界检查错误,可能导致数据越界访问。修复后,以下代码将安全运行:

package main

import (
    "crypto/aes"
    "crypto/cipher"
    "fmt"
)

func main() {
    key := []byte("AES256Key-32Characters1234567890")
    plaintext := []byte("Sensitive data")

    block, err := aes.NewCipher(key)
    if err != nil {
        panic(err)
    }

    gcm, err := cipher.NewGCM(block)
    if err != nil {
        panic(err)
    }

    nonce := make([]byte, gcm.NonceSize())
    ciphertext := gcm.Seal(nil, nonce, plaintext, nil)
    fmt.Printf("Encrypted: %x\n", ciphertext)
}

2. 运行时修复 修复了在特定并发场景下可能出现的goroutine调度器死锁问题。例如以下并发模式现在更稳定:

package main

import (
    "sync"
    "time"
)

func worker(id int, wg *sync.WaitGroup) {
    defer wg.Done()
    time.Sleep(10 * time.Millisecond)
}

func main() {
    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go worker(i, &wg)
    }
    wg.Wait()
}

3. go命令修复 修复了go mod vendor命令在特定情况下可能错误保留旧版本依赖的问题:

# 现在可以正确更新vendor依赖
go mod vendor

建议所有生产环境立即升级到1.14.1或1.13.9版本,特别是使用GCM加密的应用程序。升级命令:

# 使用go命令升级
go get golang.org/dl/go1.14.1
go1.14.1 download

# 或从官网下载二进制包
# https://golang.org/dl/

这些修复确保了加密安全性和运行时稳定性,是必要的维护更新。

回到顶部