1. 20 Jul, 2018 4 commits
    • Russ Cox's avatar
      cmd/go: fix module get -u to avoid spurious new deps · 0b23c88d
      Russ Cox authored
      If we have go get -u x1@v1 x2@v2 and x1 depends on x2,
      use v2 as the "upgraded" x2 chosen by -u  instead of
      letting -u pick something (say, v2.1) and then immediately
      overriding it. This avoids chasing down the deps from v2.1
      and also avoids them polluting the overall module graph.
      
      This fix also lets us delete some code in the preparation step,
      reducing the overall latency of get -u.
      
      Suggested by Bryan Mills in
      https://go-review.googlesource.com/c/vgo/+/122396/6#371.
      
      Fixes #26342.
      
      Change-Id: I50fa842304820d3f16f66a8e65dea695e2b0f88b
      Reviewed-on: https://go-review.googlesource.com/124856Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      0b23c88d
    • Russ Cox's avatar
      cmd/go: detect inconsistent 'go get' version requests · eab82086
      Russ Cox authored
      If x v1.0.0 requires y v1.2.0, then
      go get x@v1.0.0 y@v1.0.0 needs to fail gracefully.
      
      Fixes #25917.
      
      Change-Id: I9b426af23a30310fcb0c3545a8d97feb58b8ddbe
      Reviewed-on: https://go-review.googlesource.com/124800Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      eab82086
    • Russ Cox's avatar
      cmd/go: case-encode versions as well as module paths in files, URLs · a59f4438
      Russ Cox authored
      While writing the GOPROXY docs it occurred to me that versions
      can contain upper-case letters as well. The docs therefore say
      that versions are case-encoded the same as paths in the proxy
      protocol (and therefore in the cache as well). Make it so.
      
      Change-Id: Ibc0c4af0192a4af251e5dd6f2d36cda7e529099a
      Reviewed-on: https://go-review.googlesource.com/124795Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      a59f4438
    • Vlad Krasnov's avatar
      crypto/aes: implement AES-GCM AEAD for arm64 · 4f1f5033
      Vlad Krasnov authored
      Use the dedicated AES* and PMULL* instructions to accelerate AES-GCM
      
      name              old time/op    new time/op      delta
      AESGCMSeal1K-46     12.1µs ± 0%       0.9µs ± 0%    -92.66%  (p=0.000 n=9+10)
      AESGCMOpen1K-46     12.1µs ± 0%       0.9µs ± 0%    -92.43%  (p=0.000 n=10+10)
      AESGCMSign8K-46     58.6µs ± 0%       2.1µs ± 0%    -96.41%  (p=0.000 n=9+8)
      AESGCMSeal8K-46     92.8µs ± 0%       5.7µs ± 0%    -93.86%  (p=0.000 n=9+9)
      AESGCMOpen8K-46     92.9µs ± 0%       5.7µs ± 0%    -93.84%  (p=0.000 n=8+9)
      
      name              old speed      new speed        delta
      AESGCMSeal1K-46   84.7MB/s ± 0%  1153.4MB/s ± 0%  +1262.21%  (p=0.000 n=9+10)
      AESGCMOpen1K-46   84.4MB/s ± 0%  1115.2MB/s ± 0%  +1220.53%  (p=0.000 n=10+10)
      AESGCMSign8K-46    140MB/s ± 0%    3894MB/s ± 0%  +2687.50%  (p=0.000 n=9+10)
      AESGCMSeal8K-46   88.2MB/s ± 0%  1437.5MB/s ± 0%  +1529.30%  (p=0.000 n=9+9)
      AESGCMOpen8K-46   88.2MB/s ± 0%  1430.5MB/s ± 0%  +1522.01%  (p=0.000 n=8+9)
      
      This change mirrors the current amd64 implementation, and provides optimal performance
      on a range of arm64 processors including Centriq 2400 and Apple A12. By and large it is
      implicitly tested by the robustness of the already existing amd64 implementation.
      
      The implementation interleaves GHASH with CTR mode to achieve the highest possible
      throughput, it also aggregates GHASH with a factor of 8, to decrease the cost of the
      reduction step.
      
      Even thought there is a significant amount of assembly, the code reuses the go
      code for the amd64 implementation, so there is little additional go code.
      
      Since AES-GCM is critical for performance of all web servers, this change is
      required to level the playfield for arm64 CPUs, where amd64 currently enjoys an
      unfair advantage.
      
      Ideally both amd64 and arm64 codepaths could be replaced by hypothetical AES and
      CLMUL intrinsics, with a few additional vector instructions.
      
      Fixes #18498
      Fixes #19840
      
      Change-Id: Icc57b868cd1f67ac695c1ac163a8e215f74c7910
      Reviewed-on: https://go-review.googlesource.com/107298
      Run-TryBot: Vlad Krasnov <vlad@cloudflare.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      4f1f5033
  2. 19 Jul, 2018 34 commits
  3. 18 Jul, 2018 2 commits