1. 09 May, 2019 3 commits
  2. 08 May, 2019 16 commits
  3. 07 May, 2019 6 commits
  4. 06 May, 2019 15 commits
    • Filippo Valsorda's avatar
      crypto/ed25519: promote from golang.org/x/crypto/ed25519 · 53374e7e
      Filippo Valsorda authored
      The crypto/tls and crypto/x509 APIs leak PublicKey and PrivateKey types,
      so in order to add support for Ed25519 certificates we need the ed25519
      package in the stdlib.
      
      It's also a primitive that's reasonable to use directly in applications,
      as it is a modern, safe and fast signing algorithm, for which there
      aren't higher level APIs. (The nacl/sign API is limiting in that it
      repeats the message.)
      
      A few docs changes will come in a follow-up, and a CL will land on
      golang.org/x/crypto/ed25519 to make it a type alias wrapper on Go 1.13+.
      
      Updates #25355
      
      Change-Id: I057f20cc7d1aca2b95c29ce73eb03c3b237e413f
      Reviewed-on: https://go-review.googlesource.com/c/go/+/174945
      Run-TryBot: Filippo Valsorda <filippo@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAdam Langley <agl@golang.org>
      53374e7e
    • Bobby DeSimone's avatar
      net/url: add tests for URLHostname · 2729cd07
      Bobby DeSimone authored
      These changes add tests for URLHostname.
      
      Change-Id: Ie474516401a2236a9be65fb5c4e478322b1a199c
      GitHub-Last-Rev: 18f2d597be960c4d13cde12fef5d115926bff7bd
      GitHub-Pull-Request: golang/go#31832
      Reviewed-on: https://go-review.googlesource.com/c/go/+/175142Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      2729cd07
    • Brad Fitzpatrick's avatar
      cmd/dist: allow builders to control granularity of test/ directory sharding · 6b1ac829
      Brad Fitzpatrick authored
      Even with 10 shards on builders, it still takes about ~2.5 minutes per
      shard (and getting slower all the time as the test/ directory grows).
      I'm currently experimenting with massively sharding out testing on
      Cloud Run (each dist test & normal TestFoo func all running in
      parallel), and in such a setup, 2.5 minutes is an eternity. I'd like
      to increase that dist test's sharding from 10 to more like 1,000.
      
      Updates golang/go#31834
      
      Change-Id: I8b02989727793b5b5b2013d67e1eb01ef4786e28
      Reviewed-on: https://go-review.googlesource.com/c/go/+/175297Reviewed-by: default avatarDmitri Shuralyov <dmitshur@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      6b1ac829
    • Shulhan's avatar
      all: simplify code using "gofmt -s -w" · ed7f323c
      Shulhan authored
      Most changes are removing redundant declaration of type when direct
      instantiating value of map or slice, e.g. []T{T{}} become []T{{}}.
      
      Small changes are removing the high order of subslice if its value
      is the length of slice itself, e.g. T[:len(T)] become T[:].
      
      The following file is excluded due to incompatibility with go1.4,
      
      - src/cmd/compile/internal/gc/ssa.go
      
      Change-Id: Id3abb09401795ce1e6da591a89749cba8502fb26
      Reviewed-on: https://go-review.googlesource.com/c/go/+/166437
      Run-TryBot: Dave Cheney <dave@cheney.net>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      ed7f323c
    • Keith Randall's avatar
      reflect: special-case panic message when returning Value{} from MakeFunc function · 04845fe7
      Keith Randall authored
      Before this CL we used to panic with "nil pointer dereference" because
      the value we're calling assignTo on is the zero Value. Provide a better
      error message.
      
      Fixes #28748
      
      Change-Id: I7dd4c9e30b599863664d91e78cc45878d8b0052e
      Reviewed-on: https://go-review.googlesource.com/c/go/+/175440
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      04845fe7
    • Michael Anthony Knyszek's avatar
      runtime: ensure free and unscavenged spans may be backed by huge pages · 31c4e099
      Michael Anthony Knyszek authored
      This change adds a new sysHugePage function to provide the equivalent of
      Linux's madvise(MADV_HUGEPAGE) support to the runtime. It then uses
      sysHugePage to mark a newly-coalesced free span as backable by huge
      pages to make the freeHugePages approximation a bit more accurate.
      
      The problem being solved here is that if a large free span is composed
      of many small spans which were coalesced together, then there's a chance
      that they have had madvise(MADV_NOHUGEPAGE) called on them at some point,
      which makes freeHugePages less accurate.
      
      For #30333.
      
      Change-Id: Idd4b02567619fc8d45647d9abd18da42f96f0522
      Reviewed-on: https://go-review.googlesource.com/c/go/+/173338
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      31c4e099
    • Michael Anthony Knyszek's avatar
      runtime: split spans during allocation without treap removal · 5c15ed64
      Michael Anthony Knyszek authored
      Now that the treap is first-fit, we can make a nice optimization.
      Mainly, since we know that span splitting doesn't modify the relative
      position of a span in a treap, we can actually modify a span in-place
      on the treap. The only caveat is that we need to update the relevant
      metadata.
      
      To enable this optimization, this change introduces a mutate method on
      the iterator which takes a callback that is passed the iterator's span.
      The method records some properties of the span before it calls into the
      callback and then uses those records to see what changed and update
      treap metadata appropriately.
      
      Change-Id: I74f7d2ee172800828434ba0194d3d78d3942acf2
      Reviewed-on: https://go-review.googlesource.com/c/go/+/174879
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      5c15ed64
    • Michael Anthony Knyszek's avatar
      runtime: track the number of free unscavenged huge pages · f4a5ae55
      Michael Anthony Knyszek authored
      This change tracks the number of potential free and unscavenged huge
      pages which will be used to inform the rate at which scavenging should
      occur.
      
      For #30333.
      
      Change-Id: I47663e5ffb64cac44ffa10db158486783f707479
      Reviewed-on: https://go-review.googlesource.com/c/go/+/170860
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      f4a5ae55
    • Michael Anthony Knyszek's avatar
      runtime: scavenge huge spans first · a62b5723
      Michael Anthony Knyszek authored
      This change adds two new treap iteration types: one for large
      unscavenged spans (contain at least one huge page) and one for small
      unscavenged spans. This allows us to scavenge the huge spans first by
      first iterating over the large ones, then the small ones.
      
      Also, since we now depend on physHugePageSize being a power of two,
      ensure that that's the case when it's retrieved from the OS.
      
      For #30333.
      
      Change-Id: I51662740205ad5e4905404a0856f5f2b2d2a5680
      Reviewed-on: https://go-review.googlesource.com/c/go/+/174399
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      a62b5723
    • Michael Anthony Knyszek's avatar
      runtime: make treap iteration more efficient · fa8470a8
      Michael Anthony Knyszek authored
      This change introduces a treapIterFilter type which represents the
      power set of states described by a treapIterType.
      
      This change then adds a treapIterFilter field to each treap node
      indicating the types of spans that live in that subtree. The field is
      maintained via the same mechanism used to maintain maxPages. This allows
      pred, succ, start, and end to be judicious about which subtrees it will
      visit, ensuring that iteration avoids traversing irrelevant territory.
      
      Without this change, repeated scavenging attempts can end up being N^2
      as the scavenger walks over what it already scavenged before finding new
      spans available for scavenging.
      
      Finally, this change also only scavenges a span once it is removed from
      the treap. There was always an invariant that spans owned by the treap
      may not be mutated in-place, but with this change violating that
      invariant can cause issues with scavenging.
      
      For #30333.
      
      Change-Id: I8040b997e21c94a8d3d9c8c6accfe23cebe0c3d3
      Reviewed-on: https://go-review.googlesource.com/c/go/+/174878
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      fa8470a8
    • Michael Anthony Knyszek's avatar
      runtime: merge all treaps into one implementation · 9baa4301
      Michael Anthony Knyszek authored
      This change modifies the treap implementation to support holding all
      spans in a single treap, instead of keeping them all in separate treaps.
      
      This improves ergonomics for nearly all treap-related callsites.
      With that said, iteration is now more expensive, but it never occurs on
      the fast path, only on scavenging-related paths.
      
      This change opens up the opportunity for further optimizations, such as
      splitting spans without treap removal (taking treap removal off the span
      allocator's critical path) as well as improvements to treap iteration
      (building linked lists for each iteration type and managing them on
      insert/removal, since those operations should be less frequent).
      
      For #30333.
      
      Change-Id: I3dac97afd3682a37fda09ae8656a770e1369d0a9
      Reviewed-on: https://go-review.googlesource.com/c/go/+/174398
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      9baa4301
    • Baokun Lee's avatar
      cmd/go/internal/modfile: make error message for module path more clear · 1ad2298c
      Baokun Lee authored
      Fixes #31775
      
      `
      
      Change-Id: I59c4e90f20d1b31161c259680b48b7be7218bf58
      Reviewed-on: https://go-review.googlesource.com/c/go/+/175017
      Run-TryBot: Baokun Lee <nototon@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      1ad2298c
    • Andrew Bonventre's avatar
      doc: document Go 1.12.5 · 1560264f
      Andrew Bonventre authored
      Change-Id: I9986a323db2a8f5fa74b071cfd04e8c786da0cb3
      Reviewed-on: https://go-review.googlesource.com/c/go/+/175438Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      1560264f
    • Andrew Bonventre's avatar
      doc: document Go 1.11.10 · e1f9e701
      Andrew Bonventre authored
      Change-Id: Icca4495f727e3921b717a4bbb441cd832d321d46
      Reviewed-on: https://go-review.googlesource.com/c/go/+/175439Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      e1f9e701
    • Cherry Zhang's avatar
      cmd/internal/obj: write package path at compile time if possible · cc5eaf93
      Cherry Zhang authored
      Currently, when the compiler emits a symbol name in the object
      file, it uses "". for the package path of the package being
      compiled. This is then expanded in the linker to the actual
      package path.
      
      With CL 173938, it does not need an allocation if the symbol name
      does not need expansion. In many cases, the compiler actually
      knows the package path (through the -p flag), so we could just
      write it out in compile time, without fixing it up in the linker.
      This reduces allocations in the linker.
      
      In case that the package path is not known (compiler's -p flag is
      missing, or the object file is generated by the assembler), the
      linker still does the expansion.
      
      This reduces ~100MB allocations (~10% inuse_space) in linking
      k8s.io/kubernetes/cmd/kube-apiserver on Linux/AMD64.
      
      Also makes the linker a little faster: linking cmd/go on
      Linux/AMD64:
      Real  1.13 ± 1%  1.11 ± 1%  -2.13%  (p=0.000 n=10+10)
      User  1.17 ± 3%  1.14 ± 5%  -3.14%  (p=0.003 n=10+10)
      Sys   0.34 ±15%  0.34 ±15%    ~     (p=0.986 n=10+10)
      
      The caveat is that the object files get slightly bigger. On
      Linux/AMD64, runtime.a gets 2.1% bigger, cmd/compile/internal/ssa
      (which has a longer import path) gets 2.8% bigger.
      
      This reveals that when building an unnamed plugin (e.g.
      go build -buildmode=plugin x.go), the go command passes different
      package paths to the compiler and to the linker. Before this CL
      there seems nothing obviously broken, but given that the compiler
      already emits the package's import path in various places (e.g.
      debug info), I guess it is possible that this leads to some
      unexpected behavior. Now that the compiler writes the package
      path in more places, this disagreement actually leads to
      unresolved symbols. Adjust the go command to use the same package
      path for both compiling and linking.
      
      Change-Id: I19f08981f51db577871c906e08d9e0fd588a2dd8
      Reviewed-on: https://go-review.googlesource.com/c/go/+/174657Reviewed-by: default avatarAustin Clements <austin@google.com>
      cc5eaf93