Go 1.16 がリリースされた

no extension

Go 1.16 がリリースされた。

毎度のごとく変更は多岐にわたるが,個人的に気になった部分を挙げておく。

  1. macOS の 64bit ARM アーキテクチャをサポート。 darwin/arm64 で指定可能。またこれにより iOS ポートが ios/arm64 または ios/amd64 にリネームされた(後者は iOS シミュレータ用)
  2. GO111MODULE 環境変数の既定値が on になった。以前の状態に戻すには auto を指定すること
  3. go install コマンドの引数がバージョン番号サフィックスを受け入れるようになった
    • 例: go install example.com/cmd@v1.0.0
  4. go buildgo test などのビルド系コマンド実行時に go.mod や go.sum ファイルの変更を行わなくなった
  5. go.mod によるモジュール設定で retract ディレクティブが追加された
  6. ラベルのない for ループ,メソッド値,型スイッチのある関数をインライン化できるようになった
  7. embed パッケージおよび //go:embed ディレクティブの追加
  8. io/fs パッケージの追加によりファイルシステムの汎化が容易になった
  9. io/ioutil パッケージの非推奨化
  10. crypto/dsa パッケージの非推奨化。これに伴い crypto/x509 で DSA による電子署名検証機能がドロップされた(電子署名生成は以前からないらしい)
  11. os/signal.NotifyContext() 関数の追加。これにより SIGNAL 到着時に context.Context によるキャンセルを容易に実装できる
  12. strconv のパフォーマンス改善(最大で2倍らしい)

例によって Ubuntu の APT で管理している Go コンパイラは古いので,ダウンロードページからバイナリ(go1.16.linux-amd64.tar.gz)を取ってきて手動でインストールすることを強く推奨する。 以下は手動での作業例。

$ cd /usr/local/src
$ sudo curl -L "https://golang.org/dl/go1.16.linux-amd64.tar.gz" -O
$ cd ..
$ sudo unlink go # 以前の Go が入っている場合
$ sudo tar xvf src/go1.16.linux-amd64.tar.gz
$ sudo mv go go1.16
$ sudo ln -s go1.16 go
$ go version # /usr/local/go/bin にパスが通っている場合
go version go1.16 linux/amd64

アップデートは計画的に。

ブックマーク

参考図書

photo
プログラミング言語Go
アラン・ドノバン (著), ブライアン・カーニハン (著), 柴田芳樹 (著)
丸善出版 2016-06-20 (Release 2021-07-13)
Kindle版
B099928SJD (ASIN)
評価     

Kindle 版出た! 一部内容が古びてしまったが,この本は Go 言語の教科書と言ってもいいだろう。感想はこちら

reviewed by Spiegel on 2021-05-22 (powered by PA-APIv5)