千家信息网

go版本有哪些变化

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍"go版本有哪些变化",在日常操作中,相信很多人在go版本有哪些变化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"go版本有哪些变化"的疑惑有所帮助!接
千家信息网最后更新 2024年11月23日go版本有哪些变化

这篇文章主要介绍"go版本有哪些变化",在日常操作中,相信很多人在go版本有哪些变化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"go版本有哪些变化"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

go 版本变更

搜索方式

https://github.com/golang/go/issues?q=milestone%3AGo1.13.5+label%3ACherryPickApproved

搜索栏:milestone:Go1.13.5 label:CherryPickApproved

go1.13.6

go1.13.6(发布于2020/01/09)包括对运行时和net/http程序包的修复。有关详细信息,请参阅我们的问题跟踪器上的Go 1.13.6里程碑。

net / http:当代理URL包括身份验证凭据时,在DialConn中快速写入t.ProxyConnectHeader [1.13 backport]CherryPickApproved

运行时:在arm64 [1.13 backport]上清除分配计数崩溃增加的消息CherryPickApproved

doc:版本历史记录网页包含次优链接[1.13向后移植]CherryPickApproved文档

在Windows docker容器中运行时,运行时:"严重错误:PowerRegisterSuspendResumeNotification失败" [1.13 backport]CherryPickApproved

go1.13.5

go1.13.5(于2019/12/04发布)包含对go命令,运行时,链接器和net/http程序包的修复。有关详细信息,请参阅我们的问题跟踪器上的Go 1.13.5里程碑。

net / http:Server.ConnContext意外修改了所有连接的上下文[1.13 backport]

全部:确保Go工具链符合Apple的公证要求[1.13 backport]CherryPickApproved

cmd / go:执行go get [1.13 backport]CherryPickApproved发布阻止程序时出现"严重错误:并发映射写入"

运行时:如果存在多个文本部分,则textOff函数返回错误的值[1.13 backport]

cmd / link:使用Android NDK工具链进行构建时,零指针取消引用崩溃[1.13 backport]

Go1.13.4 和 1.12.13 两个小版本发布

https://studygolang.com/topics/10355

Go 1.13.4 包括对 net/http 和syscall 包的修复。

两种版本均解决了macOS 10.15 Catalina 上的一个问题:被 Gatekeeper 拒绝的未经公证的安装程序和二进制文件。

查看发行说明以获取更多信息:

https://golang.org/doc/devel/release.html#go1.13.minor

Go1.13.3 和 Go1.12.12 小版本发布

https://studygolang.com/topics/10268

以解决最近报告的安全问题。

无效的 DSA 公钥可能会导致 dsa.Verify 出现故障。特别是,在精心制作的 X.509 证书链上使用 crypto/x509.Verify 可能会导致 panic, 即使证书没有链接到受信任的根。可以通过 crypto/tls 连接将链交付给客户端, 或者接受和验证客户端证书的服务器。会通过 HTTPS 服务器使 net/http 客户端崩溃, 而接受客户端证书的 net/http 服务器将恢复 panic 并且不受影响。

此外,在 X.509 证书请求,解析 golang.org/x/crypto/openpgp 实体或 golang.org/x/crypto/otr 对话期间, 调用 crypto/x509.(*CertificateRequest) CheckSignature 的应用程序可能会崩溃。最后, 由于主机密钥格式错误,golang.org/x/crypto/ssh 客户端可能会崩溃, 而如果 PublicKeyCallback 接受格式错误的公钥,或者 IsUserAuthority 接受了格式错误的证书,则服务器可能会崩溃。

issue 是 CVE-2019-17596 和 Go 版本 golang.org/issue/34960。

Go 1.13.2 版本还包含编译器修复程序,可防止在极少数情况下对负 slice 索引的不正确访问。 受影响的代码(编译器可以证明索引为零或负数)将在 Go 1.12.11 中引起 panic , 但可能导致在 Go 1.13 和 Go 1.13.1 中进行任意内存读写。这是 Go issue golang.org/issue/34802。

结果在 7点07分,又发布了 Go1.13.3 和 Go1.12.12,应该是上个版本有 bug,紧急修复。

因此不建议使用 Go 1.13.2和Go 1.12.11,可以到 https://studygolang.com/dl 下载 Go1.13.3 和 Go1.12.12。

Go 1.13.2 和 go1.12.11

解决安全问题

https://golang.org/security

Go 1.13.1 和 Go 1.12.10

Go 1.13.1 和 Go 1.12.10 发布了,修复了一个安全问题,如下:

net/http (通过 net/textproto)接受无效的 HTTP/1.1 报头并将其标准化,在冒号前会出现空格,产生 RFC 7230 错误。

如果一个 Go 服务器在一个不常见的反向代理后面使用,该代理接受并转发这些无效的报头,却不对这些无效报头进行规范化,反向代理和服务器就会互不相同地解释这些报头。这可能导致过滤旁路或请求漏洞( request smuggling),如果来自不同客户端的请求被代理多路复用到相同的上游连接上,则导致请求漏洞。这些无效的报头现在被 Go 服务器拒绝,并且在没有规范化的情况下传递给 Go 客户端应用程序。

查看发布说明以了解更多信息:

https://groups.google.com/forum/m/#!topic/golang-announce/cszieYyuL9Q

相关链接

参考来源

Go 1.13

Go 1.13 发布了,该版本值得关注的改进包括:

go 命令可直接下载和认证模块,详情请看 using the Go module mirror and Go checksum database by default

数字文法的改进 错误封装改进 默认启用 TLS 1.3 提升对模块的支持

详细改进说明请看 https://golang.org/doc/go1.13

[参考来源](https://www.oschina.net/news/109593/go-1-13-released)

GO 1.13版本改进

1

https://www.wingsxdu.com/p1391/

首先是模块化将成为默认的特性,彻底告别GOPATH时代;其次是不是太重要的二进制特性将被废除;

1.语法糖
  • 二进制整数字面量:前缀 0b 或 0B 表示二进制整数字面量,例如 0b1011;

  • 八进制整数字面量:前缀 0o 或 0O 表示八进制整数字面量,例如 0o660(由前导 0 后跟八进制数字指示的八进制表示法仍然有效);

  • 十六进制浮点数字面量:现在可以使用前缀 0x 或 0X 来表示十六进制格式浮点数,例如 0x1.0p-1021。十六进制浮点数必须始终具有指数,写为字母 p 或 P,后跟十进制的指数。指数将尾数运算为2的指数幂。例 0x1p-2,代表十六进制的 1 除以 2²,也就是 0.25;

  • 虚部(复数常数的虚部)字面量:虚部后缀 i 现在可以与任何(二进制,十进制,十六进制)整数或浮点字面值一起使用,例如:0xabci == 0xabc * 1i == 2748i 。

  • 数字分隔符:现在可以使用下划线分隔(分组)任何数字字面量,例如 1_000_000、0b_1010_0110、3.1415_9265,下划线可能出现在任何两位数字或字面量前缀和第一位数字之间。 (没看懂)

2.工具

Modules 改进

GO111MODULE 环境变量默认值仍为 auto,但只要当前工作目录包含或位于包含 go.mod 文件的目录下,auto 就会激活 go command 模块感知模式--即使当前目录在 GOPATH/src 内。

此变更简化了 GOPATH/src 中现有代码的迁移,以及对模块感知软件包与非模块感知导入器的持续维护。

GOPROXY 环境变量现在可以设置为以逗号分隔的代理 URL 列表或特殊的token值 direct,其默认值现为https://proxy.golang.org,direct。解析包含其模块的包路径时,go命令将连续尝试列表中每个代理上的所有候选模块路径。除404、410之外,无法访问的代理或 HTTP 状态代码将使搜索终止,而无需咨询其余代理。

GOPRIVATE(new) 环境变量用于声明不公开的模块路径。用作较低优先级的 GONOPROXY 和GONOSUMDB 变量的默认值,通过代理提取哪些模块并使用校验和数据库进行验证,从而提供更精细的操控。

GOSUMDB(new) 环境变量可标识数据库的名称、可选的公钥和服务器 URL,以查询主模块的go.sum文件中尚未列出的模块的校验和。如果 GOSUMDB 不包含显式 URL,则通过检索支持校验和数据库的 GOPROXY URL来选择 URL,如果所有代理都不支持,则返回到指定数据库的直接连接。如果GOSUMDB设置为off,则不会查询校验和数据库,只验证 go.sum 文件中的现有校验和。

若用户无法访问默认代理和校验和数据库(例如由于防火墙配置)可将 GOPROXY设置为 dircet和/或将 GOSUMDB 设置为 off 。

go env -w 指令可用于设置这些变量的默认值,全平台通用:

go env -w GOPROXY=direct go env -w GOSUMDB=off

go 版本相关

https://www.infoq.com/news/2019/09/go-1-13-module-mirror-checksumdb/

数字文法的改进

在语言级别,Go 1.13支持一组更统一的数字文字前缀, 例如0b二进制数字,0x十六进制数字,0o八进制等等。 新版本还使运算符<<和可以使用带符号的移位计数>>, 从而uint在使用它们时不需要类型转换。 两项更改都没有违反Go承诺与该语言的早期版本兼容的源代码。

https://github.com/golang/proposal/blob/master/design/19308-number-literals.md

默认启用 TLS 1.3

https://www.jianshu.com/p/efe44d4a7501?utm_source=oschina-app

有得必有失,HTTPS 虽然增加了网站安全性,但因为 HTTPS 握手次数增加, 会一定程度上降低用户访问速度。 为了使 HTTPS 达到更快的数据传输性能,并且在传输过程中更加安全, TLS 1.3 新特性

TLS(Transport Layer Security Protocol,传输层安全协议)主要目的是提供隐私和数据两个通信应用之间的完整性。该协议由两层组成:TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。

当使用 TLS 时,客户端和服务器之间的连接具有以下一个或多个属性:

连接私密性:使用对称加密算法用于加密数据的传输,例如 AES [AES], RC4 [SCH] 等 可以使用公钥加密来验证通信方的身份 连接可靠性:发送的每个消息都使用 MAC(消息认证码) 进行完整性检查

相比 TLS 1.2,TLS 1.3 的握手时间减半。这意味着访问一个移动端网站,使用 TLS 1.3 协议,可能会减少将近 100ms 的时间。

error

https://blog.csdn.net/weixin_30257433/article/details/101833961

些时候我们需要更加具体的信息,

而为了代码健壮性考虑,对于函数返回的每一个错误,我们都不能忽略它。 因为出错的同时,很可能会返回一个 nil 类型的对象。如果不对错误进行判断, 那下一行对 nil 对象的操作百分之百会引发一个 panic。

到此,关于"go版本有哪些变化"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0