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
更多关于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/
这些修复确保了加密安全性和运行时稳定性,是必要的维护更新。

