1. 29 Oct, 2014 2 commits
    • Russ Cox's avatar
      runtime: fix unrecovered panic on external thread · c4efaac1
      Russ Cox authored
      Fixes #8588.
      
      LGTM=austin
      R=austin
      CC=golang-codereviews, khr
      https://golang.org/cl/159700044
      c4efaac1
    • Russ Cox's avatar
      cmd/gc: avoid use of goprintf · 5e568545
      Russ Cox authored
      goprintf is a printf-like print for Go.
      It is used in the code generated by 'defer print(...)' and 'go print(...)'.
      
      Normally print(1, 2, 3) turns into
      
              printint(1)
              printint(2)
              printint(3)
      
      but defer and go need a single function call to give the runtime;
      they give the runtime something like goprintf("%d%d%d", 1, 2, 3).
      
      Variadic functions like goprintf cannot be described in the new
      type information world, so we have to replace it.
      
      Replace with a custom function, so that defer print(1, 2, 3) turns
      into
      
              defer func(a1, a2, a3 int) {
                      print(a1, a2, a3)
              }(1, 2, 3)
      
      (and then the print becomes three different printints as usual).
      
      Fixes #8614.
      
      LGTM=austin
      R=austin
      CC=golang-codereviews, r
      https://golang.org/cl/159700043
      5e568545
  2. 28 Oct, 2014 17 commits
  3. 27 Oct, 2014 8 commits
    • Robert Griesemer's avatar
      spec: permit parentheses around builtin function names · ccc713c7
      Robert Griesemer authored
      Not a language change.
      
      This is simply documenting the status quo which permits
      builtin function names to be parenthesized in calls; e.g.,
      both
      
              len(s)
      and
              (((len)))(s)
      
      are accepted by all compilers and go/types.
      
      Changed the grammar by merging the details of BuiltinCall
      with ordinary Calls. Also renamed the Call production to
      Arguments which more clearly identifies that part of the
      grammar and also matches better with its counterpart on
      the declaration side (Parameters).
      
      The fact that the first argument can be a type (for builtins)
      or cannot be a type (for regular function calls) is expressed
      in the prose, no need to make the grammar more complicated.
      
      Fixes #9001.
      
      LGTM=iant, r, rsc
      R=r, rsc, iant, ken, dave
      CC=golang-codereviews
      https://golang.org/cl/160570043
      ccc713c7
    • Andrew Gerrand's avatar
      html/template: fix build after encoding/js escaping change · e71c9cbe
      Andrew Gerrand authored
      TBR=rsc
      R=golang-codereviews
      CC=golang-codereviews
      https://golang.org/cl/159590043
      e71c9cbe
    • Russ Cox's avatar
      test: make maplinear more robust · 0f698be5
      Russ Cox authored
      The test just doubled a certain number of times
      and then gave up. On a mostly fast but occasionally
      slow machine this may never make the test run
      long enough to see the linear growth.
      
      Change test to keep doubling until the first round
      takes at least a full second, to reduce the effect of
      occasional scheduling or other jitter.
      
      The failure we saw had a time for the first round
      of around 100ms.
      
      Note that this test still passes once it sees a linear
      effect, even with a very small total time.
      The timeout here only applies to how long the execution
      must be to support a reported failure.
      
      LGTM=khr
      R=khr
      CC=golang-codereviews, rlh
      https://golang.org/cl/164070043
      0f698be5
    • Russ Cox's avatar
      encoding/json: encode \t as \t instead of \u0009 · aec37e7c
      Russ Cox authored
      Shorter and easier to read form for a common character.
      
      LGTM=bradfitz
      R=adg, bradfitz
      CC=golang-codereviews, zimmski
      https://golang.org/cl/162340043
      aec37e7c
    • Rob Pike's avatar
      doc/go1.4.html: first pieces of release notes · 456df7c2
      Rob Pike authored
      Move the release notes into an HTML file.
      Start writing the text.
      
      LGTM=rsc
      R=golang-codereviews, bradfitz, kamil.kisiel, tracey.brendan, rsc
      CC=golang-codereviews
      https://golang.org/cl/161350043
      456df7c2
    • Austin Clements's avatar
      runtime: fix endianness assumption when decoding ftab · 3e62d218
      Austin Clements authored
      The ftab ends with a half functab record consisting only of
      the 'entry' field followed by a uint32 giving the offset of
      the next table.  Previously, symtabinit assumed it could read
      this uint32 as a uintptr.  Since this is unsafe on big endian,
      explicitly read the offset as a uint32.
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/157660043
      3e62d218
    • Ian Lance Taylor's avatar
      net: if a DNS lookup times out, forget that it is in flight · 77595e46
      Ian Lance Taylor authored
      Before this CL, if the system resolver does a very slow DNS
      lookup for a particular host, all subsequent requests for that
      host will hang waiting for that lookup to complete.  That is
      more or less expected when Dial is called with no deadline.
      When Dial has a deadline, though, we can accumulate a large
      number of goroutines waiting for that slow DNS lookup.  Try to
      avoid this problem by restarting the DNS lookup when it is
      redone after a deadline is passed.
      
      This CL also avoids creating an extra goroutine purely to
      handle the deadline.
      
      No test because we would have to simulate a slow DNS lookup
      followed by a fast DNS lookup.
      
      Fixes #8602.
      
      LGTM=bradfitz
      R=bradfitz, mikioh.mikioh
      CC=golang-codereviews, r, rsc
      https://golang.org/cl/154610044
      77595e46
    • Emil Hessman's avatar
      misc/makerelease/windows: fix 404 help URL in installer · 78082dfa
      Emil Hessman authored
      ARPHELPLINK yields 404; update the URL.
      
      While here, also prefix the ARPREADME and ARPURLINFOABOUT URL's with the HTTP scheme to make 'em clickable links in the Add or Remove Programs listing.
      
      LGTM=adg
      R=golang-codereviews
      CC=adg, golang-codereviews
      https://golang.org/cl/154580045
      78082dfa
  4. 26 Oct, 2014 1 commit
  5. 25 Oct, 2014 1 commit
  6. 24 Oct, 2014 7 commits
    • Gustavo Niemeyer's avatar
      cmd/go: add bzr support for vcs root checking · fdf45843
      Gustavo Niemeyer authored
      Complements the logic introduced in CL 147170043.
      
      LGTM=rsc
      R=rsc, gustavo
      CC=golang-codereviews
      https://golang.org/cl/147240043
      fdf45843
    • Rob Pike's avatar
      c2b7b6d5
    • Rob Pike's avatar
      unsafe: document that unsafe programs are not protected · 1415a53b
      Rob Pike authored
      The compatibility guideline needs to be clear about this even
      though it means adding a clause that was not there from the
      beginning. It has always been understood, so this isn't really
      a change in policy, just in its expression.
      
      LGTM=bradfitz, gri, rsc
      R=golang-codereviews, bradfitz, gri, rsc
      CC=golang-codereviews
      https://golang.org/cl/162060043
      1415a53b
    • Russ Cox's avatar
      net/http/pprof: run GC for /debug/pprof/heap?gc=1 · c5943c66
      Russ Cox authored
      We force runtime.GC before WriteHeapProfile with -test.heapprofile.
      Make it possible to do the same with the HTTP interface.
      
      Some servers only run a GC every few minutes.
      On such servers, the heap profile will be a few minutes stale,
      which may be too old to be useful.
      
      Requested by private mail.
      
      LGTM=dvyukov
      R=dvyukov
      CC=golang-codereviews
      https://golang.org/cl/161990043
      c5943c66
    • Russ Cox's avatar
      cmd/gc: synthesize zeroed value for non-assignment context · 5225854b
      Russ Cox authored
      CL 157910047 introduced code to turn a node representing
      a zeroed composite literal into N, the nil Node* pointer
      (which represents any zero, not the Go literal nil).
      
      That's great for assignments like x = T{}, but it doesn't work
      when T{} is used in a value context like T{}.v or x == T{}.
      Fix those.
      
      Should have no effect on performance; confirmed.
      The deltas below are noise (compare ns/op):
      
      benchmark                          old ns/op      new ns/op      delta
      BenchmarkBinaryTree17              2902919192     2915228424     +0.42%
      BenchmarkFannkuch11                2597417605     2630363685     +1.27%
      BenchmarkFmtFprintfEmpty           73.7           74.8           +1.49%
      BenchmarkFmtFprintfString          196            199            +1.53%
      BenchmarkFmtFprintfInt             213            217            +1.88%
      BenchmarkFmtFprintfIntInt          336            356            +5.95%
      BenchmarkFmtFprintfPrefixedInt     289            294            +1.73%
      BenchmarkFmtFprintfFloat           415            416            +0.24%
      BenchmarkFmtManyArgs               1281           1271           -0.78%
      BenchmarkGobDecode                 10271734       10307978       +0.35%
      BenchmarkGobEncode                 8985021        9079442        +1.05%
      BenchmarkGzip                      410233227      412266944      +0.50%
      BenchmarkGunzip                    102114554      103272443      +1.13%
      BenchmarkHTTPClientServer          45297          44993          -0.67%
      BenchmarkJSONEncode                19499741       19498489       -0.01%
      BenchmarkJSONDecode                76436733       74247497       -2.86%
      BenchmarkMandelbrot200             4273814        4307292        +0.78%
      BenchmarkGoParse                   4024594        4028937        +0.11%
      BenchmarkRegexpMatchEasy0_32       131            135            +3.05%
      BenchmarkRegexpMatchEasy0_1K       328            333            +1.52%
      BenchmarkRegexpMatchEasy1_32       115            117            +1.74%
      BenchmarkRegexpMatchEasy1_1K       931            948            +1.83%
      BenchmarkRegexpMatchMedium_32      216            217            +0.46%
      BenchmarkRegexpMatchMedium_1K      72669          72857          +0.26%
      BenchmarkRegexpMatchHard_32        3818           3809           -0.24%
      BenchmarkRegexpMatchHard_1K        121398         121945         +0.45%
      BenchmarkRevcomp                   613996550      615145436      +0.19%
      BenchmarkTemplate                  93678525       93267391       -0.44%
      BenchmarkTimeParse                 414            411            -0.72%
      BenchmarkTimeFormat                396            399            +0.76%
      
      Fixes #8947.
      
      LGTM=r
      R=r, dave
      CC=golang-codereviews
      https://golang.org/cl/162130043
      5225854b
    • Russ Cox's avatar
      doc/go1.4: encoding/csv · 737a9e0d
      Russ Cox authored
      CC=golang-codereviews
      https://golang.org/cl/162140043
      737a9e0d
    • Russ Cox's avatar
      encoding/csv: for Postgres, unquote empty strings, quote \. · 6ad2749d
      Russ Cox authored
      In theory both of these lines encode the same three fields:
      
              a,,c
              a,"",c
      
      However, Postgres defines that when importing CSV, the unquoted
      version is treated as NULL (missing), while the quoted version is
      treated as a string value (empty string). If the middle field is supposed to
      be an integer value, the first line can be imported (NULL is okay), but
      the second line cannot (empty string is not).
      
      Postgres's import command (COPY FROM) has an option to force
      the unquoted empty to be interpreted as a string but it does not
      have an option to force the quoted empty to be interpreted as a NULL.
      
      From http://www.postgresql.org/docs/9.0/static/sql-copy.html:
      
              The CSV format has no standard way to distinguish a NULL
              value from an empty string. PostgreSQL's COPY handles this
              by quoting. A NULL is output as the NULL parameter string
              and is not quoted, while a non-NULL value matching the NULL
              parameter string is quoted. For example, with the default
              settings, a NULL is written as an unquoted empty string,
              while an empty string data value is written with double
              quotes (""). Reading values follows similar rules. You can
              use FORCE_NOT_NULL to prevent NULL input comparisons for
              specific columns.
      
      Therefore printing the unquoted empty is more flexible for
      imports into Postgres than printing the quoted empty.
      
      In addition to making the output more useful with Postgres, not
      quoting empty strings makes the output smaller and easier to read.
      It also matches the behavior of Microsoft Excel and Google Drive.
      
      Since we are here and making concessions for Postgres, handle this
      case too (again quoting the Postgres docs):
      
              Because backslash is not a special character in the CSV
              format, \., the end-of-data marker, could also appear as a
              data value. To avoid any misinterpretation, a \. data value
              appearing as a lone entry on a line is automatically quoted
              on output, and on input, if quoted, is not interpreted as
              the end-of-data marker. If you are loading a file created by
              another application that has a single unquoted column and
              might have a value of \., you might need to quote that value
              in the input file.
      
      Fixes #7586.
      
      LGTM=bradfitz
      R=bradfitz
      CC=golang-codereviews
      https://golang.org/cl/164760043
      6ad2749d
  7. 23 Oct, 2014 2 commits
  8. 22 Oct, 2014 2 commits
    • Dmitriy Vyukov's avatar
      sync: release Pool memory during second and later GCs · af3868f1
      Dmitriy Vyukov authored
      Pool memory was only being released during the first GC after the first Put.
      
      Put assumes that p.local != nil means p is on the allPools list.
      poolCleanup (called during each GC) removed each pool from allPools
      but did not clear p.local, so each pool was cleared by exactly one GC
      and then never cleared again.
      
      This bug was introduced late in the Go 1.3 release cycle.
      
      Fixes #8979.
      
      LGTM=rsc
      R=golang-codereviews, bradfitz, r, rsc
      CC=golang-codereviews, khr
      https://golang.org/cl/162980043
      af3868f1
    • Ian Lance Taylor's avatar
      test: add more cases to recover.go · 18051c08
      Ian Lance Taylor authored
      test16 used to fail with gccgo.  The withoutRecoverRecursive
      test would have failed in some possible implementations.
      
      LGTM=bradfitz
      R=golang-codereviews, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/151630043
      18051c08