1. 30 Sep, 2014 22 commits
    • Andrew Gerrand's avatar
      doc: document go1.3.3 · 7210753f
      Andrew Gerrand authored
      LGTM=r
      R=r
      CC=golang-codereviews
      https://golang.org/cl/149280044
      7210753f
    • Paul van Brouwershaven's avatar
      x509: Fixed ASN.1 encoding in CRL Distribution Points extension · e7488b21
      Paul van Brouwershaven authored
      The ASN.1 encoding of the CRL Distribution Points extension showed an invalid false 'IsCompound' which caused a display problem in the Windows certificate viewer.
      
      LGTM=agl
      R=agl
      CC=golang-codereviews
      https://golang.org/cl/143320043
      e7488b21
    • Alan Donovan's avatar
      cmd/cgo: add missing ast.SliceExpr.Max case to AST traversal. · 74b8693c
      Alan Donovan authored
      + static test
      
      NB: there's a preexisting (dynamic) failure of test issue7978.go.
      
      LGTM=iant
      R=rsc, iant
      CC=golang-codereviews
      https://golang.org/cl/144650045
      74b8693c
    • Robert Griesemer's avatar
      go/format, cmd/gofmt: added missing comments, minor internal cleanup · 146713b6
      Robert Griesemer authored
      This is a minor cleanup following CL 142360043:
      
      The internal parse and format functions in both packages
      were almost identical - made them identical by adding an
      extra parameter, and documented them as identical.
      
      Eventually we should find a nice way to factor these functions
      out, but we cannot do this now while in prep for 1.4.
      
      No functionality change.
      
      LGTM=adonovan
      R=adonovan
      CC=golang-codereviews
      https://golang.org/cl/146520043
      146713b6
    • Brad Fitzpatrick's avatar
      net/http/httputil: ensure DumpRequestOut dumps all of Body · 4a532c66
      Brad Fitzpatrick authored
      Bodies larger than 8KB (the default bufio reader size) weren't
      being dumped.  Force a read of the body so they're teed into
      the response buffer.
      
      Thanks to Steven Hartland for identifying the problem.
      
      Fixes #8089
      
      LGTM=r
      R=golang-codereviews, r
      CC=adg, golang-codereviews
      https://golang.org/cl/144650044
      4a532c66
    • Adam Langley's avatar
      encoding/asn1: fix unmarshaling of implicitly tagged UTF-8 strings. · 1b89cd16
      Adam Langley authored
      Fixes #8541.
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/153770043
      1b89cd16
    • Robert Griesemer's avatar
      spec: clarify variable declaration type rules · 47094dcf
      Robert Griesemer authored
      Not a language change.
      
      Several inaccuracies were fixed:
      
      1) A variable declaration may declare more than just one
      variable.
      
      2) Variable initialization follows the rules of assignments,
      including n:1 assignments. The existing wording implied a 1:1
      or n:n rule and generally was somewhat unspecific.
      
      3) The rules for variable declarations with no types and
      untyped initialization expressions had minor holes (issue 8088).
      
      4) Clarified the special cases of assignments of untyped values
      (we don't just have untyped constants, but also untyped bools,
      e.g. from comparisons). The new wording is more direct.
      
      To that end, introduced the notion of an untyped constant's
      "default type" so that the same concept doesn't have to be
      repeatedly introduced.
      
      Fixes #8088.
      
      LGTM=iant, r, rsc
      R=r, rsc, iant, ken
      CC=golang-codereviews
      https://golang.org/cl/142320043
      47094dcf
    • Russ Cox's avatar
      cmd/go: sometimes name tmp test binary test.test.exe on Windows · c017a4e1
      Russ Cox authored
      Right now it is always pkgname.test.exe, but if pkgname is
      patch or install or setup or update, Windows thinks that
      running it will install new software, so it pops up a dialog
      box asking for more permission.
      Renaming the binary avoids the Windows security check.
      
      This only applies to the binary that the Go command writes
      to its temporary work directory. If the user runs 'go test -c'
      or any of the other ways to generate a test binary, it will
      continue to use pkgname.test.exe.
      
      Fixes #8711.
      
      LGTM=bradfitz
      R=golang-codereviews, r
      CC=alex.brainman, bradfitz, golang-codereviews, iant
      https://golang.org/cl/146580043
      c017a4e1
    • Russ Cox's avatar
      cmd/pprof: add Go implementation · 8b5221a5
      Russ Cox authored
      Update #8798
      
      This is a new implementation of pprof,
      written in Go instead of in Perl.
      It was written primarily by Raul Silvera and
      is in use for profiling programs of all languages
      inside Google.
      
      The internal structure is a bit package-heavy,
      but it matches the copy used inside Google, and
      since it is in an internal directory, we can make
      changes to it later if we need to.
      
      The only "new" file here is src/cmd/pprof/pprof.go,
      which stitches together the Google pprof and the
      Go command libraries for object file access.
      
      I am explicitly NOT interested in style or review
      comments on the rest of the files
      (that is, src/cmd/pprof/internal/...).
      Those are intended to stay as close to the Google
      copies as possible, like we did with the pprof Perl script.
      
      Still to do:
      
      - Basic tests.
      - Real command documentation.
      - Hook up disassemblers.
      
      LGTM=r
      R=r, bradfitz, alex.brainman, dave
      CC=golang-codereviews
      https://golang.org/cl/153750043
      8b5221a5
    • Russ Cox's avatar
      cmd/gc: fix call order in array literal of slice literal of make chan · 454d1b0e
      Russ Cox authored
      Fixes #8761.
      
      LGTM=iant
      R=golang-codereviews, iant
      CC=golang-codereviews, r
      https://golang.org/cl/144530045
      454d1b0e
    • Russ Cox's avatar
      compress/*: note that NewReader may introduce buffering · a6abe22e
      Russ Cox authored
      Fixes #8309.
      
      LGTM=r
      R=golang-codereviews, r
      CC=golang-codereviews, iant
      https://golang.org/cl/147380043
      a6abe22e
    • Russ Cox's avatar
      compress/zlib: mention that NewReaderDict can return ErrDictionary · 02395953
      Russ Cox authored
      Fixes #7935.
      
      LGTM=iant
      R=golang-codereviews, iant
      CC=golang-codereviews, ruiu
      https://golang.org/cl/147390043
      02395953
    • Russ Cox's avatar
      log/syslog: try /var/run/log, for FreeBSD · 5a1906dc
      Russ Cox authored
      Fixes #8449.
      
      LGTM=iant
      R=golang-codereviews, iant
      CC=bradfitz, golang-codereviews
      https://golang.org/cl/145600044
      5a1906dc
    • Russ Cox's avatar
      cmd/objdump: move armasm, x86asm into internal packages · c75f81f0
      Russ Cox authored
      For Go 1.3 these external packages were collapsed into
      large single-file implementations stored in the cmd/objdump
      directory.
      
      For Go 1.4 we want pprof to be able to link against them too,
      so move them into cmd/internal, where they can be shared.
      
      The new files are copied from the repo in the file path (rsc.io/...).
      Those repos were code reviewed during development
      (mainly by crawshaw and minux), because we knew the
      main repo would use them.
      
      Update #8798
      
      LGTM=bradfitz
      R=crawshaw, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/153750044
      c75f81f0
    • Russ Cox's avatar
      CONTRIBUTORS: add Raul Silvera (Google CLA) · 7de0c315
      Russ Cox authored
      Raul wrote the pprof code in CL 153750043.
      
      LGTM=bradfitz, r
      R=r, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/146450043
      7de0c315
    • Russ Cox's avatar
      regexp/syntax: reject large repetitions created by nesting small ones · 9b2b0c8c
      Russ Cox authored
      Fixes #7609.
      
      LGTM=r
      R=r
      CC=golang-codereviews
      https://golang.org/cl/150270043
      9b2b0c8c
    • Keith Randall's avatar
      runtime: fix scanning of gc work buffer · ac9218f5
      Keith Randall authored
      GC types were not being generated for the garbage collector
      work buffer.  The markfor object was being collected as a result.
      This broke amd64p32 and maybe plan9 builds.  Why it didn't break
      every build I'm not sure...
      
      Fixes #8812
      
      LGTM=0intro, rsc
      R=golang-codereviews, dave, khr, 0intro, rsc
      CC=golang-codereviews
      https://golang.org/cl/149260043
      ac9218f5
    • Dmitriy Vyukov's avatar
      runtime: fix throwsplit check · 12308d5a
      Dmitriy Vyukov authored
      Newstack runs on g0, g0->throwsplit is never set.
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews, khr
      https://golang.org/cl/147370043
      12308d5a
    • Keith Randall's avatar
      runtime: initialize traceback variables earlier · 70b2da98
      Keith Randall authored
      Our traceback code needs to know the PC of several special
      functions, including goexit, mcall, etc.  Make sure that
      these PCs are initialized before any traceback occurs.
      
      Fixes #8766
      
      LGTM=rsc
      R=golang-codereviews, rsc, khr, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/145570043
      70b2da98
    • Brad Fitzpatrick's avatar
      net/http: make Transport.CloseIdleConnections also close pending dials · f13cec9f
      Brad Fitzpatrick authored
      See comment 4 of https://code.google.com/p/go/issues/detail?id=8483#c4:
      
      "So if a user creates a http.Client, issues a bunch of
      requests and then wants to shutdown it and all opened connections;
      what is she intended to do? The report suggests that just waiting for
      all pending requests and calling CloseIdleConnections won't do, as
      there can be new racing connections. Obviously she can't do what
      you've done in the test, as it uses the unexported function.  If this
      happens periodically, it can lead to serious resource leaks (the
      transport is also preserved alive).  Am I missing something?"
      
      This CL tracks the user's intention to close all idle
      connections (CloseIdleConnections sets it true; and making a
      new request sets it false). If a pending dial finishes and
      nobody wants it, before it's retained for a future caller, the
      "wantIdle" bool is checked and it's closed if the user has
      called CloseIdleConnections without a later call to make a new
      request.
      
      Fixes #8483
      
      LGTM=adg
      R=golang-codereviews, dvyukov, adg
      CC=golang-codereviews, rsc
      https://golang.org/cl/148970043
      f13cec9f
    • Dmitri Shuralyov's avatar
      go/format, cmd/gofmt: fix issues with partial Go code with indent · 912ec199
      Dmitri Shuralyov authored
      Fixes #5551.
      Fixes #4449.
      
      Adds tests for both issues.
      
      Note that the two issues occur only when formatting partial Go code
      with indent.
      
      The best way to understand the change is as follows: I took the code
      of cmd/gofmt and go/format, combined it into one unified code that
      does not suffer from either 4449 nor 5551, and then applied that code
      to both cmd/gofmt and go/format.
      
      As a result, there is now much more identical code between the two
      packages, making future code deduplication easier (it was not possible
      to do that now without adding public APIs, which I was advised not to
      do at this time).
      
      More specifically, I took the parse() of cmd/gofmt which correctly
      preserves comments (issue 5551) and modified it to fix issue where
      it would sometimes modify literal values (issue 4449).
      
      I ended up removing the matchSpace() function because it no longer
      needed to do some of its work (insert indent), and a part of its work
      had to be done in advance (determining the indentation of first code
      line), because that calculation is required for cfg.Fprint() to run.
      
      adjustIndent is used to adjust the indent of cfg.Fprint() to compensate
      for the body of wrapper func being indented by one level. This allows
      to get rid of the bytes.Replace text manipulation of inner content,
      which was problematic and sometimes altered raw string literals (issue
      4449). This means that sometimes the value of cfg.Indent is negative,
      but that works as expected.
      
      So now the algorithm for formatting partial Go code is:
      
      1. Determine and prepend leading space of original source.
      2. Determine and prepend indentation of first code line.
      3. Format and write partial Go code (with all of its leading &
         trailing space trimmed).
      4. Determine and append trailing space of original source.
      
      LGTM=gri
      R=golang-codereviews, bradfitz, gri
      CC=golang-codereviews
      https://golang.org/cl/142360043
      912ec199
    • Dave Cheney's avatar
      liblink: generate MRC replacement in liblink, not tls_arm · 0b36211c
      Dave Cheney authored
      Fixes #8690.
      
      This CL moves the save of LR around BL runtime.read_tls_fallback to liblink as it is not needed when MRC is not replaced.
      
      LGTM=rsc, minux
      R=rsc, khr, minux
      CC=golang-codereviews
      https://golang.org/cl/147310043
      0b36211c
  2. 29 Sep, 2014 14 commits
  3. 28 Sep, 2014 1 commit
  4. 27 Sep, 2014 1 commit
  5. 26 Sep, 2014 2 commits
    • Russ Cox's avatar
      math: avoid assumption of denormalized math mode in Sincos · 4a8cb4a4
      Russ Cox authored
      The extra-clever code in Sincos is trying to do
      
              if v&2 == 0 {
                      mask = 0xffffffffffffffff
              } else {
                      mask = 0
              }
      
      It does this by turning v&2 into a float64 X0 and then using
      
              MOVSD $0.0, X3
              CMPSD X0, X3, 0
      
      That CMPSD is defined to behave like:
      
              if X0 == X3 {
                      X3 = 0xffffffffffffffff
              } else {
                      X3 = 0
              }
      
      which gives the desired mask in X3. The goal in using the
      CMPSD was to avoid a conditional branch.
      
      This code fails when called from a PortAudio callback.
      In particular, the failure behavior is exactly as if the
      CMPSD always chose the 'true' execution.
      
      Notice that the comparison X0 == X3 is comparing as
      floating point values the 64-bit pattern v&2 and the actual
      floating point value zero. The only possible values for v&2
      are 0x0000000000000000 (floating point zero)
      and 0x0000000000000002 (floating point 1e-323, a denormal).
      If they are both comparing equal to zero, I conclude that
      in a PortAudio callback (whatever that means), the processor
      is running in "denormals are zero" mode.
      
      I confirmed this by placing the processor into that mode
      and running the test case in the bug; it produces the
      incorrect output reported in the bug.
      
      In general, if a Go program changes the floating point math
      modes to something other than what Go expects, the math
      library is not going to work exactly as intended, so we might
      be justified in not fixing this at all.
      
      However, it seems reasonable that the client code might
      have expected "denormals are zero" mode to only affect
      actual processing of denormals. This code has produced
      what is in effect a gratuitous denormal by being extra clever.
      There is nothing about the computation being requested
      that fundamentally requires a denormal.
      
      It is also easy to do this computation in integer math instead:
      
              mask = ((v&2)>>1)-1
      
      Do that.
      
      For the record, the other math tests that fail if you put the
      processor in "denormals are zero" mode are the tests for
      Frexp, Ilogb, Ldexp, Logb, Log2, and FloatMinMax, but all
      fail processing denormal inputs. Sincos was the only function
      for which that mode causes incorrect behavior on non-denormal inputs.
      
      The existing tests check that the new assembly is correct.
      There is no test for behavior in "denormals are zero" mode,
      because I don't want to add assembly to change that.
      
      Fixes #8623.
      
      LGTM=josharian
      R=golang-codereviews, josharian
      CC=golang-codereviews, iant, r
      https://golang.org/cl/151750043
      4a8cb4a4
    • Russ Cox's avatar
      1d9c0315