Go 1.13.6 がリリースされた,他

no extension

遅まきながら(笑)

Go 1.13.6 がリリースされた。

今回もセキュリティ・アップデートはなし。

go1.13.6 (released 2020/01/09) includes fixes to the runtime and the net/http package. See the Go 1.13.6 milestone on our issue tracker for details.
via Release History - The Go Programming Language

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

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

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

pkg/errors v0.9.0 がリリースされた

pkg/errors の v0.9.0 がリリースされたようだ。

errors 0.9.0 is a preparation release for a 1.0 final release. Also we were working on removing support for Go 1.8, 1.9 and 1.10 and earlier, and become compatible this package with new way of errors on Go 1.13.
via Release errors 0.9.0 · pkg/errors

おおっ!

中身を見ると,標準の errors.Is(), errors.As(), および errors.Unwrap() 各関数を置き換え可能になっていて,さらに pkg/errors の特徴である Cause() 関数も使えるようになっている。

func Cause(err error) error {
    type causer interface {
        Cause() error
    }

    for err != nil {
        if cause, ok := err.(causer); ok {
            err = cause.Cause()
        } else if unwrapped := Unwrap(err); unwrapped != nil {
            err = unwrapped
        } else {
            break
        }
    }
    return err
}

ふむむー。 拙作の spiegel-im-spiegel/errsCause() 関数もこれに追従しておこうかな。 いや pkg/errors*.Cause() メソッドって *.Unwrap() メソッドと等価みたいだし,無理に合わせないほうがいいか。

参考図書

photo
プログラミング言語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 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2016-07-13 (powered by PA-APIv5)