Go 1.22 にアップデートする(セキュリティ・アップデートの追記あり)
仕事の忙しさにかまけて色々と放っぽり出してたので,少しずつ回復中。
さて今更だが,先月 2024-02 に Go 1.22.0 が予定通りリリースされた。
- Go 1.22.0 is released
- Go 1.22 is released! - The Go Programming Language
- Go 1.22 Release Notes - The Go Programming Language
変化点の解説はページ末のブックマークを参照してもらうとして,とりあえず自機の環境をアップデートしてしまおうそうしよう。
Ubuntu の APT で管理している Go コンパイラは古いので,ダウンロードページからバイナリ(go1.22.1.linux-amd64.tar.gz
)を取ってきてインストールすることを推奨する。
以下は完全手動での作業例。
$ cd /usr/local/src
$ sudo curl -L "https://go.dev/dl/go1.22.1.linux-amd64.tar.gz" -O
$ cd ..
$ sudo unlink go # 以前の Go が入っている場合
$ sudo tar xvf src/go1.22.1.linux-amd64.tar.gz
$ sudo mv go go1.22.1
$ sudo ln -s go1.22.1 go
$ go version # /usr/local/go/bin にパスが通っている場合
go version go1.22.1 linux/amd64
Windows はインストールパッケージを取ってきて直接インストールする。 Scoop 経由でも OK
複数バージョンの Go コンパイラを扱いたい場合は
$ go install golang.org/dl/go1.22.1@latest
$ go1.22.1 download
$ go1.22.1 version
go version go1.22.1 linux/amd64
てな感じに導入できる。
【2024-03-06 追記】Go 1.22.1 のリリース【セキュリティ・アップデート】
予定通り Go 1.22.1 がリリースされた。
ついでに google.golang.org/protobuf
パッケージにもアップデートのアナウンスがあった。
gRPC などを操ってる方は要注意である。
- [security] Go 1.22.1 and Go 1.21.8 are released
- [security] Vulnerability in google.golang.org/protobuf
脆弱性の内容は以下の通り(面倒になったので CVSS 評価は端折る)。
-
CVE-2024-24783
crypto/x509
: Verify panics on certificates with an unknown public key algorithm -
CVE-2023-45290
net/http
: memory exhaustion inRequest.ParseMultipartForm
-
CVE-2023-45289
net/http
,net/http/cookiejar
: incorrect forwarding of sensitive headers and cookies on HTTP redirect -
CVE-2024-24785
html/template
: errors returned fromMarshalJSON
methods may break template escaping -
CVE-2024-24784
net/mail
: comments in display names are incorrectly handled -
CVE-2024-24786 Version v1.33.0 of the
google.golang.org/protobuf
module fixes a bug in thegoogle.golang.org/protobuf/encoding/protojson
package which could cause the Unmarshal function to enter an infinite loop when handling some invalid inputs.
ブックマーク
- Go 1.22リリース連載始まります & ループの変化とTinyGo 0.31 | フューチャー技術ブログ
- Go 1.22 リリース連載 slicesのマイナーアップデート | フューチャー技術ブログ
- Go 1.22リリース連載 archive/tar, archive/zip, bufio, io | フューチャー技術ブログ
- Go 1.22 リリース連載 encoding, encoding/json | フューチャー技術ブログ
- Go1.22 リリース連載 HTTPルーティングの強化 | フューチャー技術ブログ
- Go 1.22リリース連載 vet, log/slog, testing/slogtest | フューチャー技術ブログ
- 30種類のプログラミング言語で、ループ処理を書いてみた | フューチャー技術ブログ
- Go 1.22リリース連載 net, net/http, net/netip | フューチャー技術ブログ
- Go 1.22 でも残る、“syscall” を使わないといけないケース(ソース付き) - 標準愚痴出力
- 既存パッケージ(uncozip) を Go1.22 の rangefunc 対応に - 標準愚痴出力
参考図書
- プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 丸善出版 2016-06-20
- 単行本(ソフトカバー)
- 4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
- 評価
著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。
- 初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド
- Jon Bodner (著), 武舎 広幸 (翻訳)
- オライリージャパン 2022-09-26
- 単行本(ソフトカバー)
- 4814400047 (ASIN), 9784814400041 (EAN), 4814400047 (ISBN)
- 評価
2021年に出た “Learning Go” の邦訳版。私は版元で PDF 版を購入。 Go 特有の語法(idiom)を切り口として Go の機能やパッケージを解説している。 Go 1.19 対応。
- Go言語 100Tips ありがちなミスを把握し、実装を最適化する impress top gearシリーズ
- Teiva Harsanyi (著), 柴田 芳樹 (著)
- インプレス 2023-08-18 (Release 2023-08-18)
- Kindle版
- B0CFL1DK8Q (ASIN)
- 評価
版元で PDF 版を購入可能。事実上の Effective Go とも言える充実の内容。オリジナルは敢えてタイトルに “tips” という単語を入れるのを避けたのに邦題が「100 Tips」とかなっていて,原作者がお怒りとの噂(あくまで噂)
- 効率的なGo ―データ指向によるGoアプリケーションの性能最適化
- Bartłomiej Płotka (著), 山口 能迪 (翻訳)
- オライリー・ジャパン 2024-02-24
- 単行本(ソフトカバー)
- 4814400535 (ASIN), 9784814400539 (EAN), 4814400535 (ISBN)
- 評価
版元で Ebook を買える。Go言語のリファレンス本ではない。フトウェア工学,プログラミング(の考え方)を学ぶ教科書的な位置づけかなぁ。