├── result.go ├── README.md ├── goroot.go ├── reports ├── 2016 │ ├── golang-08-18_go17-release.md │ ├── golang-08-12.md │ ├── golang-08-04.md │ ├── golang-07-21.md │ ├── golang-07-28.md │ ├── golang-07-14.md │ ├── golang-07-07.md │ ├── golang-06-23.md │ └── golang-06-16.md ├── 2017 │ ├── golang-09-13.md │ ├── golang-11-15.md │ ├── golang-08-08.md │ ├── golang-08-30_go19.md │ ├── golang-04-18.md │ ├── golang-04-25.md │ ├── golang-05-31.md │ ├── golang-05-16.md │ ├── golang-10-04.md │ ├── golang-05-09.md │ ├── golang-02-16_go18.md │ ├── golang-07-05.md │ ├── golang-08-23.md │ ├── golang-05-03.md │ └── golang-04-11.md └── golang-06-06.md ├── main.go ├── report.go └── gopath.go /result.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "time" 4 | 5 | type result struct { 6 | Name string 7 | TimeSamples []time.Duration 8 | BinarySize int64 9 | } 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## report 2 | 3 | Tool to generate Go report that includes: 4 | - Compiled code performance and binary sizes 5 | - Go tool performance (compile time, etc.) 6 | - Git logs for the period 7 | 8 | ## Usage 9 | 10 | To generate report of Go changes included from `$rev1` to `$rev2`: 11 | 12 | ``` 13 | report -start=$rev1 -end=$rev2 14 | ``` 15 | 16 | By default, monitored packages are built in tmp folder under 17 | isolated `GOPATH`. It's possible to set tested packages `GOPATH` 18 | with `TEST_GOPATH` environment variable. 19 | 20 | The directory reported by `go env GOROOT` (can be overriden by `GOROOT` 21 | environment variable) is expected to be under git control, otherwise 22 | it would not be possible for `report` to checkout specified revisions. 23 | 24 | ## Trivia 25 | 26 | Generated reports are being discussed in [golangshow](http://golangshow.com/) podcast. -------------------------------------------------------------------------------- /goroot.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "log" 6 | "os/exec" 7 | "path/filepath" 8 | "runtime" 9 | "strconv" 10 | "strings" 11 | "time" 12 | ) 13 | 14 | type goroot struct { 15 | path string 16 | } 17 | 18 | func newGoroot() goroot { 19 | return goroot{path: runtime.GOROOT()} 20 | } 21 | 22 | func (gr goroot) switchRevision(rev string) (time.Duration, error) { 23 | checkoutCmd := exec.Command("git", "checkout", rev) 24 | checkoutCmd.Dir = gr.path 25 | out, err := checkoutCmd.CombinedOutput() 26 | if err != nil { 27 | return 0, fmt.Errorf("git checkout: %v, out: %s", err, out) 28 | } 29 | cleanCmd := exec.Command("git", "clean", "-f") 30 | cleanCmd.Dir = gr.path 31 | out, err = cleanCmd.CombinedOutput() 32 | if err != nil { 33 | return 0, fmt.Errorf("git clean: %v, out: %s", err, out) 34 | } 35 | log.Printf("compile go at %s", rev) 36 | compileCmd := exec.Command("./make.bash") 37 | compileCmd.Dir = filepath.Join(gr.path, "src") 38 | start := time.Now() 39 | out, err = compileCmd.CombinedOutput() 40 | if err != nil { 41 | return 0, fmt.Errorf("./make.bash: %v, out: %s", err, out) 42 | } 43 | dur := time.Since(start) 44 | log.Printf("go compilation time: %v", dur) 45 | return dur, nil 46 | } 47 | 48 | type gitLog struct { 49 | N int 50 | Cmd string 51 | } 52 | 53 | func (gr goroot) getGitLog(old, new string) (gitLog, error) { 54 | gl := gitLog{} 55 | cntCmd := exec.Command("git", "rev-list", "--count", old+".."+new) 56 | cntCmd.Dir = gr.path 57 | out, err := cntCmd.CombinedOutput() 58 | if err != nil { 59 | return gl, fmt.Errorf("git rev-list: %v, out: %s", err, out) 60 | } 61 | cnt, err := strconv.Atoi(strings.TrimSpace(string(out))) 62 | if err != nil { 63 | return gl, err 64 | } 65 | gl.N = cnt 66 | gl.Cmd = "git log " + old + ".." + new 67 | return gl, nil 68 | } 69 | -------------------------------------------------------------------------------- /reports/2017/golang-09-13.md: -------------------------------------------------------------------------------- 1 | # September 13, 2017 Report 2 | 3 | Number of commits: 288 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.278164722s to 6.342214117s, +1.02% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.991429963s to 20.87406285s, -0.56% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 15.176728466s to 15.153904527s, -0.15% 10 | * code.gitea.io/gitea: from 7.604317098s to 7.564748685s, -0.52% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29753120 to 29488552, -0.89% 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38416752 to 38103232, -0.82% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 61003712 to 60493171, -0.84% 17 | * code.gitea.io/gitea: from 31733639 to 31431738, -0.95% 18 | ## Highlights: 19 | 20 | * [testing: parallelize tests over count](https://github.com/golang/go/commit/f04d5836181dec3ec1b7e427607f02fa7a204a2d) 21 | * [strconv: optimize Atoi for common case](https://github.com/golang/go/commit/46aa9f5437b000fad3696b0cd9fd97995da16411) 22 | * [fmt: document verbs %b %d %o %x %X for printing pointers](https://github.com/golang/go/commit/a4140b745ce22c56821750001f30fca4020b4650) 23 | * [cmd/fix: rewrite x/net/context by default](https://github.com/golang/go/commit/bf90da97c1aaec78d2f8ad8b74a506d3b6f0ee75) 24 | * [math/rand: add Shuffle](https://github.com/golang/go/commit/a2dfe5d278eae0864397a046a8206342a426d2bd) 25 | * [runtime: improve timers scalability on multi-CPU systems](https://github.com/golang/go/commit/76f4fd8a5251b4f63ea14a3c1e2fe2e78eb74f81) 26 | * [runtime: optimize siftupTimer and siftdownTimer a bit](https://github.com/golang/go/commit/6a7c63a08ab353c7e41cb24ae66e73fb3cb7cb56) 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | ## GIT Log 37 | 38 | ``` 39 | git log 8f1e2a2610765528068107e33ab0d1d2ff224ce3..de2231888821add783305e7674bbb43d4d8453dc 40 | ``` 41 | -------------------------------------------------------------------------------- /reports/golang-06-06.md: -------------------------------------------------------------------------------- 1 | # June 6, 2018 Report 2 | 3 | Number of commits: 1553 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd: from 10.71919656s to 10.690175004s, -0.27% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 27.006956158s to 27.711735784s, +2.61% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 20.4609371s to 20.085572287s, -1.83% 10 | * code.gitea.io/gitea: from 12.024799611s to 11.574938383s, -3.74% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd: from 33753992 to 45108176, +33.64% 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 51005872 to 63255696, +24.02% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 71371645 to 93033895, +30.35% 17 | * code.gitea.io/gitea: from 36537556 to 49270637, +34.85% 18 | 19 | ## Highlights: 20 | 21 | * [os: add UserCacheDir](https://github.com/golang/go/commit/816154b06553a4cf8ee7ad089f5e444b37bed43d) 22 | * [regexp: don't allocate when All methods find no matches](https://github.com/golang/go/commit/df5997b99b9a89e1198596366230fa6c4dd50b70) 23 | * [sync: enable profiling of RWMutex](https://github.com/golang/go/commit/88ba64582703cea0d66a098730215554537572de) 24 | * [cmd/compile: make math.Ceil/Floor/Round/Trunc intrinsics on arm64](https://github.com/golang/go/commit/07f0f0956355266dafc36aadb66928e7450210ea) 25 | * [regexp: Regexp shouldn't keep references to inputs](https://github.com/golang/go/commit/7263540146c75de8037501b3d6fb64f59a0d1956) 26 | * [cmd/compile: avoid mapaccess at ..](https://github.com/golang/go/commit/c12b185a6ed143e7b397bd58489866505756be0e) 27 | * [cmd/trace: beautify goroutine page](https://github.com/golang/go/commit/ea1f4832401afb6bd89bf145db3791e7de6cadc4) 28 | * [cmd/pprof: add readline support similar to upstream](https://github.com/golang/go/commit/3f89214940d1f922bc4fde923de658a2ec1e4ac3) 29 | 30 | ## GIT Log 31 | 32 | ``` 33 | git log go1.10..6decd3d984dd0bb213837b64ab6870568b33f197 34 | ``` 35 | -------------------------------------------------------------------------------- /reports/2017/golang-11-15.md: -------------------------------------------------------------------------------- 1 | # November 15, 2017 Report 2 | 3 | Number of commit/s: 621 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 9.987581754s to 9.935628112s, -0.52% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 23.742275068s to 23.945551277s, +0.86% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 19.272130797s to 19.314289069s, +0.22% 10 | * code.gitea.io/gitea: from 11.297784156s to 11.288622624s, ~ 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 31244560 to 31311744, +0.22% 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 40880080 to 40348536, -1.30% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 64412576 to 63768112, -1.00% 17 | * code.gitea.io/gitea: from 32604190 to 32541722, -0.19% 18 | ## Highlights: 19 | 20 | * [runtime: make LockOSThread/UnlockOSThread nested](https://github.com/golang/go/commit/c85b12b5796c7efd4d8311253208b47449161361) 21 | * [cmd/compile: optimize signed non-negative div/mod by a power of 2](https://github.com/golang/go/commit/0011cfbe2b57b385bac25a3daf9de581ee263661) 22 | * [runtime: don't start new threads from locked threads](https://github.com/golang/go/commit/2595fe7fb6f272f9204ca3ef0b0c55e66fb8d90f) 23 | * [runtime: make it possible to exit Go-created threads](https://github.com/golang/go/commit/eff2b2620db005cb58c266c0f25309d6f466cb25) 24 | * [math/big: implement Lehmer's GCD algorithm](https://github.com/golang/go/commit/1643d4f33a0ed45cef0f6d33aff207ad530f9c94) 25 | * [cmd/compile: compiler support for buffered write barrier](https://github.com/golang/go/commit/7e343134d334f7317b342db19c3e90d1f3f200cc) 26 | * [cmd/vet: tighten printf format error messages](https://github.com/golang/go/commit/fc768da8b8030e6f344be6bbc86ae08c30f02849) 27 | * [encoding/json: disallow unknown fields in Decoder](https://github.com/golang/go/commit/2596a0c075aeddec571cd658f748ac7a712a2b69) 28 | * [cmd/compile: specialize map creation for small hint sizes](https://github.com/golang/go/commit/fbfc2031a673c95700e46ddf56404a0f648fc8a9) 29 | * [cmd/go: cache built packages](https://github.com/golang/go/commit/de4b6ebf5d0a12f57ace43948b8b1b90f200fae9) 30 | * [cmd/go: cache successful test results](https://github.com/golang/go/commit/bd95f889cdd241202fac01b29a3f3d7c03131a20) 31 | * [cmd/go: run vet automatically during go test](https://github.com/golang/go/commit/0d188752524282496ebd0ab4b382bb4ff8750c90) 32 | * [cmd/go: allow -coverprofile with multiple packages being tested](https://github.com/golang/go/commit/283558e42b88a6afa39da6ad4ae87558dc053776) 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | ## GIT Log 47 | 48 | ``` 49 | git log 273b657b4e970f510afb258aa73dc2e264a701e3..f71cbc8a96056248d6789581b214ac44a2e6f91e 50 | ``` 51 | -------------------------------------------------------------------------------- /reports/2017/golang-08-08.md: -------------------------------------------------------------------------------- 1 | # August 8, 2017 Report 2 | 3 | Number of commits: 156 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.350105551s to 6.345802079s, ~ 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.931790794s to 21.028021607s, +0.46% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 15.55642627s to 15.278596068s, -1.79% 10 | * code.gitea.io/gitea: from 7.929924679s to 7.922107289s, ~ 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29363232 to 29374696, ~ 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38358008 to 38370112, ~ 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 60953302 to 60957772, ~ 17 | * code.gitea.io/gitea: from 31672846 to 31685601, ~ 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 145 147 +1.38% 24 | BenchmarkMsgpUnmarshal-8 278 275 -1.08% 25 | BenchmarkEasyJsonMarshal-8 1098 1088 -0.91% 26 | BenchmarkEasyJsonUnmarshal-8 1094 1084 -0.91% 27 | BenchmarkFlatBuffersMarshal-8 295 290 -1.69% 28 | BenchmarkFlatBuffersUnmarshal-8 219 217 -0.91% 29 | BenchmarkGogoprotobufMarshal-8 125 124 -0.80% 30 | BenchmarkGogoprotobufUnmarshal-8 218 182 -16.51% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | ## GIT Log 55 | 56 | ``` 57 | git log 6c4f3a0c16e5da3caa08cb8f368dc7db90bb211d..64bd2c49b4afb80c6f062f52eb3c748970771acf 58 | ``` 59 | -------------------------------------------------------------------------------- /reports/2017/golang-08-30_go19.md: -------------------------------------------------------------------------------- 1 | # August 29, 2017 Report 2 | 3 | Number of commits: 2190 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 8.904411832s to 8.355669793s, -6.16% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 24.155850826s to 24.362854437s, +0.86% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 23.605404382s to 21.868107331s, -7.36% 10 | * code.gitea.io/gitea: from 10.53319879s to 9.881360545s, -6.19% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29906984 to 29612344, -0.99% 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38789616 to 38418360, -0.96% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 62014986 to 60971320, -1.68% 17 | * code.gitea.io/gitea: from 31819138 to 31773325, -0.14% 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 168 158 -5.95% 24 | BenchmarkMsgpUnmarshal-8 339 320 -5.60% 25 | BenchmarkEasyJsonMarshal-8 1319 1282 -2.81% 26 | BenchmarkEasyJsonUnmarshal-8 1325 1178 -11.09% 27 | BenchmarkFlatBuffersMarshal-8 340 304 -10.59% 28 | BenchmarkFlatBuffersUnmarshal-8 284 235 -17.25% 29 | BenchmarkGogoprotobufMarshal-8 146 137 -6.16% 30 | BenchmarkGogoprotobufUnmarshal-8 225 211 -6.22% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | https://golang.org/doc/go1.9 55 | 56 | ## GIT Log 57 | 58 | ``` 59 | git log go1.8.3..go1.9 60 | ``` 61 | -------------------------------------------------------------------------------- /reports/2017/golang-04-18.md: -------------------------------------------------------------------------------- 1 | # April 18, 2017 Report 2 | 3 | Number of commits: 110 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.948306554s to 6.949451634s, ~ 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.945806988s to 21.000798416s, +0.26% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 20.314839289s to 20.225088531s, -0.44% 10 | * code.gitea.io/gitea: from 7.992406049s to 7.96261295s, -0.37% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29097296 to 29173768, +0.26% 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38211296 to 38324360, +0.30% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 63757674 to 63869473, +0.18% 17 | * code.gitea.io/gitea: from 31469419 to 31581226, +0.36% 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 151 151 +0.00% 24 | BenchmarkMsgpUnmarshal-8 276 281 +1.81% 25 | BenchmarkEasyJsonMarshal-8 1126 1128 +0.18% 26 | BenchmarkEasyJsonUnmarshal-8 1105 1110 +0.45% 27 | BenchmarkFlatBuffersMarshal-8 293 292 -0.34% 28 | BenchmarkFlatBuffersUnmarshal-8 225 227 +0.89% 29 | BenchmarkGogoprotobufMarshal-8 128 130 +1.56% 30 | BenchmarkGogoprotobufUnmarshal-8 192 192 +0.00% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | * [testing: add TB.Helper to better support test helpers](https://github.com/golang/go/commit/bc2931372243043842161c0a60bd2f86ef9696ee) 55 | * [sync: improve Pool performance](https://github.com/golang/go/commit/af5c95117b26e22d942a12e15bdc8e25607f738c) 56 | 57 | ## GIT Log 58 | 59 | ``` 60 | git log ab0e9019ea61c1b49572876354af7086f961bc8c..48163968b2927247213fca7a6f4678d3c93855dc 61 | ``` 62 | -------------------------------------------------------------------------------- /reports/2017/golang-04-25.md: -------------------------------------------------------------------------------- 1 | # April 25, 2017 Report 2 | 3 | Number of commits: 165 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.842432634s to 6.916159253s, +1.08% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.931030524s to 20.901291831s, -0.14% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 20.452920998s to 20.308057577s, -0.71% 10 | * code.gitea.io/gitea: from 8.32561586s to 8.291286123s, -0.41% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29175856 to 29197488, ~ 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38427152 to 38462344, ~ 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 63869473 to 63914633, ~ 17 | * code.gitea.io/gitea: from 31724422 to 31766853, +0.13% 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 150 151 +0.67% 24 | BenchmarkMsgpUnmarshal-8 280 278 -0.71% 25 | BenchmarkEasyJsonMarshal-8 1129 1119 -0.89% 26 | BenchmarkEasyJsonUnmarshal-8 1112 1112 +0.00% 27 | BenchmarkFlatBuffersMarshal-8 291 291 +0.00% 28 | BenchmarkFlatBuffersUnmarshal-8 226 227 +0.44% 29 | BenchmarkGogoprotobufMarshal-8 129 196 +51.94% 30 | BenchmarkGogoprotobufUnmarshal-8 189 214 +13.23% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | * [runtime: preallocate some overflow buckets](https://github.com/golang/go/commit/94e44a9c8edb64f514b6f3b7f7001db0cfeb2d70) 55 | * [sync: align poolLocal to CPU cache line size](https://github.com/golang/go/commit/8aa31d5dae9644b3e8f6950af58c0cb83e8fc062) 56 | * [os: fix race between file I/O and Close](https://github.com/golang/go/commit/11c7b4491bd2cd1deb7b50433f431be9ced330db) 57 | 58 | ## GIT Log 59 | 60 | ``` 61 | git log 48163968b2927247213fca7a6f4678d3c93855dc..e3d7ec006f25385972c89f771d5d577adce3f024 62 | ``` 63 | -------------------------------------------------------------------------------- /reports/2017/golang-05-31.md: -------------------------------------------------------------------------------- 1 | # May 31, 2017 Report 2 | 3 | Number of commits: 104 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.005449465s to 5.948581201s, -0.95% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.586031217s to 20.412286416s, -0.84% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 15.190143317s to 14.958586758s, -1.52% 10 | * code.gitea.io/gitea: from 23.755945697s to 23.500992123s, -1.07% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 28799736 to 28237600, -1.95% 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 37881848 to 37276632, -1.60% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 61362163 to 60328292, -1.68% 17 | * code.gitea.io/gitea: from 36328488 to 35741976, -1.61% 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 146 146 +0.00% 24 | BenchmarkMsgpUnmarshal-8 276 274 -0.72% 25 | BenchmarkEasyJsonMarshal-8 1107 1106 -0.09% 26 | BenchmarkEasyJsonUnmarshal-8 1125 1081 -3.91% 27 | BenchmarkFlatBuffersMarshal-8 323 294 -8.98% 28 | BenchmarkFlatBuffersUnmarshal-8 220 218 -0.91% 29 | BenchmarkGogoprotobufMarshal-8 123 122 -0.81% 30 | BenchmarkGogoprotobufUnmarshal-8 192 188 -2.08% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | * [syscall: add Conn and RawConn interfaces](https://github.com/golang/go/commit/de5c573baabf925ee7cb868285ed4f14de5f7fe9) 55 | * [cmd/go: Document that -cover causes incorrect line numbers](https://github.com/golang/go/commit/f6f1daa4b807f1164da67c96dc8b07ee84731b52) 56 | * [crypto/rand: use blocking getrandom call on Linux when supported](https://github.com/golang/go/commit/95d991d30c59edc4943bd8baf5c664c5f8b1cebe) 57 | * [strings: simplify indexFunc](https://github.com/golang/go/commit/a5083bbf0784a4664e49207b6a3677986ca69b49) 58 | 59 | 60 | ## GIT Log 61 | 62 | ``` 63 | git log c20e54533ea49ca68640d9a59c9ed935b27da8e5..1e0819101b476f807bf8ef3fd50f1ee26691f33e 64 | ``` 65 | -------------------------------------------------------------------------------- /reports/2017/golang-05-16.md: -------------------------------------------------------------------------------- 1 | # May 16, 2017 Report 2 | 3 | Number of commits: 52 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.131619599s to 6.238794828s, +1.75% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.823279563s to 21.130564939s, +1.48% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 15.749732993s to 15.624541063s, -0.79% 10 | * code.gitea.io/gitea: from 7.844720914s to 7.782880927s, -0.79% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29289000 to 28790552, -1.70% 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38491720 to 37865736, -1.63% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 62515718 to 61312214, -1.93% 17 | * code.gitea.io/gitea: from 32284773 to 31601419, -2.12% 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 148 146 -1.35% 24 | BenchmarkMsgpUnmarshal-8 276 276 +0.00% 25 | BenchmarkEasyJsonMarshal-8 1115 1106 -0.81% 26 | BenchmarkEasyJsonUnmarshal-8 1126 1124 -0.18% 27 | BenchmarkFlatBuffersMarshal-8 311 321 +3.22% 28 | BenchmarkFlatBuffersUnmarshal-8 241 220 -8.71% 29 | BenchmarkGogoprotobufMarshal-8 125 123 -1.60% 30 | BenchmarkGogoprotobufUnmarshal-8 191 193 +1.05% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | * [internal/cpu: new package to detect cpu features](https://github.com/golang/go/commit/69972aea74de6a0397a05281475d1ca006da7bb0) 55 | * [net: allow Resolver to use a custom dialer](https://github.com/golang/go/commit/380aa884b8b2935137eee266d0a44e9083fae71f) 56 | * [container/heap: avoid up() invoke if down() success at heap.Remove()](https://github.com/golang/go/commit/ee57e36dfa6879c05ac6717c29f2df5b546e1256) 57 | * [cmd/compile: eliminate some bounds checks from generated rewrite rules](https://github.com/golang/go/commit/5548f7d5cfadf1319a99b2a17e72ff91fcdd09fc) 58 | 59 | ## GIT Log 60 | 61 | ``` 62 | git log 266a3b66ca1f49463a29f047d6fde62eb18025b8..c20e54533ea49ca68640d9a59c9ed935b27da8e5 63 | ``` 64 | -------------------------------------------------------------------------------- /reports/2017/golang-10-04.md: -------------------------------------------------------------------------------- 1 | # October 3, 2017 Report 2 | 3 | Number of commits: 224 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.320858819s to 6.274773921s, -0.73% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 21.377521367s to 21.514336434s, +0.64% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 15.088287443s to 14.9311496s, -1.04% 10 | * code.gitea.io/gitea: from 7.856976891s to 7.766483044s, -1.15% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29788192 to 29920392, +0.44% 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 41169528 to 41271096, +0.25% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 60531827 to 60647769, +0.19% 17 | * code.gitea.io/gitea: from 32105074 to 32271354, +0.52% 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 145 143 -1.38% 24 | BenchmarkMsgpUnmarshal-8 274 267 -2.55% 25 | BenchmarkEasyJsonMarshal-8 1090 1093 +0.28% 26 | BenchmarkEasyJsonUnmarshal-8 1088 1077 -1.01% 27 | BenchmarkFlatBuffersMarshal-8 287 288 +0.35% 28 | BenchmarkFlatBuffersUnmarshal-8 214 206 -3.74% 29 | BenchmarkGogoprotobufMarshal-8 122 120 -1.64% 30 | BenchmarkGogoprotobufUnmarshal-8 179 174 -2.79% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | * [runtime: improve fastrand with a better generator](https://github.com/golang/go/commit/e7e4a4ffa3330518250c4075e1f16a8ba62414df) 55 | * [io: Improve performance of CopyN](https://github.com/golang/go/commit/098eb01600fe0e90aee21d204924c67188fe26d4) 56 | * [cmd/compile/internal/gc: better inliner diagnostics](https://github.com/golang/go/commit/475df0ebccaf0871c86b2c0b55ee841aede324b7) 57 | * [runtime: don't call lockOSThread for every cgo call](https://github.com/golang/go/commit/332719f7cee2abafb3963009d44ad7cc93474707) 58 | * [regexp: make (*bitState).push inlinable](https://github.com/golang/go/commit/1ae67965e47a8a8eb71c92e44134c89cd1c67657) 59 | 60 | ## GIT Log 61 | 62 | ``` 63 | git log de2231888821add783305e7674bbb43d4d8453dc..273b657b4e970f510afb258aa73dc2e264a701e3 64 | ``` 65 | -------------------------------------------------------------------------------- /reports/2017/golang-05-09.md: -------------------------------------------------------------------------------- 1 | # May 9, 2017 Report 2 | 3 | Number of commits: 57 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 7.077596857s to 6.138483836s, -13.27% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.842339314s to 20.857190835s, ~ 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 20.239437793s to 15.980347356s, -21.04% 10 | * code.gitea.io/gitea: from 8.457533141s to 7.819306942s, -7.55% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29265360 to 29271936, ~ 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38475112 to 38486208, ~ 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 64081040 to 64081366, ~ 17 | * code.gitea.io/gitea: from 32250212 to 32258730, ~ 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 149 146 -2.01% 24 | BenchmarkMsgpUnmarshal-8 276 276 +0.00% 25 | BenchmarkEasyJsonMarshal-8 1119 1112 -0.63% 26 | BenchmarkEasyJsonUnmarshal-8 1110 1113 +0.27% 27 | BenchmarkFlatBuffersMarshal-8 292 308 +5.48% 28 | BenchmarkFlatBuffersUnmarshal-8 225 240 +6.67% 29 | BenchmarkGogoprotobufMarshal-8 126 124 -1.59% 30 | BenchmarkGogoprotobufUnmarshal-8 197 188 -4.57% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | * [bytes: optimize Buffer's Write, WriteString, WriteByte, and WriteRune](https://github.com/golang/go/commit/c08ac36761d3dc03d0a0b0ffb240c4a7c524536b) 55 | * [container/heap: optimization when selecting smaller child](https://github.com/golang/go/commit/f5352a7763c8f96f7f092990d64339eae0623263) 56 | * [cmd/go: add support for concurrent backend compilation](https://github.com/golang/go/commit/f4e5bd483b1c6f731c9925d3d1b66d2aba88980e) 57 | * [cmd/go: enable concurrent backend compilation by default](https://github.com/golang/go/commit/5e0bcb3893c2e54fdb96affcafd2953f20dd64eb) 58 | * [cmd/compile: use a buffered channel for the function queue](https://github.com/golang/go/commit/1213776650486aff30b607a6c6b6ece3e9c0155f) 59 | 60 | 61 | ## GIT Log 62 | 63 | ``` 64 | git log 6e9b6e1d222a4f8ad3d50929ee1d6178fb3c6077..266a3b66ca1f49463a29f047d6fde62eb18025b8 65 | ``` 66 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "flag" 5 | "io/ioutil" 6 | "log" 7 | "os" 8 | "time" 9 | ) 10 | 11 | const samplesCount = 1 12 | 13 | var testPackages = []string{ 14 | "github.com/coreos/etcd/cmd/etcd", 15 | "github.com/grafana/grafana/pkg/cmd/grafana-server", 16 | "github.com/prometheus/prometheus/cmd/prometheus", 17 | "code.gitea.io/gitea", 18 | } 19 | 20 | const benchmark = "github.com/alecthomas/go_serialization_benchmarks" 21 | 22 | const defaultReportName = "report.md" 23 | 24 | func main() { 25 | revStart := flag.String("start", "", 26 | `GOROOT git commit hash for "old" Go version`) 27 | revEnd := flag.String("end", "master", 28 | `GOROOT git commit hash for "new" Go version`) 29 | flag.Parse() 30 | if *revStart == "" || *revEnd == "" { 31 | log.Fatalf("Empty start/end revision") 32 | } 33 | 34 | start := time.Now() 35 | gp, err := initGopath(testPackages...) 36 | if err != nil { 37 | log.Fatalf("Gopath init: %v", err) 38 | } 39 | gr := newGoroot() 40 | 41 | commits, err := gr.getGitLog(*revStart, *revEnd) 42 | if err != nil { 43 | log.Fatalf("get git log: %v", err) 44 | } 45 | 46 | log.Printf("Switch go to %s", *revStart) 47 | oldDur, err := gr.switchRevision(*revStart) 48 | if err != nil { 49 | log.Fatalf("Go switch revision: %v", err) 50 | } 51 | oldResults, err := getResult(gp, testPackages...) 52 | if err != nil { 53 | log.Fatalf("build report: %v", err) 54 | } 55 | 56 | oldBench, err := gp.RunBenchmark(benchmark) 57 | if err != nil { 58 | log.Fatalf("benchmark run: %v", err) 59 | } 60 | 61 | gp.CleanPkg() 62 | 63 | log.Printf("Switch go to %s", *revEnd) 64 | newDur, err := gr.switchRevision(*revEnd) 65 | if err != nil { 66 | log.Fatalf("Go switch revision: %v", err) 67 | } 68 | newResults, err := getResult(gp, testPackages...) 69 | if err != nil { 70 | log.Fatalf("build report: %v", err) 71 | } 72 | newBench, err := gp.RunBenchmark(benchmark) 73 | if err != nil { 74 | log.Fatalf("benchmark run: %v", err) 75 | } 76 | 77 | rep := report{ 78 | gp: gp, 79 | commits: commits, 80 | oldGoCompileTime: oldDur, 81 | newGoCompileTime: newDur, 82 | oldResults: oldResults, 83 | newResults: newResults, 84 | oldBenchmark: oldBench, 85 | newBenchmark: newBench, 86 | } 87 | if err := writeReport(defaultReportName, rep); err != nil { 88 | log.Fatalf("write report file: %v", err) 89 | } 90 | log.Println("report build:", time.Since(start)) 91 | } 92 | 93 | func writeReport(name string, rep report) error { 94 | repBts, err := rep.Bytes() 95 | if err != nil { 96 | return err 97 | } 98 | return ioutil.WriteFile(name, repBts, 0666) 99 | } 100 | 101 | func initGopath(pkg ...string) (gopath, error) { 102 | var testGopath string 103 | if tg := os.Getenv("TEST_GOPATH"); tg != "" { 104 | testGopath = tg 105 | } else { 106 | tg, err := ioutil.TempDir("", "report-gopath-") 107 | if err != nil { 108 | return gopath{}, err 109 | } 110 | defer os.RemoveAll(tg) 111 | testGopath = tg 112 | } 113 | gp, err := newGopath(testGopath) 114 | if err != nil { 115 | return gp, err 116 | } 117 | if err := gp.CleanPkg(); err != nil { 118 | return gp, err 119 | } 120 | log.Println(append([]string{"Download:"}, pkg...)) 121 | if err := gp.GoGet(pkg...); err != nil { 122 | return gp, err 123 | } 124 | return gp, nil 125 | } 126 | 127 | func getResult(gp gopath, pkgs ...string) ([]result, error) { 128 | var results []result 129 | for _, pkg := range pkgs { 130 | res, err := gp.RunTest(pkg, samplesCount) 131 | if err != nil { 132 | return nil, err 133 | } 134 | results = append(results, res) 135 | } 136 | return results, nil 137 | } 138 | -------------------------------------------------------------------------------- /reports/2017/golang-02-16_go18.md: -------------------------------------------------------------------------------- 1 | # February 16, 2017 Report (Release 1.8) 2 | 3 | Number of commits: 2301 4 | 5 | ## Compilation time 6 | 7 | * github.com/boltdb/bolt/cmd/bolt: from 608.221933ms to 607.683564ms, ~ 8 | * github.com/coreos/etcd/cmd/etcd: from 14.493261174s to 12.574284838s, -13.24% 9 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 36.757500578s to 36.256616348s, -1.36% 10 | * github.com/junegunn/fzf/src/fzf: from 1.024158847s to 1.087723734s, +6.21% 11 | * github.com/monochromegane/the_platinum_searcher/cmd/pt: from 1.422330519s to 1.2497697s, -12.13% 12 | * github.com/nsqio/nsq/apps/nsqd: from 2.096109458s to 1.960299521s, -6.48% 13 | * github.com/prometheus/prometheus/cmd/prometheus: from 47.221796519s to 41.124079111s, -12.91% 14 | * github.com/spf13/hugo: from 7.479409536s to 6.44479598s, -13.83% 15 | * golang.org/x/tools/cmd/guru: from 2.883006747s to 2.658148815s, -7.80% 16 | 17 | ## Binary size: 18 | 19 | * github.com/boltdb/bolt/cmd/bolt: from 2696808 to 3188113, +18.22% 20 | * github.com/coreos/etcd/cmd/etcd: from 27756416 to 26987880, -2.77% 21 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 35954896 to 34414776, -4.28% 22 | * github.com/junegunn/fzf/src/fzf: from 3362675 to 3208398, -4.59% 23 | * github.com/monochromegane/the_platinum_searcher/cmd/pt: from 4615986 to 4362805, -5.48% 24 | * github.com/nsqio/nsq/apps/nsqd: from 9982014 to 10345037, +3.64% 25 | * github.com/prometheus/prometheus/cmd/prometheus: from 67052893 to 62571775, -6.68% 26 | * github.com/spf13/hugo: from 17062116 to 16789673, -1.60% 27 | * golang.org/x/tools/cmd/guru: from 8279573 to 8234173, -0.55% 28 | 29 | ## Bechmarks: 30 | 31 | ``` 32 | benchmark old ns/op new ns/op delta 33 | BenchmarkMsgpMarshal-4 193 189 -2.07% 34 | BenchmarkMsgpUnmarshal-4 408 368 -9.80% 35 | BenchmarkEasyJsonMarshal-4 1601 1436 -10.31% 36 | BenchmarkEasyJsonUnmarshal-4 1926 1987 +3.17% 37 | BenchmarkFlatBuffersMarshal-4 539 371 -31.17% 38 | BenchmarkFlatBuffersUnmarshal-4 295 293 -0.68% 39 | BenchmarkGogoprotobufMarshal-4 163 156 -4.29% 40 | BenchmarkGogoprotobufUnmarshal-4 261 253 -3.07% 41 | 42 | benchmark old allocs new allocs delta 43 | BenchmarkMsgpMarshal-4 1 1 +0.00% 44 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 45 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 46 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 47 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 49 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 51 | 52 | benchmark old bytes new bytes delta 53 | BenchmarkMsgpMarshal-4 128 128 +0.00% 54 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 55 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 56 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 57 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 58 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 59 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 60 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 61 | ``` 62 | ## Highlights: 63 | 64 | * [release notes](https://golang.org/doc/go1.8) 65 | -------------------------------------------------------------------------------- /report.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "fmt" 6 | "io" 7 | "math" 8 | "time" 9 | ) 10 | 11 | type report struct { 12 | gp gopath 13 | oldGoCompileTime time.Duration 14 | newGoCompileTime time.Duration 15 | oldResults []result 16 | newResults []result 17 | oldBenchmark []byte 18 | newBenchmark []byte 19 | commits gitLog 20 | } 21 | 22 | func getStringPercents(rel float64) string { 23 | per := rel * 100 24 | if math.Abs(per) < 0.1 { 25 | return "~" 26 | } 27 | res := fmt.Sprintf("%.2f%%", per) 28 | if per > 0.0 { 29 | res = "+" + res 30 | } 31 | return res 32 | } 33 | 34 | func (r report) writeComparison(w io.Writer) error { 35 | compare, err := r.gp.BenchCmp(r.oldBenchmark, r.newBenchmark) 36 | if err != nil { 37 | return err 38 | } 39 | if _, err := w.Write(compare); err != nil { 40 | return err 41 | } 42 | return nil 43 | } 44 | 45 | func (r report) Bytes() ([]byte, error) { 46 | var b bytes.Buffer 47 | 48 | y, m, d := time.Now().Date() 49 | b.WriteString(fmt.Sprintf("# %s %d, %d Report\n\n", m, d, y)) 50 | b.WriteString(fmt.Sprintf("Number of commits: %d\n", r.commits.N)) 51 | b.WriteString("\n") 52 | 53 | diffs := r.getDiffReport() 54 | b.WriteString("## Compilation time\n\n") 55 | for i, d := range diffs.dr { 56 | line := fmt.Sprintf("* %s: from %v to %v, %s\n", d.name, avgDuration(r.oldResults[i]), avgDuration(r.newResults[i]), getStringPercents(d.compileDiffRel)) 57 | b.WriteString(line) 58 | } 59 | b.WriteString("\n") 60 | b.WriteString("## Binary size:\n\n") 61 | for i, d := range diffs.dr { 62 | line := fmt.Sprintf("* %s: from %v to %v, %s\n", d.name, r.oldResults[i].BinarySize, r.newResults[i].BinarySize, getStringPercents(d.sizeDiffRel)) 63 | b.WriteString(line) 64 | } 65 | if r.oldBenchmark != nil && r.newBenchmark != nil { 66 | b.WriteString("\n") 67 | b.WriteString("## Bechmarks:\n\n") 68 | b.WriteString("```\n") 69 | if err := r.writeComparison(&b); err != nil { 70 | return nil, err 71 | } 72 | b.WriteString("```") 73 | b.WriteString("\n") 74 | } 75 | b.WriteString("## Highlights: \n\n") 76 | b.WriteString("\t<-------------------HIGHLIGHTS HERE---------------------->\n") 77 | b.WriteString("\n") 78 | 79 | b.WriteString("## GIT Log\n\n") 80 | b.WriteString("```\n") 81 | b.WriteString(r.commits.Cmd) 82 | b.WriteString("\n```\n") 83 | 84 | return b.Bytes(), nil 85 | } 86 | 87 | type diffResult struct { 88 | name string 89 | compileDiffAbs time.Duration 90 | compileDiffRel float64 91 | sizeDiffAbs int64 92 | sizeDiffRel float64 93 | } 94 | 95 | func avgDuration(r result) time.Duration { 96 | var sum time.Duration 97 | for _, d := range r.TimeSamples { 98 | sum += d 99 | } 100 | return sum / time.Duration(len(r.TimeSamples)) 101 | } 102 | 103 | func diff(old, new result) diffResult { 104 | if old.Name != new.Name { 105 | panic("different packages") 106 | } 107 | oldAvgCompile := avgDuration(old) 108 | newAvgCompile := avgDuration(new) 109 | absCdiff := newAvgCompile - oldAvgCompile 110 | relCdiff := float64(absCdiff) / float64(oldAvgCompile) 111 | sizeDiffAbs := new.BinarySize - old.BinarySize 112 | sizeDiffRel := float64(sizeDiffAbs) / float64(old.BinarySize) 113 | return diffResult{ 114 | name: old.Name, 115 | compileDiffAbs: absCdiff, 116 | compileDiffRel: relCdiff, 117 | sizeDiffAbs: sizeDiffAbs, 118 | sizeDiffRel: sizeDiffRel, 119 | } 120 | } 121 | 122 | type diffReport struct { 123 | dr []diffResult 124 | } 125 | 126 | func (r report) getDiffReport() diffReport { 127 | var d diffReport 128 | for i, or := range r.oldResults { 129 | d.dr = append(d.dr, diff(or, r.newResults[i])) 130 | } 131 | return d 132 | } 133 | -------------------------------------------------------------------------------- /reports/2017/golang-07-05.md: -------------------------------------------------------------------------------- 1 | # July 5, 2017 Report 2 | 3 | Number of commits: 282 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.22480492s to 6.123507841s, -1.63% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.86464471s to 20.988301391s, +0.59% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 15.479684486s to 15.323795279s, -1.01% 10 | * code.gitea.io/gitea: from 24.057353423s to 23.725619051s, -1.38% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 28896080 to 28892104, ~ 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 37782096 to 37793744, ~ 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 60959013 to 60940456, ~ 17 | * code.gitea.io/gitea: from 36143472 to 36161864, ~ 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 146 147 +0.68% 24 | BenchmarkMsgpUnmarshal-8 274 302 +10.22% 25 | BenchmarkEasyJsonMarshal-8 1104 1092 -1.09% 26 | BenchmarkEasyJsonUnmarshal-8 1100 1074 -2.36% 27 | BenchmarkFlatBuffersMarshal-8 295 293 -0.68% 28 | BenchmarkFlatBuffersUnmarshal-8 218 220 +0.92% 29 | BenchmarkGogoprotobufMarshal-8 123 135 +9.76% 30 | BenchmarkGogoprotobufUnmarshal-8 189 189 +0.00% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | * [cmd/compile/internal/gc: speed-up small array comparison](https://github.com/golang/go/commit/3bdc2f3abf0f9cffc8f4e294ef22a23b82e88415) 55 | * [runtime: avoid division in gc](https://github.com/golang/go/commit/a4ee95c805fb77e594603bcd62d7858dc9e853ab) 56 | * [cmd/link: fix accidentally-quadratic library loading](https://github.com/golang/go/commit/51711d1429cb592c9ddc772e6362e74ac8545dc8) 57 | * [doc: add qualified mention of dep to FAQ](https://github.com/golang/go/commit/dc8b4e65a7a68e102484020efbf80cecd2d515bd) 58 | * [syscall: use CLONE_VFORK safely](https://github.com/golang/go/commit/67e537541c043c701001f002bed0cda70ce72767) 59 | * [runtime, syscall: workaround for bug in Linux's execve](https://github.com/golang/go/commit/91139b87f776a553524b022753981e7909386777) 60 | * [os/signal: avoid race between Stop and receiving on channel](https://github.com/golang/go/commit/8ec7a39fec2acab98ce5e41363dd1c65c03d7479) 61 | * [doc, api: add syscall.SysProcAttr.AmbientCaps change to 1.9 notes, API](https://github.com/golang/go/commit/dc86c9a6afa8b5b998dfa6621d1566d1296f2bf4) 62 | 63 | ## GIT Log 64 | 65 | ``` 66 | git log 1e0819101b476f807bf8ef3fd50f1ee26691f33e..6c4f3a0c16e5da3caa08cb8f368dc7db90bb211d 67 | ``` 68 | -------------------------------------------------------------------------------- /reports/2017/golang-08-23.md: -------------------------------------------------------------------------------- 1 | # August 23, 2017 Report 2 | 3 | Number of commits: 303 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.365659349s to 6.317265843s, -0.76% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.806365114s to 20.54922543s, -1.24% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 15.309195167s to 15.324423488s, ~ 10 | * code.gitea.io/gitea: from 7.930903576s to 7.641791653s, -3.65% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29607512 to 29594360, ~ 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38405744 to 38399216, ~ 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 60971147 to 60903120, -0.11% 17 | * code.gitea.io/gitea: from 31721052 to 31632687, -0.28% 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 147 149 +1.36% 24 | BenchmarkMsgpUnmarshal-8 278 316 +13.67% 25 | BenchmarkEasyJsonMarshal-8 1089 1106 +1.56% 26 | BenchmarkEasyJsonUnmarshal-8 1083 1172 +8.22% 27 | BenchmarkFlatBuffersMarshal-8 291 298 +2.41% 28 | BenchmarkFlatBuffersUnmarshal-8 219 231 +5.48% 29 | BenchmarkGogoprotobufMarshal-8 122 121 -0.82% 30 | BenchmarkGogoprotobufUnmarshal-8 185 185 +0.00% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | 54 | * [crypto/rand: batch large calls to linux getrandom](https://github.com/golang/go/commit/d401c427b29f48d5cbc5092e62c20aa8524ce356) 55 | * [archive/tar: optimize formatPAXRecord() call](https://github.com/golang/go/commit/23cd87eb0a2d49a3208824feaf34d8b852da422f) 56 | * [cmd/go: parallelize fmt](https://github.com/golang/go/commit/1f631a2f9a20d8dc57fb877fb95f807c895d1c40) 57 | * [runtime: simplify memory capacity check in growslice](https://github.com/golang/go/commit/365594ad59873cd8f7fde5ec158067bf695185ee) 58 | * [cmd/compile: combine x*n + y*n into (x+y)*n](https://github.com/golang/go/commit/a0453a180fc3555843185385e9d4ad9d57f1d36a) 59 | * [runtime: improve makechan memory checks and allocation calls](https://github.com/golang/go/commit/455775dae63eb1277227cbde9e99dc67a3fdb0ea) 60 | * [cmd/compile: pass stack allocated bucket to makemap inside hmap](https://github.com/golang/go/commit/06a78b57377ce63c7fca968af5056a3dec0a06bb) 61 | * [strconv: check bitsize range in ParseInt and ParseUint](https://github.com/golang/go/commit/63c428434692bdeab14115a1f70813feca7795e7) 62 | 63 | ## GIT Log 64 | 65 | ``` 66 | git log 64bd2c49b4afb80c6f062f52eb3c748970771acf..8f1e2a2610765528068107e33ab0d1d2ff224ce3 67 | ``` 68 | -------------------------------------------------------------------------------- /gopath.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "fmt" 6 | "io/ioutil" 7 | "log" 8 | "os" 9 | "os/exec" 10 | "path/filepath" 11 | "strings" 12 | "time" 13 | ) 14 | 15 | type gopath struct { 16 | path string 17 | } 18 | 19 | func newGopath(dir string) (gopath, error) { 20 | return gopath{path: dir}, os.MkdirAll(filepath.Join(dir, "src"), 0700) 21 | } 22 | 23 | func (gp gopath) setGopath(cmd *exec.Cmd) { 24 | for _, env := range os.Environ() { 25 | if strings.HasPrefix(env, "GOPATH=") { 26 | continue 27 | } 28 | cmd.Env = append(cmd.Env, env) 29 | } 30 | cmd.Env = append(cmd.Env, "GOPATH="+gp.path) 31 | } 32 | 33 | func (gp gopath) GoGet(pkg ...string) error { 34 | args := append([]string{"get", "-insecure", "-u", "-d", "-t"}, pkg...) 35 | cmd := exec.Command("go", args...) 36 | gp.setGopath(cmd) 37 | out, err := cmd.CombinedOutput() 38 | if err != nil { 39 | return fmt.Errorf("go get: %v, out: %s", err, out) 40 | } 41 | return nil 42 | } 43 | 44 | func (gp gopath) GoInstall(pkg string) error { 45 | cmd := exec.Command("go", "install", "-a", pkg) 46 | gp.setGopath(cmd) 47 | out, err := cmd.CombinedOutput() 48 | if err != nil { 49 | return fmt.Errorf("go install: %v, out: %s", err, out) 50 | } 51 | return nil 52 | } 53 | 54 | func (gp gopath) CleanPkg() error { 55 | if err := os.RemoveAll(filepath.Join(gp.path, "pkg")); err != nil { 56 | return err 57 | } 58 | if err := os.RemoveAll(filepath.Join(gp.path, "bin")); err != nil { 59 | return err 60 | } 61 | return nil 62 | } 63 | 64 | func (gp gopath) RunTest(pkg string, samples int) (result, error) { 65 | r := result{ 66 | Name: pkg, 67 | } 68 | log.Printf("Run tests %s", pkg) 69 | for i := 1; i <= samples; i++ { 70 | start := time.Now() 71 | if err := gp.GoInstall(pkg); err != nil { 72 | return r, err 73 | } 74 | dur := time.Since(start) 75 | r.TimeSamples = append(r.TimeSamples, dur) 76 | if r.BinarySize == 0 { 77 | fi, err := os.Stat(filepath.Join(gp.path, "bin", filepath.Base(pkg))) 78 | if err != nil { 79 | return r, err 80 | } 81 | r.BinarySize = fi.Size() 82 | log.Printf("\tBinary size: %d", r.BinarySize) 83 | } 84 | log.Printf("\tRun %d, compilation time: %v", i, dur) 85 | gp.CleanPkg() 86 | } 87 | return r, nil 88 | } 89 | 90 | func (gp gopath) RunBenchmark(pkg string) ([]byte, error) { 91 | log.Printf("Run Benchmarks %s", pkg) 92 | if err := gp.GoGet(pkg); err != nil { 93 | return nil, err 94 | } 95 | cmd := exec.Command("go", "test", "-bench", "(^BenchmarkMsgp)|EasyJson|Gogoprotobuf|Flat", "-benchmem", pkg) 96 | gp.setGopath(cmd) 97 | var stderr bytes.Buffer 98 | var stdout bytes.Buffer 99 | cmd.Stderr = &stderr 100 | cmd.Stdout = &stdout 101 | err := cmd.Run() 102 | if err != nil { 103 | return nil, fmt.Errorf("go test -bench: %v, out: %s", err, stderr.String()) 104 | } 105 | return stdout.Bytes(), nil 106 | } 107 | 108 | func (gp gopath) installBenchCmp() error { 109 | cmd := exec.Command("go", "get", "golang.org/x/tools/cmd/benchcmp") 110 | gp.setGopath(cmd) 111 | out, err := cmd.CombinedOutput() 112 | if err != nil { 113 | return fmt.Errorf("go get: %v, out: %s", err, out) 114 | } 115 | return nil 116 | } 117 | 118 | func (gp gopath) BenchCmp(old []byte, new []byte) ([]byte, error) { 119 | if err := gp.installBenchCmp(); err != nil { 120 | return nil, err 121 | } 122 | oldFile, err := ioutil.TempFile("", "report-bench-") 123 | if err != nil { 124 | return nil, err 125 | } 126 | newFile, err := ioutil.TempFile("", "report-bench-") 127 | if err != nil { 128 | return nil, err 129 | } 130 | if _, err := oldFile.Write(old); err != nil { 131 | return nil, err 132 | } 133 | oldFile.Close() 134 | if _, err := newFile.Write(new); err != nil { 135 | return nil, err 136 | } 137 | newFile.Close() 138 | 139 | cmd := exec.Command(filepath.Join(gp.path, "bin", "benchcmp"), oldFile.Name(), newFile.Name()) 140 | out, err := cmd.CombinedOutput() 141 | if err != nil { 142 | return nil, fmt.Errorf("benchcmp: %v, out: %s", err, out) 143 | } 144 | return out, nil 145 | } 146 | -------------------------------------------------------------------------------- /reports/2016/golang-08-18_go17-release.md: -------------------------------------------------------------------------------- 1 | # August 18, 2016 Report - 1.7 Release Report 2 | 3 | Number of commits: 2618 4 | 5 | ## Compilation time 6 | 7 | * github.com/boltdb/bolt/cmd/bolt: from 896.422603ms to 591.938888ms, -33.97% 8 | * github.com/coreos/etcd: from 19.972392715s to 13.720111409s, -31.30% 9 | * github.com/gogits/gogs: from 21.321361237s to 13.765160253s, -35.44% 10 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 41.857540153s to 35.21983685s, -15.86% 11 | * github.com/influxdata/influxdb/cmd/influxd: from 9.315015559s to 6.747189682s, -27.57% 12 | * github.com/junegunn/fzf/src/fzf: from 1.502196146s to 1.028185928s, -31.55% 13 | * github.com/mholt/caddy/caddy: from 10.547308591s to 6.205710907s, -41.16% 14 | * github.com/monochromegane/the_platinum_searcher/cmd/pt: from 2.244452542s to 1.611611546s, -28.20% 15 | * github.com/nsqio/nsq/apps/nsqd: from 3.549434917s to 2.212453609s, -37.67% 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 15.847923625s to 9.975685522s, -37.05% 17 | * github.com/spf13/hugo: from 11.062636479s to 7.876749451s, -28.80% 18 | * golang.org/x/tools/cmd/guru: from 3.824423257s to 2.780342645s, -27.30% 19 | 20 | ## Binary size: 21 | 22 | * github.com/boltdb/bolt/cmd/bolt: from 3502960 to 2679372, -23.51% 23 | * github.com/coreos/etcd: from 30182432 to 24570808, -18.59% 24 | * github.com/gogits/gogs: from 29320424 to 24165738, -17.58% 25 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 32969216 to 27705288, -15.97% 26 | * github.com/influxdata/influxdb/cmd/influxd: from 20228464 to 16692722, -17.48% 27 | * github.com/junegunn/fzf/src/fzf: from 4097752 to 3252216, -20.63% 28 | * github.com/mholt/caddy/caddy: from 18374240 to 15152137, -17.54% 29 | * github.com/monochromegane/the_platinum_searcher/cmd/pt: from 5542200 to 4598435, -17.03% 30 | * github.com/nsqio/nsq/apps/nsqd: from 12011912 to 10012284, -16.65% 31 | * github.com/prometheus/prometheus/cmd/prometheus: from 28141728 to 23119508, -17.85% 32 | * github.com/spf13/hugo: from 19397912 to 15885876, -18.11% 33 | * golang.org/x/tools/cmd/guru: from 9571344 to 7851170, -17.97% 34 | 35 | ## Bechmarks: 36 | 37 | ``` 38 | benchmark old ns/op new ns/op delta 39 | BenchmarkMsgpMarshal-4 284 188 -33.80% 40 | BenchmarkMsgpUnmarshal-4 502 405 -19.32% 41 | BenchmarkEasyJsonMarshal-4 1926 1615 -16.15% 42 | BenchmarkEasyJsonUnmarshal-4 2450 2107 -14.00% 43 | BenchmarkFlatBuffersMarshal-4 835 363 -56.53% 44 | BenchmarkFlatBuffersUnmarshal-4 361 291 -19.39% 45 | BenchmarkGogoprotobufMarshal-4 210 162 -22.86% 46 | BenchmarkGogoprotobufUnmarshal-4 309 254 -17.80% 47 | 48 | benchmark old allocs new allocs delta 49 | BenchmarkMsgpMarshal-4 1 1 +0.00% 50 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 51 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 52 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 53 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 54 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 55 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 56 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 57 | 58 | benchmark old bytes new bytes delta 59 | BenchmarkMsgpMarshal-4 128 128 +0.00% 60 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 61 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 62 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 63 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 64 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 65 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 66 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 67 | ``` 68 | ## Highlights: 69 | 70 | * [Go 1.7 Release Notes](https://golang.org/doc/go1.7) 71 | -------------------------------------------------------------------------------- /reports/2017/golang-05-03.md: -------------------------------------------------------------------------------- 1 | # May 3, 2017 Report 2 | 3 | Number of commits: 116 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd/etcd: from 6.984987651s to 6.940754247s, -0.63% 8 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 20.901351369s to 20.867653921s, -0.16% 9 | * github.com/prometheus/prometheus/cmd/prometheus: from 19.993288473s to 20.166363846s, +0.87% 10 | * code.gitea.io/gitea: from 8.51736895s to 8.427515671s, -1.05% 11 | 12 | ## Binary size: 13 | 14 | * github.com/coreos/etcd/cmd/etcd: from 29214032 to 29228016, ~ 15 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 38464216 to 38475112, ~ 16 | * github.com/prometheus/prometheus/cmd/prometheus: from 64041132 to 64068247, ~ 17 | * code.gitea.io/gitea: from 32206689 to 32209230, ~ 18 | 19 | ## Bechmarks: 20 | 21 | ``` 22 | benchmark old ns/op new ns/op delta 23 | BenchmarkMsgpMarshal-8 151 148 -1.99% 24 | BenchmarkMsgpUnmarshal-8 277 275 -0.72% 25 | BenchmarkEasyJsonMarshal-8 1119 1112 -0.63% 26 | BenchmarkEasyJsonUnmarshal-8 1124 1111 -1.16% 27 | BenchmarkFlatBuffersMarshal-8 291 292 +0.34% 28 | BenchmarkFlatBuffersUnmarshal-8 226 223 -1.33% 29 | BenchmarkGogoprotobufMarshal-8 146 125 -14.38% 30 | BenchmarkGogoprotobufUnmarshal-8 299 195 -34.78% 31 | 32 | benchmark old allocs new allocs delta 33 | BenchmarkMsgpMarshal-8 1 1 +0.00% 34 | BenchmarkMsgpUnmarshal-8 3 3 +0.00% 35 | BenchmarkEasyJsonMarshal-8 5 5 +0.00% 36 | BenchmarkEasyJsonUnmarshal-8 4 4 +0.00% 37 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 38 | BenchmarkFlatBuffersUnmarshal-8 3 3 +0.00% 39 | BenchmarkGogoprotobufMarshal-8 1 1 +0.00% 40 | BenchmarkGogoprotobufUnmarshal-8 3 3 +0.00% 41 | 42 | benchmark old bytes new bytes delta 43 | BenchmarkMsgpMarshal-8 128 128 +0.00% 44 | BenchmarkMsgpUnmarshal-8 112 112 +0.00% 45 | BenchmarkEasyJsonMarshal-8 784 784 +0.00% 46 | BenchmarkEasyJsonUnmarshal-8 160 160 +0.00% 47 | BenchmarkFlatBuffersMarshal-8 0 0 +0.00% 48 | BenchmarkFlatBuffersUnmarshal-8 112 112 +0.00% 49 | BenchmarkGogoprotobufMarshal-8 64 64 +0.00% 50 | BenchmarkGogoprotobufUnmarshal-8 96 96 +0.00% 51 | ``` 52 | ## Highlights: 53 | * [runtime: align mcentral by cache line size](https://github.com/golang/go/commit/259d60995d735523fc25939c35847538eb0d067) 54 | * [context: define behavior for Err before Done is closed](https://github.com/golang/go/commit/6e2c4bc012f8cc262db25d3fee414c5231fea03a) 55 | * [testing: add argument to list tests, benchmarks, and examples](https://github.com/golang/go/commit/ba8ff87dbeb87813a4604e36adb609b1e8fcb7be) 56 | * [sync: import Map from x/sync/syncmap](https://github.com/golang/go/commit/959025c0ac97ec3533ef9f3f70d64453352a7b56) 57 | * [reflect: use sync.Map instead of RWMutex for type caches](https://github.com/golang/go/commit/33b92cd6ce46c61a4d00a86b88971534773dd4a8) 58 | * [encoding/gob: replace RWMutex usage with sync.Map](https://github.com/golang/go/commit/c120e449fbc618f9510387d718de0cef5f73af3a) 59 | * [encoding/xml: replace tinfoMap RWMutex with sync.Map](https://github.com/golang/go/commit/eb6adc27d56687970dd8a49794ca85acc4cf9097) 60 | * [encoding/json: replace encoderCache RWMutex with a sync.Map](https://github.com/golang/go/commit/d6ce7e4feca75d2833f0790260ea46e194c55170) 61 | * [mime: use sync.Map instead of RWMutex for type lookups](https://github.com/golang/go/commit/e8d7e5d1fa7d8477b91cb4dffeac57c7c20cb5c5) 62 | * [cmd/compile: add initial backend concurrency support](https://github.com/golang/go/commit/756b9ce3a5a518555114b0e023eb1674084b38e1) 63 | 64 | ## GIT Log 65 | 66 | ``` 67 | git log e3d7ec006f25385972c89f771d5d577adce3f024..6e9b6e1d222a4f8ad3d50929ee1d6178fb3c6077 68 | ``` 69 | -------------------------------------------------------------------------------- /reports/2017/golang-04-11.md: -------------------------------------------------------------------------------- 1 | # April 11, 2017 Report 2 | 3 | Number of commits: 91 4 | 5 | ## Compilation time 6 | 7 | * github.com/boltdb/bolt/cmd/bolt: from 1.756231123s to 1.830287273s, +4.22% 8 | * github.com/coreos/etcd/cmd/etcd: from 21.236700801s to 21.068541099s, -0.79% 9 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 1m33.624360428s to 1m41.443431695s, +8.35% 10 | * github.com/junegunn/fzf/src/fzf: from 2.047522313s to 2.233728822s, +9.09% 11 | * github.com/mholt/caddy/caddy: from 11.399929242s to 11.381431322s, -0.16% 12 | * github.com/monochromegane/the_platinum_searcher/cmd/pt: from 2.466245707s to 2.370034628s, -3.90% 13 | * github.com/nsqio/nsq/apps/nsqd: from 4.000234165s to 4.260929839s, +6.52% 14 | * github.com/prometheus/prometheus/cmd/prometheus: from 1m9.384398736s to 1m15.828466557s, +9.29% 15 | * github.com/spf13/hugo: from 12.448496024s to 12.17841034s, -2.17% 16 | * golang.org/x/tools/cmd/guru: from 6.107231423s to 6.973775622s, +14.19% 17 | 18 | ## Binary size: 19 | 20 | * github.com/boltdb/bolt/cmd/bolt: from 2983095 to 2983194, ~ 21 | * github.com/coreos/etcd/cmd/etcd: from 29077672 to 29032904, -0.15% 22 | * github.com/grafana/grafana/pkg/cmd/grafana-server: from 35955072 to 35901048, -0.15% 23 | * github.com/junegunn/fzf/src/fzf: from 3425864 to 3422042, -0.11% 24 | * github.com/mholt/caddy/caddy: from 16956791 to 16920056, -0.22% 25 | * github.com/monochromegane/the_platinum_searcher/cmd/pt: from 4714139 to 4718509, ~ 26 | * github.com/nsqio/nsq/apps/nsqd: from 10847409 to 10827058, -0.19% 27 | * github.com/prometheus/prometheus/cmd/prometheus: from 63880345 to 63757594, -0.19% 28 | * github.com/spf13/hugo: from 18191566 to 18150735, -0.22% 29 | * golang.org/x/tools/cmd/guru: from 8570919 to 8567043, ~ 30 | 31 | ## Bechmarks: 32 | 33 | ``` 34 | benchmark old ns/op new ns/op delta 35 | BenchmarkMsgpMarshal-4 375 363 -3.20% 36 | BenchmarkMsgpUnmarshal-4 1135 1019 -10.22% 37 | BenchmarkEasyJsonMarshal-4 4336 3148 -27.40% 38 | BenchmarkEasyJsonUnmarshal-4 6850 5356 -21.81% 39 | BenchmarkFlatBuffersMarshal-4 1561 1411 -9.61% 40 | BenchmarkFlatBuffersUnmarshal-4 685 644 -5.99% 41 | BenchmarkGogoprotobufMarshal-4 595 500 -15.97% 42 | BenchmarkGogoprotobufUnmarshal-4 851 770 -9.52% 43 | 44 | benchmark old allocs new allocs delta 45 | BenchmarkMsgpMarshal-4 1 1 +0.00% 46 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 47 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 48 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 49 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 50 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 51 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 52 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 53 | 54 | benchmark old bytes new bytes delta 55 | BenchmarkMsgpMarshal-4 128 128 +0.00% 56 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 57 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 58 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 59 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 60 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 61 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 62 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 63 | ``` 64 | ## Highlights: 65 | 66 | * [strings: optimize Count for amd64](https://github.com/golang/go/commit/d206af1e6c53df0c59d9466fe9c50415f9d8dcd5) 67 | * [testing: consider a test failed after race errors](https://github.com/golang/go/commit/221541ec8c4ec1b0ed0c6f26f5e13ca128e2a3cd) 68 | * [cmd/compile: make iface == iface const evaluation respect !=](https://github.com/golang/go/commit/b83a916f7186eb98636407c304974db34277aa2f) 69 | * https://github.com/golang/go/issues/19911 70 | 71 | ## GIT Log 72 | 73 | ``` 74 | git log 4c1622082e493dea24a936930be8b324aae54505..ab0e9019ea61c1b49572876354af7086f961bc8c 75 | ``` 76 | -------------------------------------------------------------------------------- /reports/2016/golang-08-12.md: -------------------------------------------------------------------------------- 1 | # August 12, 2016 Report 2 | 3 | Number of commits: 10 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd: from 13.449608827s to 13.415211207s, -0.26% 8 | * github.com/boltdb/bolt/cmd/bolt: from 723.857958ms to 615.353243ms, -14.99% 9 | * github.com/gogits/gogs: from 13.979710365s to 13.798540772s, -1.30% 10 | * github.com/spf13/hugo: from 9.32488364s to 7.659044634s, -17.86% 11 | * github.com/nsqio/nsq/apps/nsqd: from 2.047527696s to 2.2435499s, +9.57% 12 | * github.com/mholt/caddy: from 285.239281ms to 299.829287ms, +5.12% 13 | 14 | ## Binary size: 15 | 16 | * github.com/coreos/etcd/cmd: from 26680798 to 26685015, ~ 17 | * github.com/boltdb/bolt/cmd/bolt: from 2679371 to 2679372, ~ 18 | * github.com/gogits/gogs: from 23918579 to 23930988, ~ 19 | * github.com/spf13/hugo: from 15877527 to 15885840, ~ 20 | * github.com/nsqio/nsq/apps/nsqd: from 10008067 to 10012284, ~ 21 | * github.com/mholt/caddy: from 13044558 to 13044558, ~ 22 | 23 | ## Bechmarks: 24 | 25 | ``` 26 | benchmark old ns/op new ns/op delta 27 | BenchmarkMsgpMarshal-4 187 189 +1.07% 28 | BenchmarkMsgpUnmarshal-4 405 403 -0.49% 29 | BenchmarkEasyJsonMarshal-4 1598 1604 +0.38% 30 | BenchmarkEasyJsonUnmarshal-4 2245 2265 +0.89% 31 | BenchmarkFlatBuffersMarshal-4 387 361 -6.72% 32 | BenchmarkFlatBuffersUnmarshal-4 290 291 +0.34% 33 | BenchmarkGogoprotobufMarshal-4 162 161 -0.62% 34 | BenchmarkGogoprotobufUnmarshal-4 256 255 -0.39% 35 | 36 | benchmark old allocs new allocs delta 37 | BenchmarkMsgpMarshal-4 1 1 +0.00% 38 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 39 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 40 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 41 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 42 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 43 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 44 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 45 | 46 | benchmark old bytes new bytes delta 47 | BenchmarkMsgpMarshal-4 128 128 +0.00% 48 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 49 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 50 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 51 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 52 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 53 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 54 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 55 | ``` 56 | ## Highlights: 57 | 58 | 59 | ## GIT Log 60 | 61 | ``` 62 | commit 31ad583ab24263f9dbcb5cbcce849eed64e74040 63 | Author: Josh Bleecher Snyder 64 | Date: Sat Jun 25 15:11:25 2016 -0700 65 | 66 | testing: respect benchtime on very fast benchmarks 67 | 68 | When ns/op dropped below 1, the old code 69 | ignored benchtime and reverted to 1s. 70 | 71 | Change-Id: I59752cef88d8d73bfd5b085f5400ae657f78504e 72 | Reviewed-on: https://go-review.googlesource.com/26664 73 | Run-TryBot: Josh Bleecher Snyder 74 | Reviewed-by: Marcel van Lohuizen 75 | 76 | commit 392bf3a9cfee297ec106d5a67c37d8edb4c8c183 77 | Author: Chris Broadfoot 78 | Date: Mon Aug 8 16:56:22 2016 -0700 79 | 80 | doc/go1.7.html: update compress/flate section 81 | 82 | Updates #15810. 83 | 84 | Change-Id: Ifa7d2fd7fbfe58dff8541b18a11f007a5ff5818a 85 | Reviewed-on: https://go-review.googlesource.com/25591 86 | Reviewed-by: Brad Fitzpatrick 87 | 88 | commit 7a622740655bb5fcbd160eb96887032314842e6e 89 | Author: Brad Fitzpatrick 90 | Date: Mon Aug 8 17:14:01 2016 +0000 91 | 92 | net/http: make Transport use new connection if over HTTP/2 concurrency limit 93 | 94 | The Go HTTP/1 client will make as many new TCP connections as the user requests. 95 | 96 | The HTTP/2 client tried to have that behavior, but the policy of 97 | whether a connection is re-usable didn't take into account the extra 1 98 | stream counting against SETTINGS_MAX_CONCURRENT_STREAMS so in practice 99 | users were getting errors. 100 | 101 | For example, if the server's advertised max concurrent streams is 100 102 | and 200 concurrrent Go HTTP requests ask for a connection at once, all 103 | 200 will think they can reuse that TCP connection, but then 100 will 104 | fail later when the number of concurrent streams exceeds 100. 105 | 106 | Instead, recognize the "no cached connections" error value in the 107 | shouldRetryRequest method, so those 100 will retry a new connection. 108 | 109 | This is the conservative fix for Go 1.7 so users don't get errors, and 110 | to match the HTTP/1 behavior. Issues #13957 and #13774 are the more 111 | involved bugs for Go 1.8. 112 | 113 | Updates #16582 114 | Updates #13957 115 | 116 | Change-Id: I1f15a7ce60c07a4baebca87675836d6fe03993e8 117 | Reviewed-on: https://go-review.googlesource.com/25580 118 | TryBot-Result: Gobot Gobot 119 | Reviewed-by: Ian Lance Taylor 120 | Reviewed-by: Chris Broadfoot 121 | Run-TryBot: Brad Fitzpatrick 122 | 123 | commit 219ca602ab3f9d7d857bc1640e2b9e01475cdc3d 124 | Author: Brad Fitzpatrick 125 | Date: Sat Aug 6 10:12:03 2016 -0700 126 | 127 | doc: fix required OS X version inconsistency for binary downloads 128 | 129 | Updates #16625 130 | 131 | Change-Id: Icac6705828bd9b29379596ba64b34d922b9002c3 132 | Reviewed-on: https://go-review.googlesource.com/25548 133 | Reviewed-by: Ian Lance Taylor 134 | 135 | commit 26015b95634de49bc5b4ac998e8a2d1fcb8eca79 136 | Author: Shenghou Ma 137 | Date: Fri Aug 5 19:16:07 2016 -0400 138 | 139 | runtime: make stack 16-byte aligned for external code in _rt0_amd64_linux_lib 140 | 141 | Fixes #16618. 142 | 143 | Change-Id: Iffada12e8672bbdbcf2e787782c497e2c45701b1 144 | Reviewed-on: https://go-review.googlesource.com/25550 145 | Run-TryBot: Minux Ma 146 | Reviewed-by: Arjan Van De Ven 147 | Reviewed-by: Ian Lance Taylor 148 | TryBot-Result: Gobot Gobot 149 | 150 | commit 9fde86b0124b8c75000eb5d05887eff922a24566 151 | Author: Shenghou Ma 152 | Date: Thu Aug 4 21:34:06 2016 -0400 153 | 154 | runtime, syscall: fix kernel gettimeofday ABI change on iOS 10 155 | 156 | Fixes #16570 on iOS. 157 | 158 | Thanks Daniel Burhans for reporting the bug and testing the fix. 159 | 160 | Change-Id: I43ae7b78c8f85a131ed3d93ea59da9f32a02cd8f 161 | Reviewed-on: https://go-review.googlesource.com/25481 162 | Reviewed-by: Ian Lance Taylor 163 | Reviewed-by: Brad Fitzpatrick 164 | 165 | commit 3a03e877cc03c1fd155055e60a3f1f9cb8bda8d0 166 | Author: Ian Lance Taylor 167 | Date: Thu Aug 4 19:53:52 2016 -0700 168 | 169 | os: check for waitid returning ENOSYS 170 | 171 | Reportedly waitid is not available for Ubuntu on Windows. 172 | 173 | Fixes #16610. 174 | 175 | Change-Id: Ia724f45a85c6d3467b847da06d8c65d280781dcd 176 | Reviewed-on: https://go-review.googlesource.com/25507 177 | Run-TryBot: Ian Lance Taylor 178 | TryBot-Result: Gobot Gobot 179 | Reviewed-by: Brad Fitzpatrick 180 | 181 | commit 10316757cec3c2744ea61088e0fc905cfeb28fb2 182 | Author: Brad Fitzpatrick 183 | Date: Fri Aug 5 16:42:31 2016 +0000 184 | 185 | net/http: update bundled http2 for flow control window adjustment fix 186 | 187 | Updates bundled http2 to x/net/http2 git rev 075e191 for: 188 | 189 | http2: adjust flow control on open streams when processing SETTINGS 190 | https://golang.org/cl/25508 191 | 192 | Fixes #16612 193 | 194 | Change-Id: Ib0513201bff44ab747a574ae6894479325c105d2 195 | Reviewed-on: https://go-review.googlesource.com/25543 196 | Run-TryBot: Chris Broadfoot 197 | Reviewed-by: Ian Lance Taylor 198 | Reviewed-by: Chris Broadfoot 199 | TryBot-Result: Gobot Gobot 200 | 201 | commit da070bed19fb23a8dd1b9f974c7fdf1f247fdba0 202 | Author: Brad Fitzpatrick 203 | Date: Thu Aug 4 12:21:05 2016 -0700 204 | 205 | syscall: fix Gettimeofday on macOS Sierra 206 | 207 | Fixes #16606 208 | 209 | Change-Id: I57465061b90e901293cd8b6ef756d6aa84ebd4a3 210 | Reviewed-on: https://go-review.googlesource.com/25495 211 | Reviewed-by: Quentin Smith 212 | Reviewed-by: Ian Lance Taylor 213 | Run-TryBot: Quentin Smith 214 | TryBot-Result: Gobot Gobot 215 | 216 | commit f135c326402aaa757aa96aad283a91873d4ae124 217 | Author: David Crawshaw 218 | Date: Thu Aug 4 13:09:29 2016 -0400 219 | 220 | runtime: initialize hash algs before typemap 221 | 222 | When compiling with -buildmode=shared, a map[int32]*_type is created for 223 | each extra module mapping duplicate types back to a canonical object. 224 | This is done in the function typelinksinit, which is called before the 225 | init function that sets up the hash functions for the map 226 | implementation. The result is typemap becomes unusable after 227 | runtime initialization. 228 | 229 | The fix in this CL is to move algorithm init before typelinksinit in 230 | the runtime setup process. (For 1.8, we may want to turn typemap into 231 | a sorted slice of types and use binary search.) 232 | 233 | Manually tested on GOOS=linux with: 234 | 235 | GOHOSTARCH=386 GOARCH=386 ./make.bash && \ 236 | go install -buildmode=shared std && \ 237 | cd ../test && \ 238 | go run run.go -linkshared 239 | 240 | Fixes #16590 241 | 242 | Change-Id: Idc08c50cc70d20028276fbf564509d2cd5405210 243 | Reviewed-on: https://go-review.googlesource.com/25469 244 | Run-TryBot: David Crawshaw 245 | Reviewed-by: Keith Randall 246 | ``` 247 | -------------------------------------------------------------------------------- /reports/2016/golang-08-04.md: -------------------------------------------------------------------------------- 1 | # August 4, 2016 Report 2 | 3 | Number of commits: 17 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd: from 13.38525805s to 13.195611041s, -1.42% 8 | * github.com/boltdb/bolt/cmd/bolt: from 647.687973ms to 629.838236ms, -2.76% 9 | * github.com/gogits/gogs: from 13.366564493s to 13.412733112s, +0.35% 10 | * github.com/spf13/hugo: from 7.702782581s to 9.068950077s, +17.74% 11 | * github.com/nsqio/nsq/apps/nsqd: from 2.1388922s to 2.082663096s, -2.63% 12 | * github.com/mholt/caddy: from 277.424657ms to 292.226838ms, +5.34% 13 | 14 | ## Binary size: 15 | 16 | * github.com/coreos/etcd/cmd: from 26646244 to 26654613, ~ 17 | * github.com/boltdb/bolt/cmd/bolt: from 2679371 to 2679371, ~ 18 | * github.com/gogits/gogs: from 23810085 to 23818454, ~ 19 | * github.com/spf13/hugo: from 15860751 to 15869120, ~ 20 | * github.com/nsqio/nsq/apps/nsqd: from 10064210 to 10072579, ~ 21 | * github.com/mholt/caddy: from 13044558 to 13044558, ~ 22 | 23 | ## Bechmarks: 24 | 25 | ``` 26 | benchmark old ns/op new ns/op delta 27 | BenchmarkMsgpMarshal-4 188 187 -0.53% 28 | BenchmarkMsgpUnmarshal-4 407 407 +0.00% 29 | BenchmarkEasyJsonMarshal-4 1604 1613 +0.56% 30 | BenchmarkEasyJsonUnmarshal-4 2142 2321 +8.36% 31 | BenchmarkFlatBuffersMarshal-4 385 366 -4.94% 32 | BenchmarkFlatBuffersUnmarshal-4 291 289 -0.69% 33 | BenchmarkGogoprotobufMarshal-4 163 160 -1.84% 34 | BenchmarkGogoprotobufUnmarshal-4 251 254 +1.20% 35 | 36 | benchmark old allocs new allocs delta 37 | BenchmarkMsgpMarshal-4 1 1 +0.00% 38 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 39 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 40 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 41 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 42 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 43 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 44 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 45 | 46 | benchmark old bytes new bytes delta 47 | BenchmarkMsgpMarshal-4 128 128 +0.00% 48 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 49 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 50 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 51 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 52 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 53 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 54 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 55 | ``` 56 | ## Highlights: 57 | 58 | 59 | ## GIT Log 60 | 61 | ``` 62 | commit 50edddb7383a0e4aef990a085777f958c5d8a2b8 63 | Author: Chris Broadfoot 64 | Date: Tue Aug 2 14:30:06 2016 -0700 65 | 66 | VERSION: remove erroneously committed VERSION file 67 | 68 | Change-Id: I1134a4758b7e1a7da243c56f12ad9d2200c8ba41 69 | Reviewed-on: https://go-review.googlesource.com/25414 70 | Reviewed-by: Brad Fitzpatrick 71 | 72 | commit ae68090d000c0a4a6cda0ef44a59809f914e2358 73 | Merge: c628d83 2da5633 74 | Author: Chris Broadfoot 75 | Date: Tue Aug 2 14:05:48 2016 -0700 76 | 77 | all: merge master into release-branch.go1.7 78 | 79 | Change-Id: I177856ea2bc9943cbde28ca9afa145b6ea5b0942 80 | 81 | commit 2da5633eb9091608047881953f75b489a3134cdc 82 | Author: Brad Fitzpatrick 83 | Date: Mon Aug 1 21:54:40 2016 -0700 84 | 85 | runtime: fix nanotime for macOS Sierra, again. 86 | 87 | macOS Sierra beta4 changed the kernel interface for getting time. 88 | DX now optionally points to an address for additional info. 89 | Set it to zero to avoid corrupting memory. 90 | 91 | Fixes #16570 92 | 93 | Change-Id: I9f537e552682045325cdbb68b7d0b4ddafade14a 94 | Reviewed-on: https://go-review.googlesource.com/25400 95 | Reviewed-by: David Crawshaw 96 | Reviewed-by: Ian Lance Taylor 97 | Reviewed-by: Quentin Smith 98 | Run-TryBot: Brad Fitzpatrick 99 | Reviewed-by: Austin Clements 100 | TryBot-Result: Gobot Gobot 101 | 102 | commit 6317c213c953d0879fe88593b4372f03d25f369b 103 | Author: Joe Tsai 104 | Date: Mon Aug 1 20:04:25 2016 -0700 105 | 106 | cmd/doc: ensure functions with unexported return values are shown 107 | 108 | The commit in golang.org/cl/22354 groups constructors functions under 109 | the type that they construct to. However, this caused a minor regression 110 | where functions that had unexported return values were not being printed 111 | at all. Thus, we forgo the grouping logic if the type the constructor falls 112 | under is not going to be printed. 113 | 114 | Fixes #16568 115 | 116 | Change-Id: Idc14f5d03770282a519dc22187646bda676af612 117 | Reviewed-on: https://go-review.googlesource.com/25369 118 | Run-TryBot: Joe Tsai 119 | Reviewed-by: Rob Pike 120 | TryBot-Result: Gobot Gobot 121 | 122 | commit c628d83ec5309cd679e16c734456fed1b9a85806 123 | Author: Chris Broadfoot 124 | Date: Mon Aug 1 18:52:52 2016 -0700 125 | 126 | go1.7rc4 127 | 128 | Change-Id: Icf861dd28bfe29a2e4b90529e53644b43b6f7969 129 | Reviewed-on: https://go-review.googlesource.com/25368 130 | Reviewed-by: Brad Fitzpatrick 131 | Run-TryBot: Brad Fitzpatrick 132 | TryBot-Result: Gobot Gobot 133 | 134 | commit f5758739a8f011c1d146a7736ab8f0d2834e1783 135 | Author: Joe Tsai 136 | Date: Mon Aug 1 14:33:19 2016 -0700 137 | 138 | cmd/doc: handle embedded interfaces properly 139 | 140 | Changes made: 141 | * Disallow star expression on interfaces as this is not possible. 142 | * Show an embedded "error" in an interface as public similar to 143 | how godoc does it. 144 | * Properly handle selector expressions in both structs and interfaces. 145 | This is possible since a type may refer to something defined in 146 | another package (e.g. io.Reader). 147 | 148 | Before: 149 | <<< 150 | $ go doc runtime.Error 151 | type Error interface { 152 | 153 | // RuntimeError is a no-op function but 154 | // serves to distinguish types that are run time 155 | // errors from ordinary errors: a type is a 156 | // run time error if it has a RuntimeError method. 157 | RuntimeError() 158 | // Has unexported methods. 159 | } 160 | 161 | $ go doc compress/flate Reader 162 | doc: invalid program: unexpected type for embedded field 163 | doc: invalid program: unexpected type for embedded field 164 | type Reader interface { 165 | io.Reader 166 | io.ByteReader 167 | } 168 | >>> 169 | 170 | After: 171 | <<< 172 | $ go doc runtime.Error 173 | type Error interface { 174 | error 175 | 176 | // RuntimeError is a no-op function but 177 | // serves to distinguish types that are run time 178 | // errors from ordinary errors: a type is a 179 | // run time error if it has a RuntimeError method. 180 | RuntimeError() 181 | } 182 | 183 | $ go doc compress/flate Reader 184 | type Reader interface { 185 | io.Reader 186 | io.ByteReader 187 | } 188 | >>> 189 | 190 | Fixes #16567 191 | 192 | Change-Id: I272dede971eee9f43173966233eb8810e4a8c907 193 | Reviewed-on: https://go-review.googlesource.com/25365 194 | Reviewed-by: Rob Pike 195 | Run-TryBot: Joe Tsai 196 | TryBot-Result: Gobot Gobot 197 | 198 | commit 8ea89ba858823212114de952b8a1375ceb82587f 199 | Merge: 8707f31 28ee179 200 | Author: Chris Broadfoot 201 | Date: Mon Aug 1 18:26:06 2016 -0700 202 | 203 | all: merge master into release-branch.go1.7 204 | 205 | Change-Id: Ifb9647fa9817ed57aa4835a35a05020aba00a24e 206 | 207 | commit 28ee17965703c4ef81cc97e5088539fe3e8e541f 208 | Author: Brad Fitzpatrick 209 | Date: Thu Jul 28 13:42:11 2016 +0200 210 | 211 | net: prevent cancelation goroutine from adjusting fd timeout after connect 212 | 213 | This was previously fixed in https://golang.org/cl/21497 but not enough. 214 | 215 | Fixes #16523 216 | 217 | Change-Id: I678543a656304c82d654e25e12fb094cd6cc87e8 218 | Reviewed-on: https://go-review.googlesource.com/25330 219 | Run-TryBot: Brad Fitzpatrick 220 | Reviewed-by: Joe Tsai 221 | TryBot-Result: Gobot Gobot 222 | 223 | commit 2629446df0cb906986f377d45cde307ffdae9675 224 | Author: Brad Fitzpatrick 225 | Date: Tue Aug 2 00:41:12 2016 +0000 226 | 227 | doc/go1.7.html: mention Server.Serve HTTP/2 behavior change 228 | 229 | Fixes #16550 230 | Updates #15908 231 | 232 | Change-Id: Ic951080dbc88f96e4c00cdb3ffe24a5c03079efd 233 | Reviewed-on: https://go-review.googlesource.com/25389 234 | Reviewed-by: Chris Broadfoot 235 | 236 | commit c558a539b5efaeda4b6f8e61f51c21f64d1b94f6 237 | Author: Brad Fitzpatrick 238 | Date: Mon Aug 1 23:44:22 2016 +0000 239 | 240 | net/http: update bundled http2 241 | 242 | Updates bundled http2 to x/net/http2 rev 28d1bd4f for: 243 | 244 | http2: make Transport work around mod_h2 bug 245 | https://golang.org/cl/25362 246 | 247 | http2: don't ignore DATA padding in flow control 248 | https://golang.org/cl/25382 249 | 250 | Updates #16519 251 | Updates #16556 252 | Updates #16481 253 | 254 | Change-Id: I51f5696e977c91bdb2d80d2d56b8a78e3222da3f 255 | Reviewed-on: https://go-review.googlesource.com/25388 256 | Reviewed-by: Chris Broadfoot 257 | Run-TryBot: Brad Fitzpatrick 258 | TryBot-Result: Gobot Gobot 259 | 260 | commit 111d590f86e2c9a55ec08d95fc4e9adea9232f0c 261 | Author: Cherry Zhang 262 | Date: Thu Jul 28 12:22:49 2016 -0400 263 | 264 | cmd/compile: fix possible spill of invalid pointer with DUFFZERO on AMD64 265 | 266 | SSA compiler on AMD64 may spill Duff-adjusted address as scalar. If 267 | the object is on stack and the stack moves, the spilled address become 268 | invalid. 269 | 270 | Making the spill pointer-typed does not work. The Duff-adjusted address 271 | points to the memory before the area to be zeroed and may be invalid. 272 | This may cause stack scanning code panic. 273 | 274 | Fix it by doing Duff-adjustment in genValue, so the intermediate value 275 | is not seen by the reg allocator, and will not be spilled. 276 | 277 | Add a test to cover both cases. As it depends on allocation, it may 278 | be not always triggered. 279 | 280 | Fixes #16515. 281 | 282 | Change-Id: Ia81d60204782de7405b7046165ad063384ede0db 283 | Reviewed-on: https://go-review.googlesource.com/25309 284 | Run-TryBot: Cherry Zhang 285 | TryBot-Result: Gobot Gobot 286 | Reviewed-by: David Chase 287 | 288 | commit 8707f31c0abc6b607014e843b7cc188b3019daa9 289 | Author: Chris Broadfoot 290 | Date: Thu Jul 21 14:06:27 2016 -0700 291 | 292 | go1.7rc3 293 | 294 | Change-Id: Iaef13003979c68926c260c415d6074a50ae137b2 295 | Reviewed-on: https://go-review.googlesource.com/25142 296 | Run-TryBot: Chris Broadfoot 297 | Reviewed-by: Brad Fitzpatrick 298 | 299 | commit 16a2af03f17e5b2bcf468442e66ef7a99ae55c70 300 | Merge: 0ebf6ce 243d51f 301 | Author: Chris Broadfoot 302 | Date: Thu Jul 21 12:38:13 2016 -0700 303 | 304 | all: merge master into release-branch.go1.7 305 | 306 | Change-Id: I2511c3f7583887b641c9b3694aae54789fbc5342 307 | 308 | commit 0ebf6ce087388cdd501a02ff92f2f8cafc3e1378 309 | Author: Chris Broadfoot 310 | Date: Mon Jul 18 08:19:17 2016 -0700 311 | 312 | [release-branch.go1.7] go1.7rc2 313 | 314 | Change-Id: I5473071f672f8352fbd3352e158d5be12823b58a 315 | Reviewed-on: https://go-review.googlesource.com/25017 316 | Run-TryBot: Chris Broadfoot 317 | Reviewed-by: Brad Fitzpatrick 318 | 319 | commit cad4e97af8f2e0b9f09b97f67fb3a89ced2e9021 320 | Author: Brad Fitzpatrick 321 | Date: Mon Jul 18 06:05:24 2016 +0000 322 | 323 | [release-branch.go1.7] net/http, net/http/cgi: fix for CGI + HTTP_PROXY security issue 324 | 325 | Because, 326 | 327 | * The CGI spec defines that incoming request header "Foo: Bar" maps to 328 | environment variable HTTP_FOO == "Bar". (see RFC 3875 4.1.18) 329 | 330 | * The HTTP_PROXY environment variable is conventionally used to configure 331 | the HTTP proxy for HTTP clients (and is respected by default for 332 | Go's net/http.Client and Transport) 333 | 334 | That means Go programs running in a CGI environment (as a child 335 | process under a CGI host) are vulnerable to an incoming request 336 | containing "Proxy: attacker.com:1234", setting HTTP_PROXY, and 337 | changing where Go by default proxies all outbound HTTP requests. 338 | 339 | This is CVE-2016-5386, aka https://httpoxy.org/ 340 | 341 | Fixes #16405 342 | 343 | Change-Id: I6f68ade85421b4807785799f6d98a8b077e871f0 344 | Reviewed-on: https://go-review.googlesource.com/25010 345 | Run-TryBot: Chris Broadfoot 346 | TryBot-Result: Gobot Gobot 347 | Reviewed-by: Chris Broadfoot 348 | Reviewed-on: https://go-review.googlesource.com/25013 349 | 350 | commit 53da5fd4d431881bb3583c9790db7735a6530a1b 351 | Author: Ian Lance Taylor 352 | Date: Thu Jul 7 16:41:29 2016 -0700 353 | 354 | [release-branch.go1.7] runtime: fix nanotime for macOS Sierra 355 | 356 | In the beta version of the macOS Sierra (10.12) release, the 357 | gettimeofday system call changed on x86. Previously it always returned 358 | the time in the AX/DX registers. Now, if AX is returned as 0, it means 359 | that the system call has stored the values into the memory pointed to by 360 | the first argument, just as the libc gettimeofday function does. The 361 | libc function handles both cases, and we need to do so as well. 362 | 363 | Fixes #16272. 364 | 365 | Change-Id: Ibe5ad50a2c5b125e92b5a4e787db4b5179f6b723 366 | Reviewed-on: https://go-review.googlesource.com/24812 367 | Reviewed-by: Brad Fitzpatrick 368 | Reviewed-on: https://go-review.googlesource.com/24755 369 | Reviewed-by: Chris Broadfoot 370 | 371 | commit a91416e7abf2236909f99aea85accfe98a9ba1fd 372 | Author: Chris Broadfoot 373 | Date: Thu Jul 7 19:32:35 2016 -0700 374 | 375 | [release-branch.go1.7] go1.7rc1 376 | 377 | Change-Id: Ifbf1c13ce740428add68d68133c7f10876bad404 378 | Reviewed-on: https://go-review.googlesource.com/24816 379 | TryBot-Result: Gobot Gobot 380 | Reviewed-by: Andrew Gerrand 381 | ``` 382 | -------------------------------------------------------------------------------- /reports/2016/golang-07-21.md: -------------------------------------------------------------------------------- 1 | # July 21, 2016 Report 2 | 3 | Number of commits: 15 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd: from 14.920296003s to 15.143449284s, +1.50% 8 | * github.com/boltdb/bolt/cmd/bolt: from 547.781711ms to 555.377808ms, +1.39% 9 | * github.com/gogits/gogs: from 13.280493742s to 13.014074849s, -2.01% 10 | * github.com/spf13/hugo: from 6.883819829s to 6.680270726s, -2.96% 11 | * github.com/nsqio/nsq/apps/nsqd: from 2.111771695s to 2.177042188s, +3.09% 12 | * github.com/mholt/caddy: from 297.642053ms to 293.165304ms, -1.50% 13 | 14 | ## Binary size: 15 | 16 | * github.com/coreos/etcd/cmd: from 26572558 to 26572649, ~ 17 | * github.com/boltdb/bolt/cmd/bolt: from 2675184 to 2679371, +0.16% 18 | * github.com/gogits/gogs: from 23697107 to 23701294, ~ 19 | * github.com/spf13/hugo: from 15211322 to 15211413, ~ 20 | * github.com/nsqio/nsq/apps/nsqd: from 10051233 to 10051324, ~ 21 | * github.com/mholt/caddy: from 13044558 to 13044558, ~ 22 | 23 | ## Bechmarks: 24 | 25 | ``` 26 | benchmark old ns/op new ns/op delta 27 | BenchmarkMsgpMarshal-4 189 192 +1.59% 28 | BenchmarkMsgpUnmarshal-4 408 407 -0.25% 29 | BenchmarkEasyJsonMarshal-4 1604 1614 +0.62% 30 | BenchmarkEasyJsonUnmarshal-4 1525 1521 -0.26% 31 | BenchmarkFlatBuffersMarshal-4 370 365 -1.35% 32 | BenchmarkFlatBuffersUnmarshal-4 293 292 -0.34% 33 | BenchmarkGogoprotobufMarshal-4 163 164 +0.61% 34 | BenchmarkGogoprotobufUnmarshal-4 252 250 -0.79% 35 | 36 | benchmark old allocs new allocs delta 37 | BenchmarkMsgpMarshal-4 1 1 +0.00% 38 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 39 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 40 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 41 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 42 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 43 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 44 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 45 | 46 | benchmark old bytes new bytes delta 47 | BenchmarkMsgpMarshal-4 128 128 +0.00% 48 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 49 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 50 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 51 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 52 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 53 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 54 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 55 | ``` 56 | ## Highlights: 57 | 58 | 59 | ## GIT Log 60 | 61 | ``` 62 | commit ff227b8a56b66e72de744a39f5b68d6e6ce7f3fe 63 | Author: Ian Lance Taylor 64 | Date: Wed Jul 20 15:40:10 2016 -0700 65 | 66 | runtime: add explicit `INT $3` at end of Darwin amd64 sigtramp 67 | 68 | The omission of this instruction could confuse the traceback code if a 69 | SIGPROF occurred during a signal handler. The traceback code would 70 | trace up to sigtramp, but would then get confused because it would see a 71 | PC address that did not appear to be in the function. 72 | 73 | Fixes #16453. 74 | 75 | Change-Id: I2b3d53e0b272fb01d9c2cb8add22bad879d3eebc 76 | Reviewed-on: https://go-review.googlesource.com/25104 77 | Reviewed-by: Josh Bleecher Snyder 78 | 79 | commit f407ca9288c8556c466e316f390ee7e7e99647ae 80 | Author: Austin Clements 81 | Date: Mon Jul 18 16:01:22 2016 -0400 82 | 83 | runtime: support smaller physical pages than PhysPageSize 84 | 85 | Most operations need an upper bound on the physical page size, which 86 | is what sys.PhysPageSize is for (this is checked at runtime init on 87 | Linux). However, a few operations need a *lower* bound on the physical 88 | page size. Introduce a "minPhysPageSize" constant to act as this lower 89 | bound and use it where it makes sense: 90 | 91 | 1) In addrspace_free, we have to query each page in the given range. 92 | Currently we increment by the upper bound on the physical page 93 | size, which means we may skip over pages if the true size is 94 | smaller. Worse, we currently pass a result buffer that only has 95 | enough room for one page. If there are actually multiple pages in 96 | the range passed to mincore, the kernel will overflow this buffer. 97 | Fix these problems by incrementing by the lower-bound on the 98 | physical page size and by passing "1" for the length, which the 99 | kernel will round up to the true physical page size. 100 | 101 | 2) In the write barrier, the bad pointer check tests for pointers to 102 | the first physical page, which are presumably small integers 103 | masquerading as pointers. However, if physical pages are smaller 104 | than we think, we may have legitimate pointers below 105 | sys.PhysPageSize. Hence, use minPhysPageSize for this test since 106 | pointers should never fall below that. 107 | 108 | In particular, this applies to ARM64 and MIPS. The runtime is 109 | configured to use 64kB pages on ARM64, but by default Linux uses 4kB 110 | pages. Similarly, the runtime assumes 16kB pages on MIPS, but both 4kB 111 | and 16kB kernel configurations are common. This also applies to ARM on 112 | systems where the runtime is recompiled to deal with a larger page 113 | size. It is also a step toward making the runtime use only a 114 | dynamically-queried page size. 115 | 116 | Change-Id: I1fdfd18f6e7cbca170cc100354b9faa22fde8a69 117 | Reviewed-on: https://go-review.googlesource.com/25020 118 | Reviewed-by: Ian Lance Taylor 119 | Reviewed-by: Cherry Zhang 120 | Run-TryBot: Austin Clements 121 | 122 | commit d73ca5f4d8f6aef0c2e738cd1614d4dbf87735fb 123 | Author: Dmitry Vyukov 124 | Date: Wed Jul 20 13:52:03 2016 +0200 125 | 126 | runtime/race: fix memory leak 127 | 128 | The leak was reported internally on a sever canary that runs for days. 129 | After a day server consumes 5.6GB, after 6 days -- 12.2GB. 130 | The leak is exposed by the added benchmark. 131 | The leak is fixed upstream in : 132 | http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_thread.cc?view=diff&r1=276102&r2=276103&pathrev=276103 133 | 134 | Fixes #16441 135 | 136 | Change-Id: I9d4f0adef48ca6cf2cd781b9a6990ad4661ba49b 137 | Reviewed-on: https://go-review.googlesource.com/25091 138 | Reviewed-by: Ian Lance Taylor 139 | Run-TryBot: Ian Lance Taylor 140 | TryBot-Result: Gobot Gobot 141 | Run-TryBot: Dmitry Vyukov 142 | 143 | commit 50048a4e8ee11016227c283be2d073e14e1c006b 144 | Author: Ian Lance Taylor 145 | Date: Mon Jul 18 23:00:43 2016 -0700 146 | 147 | runtime: add as many extra M's as needed 148 | 149 | When a non-Go thread calls into Go, the runtime needs an M to run the Go 150 | code. The runtime keeps a list of extra M's available. When the last 151 | extra M is allocated, the needextram field is set to tell it to allocate 152 | a new extra M as soon as it is running in Go. This ensures that an extra 153 | M will always be available for the next thread. 154 | 155 | However, if many threads need an extra M at the same time, this 156 | serializes them all. One thread will get an extra M with the needextram 157 | field set. All the other threads will see that there is no M available 158 | and will go to sleep. The one thread that succeeded will create a new 159 | extra M. One lucky thread will get it. All the other threads will see 160 | that there is no M available and will go to sleep. The effect is 161 | thundering herd, as all the threads looking for an extra M go through 162 | the process one by one. This seems to have a particularly bad effect on 163 | the FreeBSD scheduler for some reason. 164 | 165 | With this change, we track the number of threads waiting for an M, and 166 | create all of them as soon as one thread gets through. This still means 167 | that all the threads will fight for the lock to pick up the next M. But 168 | at least each thread that gets the lock will succeed, instead of going 169 | to sleep only to fight again. 170 | 171 | This smooths out the performance greatly on FreeBSD, reducing the 172 | average wall time of `testprogcgo CgoCallbackGC` by 74%. On GNU/Linux 173 | the average wall time goes down by 9%. 174 | 175 | Fixes #13926 176 | Fixes #16396 177 | 178 | Change-Id: I6dc42a4156085a7ed4e5334c60b39db8f8ef8fea 179 | Reviewed-on: https://go-review.googlesource.com/25047 180 | Run-TryBot: Ian Lance Taylor 181 | TryBot-Result: Gobot Gobot 182 | Reviewed-by: Dmitry Vyukov 183 | 184 | commit 883e128f4571a59842e1156b5ebe25d8420162d9 185 | Author: Brad Fitzpatrick 186 | Date: Tue Jul 19 20:27:55 2016 -0700 187 | 188 | net/smtp: document that the smtp package is frozen 189 | 190 | This copies the frozen wording from the log/syslog package. 191 | 192 | Fixes #16436 193 | 194 | Change-Id: If5d478023328925299399f228d8aaf7fb117c1b4 195 | Reviewed-on: https://go-review.googlesource.com/25080 196 | Reviewed-by: Ian Lance Taylor 197 | Run-TryBot: Ian Lance Taylor 198 | TryBot-Result: Gobot Gobot 199 | Reviewed-by: Andrew Gerrand 200 | 201 | commit 1d2ca9e30c22bc9e8cd0b21dff58367443696c91 202 | Author: Austin Clements 203 | Date: Mon Jul 18 11:34:11 2016 -0400 204 | 205 | doc/go1.7.html: start sentence on a new line 206 | 207 | Change-Id: Ia1c2ebcd2ccf7b98d89b378633bf4fc435d2364d 208 | Reviewed-on: https://go-review.googlesource.com/25019 209 | Reviewed-by: Brad Fitzpatrick 210 | 211 | commit 3ad586155bb8cd41fa0c0650a6b5feca871dfeed 212 | Author: Austin Clements 213 | Date: Mon Jul 18 11:33:43 2016 -0400 214 | 215 | doc/go1.7.html: avoid term of art 216 | 217 | Rather than saying "stop-the-world", say "garbage collection pauses". 218 | 219 | Change-Id: Ifb2931781ab3094e04bea93f01f18f1acb889bdc 220 | Reviewed-on: https://go-review.googlesource.com/25018 221 | Reviewed-by: Brad Fitzpatrick 222 | Reviewed-by: Rob Pike 223 | 224 | commit d66cbec37afb7936b1ea0f7f2433cc070f667112 225 | Author: Ian Lance Taylor 226 | Date: Mon Jul 18 08:14:10 2016 -0700 227 | 228 | doc/go1.7.html: the 1.6.3 release supports Sierra 229 | 230 | Updates #16354 231 | Updates #16272 232 | 233 | Change-Id: I73e8df40621a0a17a1990f3b10ea996f4fa738aa 234 | Reviewed-on: https://go-review.googlesource.com/25014 235 | Run-TryBot: Ian Lance Taylor 236 | Reviewed-by: Brad Fitzpatrick 237 | TryBot-Result: Gobot Gobot 238 | 239 | commit b3b0b7a1825c9249f2b323ffd23cbb128044fb6a 240 | Author: Chris Broadfoot 241 | Date: Sun Jul 17 23:30:19 2016 -0700 242 | 243 | doc: document go1.6.3 244 | 245 | Change-Id: Ib33d7fb529aafcaf8ca7d43b2c9480f30d5c28cc 246 | Reviewed-on: https://go-review.googlesource.com/25011 247 | Reviewed-by: Ian Lance Taylor 248 | Reviewed-by: Brad Fitzpatrick 249 | 250 | commit b97df54c31d6c4cc2a28a3c83725366d52329223 251 | Author: Brad Fitzpatrick 252 | Date: Mon Jul 18 06:05:24 2016 +0000 253 | 254 | net/http, net/http/cgi: fix for CGI + HTTP_PROXY security issue 255 | 256 | Because, 257 | 258 | * The CGI spec defines that incoming request header "Foo: Bar" maps to 259 | environment variable HTTP_FOO == "Bar". (see RFC 3875 4.1.18) 260 | 261 | * The HTTP_PROXY environment variable is conventionally used to configure 262 | the HTTP proxy for HTTP clients (and is respected by default for 263 | Go's net/http.Client and Transport) 264 | 265 | That means Go programs running in a CGI environment (as a child 266 | process under a CGI host) are vulnerable to an incoming request 267 | containing "Proxy: attacker.com:1234", setting HTTP_PROXY, and 268 | changing where Go by default proxies all outbound HTTP requests. 269 | 270 | This is CVE-2016-5386, aka https://httpoxy.org/ 271 | 272 | Fixes #16405 273 | 274 | Change-Id: I6f68ade85421b4807785799f6d98a8b077e871f0 275 | Reviewed-on: https://go-review.googlesource.com/25010 276 | Run-TryBot: Chris Broadfoot 277 | TryBot-Result: Gobot Gobot 278 | Reviewed-by: Chris Broadfoot 279 | 280 | commit 2837c395526476e31fb15dbb948ed77389cdc75b 281 | Author: Austin Clements 282 | Date: Sun Jul 17 23:12:41 2016 -0400 283 | 284 | doc/go1.7.html: mention specific runtime improvements 285 | 286 | Most of the runtime improvements are hard to quantify or summarize, 287 | but it's worth mentioning some of the substantial improvements in STW 288 | time, and that the scavenger now actually works on ARM64, PPC64, and 289 | MIPS. 290 | 291 | Change-Id: I0e951038516378cc3f95b364716ef1c183f3445a 292 | Reviewed-on: https://go-review.googlesource.com/24966 293 | Reviewed-by: Brad Fitzpatrick 294 | 295 | commit a6dbfc12c640c90e8dc552443d3ece04cbae4a9c 296 | Author: Brad Fitzpatrick 297 | Date: Sat Jul 16 23:56:45 2016 +0000 298 | 299 | net: demote TestDialerDualStack to a flaky test 300 | 301 | Only run TestDialerDualStack on the builders, as to not annoy or 302 | otherwise distract users when it's not their fault. 303 | 304 | Even though the intention is to only run this on the builders, very 305 | few of the builders have IPv6 support. Oh well. We'll get some 306 | coverage. 307 | 308 | Updates #13324 309 | 310 | Change-Id: I13e7e3bca77ac990d290cabec88984cc3d24fb67 311 | Reviewed-on: https://go-review.googlesource.com/24985 312 | Run-TryBot: Brad Fitzpatrick 313 | TryBot-Result: Gobot Gobot 314 | Reviewed-by: Mikio Hara 315 | 316 | commit 510fb6397dfc93067dc90d42c58dfc5f8b995285 317 | Author: Joe Tsai 318 | Date: Sat Jul 16 02:42:52 2016 -0700 319 | 320 | fmt: properly handle early io.EOF Reads in readRune.readByte 321 | 322 | Change https://golang.org/cl/19895 caused a regression 323 | where the last character in a string would be dropped if it was 324 | accompanied by an io.EOF. 325 | 326 | This change fixes the logic so that the last byte is still returned 327 | without a problem. 328 | 329 | Fixes #16393 330 | 331 | Change-Id: I7a4d0abf761c2c15454136a79e065fe002d736ea 332 | Reviewed-on: https://go-review.googlesource.com/24981 333 | Reviewed-by: Ian Lance Taylor 334 | Run-TryBot: Ian Lance Taylor 335 | TryBot-Result: Gobot Gobot 336 | 337 | commit 2b6eb276517ecba08985d59b6b1928e29743d3e0 338 | Author: Ian Lance Taylor 339 | Date: Thu Jul 14 08:50:44 2016 -0700 340 | 341 | doc/go1.7.html: remove erroneous note about ppc64 and power8 342 | 343 | We decided that ppc64 should maintain power5 compatibility. 344 | ppc64le requires power8. 345 | 346 | Fixes #16372. 347 | 348 | Change-Id: If5b309a0563f55a3c1fe9c853d29a463f5b71101 349 | Reviewed-on: https://go-review.googlesource.com/24915 350 | Reviewed-by: Minux Ma 351 | Run-TryBot: Ian Lance Taylor 352 | TryBot-Result: Gobot Gobot 353 | 354 | commit 4054769a31f66039f5fd74ca3164e9233f724da8 355 | Author: Josh Bleecher Snyder 356 | Date: Thu Jul 14 07:25:05 2016 -0700 357 | 358 | runtime/internal/atomic: fix assembly arg sizes 359 | 360 | Change-Id: I80ccf40cd3930aff908ee64f6dcbe5f5255198d3 361 | Reviewed-on: https://go-review.googlesource.com/24914 362 | Run-TryBot: Josh Bleecher Snyder 363 | TryBot-Result: Gobot Gobot 364 | Reviewed-by: Ian Lance Taylor 365 | ``` 366 | -------------------------------------------------------------------------------- /reports/2016/golang-07-28.md: -------------------------------------------------------------------------------- 1 | # July 28, 2016 Report 2 | 3 | Number of commits: 15 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd: from 15.023236464s to 13.174489415s, -12.31% 8 | * github.com/boltdb/bolt/cmd/bolt: from 563.644886ms to 567.33251ms, +0.65% 9 | * github.com/gogits/gogs: from 13.006048329s to 13.223952731s, +1.68% 10 | * github.com/spf13/hugo: from 7.89039783s to 9.666340224s, +22.51% 11 | * github.com/nsqio/nsq/apps/nsqd: from 2.151817449s to 1.988566218s, -7.59% 12 | * github.com/mholt/caddy: from 274.303597ms to 286.510548ms, +4.45% 13 | 14 | ## Binary size: 15 | 16 | * github.com/coreos/etcd/cmd: from 26607017 to 26623999, ~ 17 | * github.com/boltdb/bolt/cmd/bolt: from 2679371 to 2679371, ~ 18 | * github.com/gogits/gogs: from 23744607 to 23761589, ~ 19 | * github.com/spf13/hugo: from 15843701 to 15864779, +0.13% 20 | * github.com/nsqio/nsq/apps/nsqd: from 10051324 to 10064210, +0.13% 21 | * github.com/mholt/caddy: from 13044558 to 13044558, ~ 22 | 23 | ## Bechmarks: 24 | 25 | ``` 26 | benchmark old ns/op new ns/op delta 27 | BenchmarkMsgpMarshal-4 191 188 -1.57% 28 | BenchmarkMsgpUnmarshal-4 404 405 +0.25% 29 | BenchmarkEasyJsonMarshal-4 1593 1598 +0.31% 30 | BenchmarkEasyJsonUnmarshal-4 1554 1525 -1.87% 31 | BenchmarkFlatBuffersMarshal-4 369 370 +0.27% 32 | BenchmarkFlatBuffersUnmarshal-4 290 288 -0.69% 33 | BenchmarkGogoprotobufMarshal-4 163 161 -1.23% 34 | BenchmarkGogoprotobufUnmarshal-4 252 257 +1.98% 35 | 36 | benchmark old allocs new allocs delta 37 | BenchmarkMsgpMarshal-4 1 1 +0.00% 38 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 39 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 40 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 41 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 42 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 43 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 44 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 45 | 46 | benchmark old bytes new bytes delta 47 | BenchmarkMsgpMarshal-4 128 128 +0.00% 48 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 49 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 50 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 51 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 52 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 53 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 54 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 55 | ``` 56 | ## Highlights: 57 | 58 | 59 | ## GIT Log 60 | 61 | ``` 62 | commit be915159073ed93fa511ceef7256bc8ee396d1c7 63 | Author: Brad Fitzpatrick 64 | Date: Wed Jul 27 08:51:47 2016 +0200 65 | 66 | doc/go1.7.html: add known issues section for FreeBSD crashes 67 | 68 | Updates #16396 69 | 70 | Change-Id: I7b4f85610e66f2c77c17cf8898cc41d81b2efc8c 71 | Reviewed-on: https://go-review.googlesource.com/25283 72 | Reviewed-by: Chris Broadfoot 73 | Reviewed-by: Ian Lance Taylor 74 | Reviewed-by: Andrew Gerrand 75 | 76 | commit ccca9c9cc0fa5b6ea6e5c8276a96eee8c27ebd87 77 | Author: Rhys Hiltner 78 | Date: Fri Jul 22 16:36:30 2016 -0700 79 | 80 | runtime: reduce GC assist extra credit 81 | 82 | Mutator goroutines that allocate memory during the concurrent mark 83 | phase are required to spend some time assisting the garbage 84 | collector. The magnitude of this mandatory assistance is proportional 85 | to the goroutine's allocation debt and subject to the assistance 86 | ratio as calculated by the pacer. 87 | 88 | When assisting the garbage collector, a mutator goroutine will go 89 | beyond paying off its allocation debt. It will build up extra credit 90 | to amortize the overhead of the assist. 91 | 92 | In fast-allocating applications with high assist ratios, building up 93 | this credit can take the affected goroutine's entire time slice. 94 | Reduce the penalty on each goroutine being selected to assist the GC 95 | in two ways, to spread the responsibility more evenly. 96 | 97 | First, do a consistent amount of extra scan work without regard for 98 | the pacer's assistance ratio. Second, reduce the magnitude of the 99 | extra scan work so it can be completed within a few hundred 100 | microseconds. 101 | 102 | Commentary on gcOverAssistWork is by Austin Clements, originally in 103 | https://golang.org/cl/24704 104 | 105 | Updates #14812 106 | Fixes #16432 107 | 108 | Change-Id: I436f899e778c20daa314f3e9f0e2a1bbd53b43e1 109 | Reviewed-on: https://go-review.googlesource.com/25155 110 | Run-TryBot: Austin Clements 111 | TryBot-Result: Gobot Gobot 112 | Reviewed-by: Austin Clements 113 | Reviewed-by: Rick Hudson 114 | Reviewed-by: Chris Broadfoot 115 | 116 | commit c80e0d374ba3caf8ee32c6fe4a5474fa33928086 117 | Author: Brad Fitzpatrick 118 | Date: Tue Jul 26 23:44:00 2016 +0200 119 | 120 | net/http: fix data race with concurrent use of Server.Serve 121 | 122 | Fixes #16505 123 | 124 | Change-Id: I0afabcc8b1be3a5dbee59946b0c44d4c00a28d71 125 | Reviewed-on: https://go-review.googlesource.com/25280 126 | Run-TryBot: Brad Fitzpatrick 127 | TryBot-Result: Gobot Gobot 128 | Reviewed-by: Chris Broadfoot 129 | 130 | commit 4a15508c663429652d32f5363c0964152b28dd74 131 | Author: Brad Fitzpatrick 132 | Date: Tue Jul 26 23:58:44 2016 +0200 133 | 134 | crypto/x509: detect OS X version for FetchPEMRoots at run time 135 | 136 | https://golang.org/cl/25233 was detecting the OS X release at compile 137 | time, not run time. Detect it at run time instead. 138 | 139 | Fixes #16473 (again) 140 | 141 | Change-Id: I6bec4996e57aa50c52599c165aa6f1fae7423fa7 142 | Reviewed-on: https://go-review.googlesource.com/25281 143 | Run-TryBot: Brad Fitzpatrick 144 | TryBot-Result: Gobot Gobot 145 | Reviewed-by: Andrew Gerrand 146 | Reviewed-by: Chris Broadfoot 147 | 148 | commit 66b47431cba75ce23630e17c1a3aa000e7b33d06 149 | Author: Brad Fitzpatrick 150 | Date: Wed Jul 27 00:17:38 2016 +0200 151 | 152 | net/http: update bundled http2 153 | 154 | Updates x/net/http2 to git rev 6a513af for: 155 | 156 | http2: return flow control for closed streams 157 | https://golang.org/cl/25231 158 | 159 | http2: make Transport prefer HTTP response header recv before body write error 160 | https://golang.org/cl/24984 161 | 162 | http2: make Transport treat "Connection: close" the same as Request.Close 163 | https://golang.org/cl/24982 164 | 165 | Fixes golang/go#16481 166 | 167 | Change-Id: Iaddb166387ca2df1cfbbf09a166f8605578bec49 168 | Reviewed-on: https://go-review.googlesource.com/25282 169 | Run-TryBot: Brad Fitzpatrick 170 | TryBot-Result: Gobot Gobot 171 | Reviewed-by: Andrew Gerrand 172 | 173 | commit b11fff3886705bd98aec4923f43216ed8e13cb1a 174 | Author: Austin Clements 175 | Date: Mon Jul 25 13:41:07 2016 -0400 176 | 177 | runtime/pprof: document use of pprof package 178 | 179 | Currently the pprof package gives almost no guidance for how to use it 180 | and, despite the standard boilerplate used to create CPU and memory 181 | profiles, this boilerplate appears nowhere in the pprof documentation. 182 | 183 | Update the pprof package documentation to give the standard 184 | boilerplate in a form people can copy, paste, and tweak. This 185 | boilerplate is based on rsc's 2011 blog post on profiling Go programs 186 | at https://blog.golang.org/profiling-go-programs, which is where I 187 | always go when I need to copy-paste the boilerplate. 188 | 189 | Change-Id: I74021e494ea4dcc6b56d6fb5e59829ad4bb7b0be 190 | Reviewed-on: https://go-review.googlesource.com/25182 191 | Reviewed-by: Rick Hudson 192 | 193 | commit ff60da6962f71871fac3dd6a5406686ea92de8dc 194 | Author: Brad Fitzpatrick 195 | Date: Tue Jul 26 16:55:40 2016 +0200 196 | 197 | crypto/x509: use Go 1.6 implementation for FetchPEMRoots for OS X 10.8 198 | 199 | Conservative fix for the OS X 10.8 crash. We can unify them back together 200 | during the Go 1.8 dev cycle. 201 | 202 | Fixes #16473 203 | 204 | Change-Id: If07228deb2be36093dd324b3b3bcb31c23a95035 205 | Reviewed-on: https://go-review.googlesource.com/25233 206 | Run-TryBot: Brad Fitzpatrick 207 | TryBot-Result: Gobot Gobot 208 | Reviewed-by: Andrew Gerrand 209 | 210 | commit 887606114902bd58c3838767ac2b66dadba27e5e 211 | Author: Jack Lindamood 212 | Date: Fri Jul 15 13:28:27 2016 -0700 213 | 214 | context: add test for WithDeadline in the past 215 | 216 | Adds a test case for calling context.WithDeadline() where the deadline 217 | exists in the past. This change increases the code coverage of the 218 | context package. 219 | 220 | Change-Id: Ib486bf6157e779fafd9dab2b7364cdb5a06be36e 221 | Reviewed-on: https://go-review.googlesource.com/25007 222 | Reviewed-by: Sameer Ajmani 223 | Run-TryBot: Sameer Ajmani 224 | TryBot-Result: Gobot Gobot 225 | 226 | commit ea2376fcea0be75c856ebd199c0ad0f98192d406 227 | Author: Brad Fitzpatrick 228 | Date: Fri Jul 22 22:51:05 2016 +0000 229 | 230 | net/http: make Transport.RoundTrip return raw Conn.Read error on peek failure 231 | 232 | From at least Go 1.4 to Go 1.6, Transport.RoundTrip would return the 233 | error value from net.Conn.Read directly when the initial Read (1 byte 234 | Peek) failed while reading the HTTP response, if a request was 235 | outstanding. While never a documented or tested promise, Go 1.7 changed the 236 | behavior (starting at https://golang.org/cl/23160). 237 | 238 | This restores the old behavior and adds a test (but no documentation 239 | promises yet) while keeping the fix for spammy logging reported in #15446. 240 | 241 | This looks larger than it is: it just changes errServerClosedConn from 242 | a variable to a type, where the type preserves the underlying 243 | net.Conn.Read error, for unwrapping later in Transport.RoundTrip. 244 | 245 | Fixes #16465 246 | 247 | Change-Id: I6fa018991221e93c0cfe3e4129cb168fbd98bd27 248 | Reviewed-on: https://go-review.googlesource.com/25153 249 | Reviewed-by: Andrew Gerrand 250 | Reviewed-by: Ian Lance Taylor 251 | Run-TryBot: Brad Fitzpatrick 252 | TryBot-Result: Gobot Gobot 253 | 254 | commit 67f799c42cbe5fa667dbad0139a98728624cbf4b 255 | Author: Michael Munday 256 | Date: Sat Jul 23 23:27:25 2016 -0400 257 | 258 | doc: add s390x information to asm.html 259 | 260 | Fixes #16362 261 | 262 | Change-Id: I676718a1149ed2f3ff80cb031e25de7043805399 263 | Reviewed-on: https://go-review.googlesource.com/25157 264 | Reviewed-by: Rob Pike 265 | 266 | commit d0256118de0b397494a3f4ca6d2e1e889b8c114e 267 | Author: Joe Tsai 268 | Date: Mon Jul 25 15:49:35 2016 -0700 269 | 270 | compress/flate: document HuffmanOnly 271 | 272 | Fixes #16489 273 | 274 | Change-Id: I13e2ed6de59102f977566de637d8d09b4e541980 275 | Reviewed-on: https://go-review.googlesource.com/25200 276 | Reviewed-by: Andrew Gerrand 277 | Run-TryBot: Joe Tsai 278 | TryBot-Result: Gobot Gobot 279 | 280 | commit 10538a8f9e2e718a47633ac5a6e90415a2c3f5f1 281 | Author: Brad Fitzpatrick 282 | Date: Fri Jul 22 21:58:18 2016 +0000 283 | 284 | net/http: fix potential for-select spin with closed Context.Done channel 285 | 286 | Noticed when investigating a separate issue. 287 | 288 | No external bug report or repro yet. 289 | 290 | Change-Id: I8a1641a43163f22b09accd3beb25dd9e2a68a238 291 | Reviewed-on: https://go-review.googlesource.com/25152 292 | Run-TryBot: Brad Fitzpatrick 293 | Reviewed-by: Ian Lance Taylor 294 | TryBot-Result: Gobot Gobot 295 | Reviewed-by: Andrew Gerrand 296 | 297 | commit 243d51f05e5dc263e185f9b1f7f1fe96a2098644 298 | Author: Brad Fitzpatrick 299 | Date: Thu Jul 21 16:58:18 2016 +0000 300 | 301 | misc/trace: disable trace resolution warning 302 | 303 | It was removed in upstream Chrome https://codereview.chromium.org/2016863004 304 | 305 | Rather than update to the latest version, make the minimal change for Go 1.7 and 306 | change the "showToUser" boolean from true to false. 307 | 308 | Tested by hand that it goes away after this change. 309 | 310 | Updates #16247 311 | 312 | Change-Id: I051f49da878e554b1a34a88e9abc70ab50e18780 313 | Reviewed-on: https://go-review.googlesource.com/25117 314 | Reviewed-by: Ian Lance Taylor 315 | Run-TryBot: Ian Lance Taylor 316 | TryBot-Result: Gobot Gobot 317 | 318 | commit 846bc6c5ab396490717f8753cc3c271f9c1391e4 319 | Author: David Chase 320 | Date: Wed Jul 20 10:44:49 2016 -0400 321 | 322 | cmd/compile: change phi location to be optimistic at backedges 323 | 324 | This is: 325 | 326 | (1) a simple trick that cuts the number of phi-nodes 327 | (temporarily) inserted into the ssa representation by a factor 328 | of 10, and can cut the user time to compile tricky inputs like 329 | gogo/protobuf tests from 13 user minutes to 9.5, and memory 330 | allocation from 3.4GB to 2.4GB. 331 | 332 | (2) a fix to sparse lookup, that does not rely on 333 | an assumption proven false by at least one pathological 334 | input "etldlen". 335 | 336 | These two changes fix unrelated compiler performance bugs, 337 | both necessary to obtain good performance compiling etldlen. 338 | Without them it takes 20 minutes or longer, with them it 339 | completes in 2 minutes, without a gigantic memory footprint. 340 | 341 | Updates #16407 342 | 343 | Change-Id: Iaa8aaa8c706858b3d49de1c4865a7fd79e6f4ff7 344 | Reviewed-on: https://go-review.googlesource.com/23136 345 | Reviewed-by: Keith Randall 346 | Run-TryBot: David Chase 347 | TryBot-Result: Gobot Gobot 348 | 349 | commit 305a0ac123cf99d469f5519f8974f4911e690c48 350 | Author: Keith Randall 351 | Date: Mon Jul 18 23:06:04 2016 -0700 352 | 353 | cmd/compile: move phi args which are constants closer to the phi 354 | 355 | entry: 356 | x = MOVQconst [7] 357 | ... 358 | b1: 359 | goto b2 360 | b2: 361 | v = Phi(x, y, z) 362 | 363 | Transform that program to: 364 | 365 | entry: 366 | ... 367 | b1: 368 | x = MOVQconst [7] 369 | goto b2 370 | b2: 371 | v = Phi(x, y, z) 372 | 373 | This CL moves constant-generating instructions used by a phi to the 374 | appropriate immediate predecessor of the phi's block. 375 | 376 | We used to put all constants in the entry block. Unfortunately, in 377 | large functions we have lots of constants at the start of the 378 | function, all of which are used by lots of phis throughout the 379 | function. This leads to the constants being live through most of the 380 | function (especially if there is an outer loop). That's an O(n^2) 381 | problem. 382 | 383 | Note that most of the non-phi uses of constants have already been 384 | folded into instructions (ADDQconst, MOVQstoreconst, etc.). 385 | 386 | This CL may be generally useful for other instances of compiler 387 | slowness, I'll have to check. It may cause some programs to run 388 | slower, but probably not by much, as rematerializeable values like 389 | these constants are allocated late (not at their originally scheduled 390 | location) anyway. 391 | 392 | This CL is definitely a minimal change that can be considered for 1.7. 393 | We probably want to do a better job in the tighten pass generally, not 394 | just for phi args. Leaving that for 1.8. 395 | 396 | Update #16407 397 | 398 | Change-Id: If112a8883b4ef172b2f37dea13e44bda9346c342 399 | Reviewed-on: https://go-review.googlesource.com/25046 400 | Run-TryBot: Keith Randall 401 | TryBot-Result: Gobot Gobot 402 | Reviewed-by: Josh Bleecher Snyder 403 | ``` 404 | -------------------------------------------------------------------------------- /reports/2016/golang-07-14.md: -------------------------------------------------------------------------------- 1 | # July 14, 2016 Report 2 | 3 | Number of commits: 20 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd: from 15.320427747s to 15.558997012s, +1.56% 8 | * github.com/boltdb/bolt/cmd/bolt: from 557.769126ms to 552.974298ms, -0.86% 9 | * github.com/gogits/gogs: from 13.026002745s to 12.859951085s, -1.27% 10 | * github.com/spf13/hugo: from 6.894096167s to 6.788778391s, -1.53% 11 | * github.com/nsqio/nsq/apps/nsqd: from 2.33865218s to 2.11327643s, -9.64% 12 | * github.com/mholt/caddy: from 278.858609ms to 276.067353ms, -1.00% 13 | 14 | ## Binary size: 15 | 16 | * github.com/coreos/etcd/cmd: from 26485214 to 26493811, ~ 17 | * github.com/boltdb/bolt/cmd/bolt: from 2666587 to 2675184, +0.32% 18 | * github.com/gogits/gogs: from 23704257 to 23716950, ~ 19 | * github.com/spf13/hugo: from 15202443 to 15206944, ~ 20 | * github.com/nsqio/nsq/apps/nsqd: from 10042636 to 10051233, ~ 21 | * github.com/mholt/caddy: from 13044558 to 13044558, ~ 22 | 23 | ## Bechmarks: 24 | 25 | ``` 26 | benchmark old ns/op new ns/op delta 27 | BenchmarkMsgpMarshal-4 193 190 -1.55% 28 | BenchmarkMsgpUnmarshal-4 407 408 +0.25% 29 | BenchmarkEasyJsonMarshal-4 1608 1612 +0.25% 30 | BenchmarkEasyJsonUnmarshal-4 1531 1521 -0.65% 31 | BenchmarkFlatBuffersMarshal-4 359 368 +2.51% 32 | BenchmarkFlatBuffersUnmarshal-4 291 294 +1.03% 33 | BenchmarkGogoprotobufMarshal-4 163 164 +0.61% 34 | BenchmarkGogoprotobufUnmarshal-4 256 257 +0.39% 35 | 36 | benchmark old allocs new allocs delta 37 | BenchmarkMsgpMarshal-4 1 1 +0.00% 38 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 39 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 40 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 41 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 42 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 43 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 44 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 45 | 46 | benchmark old bytes new bytes delta 47 | BenchmarkMsgpMarshal-4 128 128 +0.00% 48 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 49 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 50 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 51 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 52 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 53 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 54 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 55 | ``` 56 | ## Highlights: 57 | 58 | 59 | ## GIT Log 60 | 61 | ``` 62 | commit 29ed5da5f2804cab0f6f1c97309673ac5d22a99d 63 | Author: Ian Lance Taylor 64 | Date: Wed Jul 13 13:22:47 2016 -0700 65 | 66 | runtime/pprof: don't print extraneous 0 after goexit 67 | 68 | This fixes erroneous handling of the more result parameter of 69 | runtime.Frames.Next. 70 | 71 | Fixes #16349. 72 | 73 | Change-Id: I4f1c0263dafbb883294b31dbb8922b9d3e650200 74 | Reviewed-on: https://go-review.googlesource.com/24911 75 | Run-TryBot: Ian Lance Taylor 76 | TryBot-Result: Gobot Gobot 77 | Reviewed-by: Brad Fitzpatrick 78 | 79 | commit 4d00937cecdea85b6f1eb894a6d28a53f5f2ff8a 80 | Author: Brad Fitzpatrick 81 | Date: Wed Jul 13 10:49:48 2016 -0600 82 | 83 | all: rename vendored golang.org/x/net packages to golang_org 84 | 85 | Regression from Go 1.6 to Go 1.7rc1: we had broken the ability for 86 | users to vendor "golang.org/x/net/http2" or "golang.org/x/net/route" 87 | because we were vendoring them ourselves and cmd/go and cmd/compile do 88 | not understand multiple vendor directories across multiple GOPATH 89 | workspaces (e.g. user's $GOPATH and default $GOROOT). 90 | 91 | As a short-term fix, since fixing cmd/go and cmd/compile is too 92 | invasive at this point in the cycle, just rename "golang.org" to 93 | "golang_org" for the standard library's vendored copy. 94 | 95 | Fixes #16333 96 | 97 | Change-Id: I9bfaed91e9f7d4ca6bab07befe80d71d437a21af 98 | Reviewed-on: https://go-review.googlesource.com/24902 99 | Run-TryBot: Brad Fitzpatrick 100 | TryBot-Result: Gobot Gobot 101 | Reviewed-by: Ian Lance Taylor 102 | 103 | commit 1cb3f7169ccff3ae2197784676404e8d0d3f5e32 104 | Author: Ian Lance Taylor 105 | Date: Wed Jul 13 09:38:41 2016 -0700 106 | 107 | doc/go1.7.html: earlier Go versions don't work on macOS Sierra 108 | 109 | Updates #16272. 110 | 111 | Change-Id: If5444b8de8678eeb9be10b62a929e2e101d1dd91 112 | Reviewed-on: https://go-review.googlesource.com/24900 113 | Reviewed-by: Brad Fitzpatrick 114 | 115 | commit 76da6491e802410bf84e122b8694bf01a6cf57cd 116 | Author: Emmanuel Odeke 117 | Date: Mon Jul 4 23:57:05 2016 -0700 118 | 119 | doc/go1.7.html: document that http.Server now enforces request versions 120 | 121 | Document that the http.Server is now stricter about rejecting 122 | requests with invalid HTTP versions, and also that it rejects plaintext 123 | HTTP/2 requests, except for `PRI * HTTP/2.0` upgrade requests. 124 | The relevant CL is https://golang.org/cl/24505. 125 | 126 | Updates #15810. 127 | 128 | Change-Id: Ibbace23e001b5e2eee053bd341de50f9b6d3fde8 129 | Reviewed-on: https://go-review.googlesource.com/24731 130 | Reviewed-by: Brad Fitzpatrick 131 | 132 | commit 2fcb25e07b2549f607aa174ceab974f8732ea0f4 133 | Author: Bryan C. Mills 134 | Date: Tue Jul 12 18:56:07 2016 -0400 135 | 136 | doc/effective_go: clarify advice on returning interfaces 137 | 138 | New Gophers sometimes misconstrue the advice in the "Generality" section 139 | as "export interfaces instead of implementations" and add needless 140 | interfaces to their code as a result. Down the road, they end up 141 | needing to add methods and either break existing callers or have to 142 | resort to unpleasant hacks (e.g. using "magic method" type-switches). 143 | 144 | Weaken the first paragraph of this section to only advise leaving types 145 | unexported when they will never need additional methods. 146 | 147 | Change-Id: I32a1ae44012b5896faf167c02e192398a4dfc0b8 148 | Reviewed-on: https://go-review.googlesource.com/24892 149 | Reviewed-by: Rob Pike 150 | Reviewed-by: Andrew Gerrand 151 | 152 | commit a1110c39301b21471c27dad0e50cdbe499587fc8 153 | Author: Brad Fitzpatrick 154 | Date: Tue Jul 12 11:19:16 2016 -0600 155 | 156 | cmd/go: don't fail on invalid GOOS/GOARCH pair when using gccgo 157 | 158 | Fixes #12272 159 | 160 | Change-Id: I0306ce0ef4a87df2158df3b7d4d8d93a1cb6dabc 161 | Reviewed-on: https://go-review.googlesource.com/24864 162 | Reviewed-by: Ian Lance Taylor 163 | Run-TryBot: Ian Lance Taylor 164 | 165 | commit b30814bbd6840e1574a27c87c37515af22caa5d9 166 | Author: Ian Lance Taylor 167 | Date: Mon Jul 11 16:15:03 2016 -0700 168 | 169 | runtime: add ctxt parameter to cgocallback called from Go 170 | 171 | The cgocallback function picked up a ctxt parameter in CL 22508. 172 | That CL updated the assembler implementation, but there are a few 173 | mentions in Go code that were not updated. This CL fixes that. 174 | 175 | Fixes #16326 176 | 177 | Change-Id: I5f68e23565c6a0b11057aff476d13990bff54a66 178 | Reviewed-on: https://go-review.googlesource.com/24848 179 | Run-TryBot: Brad Fitzpatrick 180 | TryBot-Result: Gobot Gobot 181 | Reviewed-by: Brad Fitzpatrick 182 | Reviewed-by: Minux Ma 183 | 184 | commit 1f4e68d92b33a668f2afa2ab5f8114c1a4bee682 185 | Author: Ian Lance Taylor 186 | Date: Mon Jul 11 22:34:30 2016 -0700 187 | 188 | reflect: an unnamed type has no PkgPath 189 | 190 | The reflect package was returning a non-empty PkgPath for an unnamed 191 | type with methods, such as a type whose methods have a pointer 192 | receiver. 193 | 194 | Fixes #16328. 195 | 196 | Change-Id: I733e93981ebb5c5c108ef9b03bf5494930b93cf3 197 | Reviewed-on: https://go-review.googlesource.com/24862 198 | Reviewed-by: David Crawshaw 199 | 200 | commit a84b18ac865257c50d8812e39d244b57809fc8c8 201 | Author: Ian Lance Taylor 202 | Date: Tue Jul 12 03:43:05 2016 +0000 203 | 204 | Revert "regexp: add the Fanout benchmark 205 | 206 | This is a copy of the "FANOUT" benchmark recently added to RE2 with the 207 | following comment: 208 | 209 | // This has quite a high degree of fanout. 210 | // NFA execution will be particularly slow. 211 | 212 | Most of the benchmarks on the regexp package have very little fanout and 213 | are designed for comparing the regexp package's NFA with backtracking 214 | engines found in other regular expression libraries. This benchmark 215 | exercises the performance of the NFA on expressions with high fanout.Reviewed-on: https://go-review.googlesource.com/24846 216 | Reviewed-by: Andrew Gerrand 217 | Reviewed-by: Ian Lance Taylor 218 | " 219 | 220 | This reverts commit fc803874d3a509ddd99a897da1c6a62dc4ce631e. 221 | 222 | Reason for revert: Breaks the -race build because the benchmark takes too long to run. 223 | 224 | Change-Id: I6ed4b466f74a4108d8bcd5b019b9abe971eb483e 225 | Reviewed-on: https://go-review.googlesource.com/24861 226 | Run-TryBot: Ian Lance Taylor 227 | Reviewed-by: Josh Bleecher Snyder 228 | TryBot-Result: Gobot Gobot 229 | Reviewed-by: Michael Matloob 230 | 231 | commit fc803874d3a509ddd99a897da1c6a62dc4ce631e 232 | Author: Michael Matloob 233 | Date: Mon Jul 11 14:59:03 2016 -0600 234 | 235 | regexp: add the Fanout benchmark 236 | 237 | This is a copy of the "FANOUT" benchmark recently added to RE2 with the 238 | following comment: 239 | 240 | // This has quite a high degree of fanout. 241 | // NFA execution will be particularly slow. 242 | 243 | Most of the benchmarks on the regexp package have very little fanout and 244 | are designed for comparing the regexp package's NFA with backtracking 245 | engines found in other regular expression libraries. This benchmark 246 | exercises the performance of the NFA on expressions with high fanout. 247 | 248 | Change-Id: Ie9c8e3bbeffeb1fe9fb90474ddd19e53f2f57a52 249 | Reviewed-on: https://go-review.googlesource.com/24846 250 | Reviewed-by: Andrew Gerrand 251 | Reviewed-by: Ian Lance Taylor 252 | 253 | commit 296b618dc8c8f59d7327b4d322f7ceef4032d94b 254 | Author: Francesc Campoy 255 | Date: Mon Jul 11 12:31:52 2016 -0600 256 | 257 | gofmt: remove unneeded call to os.Exit 258 | 259 | PrintDefaults already calls os.Exit(2). 260 | 261 | Change-Id: I0d783a6476f42b6157853cdb34ba69618e3f3fcb 262 | Reviewed-on: https://go-review.googlesource.com/24844 263 | Reviewed-by: Andrew Gerrand 264 | 265 | commit 38de5b71f274ff93581a302b2f3ec4b9937afa51 266 | Author: Ian Lance Taylor 267 | Date: Sun Jul 10 21:47:56 2016 -0700 268 | 269 | doc/go1.7.html: no concurrent calls of math/rand methods 270 | 271 | A follow-on to https://golang.org/cl/24852 that mentions the 272 | documentation clarifications. 273 | 274 | Updates #16308. 275 | 276 | Change-Id: Ic2a6e1d4938d74352f93a6649021fb610efbfcd0 277 | Reviewed-on: https://go-review.googlesource.com/24857 278 | Run-TryBot: Ian Lance Taylor 279 | TryBot-Result: Gobot Gobot 280 | Reviewed-by: Joe Tsai 281 | Reviewed-by: Josh Bleecher Snyder 282 | 283 | commit fb3cf5c686b09bab8c1bef5f7589aaef0e6d9712 284 | Author: Ian Lance Taylor 285 | Date: Sat Jul 9 19:38:04 2016 -0700 286 | 287 | math/rand: fix raciness in Rand.Read 288 | 289 | There are no synchronization points protecting the readVal and readPos 290 | variables. This leads to a race when Read is called concurrently. 291 | Fix this by adding methods to lockedSource, which is the case where 292 | a race matters. 293 | 294 | Fixes #16308. 295 | 296 | Change-Id: Ic028909955700906b2d71e5c37c02da21b0f4ad9 297 | Reviewed-on: https://go-review.googlesource.com/24852 298 | Reviewed-by: Joe Tsai 299 | Run-TryBot: Ian Lance Taylor 300 | TryBot-Result: Gobot Gobot 301 | Reviewed-by: Josh Bleecher Snyder 302 | 303 | commit 54ffdf364f77c62ffeb205debe26347ca5961373 304 | Author: Brad Fitzpatrick 305 | Date: Sat Jul 9 17:24:45 2016 -0700 306 | 307 | net/http: fix vet warning of leaked context in error paths 308 | 309 | Updates #16230 310 | 311 | Change-Id: Ie38f85419c41c00108f8843960280428a39789b5 312 | Reviewed-on: https://go-review.googlesource.com/24850 313 | Run-TryBot: Brad Fitzpatrick 314 | Reviewed-by: Josh Bleecher Snyder 315 | TryBot-Result: Gobot Gobot 316 | 317 | commit 54b499e3f1d3ef37765c209919d30f0abf55a2e1 318 | Author: Ian Lance Taylor 319 | Date: Fri Jul 8 11:42:19 2016 -0700 320 | 321 | syscall: add another output for TestGroupCleanupUserNamespace 322 | 323 | Fixes #16303. 324 | 325 | Change-Id: I2832477ce0117a66da53ca1f198ebb6121953d56 326 | Reviewed-on: https://go-review.googlesource.com/24833 327 | Run-TryBot: Ian Lance Taylor 328 | Reviewed-by: Brad Fitzpatrick 329 | TryBot-Result: Gobot Gobot 330 | 331 | commit 12f2b4ff0ea694fc31e5b25d61d36cf058a88f35 332 | Author: Ian Lance Taylor 333 | Date: Fri Jul 8 07:56:52 2016 -0700 334 | 335 | runtime: fix case in KeepAlive comment 336 | 337 | Fixes #16299. 338 | 339 | Change-Id: I76f541c7f11edb625df566f2f1035147b8bcd9dd 340 | Reviewed-on: https://go-review.googlesource.com/24830 341 | Run-TryBot: Ian Lance Taylor 342 | Reviewed-by: Brad Fitzpatrick 343 | TryBot-Result: Gobot Gobot 344 | 345 | commit 915398f14fff28f7ba8592f134e22079de044745 346 | Author: Ian Lance Taylor 347 | Date: Fri Jul 8 07:50:07 2016 -0700 348 | 349 | doc/go1.7.html: fix name of IsExist 350 | 351 | For better or for worse, it's IsExist, not IsExists. 352 | 353 | Change-Id: I4503f961486edd459c0c81cf3f32047dff7703a4 354 | Reviewed-on: https://go-review.googlesource.com/24819 355 | Run-TryBot: Ian Lance Taylor 356 | Reviewed-by: Brad Fitzpatrick 357 | TryBot-Result: Gobot Gobot 358 | 359 | commit fad2bbdc6a686a20174d2e73cf78f1659722bb39 360 | Author: Ian Lance Taylor 361 | Date: Thu Jul 7 16:41:29 2016 -0700 362 | 363 | runtime: fix nanotime for macOS Sierra 364 | 365 | In the beta version of the macOS Sierra (10.12) release, the 366 | gettimeofday system call changed on x86. Previously it always returned 367 | the time in the AX/DX registers. Now, if AX is returned as 0, it means 368 | that the system call has stored the values into the memory pointed to by 369 | the first argument, just as the libc gettimeofday function does. The 370 | libc function handles both cases, and we need to do so as well. 371 | 372 | Fixes #16272. 373 | 374 | Change-Id: Ibe5ad50a2c5b125e92b5a4e787db4b5179f6b723 375 | Reviewed-on: https://go-review.googlesource.com/24812 376 | Reviewed-by: Brad Fitzpatrick 377 | 378 | commit 84bb9e62f06dbb62279241fa0bd7a6c8846271ac 379 | Author: Ian Lance Taylor 380 | Date: Thu Jul 7 17:43:08 2016 -0700 381 | 382 | runtime: handle selects with duplicate channels in shrinkstack 383 | 384 | The shrinkstack code locks all the channels a goroutine is waiting for, 385 | but didn't handle the case of the same channel appearing in the list 386 | multiple times. This led to a deadlock. The channels are sorted so it's 387 | easy to avoid locking the same channel twice. 388 | 389 | Fixes #16286. 390 | 391 | Change-Id: Ie514805d0532f61c942e85af5b7b8ac405e2ff65 392 | Reviewed-on: https://go-review.googlesource.com/24815 393 | Run-TryBot: Ian Lance Taylor 394 | TryBot-Result: Gobot Gobot 395 | Reviewed-by: Austin Clements 396 | 397 | commit e5ff529679b3adbed06d509b0fc21a76b62e89e9 398 | Author: Brad Fitzpatrick 399 | Date: Wed Jul 6 00:16:05 2016 +0000 400 | 401 | lib/time: update to IANA release 2016f (July 2016) 402 | 403 | Fixes #16273 404 | 405 | Change-Id: I443e1f254fd683c4ff61beadae89c1c45ff5d972 406 | Reviewed-on: https://go-review.googlesource.com/24744 407 | Reviewed-by: Andrew Gerrand 408 | Run-TryBot: Brad Fitzpatrick 409 | TryBot-Result: Gobot Gobot 410 | Reviewed-by: Quentin Smith 411 | Reviewed-by: Ian Lance Taylor 412 | ``` 413 | -------------------------------------------------------------------------------- /reports/2016/golang-07-07.md: -------------------------------------------------------------------------------- 1 | # July 7, 2016 Report 2 | 3 | Number of commits: 19 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd: from 15.13358728s to 15.247372779s, +0.75% 8 | * github.com/boltdb/bolt/cmd/bolt: from 555.067769ms to 558.217736ms, +0.57% 9 | * github.com/gogits/gogs: from 12.984591967s to 12.932498538s, -0.40% 10 | * github.com/spf13/hugo: from 7.215382531s to 9.196958072s, +27.46% 11 | * github.com/nsqio/nsq/apps/nsqd: from 2.079530519s to 2.048365995s, -1.50% 12 | * github.com/mholt/caddy: from 265.533664ms to 286.270739ms, +7.81% 13 | 14 | ## Binary size: 15 | 16 | * github.com/coreos/etcd/cmd: from 26396353 to 26404545, ~ 17 | * github.com/boltdb/bolt/cmd/bolt: from 2666587 to 2666587, ~ 18 | * github.com/gogits/gogs: from 23642896 to 23642898, ~ 19 | * github.com/spf13/hugo: from 15198261 to 15202359, ~ 20 | * github.com/nsqio/nsq/apps/nsqd: from 10046829 to 10050925, ~ 21 | * github.com/mholt/caddy: from 13044558 to 13044558, ~ 22 | 23 | ## Bechmarks: 24 | 25 | ``` 26 | benchmark old ns/op new ns/op delta 27 | BenchmarkMsgpMarshal-4 190 190 +0.00% 28 | BenchmarkMsgpUnmarshal-4 406 403 -0.74% 29 | BenchmarkEasyJsonMarshal-4 1590 1587 -0.19% 30 | BenchmarkEasyJsonUnmarshal-4 1533 1538 +0.33% 31 | BenchmarkFlatBuffersMarshal-4 367 359 -2.18% 32 | BenchmarkFlatBuffersUnmarshal-4 294 292 -0.68% 33 | BenchmarkGogoprotobufMarshal-4 163 163 +0.00% 34 | BenchmarkGogoprotobufUnmarshal-4 260 258 -0.77% 35 | 36 | benchmark old allocs new allocs delta 37 | BenchmarkMsgpMarshal-4 1 1 +0.00% 38 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 39 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 40 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 41 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 42 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 43 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 44 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 45 | 46 | benchmark old bytes new bytes delta 47 | BenchmarkMsgpMarshal-4 128 128 +0.00% 48 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 49 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 50 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 51 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 52 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 53 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 54 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 55 | ``` 56 | ## Highlights: 57 | 58 | <-------------------HIGHLIGHTS HERE----------------------> 59 | 60 | 61 | ## GIT Log 62 | 63 | ``` 64 | commit d8722012afb789f1a2875a0d2ed50bfbae12bb9c 65 | Author: Brad Fitzpatrick 66 | Date: Wed Jul 6 21:29:40 2016 +0000 67 | 68 | net/http: deflake TestClientRedirectContext 69 | 70 | The test was checking for 1 of 2 possible error values. But based on 71 | goroutine scheduling and the randomness of select statement receive 72 | cases, it was possible for a 3rd type of error to be returned. 73 | 74 | This modifies the code (not the test) to make that third type of error 75 | actually the second type of error, which is a nicer error message. 76 | 77 | The test is no longer flaky. The flake was very reproducible with a 78 | 5ms sleep before the select at the end of Transport.getConn. 79 | 80 | Thanks to Github user @jaredborner for debugging. 81 | 82 | Fixes #16049 83 | 84 | Change-Id: I0d2a036c9555a8d2618b07bab01f28558d2b0b2c 85 | Reviewed-on: https://go-review.googlesource.com/24748 86 | Reviewed-by: Andrew Gerrand 87 | Run-TryBot: Brad Fitzpatrick 88 | TryBot-Result: Gobot Gobot 89 | 90 | commit df7c159f06ab6d6c7ac6c953e491f8900f40d282 91 | Author: Ian Lance Taylor 92 | Date: Wed Jul 6 17:14:10 2016 -0700 93 | 94 | path/filepath: fix typo in comment 95 | 96 | Change-Id: I0c76e8deae49c1149647de421503c5175028b948 97 | Reviewed-on: https://go-review.googlesource.com/24781 98 | Run-TryBot: Ian Lance Taylor 99 | TryBot-Result: Gobot Gobot 100 | Reviewed-by: Brad Fitzpatrick 101 | 102 | commit 94477121bd1a758a70393773c6ae40c58c54f005 103 | Author: Ian Lance Taylor 104 | Date: Wed Jul 6 13:07:53 2016 -0700 105 | 106 | path/filepath: document Clean behavior for each function 107 | 108 | Document explicitly which functions Clean the result rather than 109 | documenting it in the package comment. 110 | 111 | Updates #10122. 112 | Fixes #16111. 113 | 114 | Change-Id: Ia589c7ee3936c9a6a758725ac7f143054d53e41e 115 | Reviewed-on: https://go-review.googlesource.com/24747 116 | Run-TryBot: Ian Lance Taylor 117 | TryBot-Result: Gobot Gobot 118 | Reviewed-by: Brad Fitzpatrick 119 | 120 | commit bbe5da42600d5ab26cd58ffac3d6427994f08fb2 121 | Author: Ian Lance Taylor 122 | Date: Tue Jun 28 14:19:27 2016 -0700 123 | 124 | cmd/compile, syscall: add //go:uintptrescapes comment, and use it 125 | 126 | This new comment can be used to declare that the uintptr arguments to a 127 | function may be converted from pointers, and that those pointers should 128 | be considered to escape. This is used for the Call methods in 129 | dll_windows.go that take uintptr arguments, because they call Syscall. 130 | 131 | We can't treat these functions as we do syscall.Syscall, because unlike 132 | Syscall they may cause the stack to grow. For Syscall we can assume that 133 | stack arguments can remain on the stack, but for these functions we need 134 | them to escape. 135 | 136 | Fixes #16035. 137 | 138 | Change-Id: Ia0e5b4068c04f8d303d95ab9ea394939f1f57454 139 | Reviewed-on: https://go-review.googlesource.com/24551 140 | Reviewed-by: David Chase 141 | Run-TryBot: Ian Lance Taylor 142 | TryBot-Result: Gobot Gobot 143 | 144 | commit 820e30f5b0289d5df22ab604f2d831470f748dca 145 | Author: Sam Whited 146 | Date: Tue Jul 5 20:06:00 2016 -0500 147 | 148 | encoding/xml: update docs to follow convention 149 | 150 | Fixes #8833 151 | 152 | Change-Id: I4523a1de112ed02371504e27882659bce8028a45 153 | Reviewed-on: https://go-review.googlesource.com/24745 154 | Reviewed-by: Ian Lance Taylor 155 | Run-TryBot: Ian Lance Taylor 156 | TryBot-Result: Gobot Gobot 157 | 158 | commit 5a9d5c37479231336efef0e0fa5b75645aa1c569 159 | Author: Emmanuel Odeke 160 | Date: Sun Jul 3 14:57:35 2016 -0700 161 | 162 | encoding/gob: document Encode, EncodeValue nil pointer panics 163 | 164 | Fixes #16258. 165 | 166 | Docs for Encode and EncodeValue do not mention that 167 | nil pointers are not permitted hence we panic, 168 | because Gobs encode values yet nil pointers have no value 169 | to encode. It moves a comment that was internal to EncodeValue 170 | to the top level to make it clearer to users what to expect 171 | when they pass in nil pointers. 172 | Supplements test TestTopLevelNilPointer. 173 | 174 | Change-Id: Ie54f609fde4b791605960e088456047eb9aa8738 175 | Reviewed-on: https://go-review.googlesource.com/24740 176 | Reviewed-by: Andrew Gerrand 177 | Run-TryBot: Andrew Gerrand 178 | TryBot-Result: Gobot Gobot 179 | 180 | commit 003a68bc7fcb917b5a4d92a5c2244bb1adf8f690 181 | Author: Ian Lance Taylor 182 | Date: Fri Jul 1 13:52:26 2016 -0700 183 | 184 | cmd/vet: remove copylock warning about result types and calls 185 | 186 | Don't issue a copylock warning about a result type; the function may 187 | return a composite literal with a zero value, which is OK. 188 | 189 | Don't issue a copylock warning about a function call on the RHS, or an 190 | indirection of a function call; the function may return a composite 191 | literal with a zero value, which is OK. 192 | 193 | Updates #16227. 194 | 195 | Change-Id: I94f0e066bbfbca5d4f8ba96106210083e36694a2 196 | Reviewed-on: https://go-review.googlesource.com/24711 197 | Reviewed-by: Josh Bleecher Snyder 198 | Run-TryBot: Ian Lance Taylor 199 | Reviewed-by: Rob Pike 200 | 201 | commit 878e002bb9021822cc44a9e20cf92689a2c478e7 202 | Author: Mikio Hara 203 | Date: Mon Jul 4 08:45:10 2016 +0900 204 | 205 | syscall: fix missing use of use function in Getfsstat 206 | 207 | Updates #13372. 208 | 209 | Change-Id: If383c14af14839a303425ba7b80b97e35ca9b698 210 | Reviewed-on: https://go-review.googlesource.com/24750 211 | Run-TryBot: Mikio Hara 212 | TryBot-Result: Gobot Gobot 213 | Reviewed-by: Ian Lance Taylor 214 | 215 | commit afccfb829f17f85a8d4aa74f1a11a27422437405 216 | Author: Monty Taylor 217 | Date: Fri Jul 1 08:47:41 2016 -0500 218 | 219 | cmd/go: remove noVCSSuffix check for OpenStack 220 | 221 | The original intent of the code was to allow both with and without .git 222 | suffix for now to allow a transition period. The noVCSSuffix check was a 223 | copy pasta error. 224 | 225 | Fixes #15979. 226 | 227 | Change-Id: I3d39aba8d026b40fc445244d6d01d8bc1979d1e4 228 | Reviewed-on: https://go-review.googlesource.com/24645 229 | Reviewed-by: Ian Lance Taylor 230 | 231 | commit 519b469795287dc81ab3b994f8809f61a0c802da 232 | Author: Ian Lance Taylor 233 | Date: Fri Jul 1 15:44:12 2016 -0700 234 | 235 | cmd/compile: mark live heap-allocated pparamout vars as needzero 236 | 237 | If we don't mark them as needzero, we have a live pointer variable 238 | containing possible garbage, which will baffle the GC. 239 | 240 | Fixes #16249. 241 | 242 | Change-Id: I7c423ceaca199ddd46fc2c23e5965e7973f07584 243 | Reviewed-on: https://go-review.googlesource.com/24715 244 | Run-TryBot: Ian Lance Taylor 245 | TryBot-Result: Gobot Gobot 246 | Reviewed-by: Keith Randall 247 | 248 | commit 575a87166291e321745041944321002b3c0b72be 249 | Author: Robert Griesemer 250 | Date: Fri Jul 1 10:51:59 2016 -0700 251 | 252 | cmd/compile: don't lose //go:nointerface pragma in export data 253 | 254 | Fixes #16243. 255 | 256 | Change-Id: I207d1e8aa48abe453a23c709ccf4f8e07368595b 257 | Reviewed-on: https://go-review.googlesource.com/24648 258 | Run-TryBot: Robert Griesemer 259 | TryBot-Result: Gobot Gobot 260 | Reviewed-by: Ian Lance Taylor 261 | 262 | commit 29f0984a3558ef6e3e58a621791473a71b510365 263 | Author: Cherry Zhang 264 | Date: Thu Jun 30 06:36:31 2016 -0400 265 | 266 | cmd/compile: don't set line number to 0 when building SSA 267 | 268 | The frontend may emit node with line number missing. In this case, 269 | use the parent line number. Instead of changing every call site of 270 | pushLine, do it in pushLine itself. 271 | 272 | Fixes #16214. 273 | 274 | Change-Id: I80390550b56e4d690fc770b01ff725b892ffd6dc 275 | Reviewed-on: https://go-review.googlesource.com/24641 276 | Reviewed-by: Keith Randall 277 | Run-TryBot: Cherry Zhang 278 | Reviewed-by: Brad Fitzpatrick 279 | TryBot-Result: Gobot Gobot 280 | 281 | commit b5aae1a2845f157a2565b856fb2d7773a0f7af25 282 | Author: Brad Fitzpatrick 283 | Date: Thu Jun 30 22:11:22 2016 +0000 284 | 285 | net/http: update bundled http2 286 | 287 | Updates x/net/http2 to git rev b400c2e for https://golang.org/cl/24214, 288 | "http2: add additional blacklisted ciphersuites" 289 | 290 | Both TLS_RSA_WITH_AES_128_GCM_SHA256 & TLS_RSA_WITH_AES_256_GCM_SHA384 291 | are now blacklisted, per http://httpwg.org/specs/rfc7540.html#BadCipherSuites 292 | 293 | Change-Id: I8b9a7f4dc3c152d0675e196523ddd36111744984 294 | Reviewed-on: https://go-review.googlesource.com/24684 295 | Reviewed-by: Ian Lance Taylor 296 | Run-TryBot: Brad Fitzpatrick 297 | TryBot-Result: Gobot Gobot 298 | 299 | commit 08086e624689e0fdf5b53030ecfb96ea709b6d86 300 | Author: Alan Donovan 301 | Date: Thu Jun 30 14:32:03 2016 -0400 302 | 303 | cmd/vet: lostcancel: treat naked return as a use of named results 304 | 305 | + test. 306 | 307 | Fixes #16230 308 | 309 | Change-Id: Idac995437146a9df9e73f094d2a31abc25b1fa62 310 | Reviewed-on: https://go-review.googlesource.com/24681 311 | Reviewed-by: Ian Lance Taylor 312 | Run-TryBot: Ian Lance Taylor 313 | TryBot-Result: Gobot Gobot 314 | 315 | commit 7ea62121a7de25559cb88389983086f45910aed6 316 | Author: Brad Fitzpatrick 317 | Date: Thu Jun 30 19:24:06 2016 +0000 318 | 319 | all: be consistent about spelling of cancelation 320 | 321 | We had ~30 one way, and these four new occurrences the other way. 322 | 323 | Updates #11626 324 | 325 | Change-Id: Ic6403dc4905874916ae292ff739d33482ed8e5bf 326 | Reviewed-on: https://go-review.googlesource.com/24683 327 | Reviewed-by: Rob Pike 328 | 329 | commit fc12bb263683e43c0b93eb00071f894f5cfcc772 330 | Author: Alan Donovan 331 | Date: Thu Jun 30 14:55:01 2016 -0400 332 | 333 | context: cancel the context in ExampleWithTimeout, with explanation 334 | 335 | Fixes #16230 336 | 337 | Change-Id: Ibb10234a6c3ab8bd0cfd93c2ebe8cfa66f80f6b0 338 | Reviewed-on: https://go-review.googlesource.com/24682 339 | Reviewed-by: Brad Fitzpatrick 340 | 341 | commit 9c8809f82aa59e0725e93cffb03de863e61cbbae 342 | Author: Austin Clements 343 | Date: Wed Jun 29 17:41:50 2016 -0400 344 | 345 | runtime/internal/sys: implement Ctz and Bswap in assembly for 386 346 | 347 | Ctz is a hot-spot in the Go 1.7 memory manager. In SSA it's 348 | implemented as an intrinsic that compiles to a few instructions, but 349 | on the old backend (all architectures other than amd64), it's 350 | implemented as a fairly complex Go function. As a result, switching to 351 | bitmap-based allocation was a significant hit to allocation-heavy 352 | workloads like BinaryTree17 on non-SSA platforms. 353 | 354 | For unknown reasons, this hit 386 particularly hard. We can regain a 355 | lot of the lost performance by implementing Ctz in assembly on the 356 | 386. This isn't as good as an intrinsic, since it still generates a 357 | function call and prevents useful inlining, but it's much better than 358 | the pure Go implementation: 359 | 360 | name old time/op new time/op delta 361 | BinaryTree17-12 3.59s ± 1% 3.06s ± 1% -14.74% (p=0.000 n=19+20) 362 | Fannkuch11-12 3.72s ± 1% 3.64s ± 1% -2.09% (p=0.000 n=17+19) 363 | FmtFprintfEmpty-12 52.3ns ± 3% 52.3ns ± 3% ~ (p=0.829 n=20+19) 364 | FmtFprintfString-12 156ns ± 1% 148ns ± 3% -5.20% (p=0.000 n=18+19) 365 | FmtFprintfInt-12 137ns ± 1% 136ns ± 1% -0.56% (p=0.000 n=19+13) 366 | FmtFprintfIntInt-12 227ns ± 2% 225ns ± 2% -0.93% (p=0.000 n=19+17) 367 | FmtFprintfPrefixedInt-12 210ns ± 1% 208ns ± 1% -0.91% (p=0.000 n=19+17) 368 | FmtFprintfFloat-12 375ns ± 1% 371ns ± 1% -1.06% (p=0.000 n=19+18) 369 | FmtManyArgs-12 995ns ± 2% 978ns ± 1% -1.63% (p=0.000 n=17+17) 370 | GobDecode-12 9.33ms ± 1% 9.19ms ± 0% -1.59% (p=0.000 n=20+17) 371 | GobEncode-12 7.73ms ± 1% 7.73ms ± 1% ~ (p=0.771 n=19+20) 372 | Gzip-12 375ms ± 1% 374ms ± 1% ~ (p=0.141 n=20+18) 373 | Gunzip-12 61.8ms ± 1% 61.8ms ± 1% ~ (p=0.602 n=20+20) 374 | HTTPClientServer-12 87.7µs ± 2% 86.9µs ± 3% -0.87% (p=0.024 n=19+20) 375 | JSONEncode-12 20.2ms ± 1% 20.4ms ± 0% +0.53% (p=0.000 n=18+19) 376 | JSONDecode-12 65.3ms ± 0% 65.4ms ± 1% ~ (p=0.385 n=16+19) 377 | Mandelbrot200-12 4.11ms ± 1% 4.12ms ± 0% +0.29% (p=0.020 n=19+19) 378 | GoParse-12 3.75ms ± 1% 3.61ms ± 2% -3.90% (p=0.000 n=20+20) 379 | RegexpMatchEasy0_32-12 104ns ± 0% 103ns ± 0% -0.96% (p=0.000 n=13+16) 380 | RegexpMatchEasy0_1K-12 805ns ± 1% 803ns ± 1% ~ (p=0.189 n=18+18) 381 | RegexpMatchEasy1_32-12 111ns ± 0% 111ns ± 3% ~ (p=1.000 n=14+19) 382 | RegexpMatchEasy1_1K-12 1.00µs ± 1% 1.00µs ± 1% +0.50% (p=0.003 n=19+19) 383 | RegexpMatchMedium_32-12 133ns ± 2% 133ns ± 2% ~ (p=0.218 n=20+20) 384 | RegexpMatchMedium_1K-12 41.2µs ± 1% 42.2µs ± 1% +2.52% (p=0.000 n=18+16) 385 | RegexpMatchHard_32-12 2.35µs ± 1% 2.38µs ± 1% +1.53% (p=0.000 n=18+18) 386 | RegexpMatchHard_1K-12 70.9µs ± 2% 72.0µs ± 1% +1.42% (p=0.000 n=19+17) 387 | Revcomp-12 1.06s ± 0% 1.05s ± 0% -1.36% (p=0.000 n=20+18) 388 | Template-12 86.2ms ± 1% 84.6ms ± 0% -1.89% (p=0.000 n=20+18) 389 | TimeParse-12 425ns ± 2% 428ns ± 1% +0.77% (p=0.000 n=18+19) 390 | TimeFormat-12 517ns ± 1% 519ns ± 1% +0.43% (p=0.001 n=20+19) 391 | [Geo mean] 74.3µs 73.5µs -1.05% 392 | 393 | Prior to this commit, BinaryTree17-12 on 386 was 33% slower than at 394 | the go1.6 tag. With this commit, it's 13% slower. 395 | 396 | On arm and arm64, BinaryTree17-12 is only ~5% slower than it was at 397 | go1.6. It may be worth implementing Ctz for them as well. 398 | 399 | I consider this change low risk, since the functions it replaces are 400 | simple, very well specified, and well tested. 401 | 402 | For #16117. 403 | 404 | Change-Id: Ic39d851d5aca91330134596effd2dab9689ba066 405 | Reviewed-on: https://go-review.googlesource.com/24640 406 | Reviewed-by: Rick Hudson 407 | Reviewed-by: Keith Randall 408 | Run-TryBot: Austin Clements 409 | TryBot-Result: Gobot Gobot 410 | 411 | commit 95483f262b619a53793baf86512aeabf44fc9d3a 412 | Author: Ian Lance Taylor 413 | Date: Wed Jun 29 19:20:51 2016 -0700 414 | 415 | os/exec: start checking for context cancelation in Start 416 | 417 | Previously we started checking for context cancelation in Wait, but 418 | that meant that when using StdoutPipe context cancelation never took 419 | effect. 420 | 421 | Fixes #16222. 422 | 423 | Change-Id: I89cd26d3499a6080bf1a07718ce38d825561899e 424 | Reviewed-on: https://go-review.googlesource.com/24650 425 | Reviewed-by: Brad Fitzpatrick 426 | Run-TryBot: Ian Lance Taylor 427 | TryBot-Result: Gobot Gobot 428 | 429 | commit 6c136493012b8a1f96f3edc9fa56aed70d34291a 430 | Author: Ian Lance Taylor 431 | Date: Thu Jun 30 08:22:27 2016 -0700 432 | 433 | syscall: accept more variants of id output when testing as root 434 | 435 | This should fix the report at #16224, and also fixes running the test as 436 | root on my Ubuntu Trusty system. 437 | 438 | Fixes #16224. 439 | 440 | Change-Id: I4e3b5527aa63366afb33a7e30efab088d34fb302 441 | Reviewed-on: https://go-review.googlesource.com/24670 442 | Run-TryBot: Ian Lance Taylor 443 | Reviewed-by: Brad Fitzpatrick 444 | TryBot-Result: Gobot Gobot 445 | ``` -------------------------------------------------------------------------------- /reports/2016/golang-06-23.md: -------------------------------------------------------------------------------- 1 | # June 23, 2016 Report 2 | 3 | Number of commits: 27 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd: from 14.545252948s to 14.42240503s, -0.84% 8 | * github.com/boltdb/bolt/cmd/bolt: from 553.946518ms to 567.132211ms, +2.38% 9 | * github.com/gogits/gogs: from 12.97118458s to 12.946595833s, -0.19% 10 | * github.com/spf13/hugo: from 6.683664056s to 6.743993915s, +0.90% 11 | * github.com/nsqio/nsq/apps/nsqd: from 2.270817882s to 3.734972024s, +64.48% 12 | * github.com/mholt/caddy: from 278.433244ms to 268.490585ms, -3.57% 13 | 14 | ## Binary size: 15 | 16 | * github.com/coreos/etcd/cmd: from 25848182 to 25848182, ~ 17 | * github.com/boltdb/bolt/cmd/bolt: from 2665904 to 2665904, ~ 18 | * github.com/gogits/gogs: from 23603938 to 23603938, ~ 19 | * github.com/spf13/hugo: from 15171903 to 15171903, ~ 20 | * github.com/nsqio/nsq/apps/nsqd: from 10033736 to 10033736, ~ 21 | * github.com/mholt/caddy: from 13044558 to 13044558, ~ 22 | 23 | ## Bechmarks: 24 | 25 | ``` 26 | benchmark old ns/op new ns/op delta 27 | BenchmarkMsgpMarshal-4 192 191 -0.52% 28 | BenchmarkMsgpUnmarshal-4 405 406 +0.25% 29 | BenchmarkEasyJsonMarshal-4 1609 1590 -1.18% 30 | BenchmarkEasyJsonUnmarshal-4 1519 1534 +0.99% 31 | BenchmarkFlatBuffersMarshal-4 362 363 +0.28% 32 | BenchmarkFlatBuffersUnmarshal-4 292 294 +0.68% 33 | BenchmarkGogoprotobufMarshal-4 163 164 +0.61% 34 | BenchmarkGogoprotobufUnmarshal-4 260 259 -0.38% 35 | 36 | benchmark old allocs new allocs delta 37 | BenchmarkMsgpMarshal-4 1 1 +0.00% 38 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 39 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 40 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 41 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 42 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 43 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 44 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 45 | 46 | benchmark old bytes new bytes delta 47 | BenchmarkMsgpMarshal-4 128 128 +0.00% 48 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 49 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 50 | BenchmarkEasyJsonUnmarshal-4 160 160 +0.00% 51 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 52 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 53 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 54 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 55 | ``` 56 | ## Highlights: 57 | 58 | * [cmd/vet: -lostcancel: check for discarded result of context.WithCancel](https://github.com/golang/go/commit/b65cb7f198836faf6605051b95bd60a169fa5e8b) 59 | 60 | ## GIT Log 61 | 62 | ``` 63 | commit aa6345d3c91167f1e81bff9e8655e7aaac7762bd 64 | Author: Ian Lance Taylor 65 | Date: Tue Jun 21 15:17:56 2016 -0700 66 | 67 | testing: document that logs are dumped to standard output 68 | 69 | Since at least 1.0.3, the testing package has said that logs are dumped 70 | to standard error, but has in fact dumped the logs to standard output. 71 | We could change to dump to standard error, but after doing it this way 72 | for so long I think it's better to change the docs. 73 | 74 | Fixes #16138. 75 | 76 | Change-Id: If39c7ce91f51c7113f33ebabfb8f84fd4611b9e1 77 | Reviewed-on: https://go-review.googlesource.com/24311 78 | Run-TryBot: Ian Lance Taylor 79 | TryBot-Result: Gobot Gobot 80 | Reviewed-by: Andrew Gerrand 81 | 82 | commit bc3bcfd4e76195ead984e9d2ae1a1783d1272dc4 83 | Author: Ian Lance Taylor 84 | Date: Wed Jun 22 09:47:42 2016 -0700 85 | 86 | html/template: update security model link 87 | 88 | Fixes #16148. 89 | 90 | Change-Id: Ifab773e986b768602476824d005eea9200761236 91 | Reviewed-on: https://go-review.googlesource.com/24327 92 | Run-TryBot: Ian Lance Taylor 93 | TryBot-Result: Gobot Gobot 94 | Reviewed-by: Andrew Gerrand 95 | 96 | commit b31ec5c564f02cf48d177853fd7bff9892be7ce6 97 | Author: Ian Lance Taylor 98 | Date: Wed Jun 22 06:27:31 2016 -0700 99 | 100 | cmd/yacc: error rather than panic when TEMPSIZE is too small 101 | 102 | I tried simply increasing the size of the slice but then I got an error 103 | because NSTATES was too small. Leaving a real fix for after 1.7. 104 | 105 | Update #16144. 106 | 107 | Change-Id: I8676772cb79845dd4ca1619977d4d54a2ce6de59 108 | Reviewed-on: https://go-review.googlesource.com/24321 109 | Run-TryBot: Ian Lance Taylor 110 | TryBot-Result: Gobot Gobot 111 | Reviewed-by: Andrew Gerrand 112 | 113 | commit 0dae2fd149537a0385b48bbd1564b3cfefa1c85b 114 | Author: Keith Randall 115 | Date: Wed Jun 1 14:18:00 2016 -0700 116 | 117 | cmd/objdump: fix disassembly suffixes 118 | 119 | MOVB $1, (AX) was being disassembled as MOVL $1, (AX). 120 | 121 | Use the memory size to override the standard size. 122 | Fix the tests. 123 | 124 | Fixes #15922 125 | 126 | Change-Id: If92fe74c33a21e5427c8c5cc97dd15e087edb860 127 | Reviewed-on: https://go-review.googlesource.com/23608 128 | Reviewed-by: Ian Lance Taylor 129 | Run-TryBot: Keith Randall 130 | TryBot-Result: Gobot Gobot 131 | 132 | commit 395f6ebaf9fd2954f5db3da4c7ad2817b0aa7252 133 | Author: Michael Munday 134 | Date: Fri Jun 17 16:09:15 2016 -0400 135 | 136 | CONTRIBUTORS: add people who contributed to s390x port (IBM CLA) 137 | 138 | Add Bill O'Farrell (corporate CLA for IBM) 139 | Add Karan Dhiman (corporate CLA for IBM) 140 | Add Sam Ding (corporate CLA for IBM) 141 | Add Tristan Amini (corporate CLA for IBM) 142 | Add Yu Heng Zhang (corporate CLA for IBM) 143 | Add Yu Xuan Zhang (corporate CLA for IBM) 144 | 145 | Change-Id: I9ab15e33954afc2c208fc2e420a72c5a4d865f9b 146 | Reviewed-on: https://go-review.googlesource.com/24350 147 | Reviewed-by: Ian Lance Taylor 148 | 149 | commit 4764d6fd6e64d9d40e7131a3bf4ea0eb1507ef1f 150 | Author: Alan Donovan 151 | Date: Wed Jun 22 10:41:30 2016 -0400 152 | 153 | cmd/vet/internal/cfg: don't crash on malformed goto statement 154 | 155 | Change-Id: Ib285c02e240f02e9d5511bd448163ec1d4e75516 156 | Reviewed-on: https://go-review.googlesource.com/24323 157 | Reviewed-by: Rob Pike 158 | 159 | commit f2c13d713d85650e4a850813d64681d6be5d2e29 160 | Author: Alan Donovan 161 | Date: Wed Jun 22 10:40:30 2016 -0400 162 | 163 | cmd/vet: fix a crash in lostcancel check 164 | 165 | Fixes issue 16143 166 | 167 | Change-Id: Id9d257aee54d31fbf0d478cb07339729cd9712c0 168 | Reviewed-on: https://go-review.googlesource.com/24325 169 | Reviewed-by: Rob Pike 170 | 171 | commit 1f446432ddfd64f1507e7c85cd603d3c5ae60094 172 | Author: Robert Griesemer 173 | Date: Tue Jun 21 14:27:40 2016 -0700 174 | 175 | cmd/compile: fix error msg mentioning different packages with same name 176 | 177 | This is a regression from 1.6. The respective code in importimport 178 | (export.go) was not exactly replicated with the new importer. Also 179 | copied over the missing cyclic import check. 180 | 181 | Added test cases. 182 | 183 | Fixes #16133. 184 | 185 | Change-Id: I1e0a39ff1275ca62a8054874294d400ed83fb26a 186 | Reviewed-on: https://go-review.googlesource.com/24312 187 | Reviewed-by: Ian Lance Taylor 188 | Run-TryBot: Robert Griesemer 189 | 190 | commit 845992eeed01643bfb2e88aa559413908b3cb508 191 | Author: Robert Griesemer 192 | Date: Tue Jun 21 15:33:04 2016 -0700 193 | 194 | test: add -s flag to commands understood by run.go 195 | 196 | If -s is specified, each file is considered a separate 197 | package even if multiple files have the same package names. 198 | 199 | For instance, the action and flag "errorcheckdir -s" 200 | will compile all files in the respective directory as 201 | individual packages. 202 | 203 | Change-Id: Ic5c2f9e915a669433f66c2d3fe0ac068227a502f 204 | Reviewed-on: https://go-review.googlesource.com/24313 205 | Run-TryBot: Robert Griesemer 206 | Reviewed-by: Ian Lance Taylor 207 | 208 | commit eaf4ad6f7493c222a6b27609fcb24e950eb540ab 209 | Author: Alan Donovan 210 | Date: Tue Jun 21 11:11:50 2016 -0400 211 | 212 | doc: describe vet -lostcancel in go1.7 release notes 213 | 214 | Change-Id: Ie1c95fd0869307551bfcf76bf45c13372723fbba 215 | Reviewed-on: https://go-review.googlesource.com/24288 216 | Reviewed-by: Rob Pike 217 | 218 | commit b65cb7f198836faf6605051b95bd60a169fa5e8b 219 | Author: Alan Donovan 220 | Date: Tue Jun 14 23:50:39 2016 -0400 221 | 222 | cmd/vet: -lostcancel: check for discarded result of context.WithCancel 223 | 224 | The cfg subpackage builds a control flow graph of ast.Nodes. 225 | The lostcancel module checks this graph to find paths, from a call to 226 | WithCancel to a return statement, on which the cancel variable is 227 | not used. (A trivial case is simply assigning the cancel result to 228 | the blank identifier.) 229 | 230 | In a sample of 50,000 source files, the new check found 2068 blank 231 | assignments and 118 return-before-cancel errors. I manually inspected 232 | 20 of the latter and didn't find a single false positive among them. 233 | 234 | Change-Id: I84cd49445f9f8d04908b04881eb1496a96611205 235 | Reviewed-on: https://go-review.googlesource.com/24150 236 | Reviewed-by: Robert Griesemer 237 | Reviewed-by: Rob Pike 238 | 239 | commit d28242724872c6ab82d53a71fc775095d1171ee7 240 | Author: qeed 241 | Date: Mon Jun 20 21:11:53 2016 -0400 242 | 243 | cmd/cgo: error, not panic, if not enough arguments to function 244 | 245 | Fixes #16116. 246 | 247 | Change-Id: Ic3cb0b95382bb683368743bda49b4eb5fdcc35c0 248 | Reviewed-on: https://go-review.googlesource.com/24286 249 | Reviewed-by: Emmanuel Odeke 250 | Reviewed-by: Ian Lance Taylor 251 | Run-TryBot: Ian Lance Taylor 252 | TryBot-Result: Gobot Gobot 253 | 254 | commit 86b031018550ff1848ebe7c471c54c5a58fb1a3d 255 | Author: Rob Pike 256 | Date: Mon Jun 20 15:39:03 2016 -0700 257 | 258 | text/template: clarify the default formatting used for values 259 | 260 | Fixes #16105. 261 | 262 | Change-Id: I94467f2adf861eb38f3119ad30d46a87456d5305 263 | Reviewed-on: https://go-review.googlesource.com/24281 264 | Reviewed-by: Andrew Gerrand 265 | 266 | commit 252eda470a3684a1ead5956f7e703532f4213f11 267 | Author: Ian Lance Taylor 268 | Date: Mon Jun 20 14:00:58 2016 -0700 269 | 270 | cmd/pprof: don't use offset if we don't have a start address 271 | 272 | The test is in the runtime package because there are other tests of 273 | pprof there. At some point we should probably move them all into a pprof 274 | testsuite. 275 | 276 | Fixes #16128. 277 | 278 | Change-Id: Ieefa40c61cf3edde11fe0cf04da1debfd8b3d7c0 279 | Reviewed-on: https://go-review.googlesource.com/24274 280 | Run-TryBot: Ian Lance Taylor 281 | TryBot-Result: Gobot Gobot 282 | Reviewed-by: Andrew Gerrand 283 | 284 | commit 09834d1c082a2437b12584bebaa7353377e66f1a 285 | Author: Ian Lance Taylor 286 | Date: Mon Jun 20 15:53:11 2016 -0700 287 | 288 | runtime: panic with the right error on iface conversion 289 | 290 | A straight conversion from a type T to an interface type I, where T does 291 | not implement I, should always panic with an interface conversion error 292 | that shows the missing method. This was not happening if the conversion 293 | was done once using the comma-ok form (the result would not be OK) and 294 | then again in a straight conversion. Due to an error in the runtime 295 | package the second conversion was failing with a nil pointer 296 | dereference. 297 | 298 | Fixes #16130. 299 | 300 | Change-Id: I8b9fca0f1bb635a6181b8b76de8c2385bb7ac2d2 301 | Reviewed-on: https://go-review.googlesource.com/24284 302 | Run-TryBot: Ian Lance Taylor 303 | Reviewed-by: Michel Lespinasse 304 | TryBot-Result: Gobot Gobot 305 | Reviewed-by: Andrew Gerrand 306 | Reviewed-by: Keith Randall 307 | 308 | commit 659b9a19aa509df35f984276e177c68ff7f6f632 309 | Author: Ian Lance Taylor 310 | Date: Mon Jun 20 09:16:17 2016 -0700 311 | 312 | runtime: set PPROF_TMPDIR before running pprof 313 | 314 | Fixes #16121. 315 | 316 | Change-Id: I7b838fb6fb9f098e6c348d67379fdc81fb0d69a4 317 | Reviewed-on: https://go-review.googlesource.com/24270 318 | Run-TryBot: Ian Lance Taylor 319 | TryBot-Result: Gobot Gobot 320 | Reviewed-by: Michael Hudson-Doyle 321 | 322 | commit 109823ec93e690f2a401c316210ee86bde53d6bf 323 | Author: Andrew Gerrand 324 | Date: Mon Jun 20 13:30:04 2016 +1000 325 | 326 | cmd/go: for generate, use build context values for GOOS/GOARCH 327 | 328 | Fixes #16120 329 | 330 | Change-Id: Ia352558231e00baab5c698e93d7267564c07ec0c 331 | Reviewed-on: https://go-review.googlesource.com/24242 332 | Reviewed-by: Ian Lance Taylor 333 | Run-TryBot: Andrew Gerrand 334 | TryBot-Result: Gobot Gobot 335 | 336 | commit e1a6e71e746d511570f269d43b9abf838505a8e5 337 | Author: Ian Lance Taylor 338 | Date: Mon Jun 20 15:43:21 2016 -0700 339 | 340 | test: add missing copyright notice 341 | 342 | Change-Id: I2a5353203ca2958fa37fc7a5ea3f22ad4fc62b0e 343 | Reviewed-on: https://go-review.googlesource.com/24282 344 | Run-TryBot: Ian Lance Taylor 345 | TryBot-Result: Gobot Gobot 346 | Reviewed-by: David Chase 347 | 348 | commit 349f0fb89a11c9aa579bc0facab375d6ffb7ad43 349 | Author: Andrew Gerrand 350 | Date: Mon Jun 20 15:33:52 2016 +1000 351 | 352 | doc: update architectures on source install instructions 353 | 354 | Fixes #16099 355 | 356 | Change-Id: I334c1f04dfc98c4a07e33745819d890b5fcb1673 357 | Reviewed-on: https://go-review.googlesource.com/24243 358 | Reviewed-by: Josh Bleecher Snyder 359 | 360 | commit 20fd1bb8bdbd8ead3d707ad13b560a375a7b3967 361 | Author: Mikio Hara 362 | Date: Mon Jun 20 10:40:07 2016 +0900 363 | 364 | doc/go1.7.html: don't mention obsolete RFC 365 | 366 | Change-Id: Ia978c10a97e4c24fd7cf1fa4a7c3bd886d20bbf8 367 | Reviewed-on: https://go-review.googlesource.com/24241 368 | Reviewed-by: Andrew Gerrand 369 | 370 | commit 153d31da1629facdc855ad0e4e91369ec2124ac7 371 | Author: Emmanuel Odeke 372 | Date: Sun Jun 19 17:30:29 2016 -0700 373 | 374 | doc/go1.7.html: net/http RFC 2616 conformation + timeoutHandler on empty body 375 | 376 | - Mention RFC 2616 conformation in which the server now only sends one 377 | "Transfer-Encoding" header when "chunked" is explicitly set. 378 | - Mention that a timeout handler now sends a 200 status code on 379 | encountering an empty response body instead of sending back 0. 380 | 381 | Change-Id: Id45e2867390f7e679ab40d7a66db1f7b9d92ce17 382 | Reviewed-on: https://go-review.googlesource.com/24250 383 | Reviewed-by: Andrew Gerrand 384 | 385 | commit 691c5c156878799ec15683f10e24d9a924ea7996 386 | Author: Alex Brainman 387 | Date: Fri Jun 17 14:05:35 2016 +1000 388 | 389 | debug/pe: handle files with no string table 390 | 391 | pecoff.doc (https://goo.gl/ayvckk) in section 5.6 says: 392 | 393 | Immediately following the COFF symbol table is the COFF string table. 394 | The position of this table is found by taking the symbol table address 395 | in the COFF header, and adding the number of symbols multiplied by 396 | the size of a symbol. 397 | 398 | So it is unclear what to do when symbol table address is 0. 399 | Lets assume executable does not have any string table. 400 | 401 | Added new test with executable with no symbol table. The 402 | 403 | gcc -s testdata\hello.c -o testdata\gcc-386-mingw-no-symbols-exec. 404 | 405 | command was used to generate the executable. 406 | 407 | Fixes #16084 408 | 409 | Change-Id: Ie74137ac64b15daadd28e1f0315f3b62d1bf2059 410 | Reviewed-on: https://go-review.googlesource.com/24200 411 | Reviewed-by: Ian Lance Taylor 412 | Run-TryBot: Ian Lance Taylor 413 | TryBot-Result: Gobot Gobot 414 | 415 | commit f3d54789f764f0f6dba1d2f12ad01986d66ea31c 416 | Author: Michael Munday 417 | Date: Thu Jun 16 18:12:48 2016 -0400 418 | 419 | cmd/compile: use power5 instructions for uint64 to float casts 420 | 421 | Use the same technique as mips64 for these casts (CL 22835). 422 | 423 | We could use the FCFIDU instruction for ppc64le however it seems 424 | better to keep it the same as ppc64 for now. 425 | 426 | Updates #15539, updates #16004. 427 | 428 | Change-Id: I550680e485327568bf3238c4615a6cc8de6438d7 429 | Reviewed-on: https://go-review.googlesource.com/24191 430 | Reviewed-by: David Chase 431 | Run-TryBot: Michael Munday 432 | TryBot-Result: Gobot Gobot 433 | 434 | commit 9e8fa1e99c2003cee53a6630aea9d8a3627492ab 435 | Author: Austin Clements 436 | Date: Fri Jun 17 11:07:56 2016 -0400 437 | 438 | runtime: eliminate poisonStack checks 439 | 440 | We haven't used poisonStack since we switched to 1-bit stack maps 441 | (4d0f3a1), but the checks are still there. However, nothing prevents 442 | us from genuinely allocating an object at this address on 32-bit and 443 | causing the runtime to crash claiming that it's found a bad pointer. 444 | 445 | Since we're not using poisonStack anyway, just pull it out. 446 | 447 | Fixes #15831. 448 | 449 | Change-Id: Ia6ef604675b8433f75045e369f5acd4644a5bb38 450 | Reviewed-on: https://go-review.googlesource.com/24211 451 | Run-TryBot: Austin Clements 452 | Reviewed-by: Keith Randall 453 | 454 | commit fca9fc52c831ab6af56e30f8c48062a99ded2580 455 | Author: Austin Clements 456 | Date: Thu Jun 16 15:41:33 2016 -0400 457 | 458 | runtime: fix stale comment in lfstack 459 | 460 | Change-Id: I6ef08f6078190dc9df0b2df4f26a76456602f5e8 461 | Reviewed-on: https://go-review.googlesource.com/24176 462 | Reviewed-by: Rick Hudson 463 | 464 | commit 79f2f008a31f769ae3db684eb48d8baeda731c00 465 | Author: Austin Clements 466 | Date: Thu Jun 16 14:38:33 2016 -0400 467 | 468 | cmd/dist: make zosarch.go deterministic 469 | 470 | Currently zosarch.go is written out in non-deterministic map order. 471 | Sort the keys and write it out in sorted order to make the generated 472 | file contents deterministic. 473 | 474 | Change-Id: Id490f0e8665a2c619c5a7a00a30f4fc64f333258 475 | Reviewed-on: https://go-review.googlesource.com/24174 476 | Run-TryBot: Austin Clements 477 | TryBot-Result: Gobot Gobot 478 | Reviewed-by: Robert Griesemer 479 | Reviewed-by: Ian Lance Taylor 480 | 481 | commit c3818e56d0f60493a63b2bb03a09f261d3e0ada2 482 | Author: Hana Kim 483 | Date: Wed Jun 15 12:53:05 2016 -0400 484 | 485 | internal/trace: err if binary is not supplied for old trace 486 | 487 | Change-Id: Id25c90993c4cbb7449d7031301b6d214a67d7633 488 | Reviewed-on: https://go-review.googlesource.com/24134 489 | Reviewed-by: Dmitry Vyukov 490 | Run-TryBot: Dmitry Vyukov 491 | TryBot-Result: Gobot Gobot 492 | ``` 493 | -------------------------------------------------------------------------------- /reports/2016/golang-06-16.md: -------------------------------------------------------------------------------- 1 | # June 16, 2016 Report 2 | 3 | Number of commits: 32 4 | 5 | ## Compilation time 6 | 7 | * github.com/coreos/etcd/cmd: from 14.458248604s to 14.518299282s, +0.42% 8 | * github.com/boltdb/bolt/cmd/bolt: from 547.141317ms to 553.29184ms, +1.12% 9 | * github.com/gogits/gogs: from 12.988071383s to 12.911730568s, -0.59% 10 | * github.com/spf13/hugo: from 6.724718371s to 8.411540397s, +25.08% 11 | * github.com/influxdata/influxdb/cmd/influxd: from 6.624849543s to 6.09212415s, -8.04% 12 | * github.com/nsqio/nsq/apps/nsqd: from 2.179579787s to 2.216044118s, +1.67% 13 | * github.com/mholt/caddy: from 270.394164ms to 267.701648ms, -1.00% 14 | 15 | ## Binary size: 16 | 17 | * github.com/coreos/etcd/cmd: from 25685467 to 25727105, +0.16% 18 | * github.com/boltdb/bolt/cmd/bolt: from 2652945 to 2665904, +0.49% 19 | * github.com/gogits/gogs: from 23557580 to 23595278, +0.16% 20 | * github.com/spf13/hugo: from 15134034 to 15167579, +0.22% 21 | * github.com/influxdata/influxdb/cmd/influxd: from 16260059 to 16293562, +0.21% 22 | * github.com/nsqio/nsq/apps/nsqd: from 10008482 to 10033736, +0.25% 23 | * github.com/mholt/caddy: from 13044558 to 13044558, ~ 24 | 25 | ## Bechmarks: 26 | 27 | ``` 28 | benchmark old ns/op new ns/op delta 29 | BenchmarkMsgpMarshal-4 192 192 +0.00% 30 | BenchmarkMsgpUnmarshal-4 404 402 -0.50% 31 | BenchmarkEasyJsonMarshal-4 1581 1592 +0.70% 32 | BenchmarkEasyJsonUnmarshal-4 1515 1525 +0.66% 33 | BenchmarkFlatBuffersMarshal-4 365 359 -1.64% 34 | BenchmarkFlatBuffersUnmarshal-4 290 291 +0.34% 35 | BenchmarkGogoprotobufMarshal-4 164 164 +0.00% 36 | BenchmarkGogoprotobufUnmarshal-4 250 260 +4.00% 37 | 38 | benchmark old allocs new allocs delta 39 | BenchmarkMsgpMarshal-4 1 1 +0.00% 40 | BenchmarkMsgpUnmarshal-4 3 3 +0.00% 41 | BenchmarkEasyJsonMarshal-4 5 5 +0.00% 42 | BenchmarkEasyJsonUnmarshal-4 4 4 +0.00% 43 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 44 | BenchmarkFlatBuffersUnmarshal-4 3 3 +0.00% 45 | BenchmarkGogoprotobufMarshal-4 1 1 +0.00% 46 | BenchmarkGogoprotobufUnmarshal-4 3 3 +0.00% 47 | 48 | benchmark old bytes new bytes delta 49 | BenchmarkMsgpMarshal-4 128 128 +0.00% 50 | BenchmarkMsgpUnmarshal-4 112 112 +0.00% 51 | BenchmarkEasyJsonMarshal-4 784 784 +0.00% 52 | BenchmarkEasyJsonUnmarshal-4 159 160 +0.63% 53 | BenchmarkFlatBuffersMarshal-4 0 0 +0.00% 54 | BenchmarkFlatBuffersUnmarshal-4 112 112 +0.00% 55 | BenchmarkGogoprotobufMarshal-4 64 64 +0.00% 56 | BenchmarkGogoprotobufUnmarshal-4 96 96 +0.00% 57 | ``` 58 | 59 | ## Highlights: 60 | 61 | 62 | ## GIT Log 63 | 64 | ``` 65 | commit ea2ac3fe5fb2011b077809e60bc018e0c6caa66c 66 | Author: Ian Lance Taylor 67 | Date: Wed Jun 15 10:36:48 2016 -0700 68 | 69 | runtime: remove useless loop from CgoCCodeSIGPROF test program 70 | 71 | I verified that the test fails if I undo the change that it tests for. 72 | 73 | Updates #14732. 74 | 75 | Change-Id: Ib30352580236adefae946450ddd6cd65a62b7cdf 76 | Reviewed-on: https://go-review.googlesource.com/24151 77 | Run-TryBot: Ian Lance Taylor 78 | TryBot-Result: Gobot Gobot 79 | Reviewed-by: Mikio Hara 80 | 81 | commit d78d0de4d15019f87b04b49ba640a455f7c42512 82 | Author: Matthew Dempsky 83 | Date: Wed Jun 15 12:33:47 2016 -0700 84 | 85 | go/ast: fix comments misinterpreted as documentation 86 | 87 | The comments describing blocks of Pos/End implementations for various 88 | nodes types are being misinterpreted as documentation for BadDecl, 89 | BadExpr, BadStmt, and ImportSpec's Pos methods. 90 | 91 | Change-Id: I935b0bc38dbc13e9305f3efeb437dd3a6575d9a1 92 | Reviewed-on: https://go-review.googlesource.com/24152 93 | Reviewed-by: Robert Griesemer 94 | 95 | commit 26d6dc6bf8a7e5487844a63aa26a4de3afdd688e 96 | Author: Ian Lance Taylor 97 | Date: Tue Jun 14 14:38:22 2016 -0700 98 | 99 | runtime: if the test program hangs, try to get a stack trace 100 | 101 | This is an attempt to get more information for #14809, which seems to 102 | occur rarely. 103 | 104 | Updates #14809. 105 | 106 | Change-Id: Idbeb136ceb57993644e03266622eb699d2685d02 107 | Reviewed-on: https://go-review.googlesource.com/24110 108 | Reviewed-by: Mikio Hara 109 | Reviewed-by: Austin Clements 110 | 111 | commit 48cc3c4b587f9549f7426776d032da99b3ba471b 112 | Author: Cherry Zhang 113 | Date: Tue Jun 14 15:33:15 2016 -0400 114 | 115 | syscall: skip TestUnshare if kernel does not support net namespace 116 | 117 | Fixes #16056. 118 | 119 | Change-Id: Ic3343914742713851b8ae969b101521f25e85e7b 120 | Reviewed-on: https://go-review.googlesource.com/24132 121 | Reviewed-by: Ian Lance Taylor 122 | Run-TryBot: Ian Lance Taylor 123 | TryBot-Result: Gobot Gobot 124 | 125 | commit 0ec62565f911575beaf7d047dfe1eae2ae02bf67 126 | Author: Andrew Gerrand 127 | Date: Wed Jun 15 10:52:42 2016 +1000 128 | 129 | net/http: pass through server side Transfer-Encoding headers 130 | 131 | Fixes #16063 132 | 133 | Change-Id: I2e8695beb657b0aef067e83f086828d8857787ed 134 | Reviewed-on: https://go-review.googlesource.com/24130 135 | Reviewed-by: Ian Lance Taylor 136 | Run-TryBot: Ian Lance Taylor 137 | TryBot-Result: Gobot Gobot 138 | 139 | commit c4692da9231c244a1275d42055e703b3f1dac25b 140 | Author: Sameer Ajmani 141 | Date: Tue Jun 14 16:48:42 2016 -0400 142 | 143 | context: document how to release resources associated with Contexts. 144 | 145 | Some users don't realize that creating a Context with a CancelFunc 146 | attaches a subtree to the parent, and that that subtree is not released 147 | until the CancelFunc is called or the parent is canceled. Make this 148 | clear early in the package docs, so that people learning about this 149 | package have the right conceptual model. 150 | 151 | Change-Id: I7c77a546c19c3751dd1f3a5bc827ad106dd1afbf 152 | Reviewed-on: https://go-review.googlesource.com/24090 153 | Reviewed-by: Alan Donovan 154 | Reviewed-by: Ian Lance Taylor 155 | 156 | commit 68697a3e82e19fef04c6af4a02340a1aa6e3bcf2 157 | Author: Ian Lance Taylor 158 | Date: Tue Jun 14 15:32:39 2016 -0700 159 | 160 | net: don't run TestLookupDotsWithLocalSource in short mode 161 | 162 | Do run it on the builders, though. 163 | 164 | Fixes #15881. 165 | 166 | Change-Id: Ie42204d553cb18547ffd6441afc261717bbd9205 167 | Reviewed-on: https://go-review.googlesource.com/24111 168 | Run-TryBot: Ian Lance Taylor 169 | Reviewed-by: Mikio Hara 170 | TryBot-Result: Gobot Gobot 171 | 172 | commit 9208ed322459809cf26f65485d0e6d248dadb830 173 | Author: Mikio Hara 174 | Date: Wed Jun 15 01:09:51 2016 +0900 175 | 176 | os: fix blockUntilWaitable on freebsd/{386,arm} 177 | 178 | The previous fix was wrong because it had two misunderstandings on 179 | freebsd32 calling convention like the following: 180 | - 32-bit id1 implies that it is the upper half of 64-bit id, indeed it 181 | depends on machine endianness. 182 | - 32-bit ARM calling convension doesn't conform to freebsd32_args, 183 | indeed it does. 184 | 185 | This change fixes the bugs and makes blockUntilWaitable work correctly 186 | on freebsd/{386,arm}. 187 | 188 | Fixes #16064. 189 | 190 | Change-Id: I820c6d01d59a43ac4f2ab381f757c03b14bca75e 191 | Reviewed-on: https://go-review.googlesource.com/24064 192 | Reviewed-by: Ian Lance Taylor 193 | 194 | commit af0fc83985860776551d15be3a8fefde35514bcb 195 | Author: David Crawshaw 196 | Date: Tue Jun 14 10:20:11 2016 -0400 197 | 198 | cmd/compile, etc: handle many struct fields 199 | 200 | This adds 8 bytes of binary size to every type that has methods. It is 201 | the smallest change I could come up with for 1.7. 202 | 203 | Fixes #16037 204 | 205 | Change-Id: Ibe15c3165854a21768596967757864b880dbfeed 206 | Reviewed-on: https://go-review.googlesource.com/24070 207 | Reviewed-by: Keith Randall 208 | Run-TryBot: David Crawshaw 209 | TryBot-Result: Gobot Gobot 210 | 211 | commit 53242e49b127ede6d7b258c7e90c39a5afa70c25 212 | Author: Ian Lance Taylor 213 | Date: Tue Jun 7 09:42:48 2016 -0700 214 | 215 | crypto/x509: don't ignore asn1.Marshal error 216 | 217 | I don't see how the call could fail, so, no test. Just a code cleanup in 218 | case it can fail in the future. 219 | 220 | Fixes #15987. 221 | 222 | Change-Id: If4af0d5e7d19cc8b13fb6a4f7661c37fb0015e83 223 | Reviewed-on: https://go-review.googlesource.com/23860 224 | Run-TryBot: Ian Lance Taylor 225 | TryBot-Result: Gobot Gobot 226 | Reviewed-by: Mikio Hara 227 | 228 | commit 0deb49f9c09d15bf0e4c5ec843bd374f9a377e97 229 | Author: Ian Lance Taylor 230 | Date: Mon Jun 13 11:55:30 2016 -0700 231 | 232 | cmd/go: include .syso files even if CGO_ENABLED=0 233 | 234 | A .syso file may include information that should go into the object file 235 | that is not object code, and should be included even if not using cgo. 236 | The example in the issue is a Windows manifest file. 237 | 238 | Fixes #16050. 239 | 240 | Change-Id: I1f4f3f80bb007e84d153ca2d26e5919213ea4f8d 241 | Reviewed-on: https://go-review.googlesource.com/24032 242 | Run-TryBot: Ian Lance Taylor 243 | Reviewed-by: Alex Brainman 244 | 245 | commit 9273e25eccbe82edff839b125b49bfb5578f24eb 246 | Author: Ian Lance Taylor 247 | Date: Fri Jun 10 10:41:36 2016 -0700 248 | 249 | cmd/go: remove obsolete comment referring to deleted parameter 250 | 251 | The dir parameter was removed in https://golang.org/cl/5732045. 252 | 253 | Fixes #15503. 254 | 255 | Change-Id: I02a6d8317233bea08633715a095ea2514822032b 256 | Reviewed-on: https://go-review.googlesource.com/24011 257 | Run-TryBot: Ian Lance Taylor 258 | TryBot-Result: Gobot Gobot 259 | Reviewed-by: Dmitri Shuralyov 260 | Reviewed-by: Andrew Gerrand 261 | 262 | commit cab87a60dec2c771c12ba08b82bb7645228192e6 263 | Author: Mikio Hara 264 | Date: Tue Jun 14 10:14:28 2016 +0900 265 | 266 | os: fix build on freebsd/arm 267 | 268 | Change-Id: I21fad94ff94e342ada18e0e41ca90296d030115f 269 | Reviewed-on: https://go-review.googlesource.com/24061 270 | Run-TryBot: Mikio Hara 271 | TryBot-Result: Gobot Gobot 272 | Reviewed-by: Ian Lance Taylor 273 | 274 | commit 5d876e3e2eb3a30a8c66888912cf41785fa65a96 275 | Author: Mikio Hara 276 | Date: Sat Jun 11 19:55:34 2016 +0900 277 | 278 | os: use wait6 to avoid wait/kill race on freebsd 279 | 280 | This change is a followup to https://go-review.googlesource.com/23967 281 | for FreeBSD. 282 | 283 | Updates #13987. 284 | Updates #16028. 285 | 286 | Change-Id: I0f0737372fce6df89d090fe9847305749b79eb4c 287 | Reviewed-on: https://go-review.googlesource.com/24021 288 | Reviewed-by: Ian Lance Taylor 289 | 290 | commit ccd9a55609fcc8814146a7c61898b47e3a7aea7d 291 | Author: Mikio Hara 292 | Date: Sat Jun 11 19:36:17 2016 +0900 293 | 294 | os: use waitid to avoid wait/kill race on darwin 295 | 296 | This change is a followup to https://go-review.googlesource.com/23967 297 | for Darwin. 298 | 299 | Updates #13987. 300 | Updates #16028. 301 | 302 | Change-Id: Ib1fb9f957fafd0f91da6fceea56620e29ad82b00 303 | Reviewed-on: https://go-review.googlesource.com/24020 304 | Reviewed-by: Ian Lance Taylor 305 | 306 | commit 84d8aff94cf48439047c7edc68ae2ea0aac6ddf5 307 | Author: Ian Lance Taylor 308 | Date: Tue Jun 7 21:46:25 2016 -0700 309 | 310 | runtime: collect stack trace if SIGPROF arrives on non-Go thread 311 | 312 | Fixes #15994. 313 | 314 | Change-Id: I5aca91ab53985ac7dcb07ce094ec15eb8ec341f8 315 | Reviewed-on: https://go-review.googlesource.com/23891 316 | Run-TryBot: Ian Lance Taylor 317 | Reviewed-by: Austin Clements 318 | TryBot-Result: Gobot Gobot 319 | 320 | commit 5701174c52a2d42621ec3c5c59dca3bde9a14bc6 321 | Author: Keith Randall 322 | Date: Sat Jun 11 17:12:28 2016 -0700 323 | 324 | cmd/link: put padding between functions, not at the end of a function 325 | 326 | Functions should be declared to end after the last real instruction, not 327 | after the last padding byte. We achieve this by adding the padding while 328 | assembling the text section in the linker instead of adding the padding 329 | to the function symbol in the compiler. This change makes dtrace happy. 330 | 331 | TODO: check that this works with external linking 332 | 333 | Fixes #15969 334 | 335 | Change-Id: I973e478d0cd34b61be1ddc55410552cbd645ad62 336 | Reviewed-on: https://go-review.googlesource.com/24040 337 | Run-TryBot: Keith Randall 338 | TryBot-Result: Gobot Gobot 339 | Reviewed-by: Ian Lance Taylor 340 | 341 | commit 595426c0d903a3686bdfe6d0e8ef268a60c19896 342 | Author: David Chase 343 | Date: Fri Jun 10 11:51:46 2016 -0400 344 | 345 | cmd/compile: fix OASWB rewriting in racewalk 346 | 347 | Special case for rewriting OAS inits omitted OASWB, added 348 | that and OAS2FUNC. The special case cannot be default case, 349 | that causes racewalk to fail in horrible ways. 350 | 351 | Fixes #16008. 352 | 353 | Change-Id: Ie0d2f5735fe9d8255a109597b36d196d4f86703a 354 | Reviewed-on: https://go-review.googlesource.com/23954 355 | Reviewed-by: Keith Randall 356 | Reviewed-by: Dmitry Vyukov 357 | Run-TryBot: David Chase 358 | TryBot-Result: Gobot Gobot 359 | 360 | commit 2ba3d5fc9661846cc3ef66ffc2b8bf2f91909d73 361 | Author: Dmitri Shuralyov 362 | Date: Fri Jun 10 01:38:43 2016 -0700 363 | 364 | cmd/go: remove invalid space in import comment docs 365 | 366 | Generate package comment in alldocs.go using line comments rather than 367 | general comments. This scales better, general comments cannot contain the 368 | "*/" character sequence. Line comments do not have any restrictions on 369 | the comment text that can be contained. 370 | 371 | Remove the dependency on sed, which is not cross-platform, not go-gettable 372 | external command. 373 | 374 | Remove trailing whitespace from usage string in test.go. It's unnecessary. 375 | 376 | Fixes #16030. 377 | 378 | Change-Id: I3c0bc9955e7c7603c3d1fb4878218b0719d02e04 379 | Reviewed-on: https://go-review.googlesource.com/23968 380 | Reviewed-by: Ian Lance Taylor 381 | Run-TryBot: Ian Lance Taylor 382 | TryBot-Result: Gobot Gobot 383 | 384 | commit c83e6f50d983d81166d21736ff9ab0ad2182f0fa 385 | Author: Keith Randall 386 | Date: Thu May 26 08:56:49 2016 -0700 387 | 388 | runtime: aeshash, xor seed in earlier 389 | 390 | Instead of doing: 391 | 392 | x = input 393 | one round of aes on x 394 | x ^= seed 395 | two rounds of aes on x 396 | 397 | Do: 398 | 399 | x = input 400 | x ^= seed 401 | three rounds of aes on x 402 | 403 | This change provides some additional seed-dependent scrambling 404 | which should help prevent collisions. 405 | 406 | Change-Id: I02c774d09c2eb6917cf861513816a1024a9b65d7 407 | Reviewed-on: https://go-review.googlesource.com/23577 408 | Reviewed-by: Ian Lance Taylor 409 | Run-TryBot: Keith Randall 410 | TryBot-Result: Gobot Gobot 411 | 412 | commit cea29c4a358004d84d8711a07628c2f856b381e8 413 | Author: Ian Lance Taylor 414 | Date: Thu Jun 9 22:24:40 2016 -0700 415 | 416 | os: on GNU/Linux use waitid to avoid wait/kill race 417 | 418 | On systems that support the POSIX.1-2008 waitid function, we can use it 419 | to block until a wait will succeed. This avoids a possible race 420 | condition: if a program calls p.Kill/p.Signal and p.Wait from two 421 | different goroutines, then it is possible for the wait to complete just 422 | before the signal is sent. In that case, it is possible that the system 423 | will start a new process using the same PID between the wait and the 424 | signal, causing the signal to be sent to the wrong process. The 425 | Process.isdone field attempts to avoid that race, but there is a small 426 | gap of time between when wait returns and isdone is set when the race 427 | can occur. 428 | 429 | This CL avoids that race by using waitid to wait until the process has 430 | exited without actually collecting the PID. Then it sets isdone, then 431 | waits for any active signals to complete, and only then collects the PID. 432 | 433 | No test because any plausible test would require starting enough 434 | processes to recycle all the process IDs. 435 | 436 | Update #13987. 437 | Update #16028. 438 | 439 | Change-Id: Id2939431991d3b355dfb22f08793585fc0568ce8 440 | Reviewed-on: https://go-review.googlesource.com/23967 441 | Run-TryBot: Ian Lance Taylor 442 | Reviewed-by: Austin Clements 443 | TryBot-Result: Gobot Gobot 444 | 445 | commit e980a3d8856ec3b4f11daa7e5ec417ad4f5c5256 446 | Author: Robert Griesemer 447 | Date: Fri Jun 10 10:27:37 2016 -0700 448 | 449 | go/parser: document that parse functions need valid token.FileSet 450 | 451 | + panic with explicit error if no file set it provided 452 | 453 | (Not providing a file set is invalid use of the API; panic 454 | is the appropriate action rather than returning an error.) 455 | 456 | Fixes #16018. 457 | 458 | Change-Id: I207f5b2a2e318d65826bdd9522fce46d614c24ee 459 | Reviewed-on: https://go-review.googlesource.com/24010 460 | Run-TryBot: Robert Griesemer 461 | Reviewed-by: Ian Lance Taylor 462 | TryBot-Result: Gobot Gobot 463 | 464 | commit fee02d270bf850d5b390000d8545c3609718e9a5 465 | Author: Ian Lance Taylor 466 | Date: Thu Jun 9 06:42:42 2016 -0700 467 | 468 | cmd/go: clarify go get documentation 469 | 470 | Make the documentation for `go get` match the documentation for `go 471 | install`, since `go get` essentially invokes `go install`. 472 | 473 | Update #15825. 474 | 475 | Change-Id: I374d80efd301814b6d98b86b7a4a68dd09704c92 476 | Reviewed-on: https://go-review.googlesource.com/23925 477 | Reviewed-by: Andrew Gerrand 478 | 479 | commit 5f3eb432884ae1b3c61977d93a4bdf0263fcdce6 480 | Author: Michael Munday 481 | Date: Thu Jun 9 12:01:43 2016 -0400 482 | 483 | syscall: add a padding field to EpollEvent on s390x 484 | 485 | Fixes #16021. 486 | 487 | Change-Id: I55df38bbccd2641abcb54704115002a9aa04325d 488 | Reviewed-on: https://go-review.googlesource.com/23962 489 | Run-TryBot: Michael Munday 490 | TryBot-Result: Gobot Gobot 491 | Reviewed-by: Ian Lance Taylor 492 | 493 | commit 8042bfe347d5b2c4f6af372b09b23c8945fb196e 494 | Author: Jess Frazelle 495 | Date: Fri May 20 14:35:28 2016 -0700 496 | 497 | encoding/csv: update doc about comments whitespace 498 | 499 | This patch updates the doc about comments whitespace for the 500 | encoding/csv package to reflect that leading whitespace before 501 | the hash will treat the line as not a comment. 502 | 503 | Fixes #13775. 504 | 505 | Change-Id: Ia468c75b242a487b4b2b4cd3d342bfb8e07720ba 506 | Reviewed-on: https://go-review.googlesource.com/23302 507 | Reviewed-by: Ian Lance Taylor 508 | 509 | commit cbc26869b7835e45359dad7dfb70e85c02c820cd 510 | Author: Cherry Zhang 511 | Date: Wed Jun 8 22:22:35 2016 -0400 512 | 513 | runtime: set $sp before $pc in gdb python script 514 | 515 | When setting $pc, gdb does a backtrace using the current value of $sp, 516 | and it may complain if $sp does not match that $pc (although the 517 | assignment went through successfully). 518 | 519 | This happens with ARM SSA backend: when setting $pc it prints 520 | > Cannot access memory at address 0x0 521 | 522 | As well as occasionally on MIPS64: 523 | > warning: GDB can't find the start of the function at 0xc82003fe07. 524 | > ... 525 | 526 | Setting $sp before setting $pc makes it happy. 527 | 528 | Change-Id: Idd96dbef3e9b698829da553c6d71d5b4c6d492db 529 | Reviewed-on: https://go-review.googlesource.com/23940 530 | Reviewed-by: Ian Lance Taylor 531 | Reviewed-by: Austin Clements 532 | 533 | commit e3f1c66f313a59888620c415163b93c12153574e 534 | Author: Keith Randall 535 | Date: Thu Jun 9 11:07:36 2016 -0700 536 | 537 | cmd/compile: for tail calls in stubs, ensure args are alive 538 | 539 | The generated code for interface stubs sometimes just messes 540 | with a few of the args and then tail-calls to the target routine. 541 | The args that aren't explicitly modified appear to not be used. 542 | But they are used, by the thing we're tail calling. 543 | 544 | Fixes #16016 545 | 546 | Change-Id: Ib9b3a8311bb714a201daee002885fcb59e0463fa 547 | Reviewed-on: https://go-review.googlesource.com/23960 548 | Run-TryBot: David Chase 549 | TryBot-Result: Gobot Gobot 550 | Reviewed-by: David Chase 551 | 552 | commit 1bdf1c3024d75a3c4913d031d55257b311f0133f 553 | Author: Ian Lance Taylor 554 | Date: Thu Jun 9 11:19:26 2016 -0700 555 | 556 | cmd/cgo: fix use of unsafe argument in new deferred function 557 | 558 | The combination of https://golang.org/cl/23650 and 559 | https://golang.org/cl/23675 did not work--they were tested separately 560 | but not together. 561 | 562 | The problem was that 23650 introduced deferred argument checking, and 563 | the deferred function loses the type that 23675 started requiring. The 564 | fix is to go back to using an empty interface type in a deferred 565 | argument check. 566 | 567 | No new test required--fixes broken build. 568 | 569 | Change-Id: I5ea023c5aed71d70e57b11c4551242d3ef25986d 570 | Reviewed-on: https://go-review.googlesource.com/23961 571 | Run-TryBot: Ian Lance Taylor 572 | TryBot-Result: Gobot Gobot 573 | Reviewed-by: Austin Clements 574 | 575 | commit 837984f37291f4fc48f9c99b65b0ab3f050bf4b9 576 | Author: Ian Lance Taylor 577 | Date: Wed Jun 1 21:32:47 2016 -0700 578 | 579 | cmd/cgo: use function arg type for _cgoCheckPointerN function 580 | 581 | When cgo writes a _cgoCheckPointerN function to handle unsafe.Pointer, 582 | use the function's argument type rather than interface{}. This permits 583 | type errors to be detected at build time rather than run time. 584 | 585 | Fixes #13830. 586 | 587 | Change-Id: Ic7090905e16b977e2379670e0f83640dc192b565 588 | Reviewed-on: https://go-review.googlesource.com/23675 589 | Run-TryBot: Ian Lance Taylor 590 | TryBot-Result: Gobot Gobot 591 | Reviewed-by: Austin Clements 592 | 593 | commit 894803c11e4eab128869be759463510580a68602 594 | Author: Ian Lance Taylor 595 | Date: Wed Jun 8 21:15:26 2016 -0700 596 | 597 | time: document that RFC822/1123 don't parse all RFC formats 598 | 599 | Fixes #14505. 600 | 601 | Change-Id: I46196b26c9339609e6e3ef9159de38c5b50c2a1b 602 | Reviewed-on: https://go-review.googlesource.com/23922 603 | Run-TryBot: Ian Lance Taylor 604 | TryBot-Result: Gobot Gobot 605 | Reviewed-by: Emmanuel Odeke 606 | Reviewed-by: Andrew Gerrand 607 | 608 | commit e2a30b8ffba065ea45bb1e18d1bb584898e3bf11 609 | Author: Kenny Grant 610 | Date: Sat May 21 17:19:22 2016 +0100 611 | 612 | time: genzabbrs.go skips Feb when checking months 613 | 614 | getAbbrs looks like it is checking each month looking for a change 615 | in the time zone abbreviation, but starts in Dec of the previous year 616 | and skips the month of February because of the overflow rules for 617 | AddDate. Changing the day to 1 starts at Jan 1 and tries all months 618 | in the current year. This isn't very important or likely to change 619 | output as zones usually span several months. Discovered when 620 | looking into time.AddDate behavior when adding months. 621 | 622 | Change-Id: I685254c8d21c402ba82cc4176e9a86b64ce8f7f7 623 | Reviewed-on: https://go-review.googlesource.com/23322 624 | Reviewed-by: Ian Lance Taylor 625 | Run-TryBot: Ian Lance Taylor 626 | TryBot-Result: Gobot Gobot 627 | 628 | commit 6662897b2a3260393fff9dcf64faf3abfc773181 629 | Author: Jason Barnett 630 | Date: Tue May 24 15:50:02 2016 -0400 631 | 632 | crypto/subtle: expand abbreviation to eliminate confusion 633 | 634 | Change-Id: I68d66fccf9cc8f7137c92b94820ce7d6f478a185 635 | Reviewed-on: https://go-review.googlesource.com/23310 636 | Reviewed-by: Ian Lance Taylor 637 | Run-TryBot: Ian Lance Taylor 638 | TryBot-Result: Gobot Gobot 639 | ``` 640 | --------------------------------------------------------------------------------