1. 18 Apr, 2016 15 commits
    • David Crawshaw's avatar
      cmd/link: shorter type symbol names · f81ae3b2
      David Crawshaw authored
      Use (part of) a SHA-1 checksum to replace type symbol names.
      
      In typical programs this has no effect because types are not included
      in the symbol table. But when dynamically linking, types are in the
      table to make sure there is only one *rtype per Go type.
      
      Eventually we may be able to get rid of all pointers to rtype values in
      the binary, but probably not by 1.7. And this has a nice effect on
      binary size today:
      
      libstd.so:
      	before 27.4MB
      	after  26.2MB
      
      For #6853.
      
      Change-Id: I603d7f3e5baad84f59f2fd37eeb1e4ae5acfe44a
      Reviewed-on: https://go-review.googlesource.com/21583Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f81ae3b2
    • Keith Randall's avatar
      cmd/compile: logical operation identities · 4d5adf1e
      Keith Randall authored
      Some rewrites to simplify logical operations.
      
      Fixes #14363
      
      Change-Id: I45a1e8f227267cbcca0778101125f7bab776a5dd
      Reviewed-on: https://go-review.googlesource.com/22188Reviewed-by: default avatarAlexandru Moșoi <alexandru@mosoi.ro>
      Run-TryBot: Alexandru Moșoi <alexandru@mosoi.ro>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      4d5adf1e
    • David Crawshaw's avatar
      cmd/link, cmd/compile: typelink sorting in linker · 4140da7b
      David Crawshaw authored
      Instead of writing out the type almost twice in the symbol name,
      teach the linker how to sort typelink symbols by their contents.
      
      This ~halves the size of typelink symbol names, which helps very
      large (6KB) names like those mentioned in #15104.
      
      This does not increase the total sorting work done by the linker,
      and makes it possible to use shorter symbol names for types. See
      the follow-on CL 21583.
      
      Change-Id: Ie5807565ed07d31bc477d20f60e4c0b47144f337
      Reviewed-on: https://go-review.googlesource.com/21457Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      4140da7b
    • David Crawshaw's avatar
      reflect: test that method name offset is valid · 2e2df78a
      David Crawshaw authored
      Bug fix went in CL 21396, this is a matching test.
      
      Fixes #15343
      
      Change-Id: I3670145c7cac45cb4fb3121ffc039cfb7fa7c87a
      Reviewed-on: https://go-review.googlesource.com/22171Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      2e2df78a
    • Josh Bleecher Snyder's avatar
      runtime: add benchmarks for in-place append · 411a0adc
      Josh Bleecher Snyder authored
      Change-Id: I2b43cc976d2efbf8b41170be536fdd10364b65e5
      Reviewed-on: https://go-review.googlesource.com/22190Reviewed-by: default avatarKeith Randall <khr@golang.org>
      411a0adc
    • Keith Randall's avatar
      cmd/compile: eliminate copy for static literals · b024ed0d
      Keith Randall authored
      *p = [5]byte{1,2,3,4,5}
      
      First we allocate a global containing the RHS.  Then we copy
      that global to a local stack variable, and then copy that local
      stack variable to *p.  The intermediate copy is unnecessary.
      
      Note that this only works if the RHS is completely constant.
      If the code was:
      *p = [5]byte{1,2,x,4,5}
      this optimization doesn't apply as we have to construct the
      RHS on the stack before copying it to *p.
      
      Fixes #12841
      
      Change-Id: I7cd0404ecc7a2d1750cbd8fe1222dba0fa44611f
      Reviewed-on: https://go-review.googlesource.com/22192Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      b024ed0d
    • Brad Fitzpatrick's avatar
      net: fix plan9 after context change, propagate contexts more · f60fcca5
      Brad Fitzpatrick authored
      My previous https://golang.org/cl/22101 to add context throughout the
      net package broke Plan 9, which isn't currently tested (#15251).
      
      It also broke some old unsupported version of Windows (Windows 2000?)
      which doesn't have the ConnectEx function, but that was only found
      visually, since our minimum supported Windows version has ConnectEx.
      This change simplifies the Windows and deletes the non-ConnectEx code
      path.  Windows 2000 will work even less now, if it even worked
      before. Windows XP remains our minimum supported version.
      
      Specifically, the previous CL stopped using the "dial" function, which
      0intro noted:
      https://github.com/golang/go/issues/15333#issuecomment-210842761
      
      This CL removes the dial function instead and makes plan9's net
      implementation respect contexts, which likely fixes a number of
      t.Skipped tests. I'm leaving that to 0intro to investigate.
      
      In the process of propagating and respecting contexts for plan9, I had
      to change some signatures to add contexts to more places and ended up
      pushing contexts down into the Go-based DNS resolution as well,
      replacing the pure-Go DNS implementation's use of "timeout
      time.Duration" with a context instead.
      
      Updates #11932
      Updates #15328
      
      Fixes #15333
      
      Change-Id: I6ad1e62f38271cdd86b3f40921f2d0f23374936a
      Reviewed-on: https://go-review.googlesource.com/22144Reviewed-by: default avatarDavid du Colombier <0intro@gmail.com>
      Reviewed-by: default avatarMikio Hara <mikioh.mikioh@gmail.com>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f60fcca5
    • David Crawshaw's avatar
      cmd/link: use gold when dynamic linking on arm64 · a3c92c9d
      David Crawshaw authored
      The GNU linker follows the letter of -znocopyreloc by refusing to
      generate COPY relocations on arm64. Unfortunately it generates an
      error instead of finding another way. The gold linker works, so
      switch to it.
      
      Fixes linux/arm64 build.
      
      Change-Id: I1f7119d999c8f9f1f2d0c1e06b6462cea9c02a71
      Reviewed-on: https://go-review.googlesource.com/22185
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      a3c92c9d
    • Brad Fitzpatrick's avatar
      net/http: document Hijacker and Flusher more · 0db2bf23
      Brad Fitzpatrick authored
      Fixes #15312
      
      Change-Id: I4fabef3f21081bc4b020069851b5c2504bc6b4d8
      Reviewed-on: https://go-review.googlesource.com/22122Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      0db2bf23
    • Ian Lance Taylor's avatar
      cmd/compile: a dot expression can not be a struct literal key · f5423a63
      Ian Lance Taylor authored
      Passes toolstash -cmp.
      
      Fixes #15311.
      
      Change-Id: I1d67f5c9de38e899ab2d6c8986fabd6f197df23a
      Reviewed-on: https://go-review.googlesource.com/22162Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      f5423a63
    • David Crawshaw's avatar
      cmd/compile, etc: use name offset in method tables · 95df0c6a
      David Crawshaw authored
      Introduce and start using nameOff for two encoded names. This pair
      of changes is best done together because the linker's method decoder
      expects the method layouts to match.
      
      Precursor to converting all existing name and *string fields to
      nameOff.
      
      linux/amd64:
      	cmd/go:  -45KB (0.5%)
      	jujud:  -389KB (0.6%)
      
      linux/amd64 PIE:
      	cmd/go: -170KB (1.4%)
      	jujud:  -1.5MB (1.8%)
      
      For #6853.
      
      Change-Id: Ia044423f010fb987ce070b94c46a16fc78666ff6
      Reviewed-on: https://go-review.googlesource.com/21396Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      95df0c6a
    • David Crawshaw's avatar
      cmd/link: use -znocopyreloc when dynamic linking · 3c8d6af8
      David Crawshaw authored
      On ARM, use the gold linker to avoid copy relocations.
      https://sourceware.org/bugzilla/show_bug.cgi?id=19962
      
      Change-Id: Icf82a38d39495d4518812713b957a03a6652c728
      Reviewed-on: https://go-review.googlesource.com/22141
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      3c8d6af8
    • Andrew Gerrand's avatar
      cmd/go: mention that _test.go files are ignored when building · 135572eb
      Andrew Gerrand authored
      Fixes #15315
      
      Change-Id: I8fea31507a5f83df8a86fb067f1b11d90133dc09
      Reviewed-on: https://go-review.googlesource.com/22180Reviewed-by: default avatarChris Broadfoot <cbro@golang.org>
      135572eb
    • Klaus Post's avatar
      compress/flate: use uncompressed if dynamic encoding is larger · 6ec481b0
      Klaus Post authored
      This adds size calculation to "dynamic" writes.
      This ensures that if dynamic Huffman encoding is bigger,
      or only slightly smaller than raw data, the block is written
      uncompressed.
      
      To minimize the code duplication of this function, the
      size calculation has been moved to separate functions.
      
      Since I was modifying these calculations, I changed "int64"
      size calculations to "int". Blocks are of very limited size,
      so there is not any risk of overflows.
      This should mainly improve 32 bit performance, but amd64 also
      gets a slight boost:
      
      name                       old time/op    new time/op    delta
      EncodeDigitsHuffman1e4-8     49.9µs ± 1%    49.3µs ± 1%  -1.21%  (p=0.000 n=10+10)
      EncodeDigitsHuffman1e5-8      476µs ± 1%     471µs ± 3%    ~     (p=0.218 n=10+10)
      EncodeDigitsHuffman1e6-8     4.80ms ± 2%    4.75ms ± 2%    ~      (p=0.243 n=10+9)
      EncodeDigitsSpeed1e4-8        305µs ± 3%     300µs ± 1%  -1.86%  (p=0.005 n=10+10)
      EncodeDigitsSpeed1e5-8       3.67ms ± 2%    3.58ms ± 1%  -2.29%    (p=0.000 n=9+8)
      EncodeDigitsSpeed1e6-8       38.3ms ± 2%    37.0ms ± 1%  -3.45%    (p=0.000 n=9+9)
      EncodeDigitsDefault1e4-8      361µs ± 2%     353µs ± 1%  -2.21%  (p=0.000 n=10+10)
      EncodeDigitsDefault1e5-8     5.24ms ± 2%    5.19ms ± 2%    ~     (p=0.105 n=10+10)
      EncodeDigitsDefault1e6-8     56.5ms ± 3%    55.1ms ± 1%  -2.42%  (p=0.001 n=10+10)
      EncodeDigitsCompress1e4-8     362µs ± 2%     358µs ± 2%    ~     (p=0.123 n=10+10)
      EncodeDigitsCompress1e5-8    5.26ms ± 3%    5.20ms ± 1%    ~     (p=0.089 n=10+10)
      EncodeDigitsCompress1e6-8    56.0ms ± 4%    55.0ms ± 1%    ~      (p=0.065 n=10+9)
      EncodeTwainHuffman1e4-8      70.9µs ± 3%    67.6µs ± 2%  -4.59%  (p=0.000 n=10+10)
      EncodeTwainHuffman1e5-8       556µs ± 2%     533µs ± 1%  -4.20%  (p=0.000 n=10+10)
      EncodeTwainHuffman1e6-8      5.54ms ± 3%    5.29ms ± 1%  -4.37%   (p=0.000 n=10+9)
      EncodeTwainSpeed1e4-8         294µs ± 3%     293µs ± 1%    ~      (p=0.965 n=10+8)
      EncodeTwainSpeed1e5-8        2.59ms ± 2%    2.56ms ± 1%    ~     (p=0.353 n=10+10)
      EncodeTwainSpeed1e6-8        25.6ms ± 1%    24.9ms ± 1%  -2.62%   (p=0.000 n=9+10)
      EncodeTwainDefault1e4-8       419µs ± 2%     417µs ± 1%    ~      (p=0.780 n=10+9)
      EncodeTwainDefault1e5-8      6.23ms ± 4%    6.16ms ± 1%    ~     (p=0.218 n=10+10)
      EncodeTwainDefault1e6-8      66.2ms ± 2%    65.7ms ± 1%    ~     (p=0.529 n=10+10)
      EncodeTwainCompress1e4-8      426µs ± 1%     428µs ± 2%    ~      (p=0.549 n=9+10)
      EncodeTwainCompress1e5-8     6.80ms ± 1%    6.85ms ± 3%    ~      (p=0.156 n=9+10)
      EncodeTwainCompress1e6-8     74.6ms ± 3%    73.8ms ± 2%    ~     (p=0.280 n=10+10)
      
      name                       old speed      new speed      delta
      EncodeDigitsHuffman1e4-8    200MB/s ± 1%   203MB/s ± 1%  +1.23%  (p=0.000 n=10+10)
      EncodeDigitsHuffman1e5-8    210MB/s ± 1%   212MB/s ± 3%    ~      (p=0.356 n=10+9)
      EncodeDigitsHuffman1e6-8    208MB/s ± 2%   210MB/s ± 2%    ~      (p=0.243 n=10+9)
      EncodeDigitsSpeed1e4-8     32.8MB/s ± 3%  33.4MB/s ± 1%  +1.88%  (p=0.005 n=10+10)
      EncodeDigitsSpeed1e5-8     27.2MB/s ± 2%  27.9MB/s ± 1%  +2.60%   (p=0.000 n=10+8)
      EncodeDigitsSpeed1e6-8     26.1MB/s ± 2%  27.0MB/s ± 1%  +3.56%    (p=0.000 n=9+9)
      EncodeDigitsDefault1e4-8   27.7MB/s ± 2%  28.4MB/s ± 1%  +2.24%  (p=0.000 n=10+10)
      EncodeDigitsDefault1e5-8   19.1MB/s ± 2%  19.3MB/s ± 2%    ~     (p=0.101 n=10+10)
      EncodeDigitsDefault1e6-8   17.7MB/s ± 3%  18.1MB/s ± 1%  +2.46%  (p=0.001 n=10+10)
      EncodeDigitsCompress1e4-8  27.6MB/s ± 2%  27.9MB/s ± 2%    ~     (p=0.119 n=10+10)
      EncodeDigitsCompress1e5-8  19.0MB/s ± 3%  19.2MB/s ± 1%    ~     (p=0.085 n=10+10)
      EncodeDigitsCompress1e6-8  17.9MB/s ± 4%  18.1MB/s ± 3%    ~     (p=0.110 n=10+10)
      EncodeTwainHuffman1e4-8     141MB/s ± 3%   148MB/s ± 2%  +4.79%  (p=0.000 n=10+10)
      EncodeTwainHuffman1e5-8     180MB/s ± 2%   188MB/s ± 1%  +4.38%  (p=0.000 n=10+10)
      EncodeTwainHuffman1e6-8     181MB/s ± 3%   189MB/s ± 1%  +4.54%   (p=0.000 n=10+9)
      EncodeTwainSpeed1e4-8      34.0MB/s ± 3%  34.1MB/s ± 1%    ~      (p=0.948 n=10+8)
      EncodeTwainSpeed1e5-8      38.7MB/s ± 2%  39.0MB/s ± 1%    ~     (p=0.353 n=10+10)
      EncodeTwainSpeed1e6-8      39.1MB/s ± 1%  40.1MB/s ± 1%  +2.68%   (p=0.000 n=9+10)
      EncodeTwainDefault1e4-8    23.9MB/s ± 2%  24.0MB/s ± 1%    ~      (p=0.734 n=10+9)
      EncodeTwainDefault1e5-8    16.0MB/s ± 4%  16.2MB/s ± 1%    ~     (p=0.210 n=10+10)
      EncodeTwainDefault1e6-8    15.1MB/s ± 2%  15.2MB/s ± 1%    ~     (p=0.515 n=10+10)
      EncodeTwainCompress1e4-8   23.5MB/s ± 1%  23.4MB/s ± 2%    ~      (p=0.536 n=9+10)
      EncodeTwainCompress1e5-8   14.7MB/s ± 1%  14.6MB/s ± 3%    ~      (p=0.138 n=9+10)
      EncodeTwainCompress1e6-8   13.4MB/s ± 3%  13.5MB/s ± 2%    ~     (p=0.239 n=10+10)
      
      This improves "random input" to the dynamic writer, which is why the test data is
      updated. The output size goes from 1051 to 1005 bytes.
      
      Change-Id: I3ee11d2d2511b277d2dd16734aeea07c98bca450
      Reviewed-on: https://go-review.googlesource.com/21757Reviewed-by: default avatarJoe Tsai <joetsai@digital-static.net>
      Run-TryBot: Joe Tsai <joetsai@digital-static.net>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarNigel Tao <nigeltao@golang.org>
      6ec481b0
    • David Symonds's avatar
      doc: link to iant's generics proposal from the FAQ. · 3629814c
      David Symonds authored
      Updates #15292.
      
      Change-Id: I229f66c2a41ae0738225f2ba7a574478f5d6d620
      Reviewed-on: https://go-review.googlesource.com/22163Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      3629814c
  2. 17 Apr, 2016 6 commits
  3. 16 Apr, 2016 10 commits
  4. 15 Apr, 2016 9 commits
    • Morten Siebuhr's avatar
      net: fix looking up port numbers starting with numbers. · 002c69e0
      Morten Siebuhr authored
      LookupPort() correctly parses service names beginning with numerals by
      implementing a new parser, mainly taken from strconv/atoi.go.
      
      Also testes some previously undefined behaviours around port numbers
      larger than 65535 that previously could lead to some tests fail with
      EOPNOTSUPP (Operation Not Supported).
      
      Fixes #14322
      
      Change-Id: I1b90dbed434494723e261d84e73fe705e5c0507a
      Reviewed-on: https://go-review.googlesource.com/19720
      Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMikio Hara <mikioh.mikioh@gmail.com>
      002c69e0
    • Brad Fitzpatrick's avatar
      net: context plumbing, add Dialer.DialContext · b6b4004d
      Brad Fitzpatrick authored
      For #12580 (http.Transport tracing/analytics)
      Updates #13021
      
      Change-Id: I126e494a7bd872e42c388ecb58499ecbf0f014cc
      Reviewed-on: https://go-review.googlesource.com/22101
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Reviewed-by: default avatarMikio Hara <mikioh.mikioh@gmail.com>
      b6b4004d
    • Ian Lance Taylor's avatar
      cmd/cgo: add missing formatting directive in error message · 1d0977a1
      Ian Lance Taylor authored
      Fixes #15310.
      
      Change-Id: I588b3c630a20a6878f7cd00f9af29b1dd8a4abf6
      Reviewed-on: https://go-review.googlesource.com/22100
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      1d0977a1
    • Matthew Dempsky's avatar
      cmd/compile: remove dead flags · d57a118a
      Matthew Dempsky authored
      For some time now, the -d flag has been used to control various named
      debug options, rather than setting Debug['d']. Consequently, that
      means dflag() always returns false, which means the -y flag is also
      useless.
      
      Similarly, Debug['L'] is never used anywhere, so the -L flag can be
      dropped too.
      
      Change-Id: I4bb12454e462410115ec4f5565facf76c5c2f255
      Reviewed-on: https://go-review.googlesource.com/22121Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      d57a118a
    • Matthew Dempsky's avatar
      archive/tar: style nit: s/nano_buf/nanoBuf/ · 75c079cb
      Matthew Dempsky authored
      Pointed out during review of golang.org/cl/22104.
      
      Change-Id: If8842e7f8146441e918ec6a2b6e893b7cf88615c
      Reviewed-on: https://go-review.googlesource.com/22120
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      75c079cb
    • Mikio Hara's avatar
      runtime: don't always unblock all signals on dragonfly, freebsd and openbsd · 6f59ccb0
      Mikio Hara authored
      https://golang.org/cl/10173 intrduced msigsave, ensureSigM and
      _SigUnblock but didn't enable the new signal save/restore mechanism for
      SIG{HUP,INT,QUIT,ABRT,TERM} on DragonFly BSD, FreeBSD and OpenBSD.
      
      At present, it looks like they have the implementation. This change
      enables the new mechanism on DragonFly BSD, FreeBSD and OpenBSD the same
      as Darwin, NetBSD.
      
      Change-Id: Ifb4b4743b3b4f50bfcdc7cf1fe1b59c377fa2a41
      Reviewed-on: https://go-review.googlesource.com/18657
      Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      6f59ccb0
    • Martin Möhrmann's avatar
      fmt: optimize struct layout and intbuf size · 7345fa54
      Martin Möhrmann authored
      Move boolean fields to the end of the pp struct for better packing.
      
      Increase the fmt.intbuf size to leave no padding space unused
      at the end of the fmt struct on 32 bit architectures.
      
      The size of the pp struct on amd64 is decreased from 192 byte
      to 184 byte and on 386 from 132 byte to 128 byte.
      
      Simplify buffer size calculation in fmt_integer.
      
      Consolidate test cases for intbuf overflow checks.
      
      amd64 Haswell:
      
      name                     old time/op  new time/op  delta
      SprintfPadding-2          227ns ± 2%   227ns ± 1%    ~     (p=0.941 n=25+25)
      SprintfEmpty-2           38.4ns ± 6%  35.8ns ±23%  -6.71%  (p=0.030 n=24+25)
      SprintfString-2           100ns ± 0%   101ns ± 0%  +1.00%  (p=0.000 n=19+18)
      SprintfTruncateString-2   142ns ± 1%   142ns ± 1%  +0.37%  (p=0.028 n=25+25)
      SprintfQuoteString-2      397ns ± 0%   393ns ± 0%  -0.82%  (p=0.000 n=21+24)
      SprintfInt-2              101ns ± 2%   102ns ± 4%    ~     (p=0.159 n=21+24)
      SprintfIntInt-2           155ns ± 3%   155ns ± 3%    ~     (p=0.934 n=25+25)
      SprintfPrefixedInt-2      252ns ± 2%   251ns ± 2%    ~     (p=0.198 n=25+25)
      SprintfFloat-2            184ns ± 3%   179ns ± 2%  -3.07%  (p=0.000 n=24+25)
      SprintfComplex-2          532ns ± 2%   535ns ± 2%  +0.64%  (p=0.046 n=25+24)
      SprintfBoolean-2         90.5ns ± 3%  91.6ns ± 2%  +1.17%  (p=0.000 n=22+22)
      SprintfHexString-2        164ns ± 2%   165ns ± 3%    ~     (p=0.066 n=25+25)
      SprintfHexBytes-2         171ns ± 3%   170ns ± 3%    ~     (p=0.941 n=25+24)
      SprintfBytes-2            320ns ± 1%   313ns ± 1%  -2.31%  (p=0.000 n=24+21)
      SprintfStringer-2         347ns ± 2%   348ns ± 2%    ~     (p=0.426 n=24+24)
      SprintfStructure-2        753ns ± 1%   742ns ± 1%  -1.49%  (p=0.000 n=24+25)
      FprintInt-2               145ns ± 0%   144ns ± 0%  -0.69%  (p=0.000 n=24+23)
      FprintfBytes-2            163ns ± 0%   163ns ± 0%  -0.27%  (p=0.000 n=25+25)
      FprintIntNoAlloc-2        108ns ± 0%   105ns ± 0%  -2.78%  (p=0.000 n=25+2
      
      386 Haswell:
      
      name                     old time/op  new time/op  delta
      SprintfPadding-2          426ns ± 2%   422ns ± 1%  -0.89%  (p=0.000 n=25+24)
      SprintfEmpty-2           24.6ns ± 1%  24.5ns ± 0%  -0.39%  (p=0.000 n=22+15)
      SprintfString-2          99.1ns ± 3%  95.6ns ± 0%  -3.52%  (p=0.000 n=25+24)
      SprintfTruncateString-2   156ns ± 4%   153ns ± 1%  -1.65%  (p=0.000 n=24+23)
      SprintfQuoteString-2      500ns ± 2%   493ns ± 1%  -1.49%  (p=0.000 n=25+24)
      SprintfInt-2             92.6ns ± 9%  88.3ns ± 1%  -4.72%  (p=0.000 n=25+25)
      SprintfIntInt-2           143ns ± 7%   137ns ± 2%  -4.01%  (p=0.000 n=23+25)
      SprintfPrefixedInt-2      268ns ±19%   264ns ±16%    ~     (p=0.826 n=24+24)
      SprintfFloat-2            242ns ± 4%   246ns ± 2%  +1.60%  (p=0.000 n=25+25)
      SprintfComplex-2         1.04µs ± 3%  1.03µs ± 1%  -0.89%  (p=0.026 n=25+25)
      SprintfBoolean-2         82.2ns ± 9%  80.7ns ± 2%    ~     (p=0.163 n=24+24)
      SprintfHexString-2        240ns ± 5%   224ns ± 2%  -6.94%  (p=0.000 n=25+25)
      SprintfHexBytes-2         245ns ± 3%   234ns ± 2%  -4.55%  (p=0.000 n=25+25)
      SprintfBytes-2            432ns ±13%   419ns ± 2%    ~     (p=0.081 n=23+25)
      SprintfStringer-2         356ns ± 4%   356ns ± 4%    ~     (p=0.988 n=25+25)
      SprintfStructure-2        968ns ± 5%   948ns ± 2%  -2.11%  (p=0.000 n=25+25)
      FprintInt-2               206ns ± 0%   201ns ± 0%  -2.43%  (p=0.000 n=25+21)
      FprintfBytes-2            187ns ± 1%   187ns ± 1%    ~     (p=0.420 n=25+25)
      FprintIntNoAlloc-2        173ns ± 0%   168ns ± 0%  -2.89%  (p=0.000 n=25+2
      
      amd64 Ivy Bridge:
      
      name                     old time/op  new time/op  delta
      SprintfPadding-4          203ns ± 4%   210ns ± 8%  +3.27%  (p=0.000 n=23+25)
      SprintfEmpty-4           24.4ns ± 2%  24.4ns ± 3%    ~     (p=0.487 n=24+25)
      SprintfString-4          92.4ns ± 2%  93.1ns ± 3%    ~     (p=0.087 n=22+25)
      SprintfTruncateString-4   137ns ± 3%   136ns ± 2%  -1.02%  (p=0.002 n=25+25)
      SprintfQuoteString-4      378ns ± 1%   373ns ± 1%  -1.32%  (p=0.000 n=24+22)
      SprintfInt-4             89.9ns ± 3%  90.3ns ± 4%    ~     (p=0.444 n=25+25)
      SprintfIntInt-4           137ns ± 4%   138ns ± 3%    ~     (p=0.112 n=25+23)
      SprintfPrefixedInt-4      155ns ±14%   154ns ±14%    ~     (p=0.791 n=25+25)
      SprintfFloat-4            154ns ± 2%   154ns ± 3%    ~     (p=0.789 n=25+25)
      SprintfComplex-4          396ns ± 2%   402ns ± 3%  +1.53%  (p=0.001 n=23+25)
      SprintfBoolean-4         71.0ns ± 3%  71.2ns ± 2%    ~     (p=0.515 n=25+24)
      SprintfHexString-4        156ns ± 3%   150ns ± 5%  -3.69%  (p=0.000 n=24+25)
      SprintfHexBytes-4         154ns ± 3%   157ns ± 5%  +1.72%  (p=0.003 n=24+25)
      SprintfBytes-4            297ns ± 4%   291ns ± 3%  -1.86%  (p=0.000 n=25+25)
      SprintfStringer-4         275ns ± 3%   265ns ± 3%  -3.51%  (p=0.000 n=25+25)
      SprintfStructure-4        878ns ± 2%   823ns ± 2%  -6.21%  (p=0.000 n=25+22)
      FprintInt-4               145ns ± 1%   147ns ± 2%  +0.94%  (p=0.001 n=23+25)
      FprintfBytes-4            166ns ± 1%   168ns ± 2%  +0.81%  (p=0.000 n=24+25)
      FprintIntNoAlloc-4        113ns ± 2%   109ns ± 2%  -3.79%  (p=0.000 n=24+25)
      
      386 Ivy Bridge:
      
      name                     old time/op  new time/op  delta
      SprintfPadding-4          353ns ± 4%   354ns ± 4%    ~     (p=0.769 n=25+24)
      SprintfEmpty-4           21.9ns ± 6%  21.1ns ± 3%  -3.45%  (p=0.000 n=24+25)
      SprintfString-4          94.7ns ± 1%  93.0ns ± 3%  -1.77%  (p=0.000 n=24+23)
      SprintfTruncateString-4   150ns ± 2%   147ns ± 0%  -1.71%  (p=0.000 n=25+21)
      SprintfQuoteString-4      472ns ± 1%   479ns ± 1%  +1.48%  (p=0.000 n=25+23)
      SprintfInt-4             87.0ns ± 2%  85.3ns ± 2%  -1.95%  (p=0.000 n=25+25)
      SprintfIntInt-4           137ns ± 2%   134ns ± 2%  -1.97%  (p=0.000 n=24+23)
      SprintfPrefixedInt-4      166ns ± 8%   161ns ± 8%  -3.07%  (p=0.023 n=24+24)
      SprintfFloat-4            226ns ± 1%   219ns ± 1%  -2.97%  (p=0.000 n=24+25)
      SprintfComplex-4          867ns ± 1%   784ns ± 1%  -9.47%  (p=0.000 n=24+23)
      SprintfBoolean-4         77.2ns ± 2%  76.0ns ± 2%  -1.63%  (p=0.000 n=25+25)
      SprintfHexString-4        212ns ± 2%   214ns ± 2%  +0.96%  (p=0.000 n=25+25)
      SprintfHexBytes-4         221ns ± 2%   218ns ± 1%  -1.42%  (p=0.000 n=25+24)
      SprintfBytes-4            423ns ± 3%   417ns ± 1%  -1.49%  (p=0.000 n=25+24)
      SprintfStringer-4         306ns ± 3%   298ns ± 3%  -2.57%  (p=0.000 n=24+25)
      SprintfStructure-4       1.00µs ± 2%  0.98µs ± 2%  -1.34%  (p=0.000 n=24+24)
      FprintInt-4               202ns ± 3%   197ns ± 2%  -2.04%  (p=0.000 n=25+25)
      FprintfBytes-4            186ns ± 2%   184ns ± 2%  -0.88%  (p=0.000 n=24+25)
      FprintIntNoAlloc-4        170ns ± 2%   166ns ± 2%  -2.26%  (p=0.000 n=24+25)
      
      Change-Id: I46e62bf8b6afa90a24f75b40f1d354b2084b910b
      Reviewed-on: https://go-review.googlesource.com/20984
      Run-TryBot: Rob Pike <r@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRob Pike <r@golang.org>
      7345fa54
    • Conrad Irwin's avatar
      net/mail: allow utf-8 in ParseAddress · 7f52b439
      Conrad Irwin authored
      The existing implementation correctly supported RFC 5322, this
      change adds support for UTF-8 while parsing as specified by
      RFC 6532. The serialization code is unchanged, so emails created
      by go remain compatible with very legacy systems.
      
      Fixes #14260
      
      Change-Id: Ib57e510f5834d273605e1892679f2df19ea931b1
      Reviewed-on: https://go-review.googlesource.com/19687
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAlexandre Cesaro <alexandre.cesaro@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      7f52b439
    • Ilya Tocar's avatar
      hash/adler32: Unroll loop for extra performance. · 89a1f028
      Ilya Tocar authored
      name         old time/op    new time/op    delta
      Adler32KB-4     592ns ± 0%     447ns ± 0%  -24.49%  (p=0.000 n=19+20)
      
      name         old speed      new speed      delta
      Adler32KB-4  1.73GB/s ± 0%  2.29GB/s ± 0%  +32.41%  (p=0.000 n=20+20)
      
      Change-Id: I38990aa66ca4452a886200018a57c0bc3af30717
      Reviewed-on: https://go-review.googlesource.com/21880Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      89a1f028