Go 1.5での新機能
Yoshifumi Yamaguchi
Aug. 11, 2015 (Tue) Go言語勉強会
お前だれよ
とんぷーと呼ばれています
GopherCon 2015の資料
読んできた人いますか?
読んできた人は
一人ジャンケンを
楽しんでてください
Go 1.5
Talks/docs about Go 1.5 so far
Highlights
これまでのリリースノート
Preface of Go 1.5 Release Note
“A significant release”
Major updates
大きく取り上げてたもの
Major updates
リリースノートにはさりげなく書いてあったもの
golang.org/x/mobile
Topics
セルフホスティング
$ git clone https://go.googlesource.com/go go1.5
$ cd go1.5/src
$ GOROOT_BOOTSTRAP=/path/to/go1.4.2/ ./make.bash
コンカレントGC
Austin Clements, Rick Hudson, Russ Coxはキューブメイト→
コンカレントGC
コンカレントGC
GCのパフォーマンス
共有ライブラリの生成
C形式とGo形式の2つがある
共有ライブラリの生成
| linux/amd64 | linux/arm darwin/amd64 darwin/arm |
c-shared | ◯ | ◯ |
shared | ◯ | × |
2015/08/10時点でのGo 1.5での対応予定
C形式の共有ライブラリ
サンプル: https://goo.gl/0b5AuH
package main
import (
"C"
"log"
"net/http"
)
//export server
func server() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, Go c-shared lib"))
}
func init() {
log.Println("Go HTTP server is loaded")
}
// mainは必須
func main() {}
main.go
$ go build -buildmode=c-shared -o libgomain.so main.go
Go形式の共有ライブラリ
go doc
go doc
godoc
go doc
internal
vendoring
vendoring
$GOPATH
| src/
| | github.com/constabulary/example-gsftp/
| | | cmd/
| | | | gsftp/
| | | | | main.go
| | | vendor/
| | | | github.com/pkg/sftp/
| | | | golang.org/x/crypto/ssh/
| | | | | agent/
Go Mobile
おしらせ