]> Cypherpunks repositories - gostls13.git/log
gostls13.git
13 years agobig: refine printf formatting and optimize string conversion
Michael T. Jones [Thu, 21 Jul 2011 21:29:08 +0000 (14:29 -0700)]
big: refine printf formatting and optimize string conversion

Now handles standard precision specifications, standard interactions of
redundant specifications (such as precision and zero-fill), handles the
special case of precision specified but equal to zero, and generates the
output without recursive calls to format/printf to be clearer and faster.

R=gri, mtj, gri
CC=golang-dev
https://golang.org/cl/4703050

13 years agohttp: fix chunking bug during content sniffing
Russ Cox [Thu, 21 Jul 2011 18:29:14 +0000 (14:29 -0400)]
http: fix chunking bug during content sniffing

R=golang-dev, bradfitz, gri
CC=golang-dev
https://golang.org/cl/4807044

13 years agogc: select functions are no longer special
Russ Cox [Thu, 21 Jul 2011 18:10:39 +0000 (14:10 -0400)]
gc: select functions are no longer special

R=ken2
CC=golang-dev
https://golang.org/cl/4794049

13 years agoruntime: faster select
Dmitriy Vyukov [Thu, 21 Jul 2011 17:57:13 +0000 (13:57 -0400)]
runtime: faster select

Make selectsend() accept pointer to the element,
it makes it possible to make Scase fixed-size
and allocate/free Select, all Scase's and all SudoG at once.
As a consequence SudoG freelist die out.

benchmark                       old,ns/op  new,ns/op
BenchmarkSelectUncontended      1080        558
BenchmarkSelectUncontended-2       675        264
BenchmarkSelectUncontended-4       459        205
BenchmarkSelectContended      1086        560
BenchmarkSelectContended-2      1775       1672
BenchmarkSelectContended-4      2668       2149
(on Intel Q6600, 4 cores, 2.4GHz)

benchmark                       old ns/op    new ns/op    delta
BenchmarkSelectUncontended         517.00       326.00  -36.94%
BenchmarkSelectUncontended-2       281.00       166.00  -40.93%
BenchmarkSelectUncontended-4       250.00        83.10  -66.76%
BenchmarkSelectUncontended-8       107.00        47.40  -55.70%
BenchmarkSelectUncontended-16       67.80        41.30  -39.09%
BenchmarkSelectContended           513.00       325.00  -36.65%
BenchmarkSelectContended-2         699.00       628.00  -10.16%
BenchmarkSelectContended-4        1085.00      1092.00   +0.65%
BenchmarkSelectContended-8        3253.00      2477.00  -23.85%
BenchmarkSelectContended-16       5313.00      5116.00   -3.71%
(on Intel E5620, 8 HT cores, 2.4 GHz)

R=rsc, ken
CC=golang-dev
https://golang.org/cl/4811041

13 years agoundo CL 4808044 / 1bd754e69ce7
Russ Cox [Thu, 21 Jul 2011 17:25:55 +0000 (13:25 -0400)]
undo CL 4808044 / 1bd754e69ce7

ServeMux depends on having a URL
in order to mux.  It might be that the right
fix is to have CONNECT handlers just not
look at URL.

««« original CL description
http: do not parse req.URL for CONNECT

CONNECT's argument is not a URL.

R=golang-dev, bradfitz, rsc
CC=golang-dev
https://golang.org/cl/4808044

»»»

TBR=bradfitz
CC=golang-dev
https://golang.org/cl/4798046

13 years agohttp: do not parse req.URL for CONNECT
Yasuhiro Matsumoto [Thu, 21 Jul 2011 15:33:59 +0000 (11:33 -0400)]
http: do not parse req.URL for CONNECT

CONNECT's argument is not a URL.

R=golang-dev, bradfitz, rsc
CC=golang-dev
https://golang.org/cl/4808044

13 years agotesting: output benchmark name before executing it
Dmitriy Vyukov [Thu, 21 Jul 2011 15:31:07 +0000 (11:31 -0400)]
testing: output benchmark name before executing it
It makes it clear what benchmark is currently running.
Especially useful in case of hangup or crash.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4816043

13 years agosync: improve Once fast path
Dmitriy Vyukov [Thu, 21 Jul 2011 15:30:14 +0000 (11:30 -0400)]
sync: improve Once fast path
Use atomic.LoadUint32(&done) instead of
atomic.AddInt32(&done, 0) on fast path.

benchmark            old ns/op    new ns/op    delta
BenchmarkOnce            13.40         7.26  -45.82%
BenchmarkOnce-2          22.90         4.04  -82.36%
BenchmarkOnce-4          25.60         2.16  -91.56%
BenchmarkOnce-8          25.80         1.38  -94.65%
BenchmarkOnce-16         24.40         1.33  -94.55%

(on HP Z600, 2 x Intel Xeon E5620, 8 HT cores, 2.4 GHz)

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4787041

13 years agoruntime: replace centralized ncgocall counter with a distributed one
Dmitriy Vyukov [Thu, 21 Jul 2011 15:29:08 +0000 (11:29 -0400)]
runtime: replace centralized ncgocall counter with a distributed one

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4809042

13 years agohttp: disable sniffer for now.
David Symonds [Thu, 21 Jul 2011 12:20:09 +0000 (22:20 +1000)]
http: disable sniffer for now.

Something is broken, and investigation is underway.
In the meantime, godoc is broken, so disable sniffing for now
by reverting to the pre-sniffer state.

R=r
CC=golang-dev
https://golang.org/cl/4809046

13 years agold: fix freebsd build reverting .interp move
Gustavo Niemeyer [Thu, 21 Jul 2011 06:48:56 +0000 (03:48 -0300)]
ld: fix freebsd build reverting .interp move

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4794046

13 years agofmt: handle precision 0 format stings in standard way
Michael T. Jones [Thu, 21 Jul 2011 06:46:51 +0000 (16:46 +1000)]
fmt: handle precision 0 format stings in standard way

The C-stdlib heritage of printf/fprintf/sprintf has two odd
aspects for precisions of zero with integers. First, the zero
can be specified in any of these ways, "%4.0d", "%.0d" and
"%.d" which was not previously supported here. Secondly, the
seemingly universal interpretation of precision for integers
is that precision==0 and value==0 means print nothing at all.
The code here now handles this for integers just as the code
in big/int.c does the same for the Int type. New tests are
added to fmt_test.go to verify these changes.

R=r, r
CC=golang-dev
https://golang.org/cl/4717045

13 years agoexp/template: A template can be in one set only.
Rob Pike [Thu, 21 Jul 2011 04:22:01 +0000 (14:22 +1000)]
exp/template: A template can be in one set only.
This simplifies the API and makes it easier to make the template
invocation statically secure, at the cost of some minor flexibility.

R=golang-dev, dsymonds, r
CC=golang-dev
https://golang.org/cl/4794045

13 years agohtml: sync html/testdata/webkit with upstream WebKit.
Nigel Tao [Thu, 21 Jul 2011 02:50:45 +0000 (12:50 +1000)]
html: sync html/testdata/webkit with upstream WebKit.

As $GOROOT/src/pkg/html/testdata/webkit/README says, we're pulling from
$WEBKITROOT/LayoutTests/html5lib/resources.

R=r
CC=golang-dev
https://golang.org/cl/4810043

13 years agohtml: parse misnested formatting tags according to the HTML5 spec.
Nigel Tao [Thu, 21 Jul 2011 01:20:54 +0000 (11:20 +1000)]
html: parse misnested formatting tags according to the HTML5 spec.
This is the "adoption agency" algorithm.

The test case input is "<a><p>X<a>Y</a>Z</p></a>". The correct parse is:
| <html>
|   <head>
|   <body>
|     <a>
|     <p>
|       <a>
|         "X"
|       <a>
|         "Y"
|       "Z"

R=gri
CC=golang-dev
https://golang.org/cl/4771042

13 years agogob: send empty but non-nil maps.
Rob Pike [Thu, 21 Jul 2011 00:27:11 +0000 (10:27 +1000)]
gob: send empty but non-nil maps.
Fixes #2082.

R=golang-dev, dsymonds, r
CC=golang-dev
https://golang.org/cl/4798042

13 years agogodoc: fix zip file directory lookup
Robert Griesemer [Wed, 20 Jul 2011 23:22:13 +0000 (16:22 -0700)]
godoc: fix zip file directory lookup

Also: remove left-over println calls.

R=bradfitz
CC=golang-dev
https://golang.org/cl/4807042

13 years agohtml: handle character entities without semicolons
Andrew Balholm [Wed, 20 Jul 2011 23:10:49 +0000 (09:10 +1000)]
html: handle character entities without semicolons

Fix the TODO: unescape("&notit;") should be "¬it;"

Also accept digits in entity names.

R=nigeltao
CC=golang-dev, rsc
https://golang.org/cl/4781042

13 years agohttp: sniffing algorithm.
David Symonds [Wed, 20 Jul 2011 22:38:35 +0000 (08:38 +1000)]
http: sniffing algorithm.

This follows draft-ietf-websec-mime-sniff-03 in its intent,
though not its algorithmic specification.

R=rsc
CC=golang-dev
https://golang.org/cl/4746042

13 years agoio/ioutil: improve performance of ioutil.Discard
Mike Solomon [Wed, 20 Jul 2011 21:34:49 +0000 (14:34 -0700)]
io/ioutil: improve performance of ioutil.Discard
Fixes #2084.

R=bradfitz, rsc
CC=golang-dev
https://golang.org/cl/4817041

13 years agoCONTRIBUTORS: add Mike Solomon (Google CLA)
Brad Fitzpatrick [Wed, 20 Jul 2011 20:30:46 +0000 (13:30 -0700)]
CONTRIBUTORS: add Mike Solomon (Google CLA)

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4818041

13 years agoos: point readers at the exec package
Brad Fitzpatrick [Wed, 20 Jul 2011 18:38:18 +0000 (11:38 -0700)]
os: point readers at the exec package

R=golang-dev, evan, rsc
CC=golang-dev
https://golang.org/cl/4802046

13 years agoruntime: apply minor tweaks to channels
Dmitriy Vyukov [Wed, 20 Jul 2011 18:28:55 +0000 (14:28 -0400)]
runtime: apply minor tweaks to channels
Remove complicated PRNG algorithm
(argument is limited by uint16 and can't be <= 1).
Do not require chansend/chanrecv selgen to be bumped with CAS.

R=rsc, ken
CC=golang-dev
https://golang.org/cl/4816041

13 years agoruntime: improve performance of sync channels
Dmitriy Vyukov [Wed, 20 Jul 2011 15:51:25 +0000 (11:51 -0400)]
runtime: improve performance of sync channels
1. SudoG always contains a pointer to the element
(thus no variable size, and less copying).
2. chansend/chanrecv allocate SudoG on the stack.
3. Copying of elements and gorotuine notifications
are moved out of critical sections.

benchmark                        old ns/op    new ns/op    delta
BenchmarkSelectUncontended          515.00       514.00   -0.19%
BenchmarkSelectUncontended-2        291.00       281.00   -3.44%
BenchmarkSelectUncontended-4        213.00       189.00  -11.27%
BenchmarkSelectUncontended-8         78.30        79.00   +0.89%
BenchmarkSelectContended            518.00       514.00   -0.77%
BenchmarkSelectContended-2          655.00       631.00   -3.66%
BenchmarkSelectContended-4         1026.00      1051.00   +2.44%
BenchmarkSelectContended-8         2026.00      2128.00   +5.03%
BenchmarkSelectNonblock             175.00       173.00   -1.14%
BenchmarkSelectNonblock-2            85.10        87.70   +3.06%
BenchmarkSelectNonblock-4            60.10        43.30  -27.95%
BenchmarkSelectNonblock-8            37.60        25.50  -32.18%
BenchmarkChanUncontended            109.00       114.00   +4.59%
BenchmarkChanUncontended-2           54.60        57.20   +4.76%
BenchmarkChanUncontended-4           27.40        28.70   +4.74%
BenchmarkChanUncontended-8           14.60        15.10   +3.42%
BenchmarkChanContended              108.00       114.00   +5.56%
BenchmarkChanContended-2            621.00       617.00   -0.64%
BenchmarkChanContended-4            759.00       677.00  -10.80%
BenchmarkChanContended-8           1635.00      1517.00   -7.22%
BenchmarkChanSync                   299.00       256.00  -14.38%
BenchmarkChanSync-2                5055.00      4624.00   -8.53%
BenchmarkChanSync-4                4998.00      4680.00   -6.36%
BenchmarkChanSync-8                5019.00      4760.00   -5.16%
BenchmarkChanProdCons0              316.00       274.00  -13.29%
BenchmarkChanProdCons0-2           1280.00       617.00  -51.80%
BenchmarkChanProdCons0-4           2433.00      1332.00  -45.25%
BenchmarkChanProdCons0-8           3651.00      1934.00  -47.03%
BenchmarkChanProdCons10             153.00       152.00   -0.65%
BenchmarkChanProdCons10-2           626.00       581.00   -7.19%
BenchmarkChanProdCons10-4          1440.00      1323.00   -8.12%
BenchmarkChanProdCons10-8          2036.00      2017.00   -0.93%

R=rsc, ken
CC=golang-dev
https://golang.org/cl/4790042

13 years agold: remove overlap of ELF sections on dynamic binaries
Gustavo Niemeyer [Wed, 20 Jul 2011 15:47:02 +0000 (12:47 -0300)]
ld: remove overlap of ELF sections on dynamic binaries

The dynamic ELF sections were pointing to the proper data,
but that data was already owned by the rodata and text sections.
Some ELF references explicitly prohibit multiple sections from
owning the same data, and strip behaves accordingly.

The data for these sections was moved out and their ranges are
now owned by their respective sections.  This change makes strip
happy both with and without -s being provided at link time.

A test was added in debug/elf to ensure there are no regressions
on this area in the future.

Fixes #1242.
Fixes #2022.

NOTE: Tested on Linux amd64/386/arm only.

R=rsc
CC=golang-dev
https://golang.org/cl/4808043

13 years agonet/textproto: fix build
Russ Cox [Wed, 20 Jul 2011 15:41:41 +0000 (11:41 -0400)]
net/textproto: fix build

R=bradfitz
CC=golang-dev
https://golang.org/cl/4815041

13 years agonet/textproto: avoid 1 copy in ReadLine, ReadContinuedLine
Russ Cox [Wed, 20 Jul 2011 15:11:57 +0000 (11:11 -0400)]
net/textproto: avoid 1 copy in ReadLine, ReadContinuedLine

Fixes #2083.

R=msolo, bradfitz
CC=golang-dev
https://golang.org/cl/4812042

13 years agoexp/norm: API for normalization library.
Marcel van Lohuizen [Wed, 20 Jul 2011 09:46:05 +0000 (19:46 +1000)]
exp/norm: API for normalization library.

R=r, r, mpvl, rsc
CC=golang-dev
https://golang.org/cl/4678041

13 years agogobuilder: goinstall with -dashboard=false instead of -log=false
Andrew Gerrand [Wed, 20 Jul 2011 06:07:40 +0000 (16:07 +1000)]
gobuilder: goinstall with -dashboard=false instead of -log=false

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4801043

13 years agotag weekly.2011-07-19
Andrew Gerrand [Wed, 20 Jul 2011 05:48:36 +0000 (15:48 +1000)]
tag weekly.2011-07-19

R=r
CC=golang-dev
https://golang.org/cl/4802043

13 years agoweekly.2011-07-19 weekly.2011-07-19
Andrew Gerrand [Wed, 20 Jul 2011 05:45:55 +0000 (15:45 +1000)]
weekly.2011-07-19

R=golang-dev, nigeltao, dsymonds, r
CC=golang-dev
https://golang.org/cl/4801042

13 years agomisc/dashboard: center align build results
Andrew Gerrand [Wed, 20 Jul 2011 01:22:56 +0000 (11:22 +1000)]
misc/dashboard: center align build results

R=rsc, dsymonds
CC=golang-dev
https://golang.org/cl/4806041

13 years agosync/atomic: delete workaround
Rob Pike [Tue, 19 Jul 2011 22:39:24 +0000 (08:39 +1000)]
sync/atomic: delete workaround
Load seems to work on arm now.

R=dsymonds
CC=golang-dev
https://golang.org/cl/4795042

13 years agogodoc: implement http.FileSystem for zip files
Robert Griesemer [Tue, 19 Jul 2011 15:22:20 +0000 (08:22 -0700)]
godoc: implement http.FileSystem for zip files

R=rsc, adg, bradfitz
CC=golang-dev
https://golang.org/cl/4750047

13 years agoruntime: make goc2c build on Plan 9
Lucio De Re [Tue, 19 Jul 2011 15:04:33 +0000 (11:04 -0400)]
runtime: make goc2c build on Plan 9

pkg/runtime/Makefile:
. Adjusted so "goc2c.c" is built using the Plan 9 libraries.

pkg/runtime/goc2c.c:
. Added/subtracted #include headers to correspond to Plan 9
  toolkit.
. Changed fprintf(stderr,...)/exit() combinations to
  sysfatal() calls, adjusted the "%u" format to "%ud".
. Added exits(0) at the end of main().
. Made main() a void-returning function and removed the
  "return 0" at the end of it.

Tested on UBUNTU and Plan 9 only.

R=r, rsc
CC=golang-dev
https://golang.org/cl/4626093

13 years agoruntime: faster entersyscall, exitsyscall
Russ Cox [Tue, 19 Jul 2011 15:01:17 +0000 (11:01 -0400)]
runtime: faster entersyscall, exitsyscall

Uses atomic memory accesses to avoid the need to acquire
and release schedlock on fast paths.

benchmark                            old ns/op    new ns/op    delta
runtime_test.BenchmarkSyscall               73           31  -56.63%
runtime_test.BenchmarkSyscall-2            538           74  -86.23%
runtime_test.BenchmarkSyscall-3            508          103  -79.72%
runtime_test.BenchmarkSyscall-4            721           97  -86.52%
runtime_test.BenchmarkSyscallWork          920          873   -5.11%
runtime_test.BenchmarkSyscallWork-2        516          481   -6.78%
runtime_test.BenchmarkSyscallWork-3        550          343  -37.64%
runtime_test.BenchmarkSyscallWork-4        632          263  -58.39%

(Intel Core i7 L640 2.13 GHz-based Lenovo X201s)

Reduced a less artificial server benchmark
from 11.5r 12.0u 8.0s to 8.3r 9.1u 1.0s.

R=dvyukov, r, bradfitz, r, iant, iant
CC=golang-dev
https://golang.org/cl/4723042

13 years agocgo: windows amd64 port
Wei Guangjing [Tue, 19 Jul 2011 14:47:33 +0000 (10:47 -0400)]
cgo: windows amd64 port

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4725041

13 years agosync/atomic: fix LoadInt32 on ARM
Dmitriy Vyukov [Tue, 19 Jul 2011 12:10:07 +0000 (22:10 +1000)]
sync/atomic: fix LoadInt32 on ARM
R0 is clobbered after cas,
while R1 preserves its value.

R=golang-dev
CC=golang-dev
https://golang.org/cl/4782042

13 years agosync/atomic: attempt to get the arm build green.
Rob Pike [Tue, 19 Jul 2011 07:06:13 +0000 (17:06 +1000)]
sync/atomic: attempt to get the arm build green.
Disable the LoadInt32 and LoadUint32 tests, since they fail.
These should be fixed but we want to get through the rest of the build
to see if something else unrelated is broken.  The arm build has been
bad for a long time.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4780041

13 years agogoinstall, dashboard: Google Code now supports git
Tarmigan Casebolt [Tue, 19 Jul 2011 06:58:18 +0000 (16:58 +1000)]
goinstall, dashboard: Google Code now supports git

R=golang-dev, adg, rsc, tarmigan+golang
CC=golang-dev
https://golang.org/cl/4760055

13 years ago5l: fix arm linker bug introduced by 4742041
Rob Pike [Tue, 19 Jul 2011 05:44:25 +0000 (15:44 +1000)]
5l: fix arm linker bug introduced by 4742041
Should fix the arm build.

R=golang-dev, dsymonds, adg
CC=golang-dev
https://golang.org/cl/4777041

13 years agodoc/talks/io2010: handle the errors
Andrew Gerrand [Tue, 19 Jul 2011 04:10:12 +0000 (14:10 +1000)]
doc/talks/io2010: handle the errors

R=golang-dev, dsymonds, dsymonds, r
CC=golang-dev
https://golang.org/cl/4771041

13 years agogo/build: fixes for windows paths
Alex Brainman [Tue, 19 Jul 2011 04:02:23 +0000 (14:02 +1000)]
go/build: fixes for windows paths

R=golang-dev, mattn.jp, adg
CC=golang-dev
https://golang.org/cl/4746047

13 years agoarchive/zip: support functions to get modified time in ns from MS-DOS time
Robert Griesemer [Tue, 19 Jul 2011 03:30:44 +0000 (20:30 -0700)]
archive/zip: support functions to get modified time in ns from MS-DOS time

R=rsc, r, bradfitz, r, adg
CC=golang-dev
https://golang.org/cl/4748056

13 years agoexp/wingui: make sure it builds again
Alex Brainman [Tue, 19 Jul 2011 03:18:21 +0000 (13:18 +1000)]
exp/wingui: make sure it builds again

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4770041

13 years agogif: fix local color map and coordinates
Rob Pike [Tue, 19 Jul 2011 01:47:15 +0000 (11:47 +1000)]
gif: fix local color map and coordinates

R=nigeltao
CC=golang-dev
https://golang.org/cl/4759051

13 years agodashboard: list "most installed this week" with rolling count
Andrew Gerrand [Tue, 19 Jul 2011 01:12:10 +0000 (11:12 +1000)]
dashboard: list "most installed this week" with rolling count

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4631085

13 years agotime: typo in documentation
Robert Griesemer [Tue, 19 Jul 2011 00:54:32 +0000 (17:54 -0700)]
time: typo in documentation

R=r
CC=golang-dev
https://golang.org/cl/4763048

13 years agoruntime: fix select pass 3
Hector Chu [Mon, 18 Jul 2011 20:15:01 +0000 (16:15 -0400)]
runtime: fix select pass 3

Fixes #2075

R=rsc, ken, r
CC=golang-dev
https://golang.org/cl/4748045

13 years agoruntime: track running goroutine count
Russ Cox [Mon, 18 Jul 2011 19:50:55 +0000 (15:50 -0400)]
runtime: track running goroutine count

Used to use mcpu+msyscall but that's
problematic for packing into a single
atomic word.  The running goroutine count
(where running == Go code or syscall)
can be maintained separately, always
manipulated under lock.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/4767041

13 years agoruntime: add per-M caches for MemStats
Dmitriy Vyukov [Mon, 18 Jul 2011 18:56:22 +0000 (14:56 -0400)]
runtime: add per-M caches for MemStats
Avoid touching centralized state during
memory manager operations.

R=mirtchovski
CC=golang-dev, rsc
https://golang.org/cl/4766042

13 years agoruntime: add per-M caches for MemStats
Dmitriy Vyukov [Mon, 18 Jul 2011 18:52:57 +0000 (14:52 -0400)]
runtime: add per-M caches for MemStats
Avoid touching centralized state during
memory manager opreations.

R=rsc
CC=golang-dev
https://golang.org/cl/4766042

13 years agodebug/proc: Remove.
Ian Lance Taylor [Mon, 18 Jul 2011 16:55:09 +0000 (09:55 -0700)]
debug/proc: Remove.

The package was always GNU/Linux specific, and is no longer
used by anything now that exp/ogle has been removed.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4757049

13 years agosync: add fast paths to WaitGroup
Dmitriy Vyukov [Mon, 18 Jul 2011 16:35:55 +0000 (12:35 -0400)]
sync: add fast paths to WaitGroup
benchmark                                        old ns/op    new ns/op    delta
BenchmarkWaitGroupUncontended                        93.50        33.60  -64.06%
BenchmarkWaitGroupUncontended-2                      44.30        16.90  -61.85%
BenchmarkWaitGroupUncontended-4                      21.80         8.47  -61.15%
BenchmarkWaitGroupUncontended-8                      12.10         4.86  -59.83%
BenchmarkWaitGroupUncontended-16                      7.38         3.35  -54.61%
BenchmarkWaitGroupAddDone                            58.40        33.70  -42.29%
BenchmarkWaitGroupAddDone-2                         293.00        85.80  -70.72%
BenchmarkWaitGroupAddDone-4                         243.00        51.10  -78.97%
BenchmarkWaitGroupAddDone-8                         236.00        52.20  -77.88%
BenchmarkWaitGroupAddDone-16                        215.00        43.30  -79.86%
BenchmarkWaitGroupAddDoneWork                       826.00       794.00   -3.87%
BenchmarkWaitGroupAddDoneWork-2                     450.00       424.00   -5.78%
BenchmarkWaitGroupAddDoneWork-4                     277.00       220.00  -20.58%
BenchmarkWaitGroupAddDoneWork-8                     440.00       116.00  -73.64%
BenchmarkWaitGroupAddDoneWork-16                    569.00        66.50  -88.31%
BenchmarkWaitGroupWait                               29.00         8.04  -72.28%
BenchmarkWaitGroupWait-2                             74.10         4.15  -94.40%
BenchmarkWaitGroupWait-4                            117.00         2.30  -98.03%
BenchmarkWaitGroupWait-8                            111.00         1.31  -98.82%
BenchmarkWaitGroupWait-16                           104.00         1.27  -98.78%
BenchmarkWaitGroupWaitWork                          802.00       792.00   -1.25%
BenchmarkWaitGroupWaitWork-2                        411.00       401.00   -2.43%
BenchmarkWaitGroupWaitWork-4                        210.00       199.00   -5.24%
BenchmarkWaitGroupWaitWork-8                        206.00       105.00  -49.03%
BenchmarkWaitGroupWaitWork-16                       334.00        54.40  -83.71%

R=rsc
CC=golang-dev
https://golang.org/cl/4672050

13 years ago5l: assume Linux binary, not Plan 9
Russ Cox [Mon, 18 Jul 2011 16:30:10 +0000 (12:30 -0400)]
5l: assume Linux binary, not Plan 9

R=bradfitz
CC=golang-dev
https://golang.org/cl/4767042

13 years agohttp: let FileServer work when path doesn't begin with a slash
Brad Fitzpatrick [Mon, 18 Jul 2011 16:04:48 +0000 (09:04 -0700)]
http: let FileServer work when path doesn't begin with a slash

... as when it's over-stripped with StripPrefix.

R=golang-dev, andybalholm, rsc
CC=golang-dev
https://golang.org/cl/4759052

13 years agold: allow seek within write buffer
Russ Cox [Mon, 18 Jul 2011 16:04:09 +0000 (12:04 -0400)]
ld: allow seek within write buffer

Reduces number of write+seek's from 88516 to 2080
when linking godoc with 6l.

Thanks to Alex Brainman for pointing out the
many small writes.

R=golang-dev, r, alex.brainman, robert.hencke
CC=golang-dev
https://golang.org/cl/4743043

13 years agosyscall: Parse and encode SCM_RIGHTS and SCM_CREDENTIALS.
Albert Strasheim [Mon, 18 Jul 2011 15:21:59 +0000 (11:21 -0400)]
syscall: Parse and encode SCM_RIGHTS and SCM_CREDENTIALS.

R=rsc, agl, mikioh.mikioh
CC=golang-dev
https://golang.org/cl/4667066

13 years agoruntime: fix data race in Plan9 sysalloc
Dmitriy Vyukov [Mon, 18 Jul 2011 14:50:04 +0000 (10:50 -0400)]
runtime: fix data race in Plan9 sysalloc
Add mutex to protect brk limit.
Add mstats.sys update.

R=rsc
CC=golang-dev
https://golang.org/cl/4762045

13 years agocgo: add missing semicolon in generated struct
Brad Fitzpatrick [Mon, 18 Jul 2011 14:23:52 +0000 (07:23 -0700)]
cgo: add missing semicolon in generated struct

This affected certain signatures needing padding
like:

//export Foo
func Foo() (int, C.long) { ... }

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4745047

13 years agogc: fix silent sign truncation in pgen.c
Dave Cheney [Mon, 18 Jul 2011 11:09:28 +0000 (21:09 +1000)]
gc: fix silent sign truncation in pgen.c

Fixes #2076.

R=golang-dev, r, r, dsymonds, lucio.dere
CC=golang-dev
https://golang.org/cl/4744047

13 years agoexp/template: dig into empty interfaces so a struct (say) stored in an empty
Rob Pike [Mon, 18 Jul 2011 07:34:42 +0000 (17:34 +1000)]
exp/template: dig into empty interfaces so a struct (say) stored in an empty
interface field can be unpacked. We don't have type assertions here so we
must be forthright.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4757047

13 years agodoc: fix padding on h1 tags
Andrew Gerrand [Mon, 18 Jul 2011 07:30:00 +0000 (17:30 +1000)]
doc: fix padding on h1 tags

See /doc/codewalk/sharemem/ for an example of how it's broken.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4742044

13 years agopath/filepath: fixes for windows paths
Alex Brainman [Mon, 18 Jul 2011 07:08:12 +0000 (17:08 +1000)]
path/filepath: fixes for windows paths

- Clean and IsAbs to handle paths with drive letter properly.
- Clean to replace / with \.

R=golang-dev, adg
CC=golang-dev, mattn.jp
https://golang.org/cl/4758051

13 years agoruntime: fix panic for make(chan [0]byte).
Nigel Tao [Mon, 18 Jul 2011 05:54:11 +0000 (15:54 +1000)]
runtime: fix panic for make(chan [0]byte).

I suspect that this was introduced by
http://code.google.com/p/go/source/detail?r=6e4ee32fffd1

R=r
CC=golang-dev
https://golang.org/cl/4764045

13 years agohttp: drain the pipe output in TestHandlerPanic to avoid logging deadlock.
David Symonds [Mon, 18 Jul 2011 02:59:16 +0000 (12:59 +1000)]
http: drain the pipe output in TestHandlerPanic to avoid logging deadlock.

R=r
CC=golang-dev
https://golang.org/cl/4756047

13 years agofmt: fix a couple of documentation glitches.
Rob Pike [Mon, 18 Jul 2011 01:44:27 +0000 (11:44 +1000)]
fmt: fix a couple of documentation glitches.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4758050

13 years agoreflect: panic if Method index is out of range for a type.
Rob Pike [Mon, 18 Jul 2011 01:34:13 +0000 (11:34 +1000)]
reflect: panic if Method index is out of range for a type.
Makes the code agree with the documentation.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4759050

13 years ago5c: attempt to fix build by silencing warnings about unused variables.
Rob Pike [Mon, 18 Jul 2011 01:08:55 +0000 (11:08 +1000)]
5c: attempt to fix build by silencing warnings about unused variables.
The story is more complicated; this is just a bandaid.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4755047

13 years agogob: minor cleanup
Quan Yong Zhai [Mon, 18 Jul 2011 00:48:31 +0000 (10:48 +1000)]
gob: minor cleanup

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4754050

13 years agofmt: Scan(&int) was mishandling a lone zero.
Rob Pike [Mon, 18 Jul 2011 00:05:35 +0000 (10:05 +1000)]
fmt: Scan(&int) was mishandling a lone zero.
It took it as an octal base prefix but assumed more digits were coming.
Fixes #2077.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4764044

13 years agocmd/5l/Makefile: directory prefix nit, "../5l/" is not needed.
Lucio De Re [Sun, 17 Jul 2011 22:46:47 +0000 (08:46 +1000)]
cmd/5l/Makefile: directory prefix nit, "../5l/" is not needed.

R=golang-dev, r
CC=golang-dev, rsc
https://golang.org/cl/4755046

13 years agohttp: make tests quiet, fixing a test race
Brad Fitzpatrick [Sun, 17 Jul 2011 22:46:10 +0000 (15:46 -0700)]
http: make tests quiet, fixing a test race

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4754044

13 years agolog: more locking
Brad Fitzpatrick [Sun, 17 Jul 2011 22:46:00 +0000 (15:46 -0700)]
log: more locking

This didn't actually cause a bug, but looks wrong.

There was a lock but there was more shared mutable state not
guarded by it.

R=golang-dev, dsymonds, r
CC=golang-dev
https://golang.org/cl/4760047

13 years agoexp/templates: variable scope persists until "end".
Rob Pike [Sun, 17 Jul 2011 03:31:59 +0000 (13:31 +1000)]
exp/templates: variable scope persists until "end".
The previous CL doicumented and diagnosed the old situation.
This one changes it to something more traditional: any action
may declare a variable, and the block structure of scopes
applies only to control seequences.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4748047

13 years agoexp/template: allow declaration of variables only inside control structures.
Rob Pike [Sun, 17 Jul 2011 02:32:00 +0000 (12:32 +1000)]
exp/template: allow declaration of variables only inside control structures.
In simple pipelines the declaration has no scope.
Also document the scope.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4761044

13 years agohttp: fixes for sniffing
Russ Cox [Fri, 15 Jul 2011 16:07:37 +0000 (12:07 -0400)]
http: fixes for sniffing

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4753044

13 years ago6a, 6c, 6l: fix for Plan 9 build
Lucio De Re [Fri, 15 Jul 2011 15:58:39 +0000 (11:58 -0400)]
6a, 6c, 6l: fix for Plan 9 build

6a/a.h:
. Dropped <u.h> and <libc.h>.
. Made definition of EOF conditional.

6a/a.y:
. Added <u.h> and <libc.h>.

6a/lex.c:
. Added <u.h> and <libc.h>.
. Dropped <ctype.h> (now in <u.h>).

6c/gc.h:
. Added varargck pragma for "lD".

6c/swt.c:
. Dropped unused "thestring" argument in Bprint() calls.

6l/Makefile:
. Dropped unneeded directory prefix.

6l/l.h:
. Dropped unneeded directory prefix.
. Added varargck pragma for "I" and "i".

6l/obj.c:
. Dropped unneeded assignment.
. Dropped unreachable goto statement.

6l/pass.c:
. Dropped assignments flagged as unused.

6l/prof.c:
. Replaced "#if 0" with "#ifdef NOTDEF".

6l/span.c:
. Dropped unused incrementation.
. Added USED() as required.
. Dropped unreachable "return" statement.

R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/4747044

13 years ago5a, 5c, 5l: fix for Plan 9 build
Lucio De Re [Fri, 15 Jul 2011 15:58:28 +0000 (11:58 -0400)]
5a, 5c, 5l: fix for Plan 9 build

5a/a.h:
. Removed <u.h> and <lib.h>.
. Made definition of EOF conditional.

5a/a.y:
. Added <u.h> and <lib.h>.

5a/lex.c:
. Added <u.h> and <lib.h>.
. Dropped <ctype.h> (now in <u.h>).

5c/peep.c:
. Removed unnecessary "return 0" statement.

5c/reg.c:
. Added compilation condition around unused code.

5c/swt.c:
. Removed unused "thestring" argument from Bprint() calls.

5l/asm.c:
. Added USED() statements as required.
. Adjusted a few format specifications.
. Added compilation condition around unused code.

5l/l.h:
. Dropped directory prefix from <../5l/5.out.h>.
. Added varargck pragma for "I" and "i".

5l/obj.c:
. Cascaded consecutive "if" statements.
. Dropped unnecessary incrementation and assignments.

5l/pass.c:
. Dropped unnecessary assignment.

5l/prof.c:
. #if 0 converted to #ifdef NOTDEF.

5l/span.c:
. Dropped unnecessary incrementation and assignments.

R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/4752041

13 years ago8l: nits
Lucio De Re [Fri, 15 Jul 2011 15:51:59 +0000 (11:51 -0400)]
8l: nits

8l/Makefile:
. Dropped unnecessary prefix from "../8l/8.out.h"

8l/l.h:
. Dropped unnecessary prefix from "../8l/8.out.h"
. Dropped unused and inconsistent "I" vararg pragma.

R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/4754041

13 years agoruntime: native xadd for 386/amd64
Dmitriy Vyukov [Fri, 15 Jul 2011 15:27:16 +0000 (11:27 -0400)]
runtime: native xadd for 386/amd64

benchmark                          old ns/op    new ns/op    delta
BenchmarkSemaUncontended               37.40        34.10   -8.82%
BenchmarkSemaUncontended-2             18.90        17.70   -6.35%
BenchmarkSemaUncontended-4             11.90        10.90   -8.40%
BenchmarkSemaUncontended-8              6.26         5.19  -17.09%
BenchmarkSemaUncontended-16             4.39         3.91  -10.93%
BenchmarkSemaSyntNonblock              38.00        35.30   -7.11%
BenchmarkSemaSyntNonblock-2            83.00        46.70  -43.73%
BenchmarkSemaSyntNonblock-4           124.00       101.00  -18.55%
BenchmarkSemaSyntNonblock-8           124.00       116.00   -6.45%
BenchmarkSemaSyntNonblock-16          148.00       114.00  -22.97%

(on HP Z600 2 x Xeon E5620, 8 HT cores, 2.40GHz)

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4755041

13 years agogc: some enhancements to printing debug info.
Luuk van Dijk [Fri, 15 Jul 2011 14:00:05 +0000 (16:00 +0200)]
gc: some enhancements to printing debug info.

R=rsc
CC=golang-dev
https://golang.org/cl/4710046

13 years agohttp: sniffing placeholder
Russ Cox [Fri, 15 Jul 2011 05:01:49 +0000 (01:01 -0400)]
http: sniffing placeholder

R=dsymonds
CC=golang-dev
https://golang.org/cl/4746041

13 years agogo/build: less aggressive failure when GOROOT not found
Andrew Gerrand [Fri, 15 Jul 2011 03:45:22 +0000 (13:45 +1000)]
go/build: less aggressive failure when GOROOT not found

R=golang-dev, rsc, dsymonds
CC=golang-dev
https://golang.org/cl/4743041

13 years agoruntime: make TestSideEffectOrder work twice
Russ Cox [Fri, 15 Jul 2011 03:43:03 +0000 (23:43 -0400)]
runtime: make TestSideEffectOrder work twice

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4714045

13 years agocgi: make test less flaky
Brad Fitzpatrick [Fri, 15 Jul 2011 00:00:14 +0000 (17:00 -0700)]
cgi: make test less flaky

Previously, during the anti-zombie test, a
CGI process had to finish within ~625ms.
Now it gets ~5.6 seconds.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4741041

13 years agogo/printer: simplify internal state
Robert Griesemer [Thu, 14 Jul 2011 23:09:15 +0000 (16:09 -0700)]
go/printer: simplify internal state

No formatting changes.

R=rsc
CC=golang-dev
https://golang.org/cl/4735042

13 years agogo spec: (up-)date
Robert Griesemer [Thu, 14 Jul 2011 22:58:37 +0000 (15:58 -0700)]
go spec: (up-)date

R=rsc, bradfitz, r
CC=golang-dev
https://golang.org/cl/4738042

13 years agogo/printer: changed max. number of newlines from 3 to 2
Robert Griesemer [Thu, 14 Jul 2011 21:39:40 +0000 (14:39 -0700)]
go/printer: changed max. number of newlines from 3 to 2

manual changes in src/pkg/go/printer, src/cmd/gofix/signal_test.go
(cd src/cmd/gofix/testdata; gofmt -w *.in *.out)
(cd src/pkg/go/printer; gotest -update)
gofmt -w misc src

runs all tests

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4715041

13 years agogo: require { } around else block
Russ Cox [Thu, 14 Jul 2011 21:15:52 +0000 (17:15 -0400)]
go: require { } around else block

R=gri, ken, r
CC=golang-dev
https://golang.org/cl/4721044

13 years agojson: add omitempty struct tag option
Brad Fitzpatrick [Thu, 14 Jul 2011 18:54:55 +0000 (11:54 -0700)]
json: add omitempty struct tag option

Fixes #2032

R=rsc, dsymonds, r, r
CC=golang-dev
https://golang.org/cl/4709044

13 years agogodoc: fix build (add Makefile change)
Robert Griesemer [Thu, 14 Jul 2011 18:48:23 +0000 (11:48 -0700)]
godoc: fix build (add Makefile change)

R=bradfitz
CC=golang-dev
https://golang.org/cl/4733041

13 years agogodoc: support for file systems stored in .zip files
Robert Griesemer [Thu, 14 Jul 2011 18:34:53 +0000 (11:34 -0700)]
godoc: support for file systems stored in .zip files

Instead of serving files of the underlying OS file system,
a .zip file may be provided to godoc containing the files
to serve; for instance:

   godoc -http=:6060 -zip=go.zip

using a .zip file created from a clean tree as follows:

   zip -r go.zip $GOROOT

R=rsc
CC=golang-dev
https://golang.org/cl/4670053

13 years agogc: fix closure bug
Luuk van Dijk [Thu, 14 Jul 2011 16:13:39 +0000 (18:13 +0200)]
gc: fix closure bug

Fixes #2056.

R=rsc
CC=golang-dev
https://golang.org/cl/4709042

13 years agojson: escape < and > in any JSON string.
David Symonds [Thu, 14 Jul 2011 03:30:08 +0000 (13:30 +1000)]
json: escape < and > in any JSON string.

Angle brackets can trigger some browser sniffers, causing
some forms of JSON output to be interpreted as HTML.
Escaping angle brackets closes that security hole.

R=rsc
CC=golang-dev
https://golang.org/cl/4701047

13 years agoexp/template: allow range actions to declare a key and element variable.
Rob Pike [Thu, 14 Jul 2011 03:15:55 +0000 (13:15 +1000)]
exp/template: allow range actions to declare a key and element variable.
        {{range $key, $element := pipeline}}
This CL is smaller than it looks due to some rearrangement and renaming.

R=rsc, r
CC=golang-dev
https://golang.org/cl/4709047

13 years agomime: fix build
Russ Cox [Thu, 14 Jul 2011 03:04:12 +0000 (20:04 -0700)]
mime: fix build

R=bradfitz
CC=golang-dev
https://golang.org/cl/4695060

13 years agoexp/template: escape < and > in JS escaper.
David Symonds [Thu, 14 Jul 2011 02:02:58 +0000 (12:02 +1000)]
exp/template: escape < and > in JS escaper.

Angle brackets can trigger some browser sniffers,
causing some output to be interpreted as HTML.
Escaping angle brackets closes that security hole.

R=r
CC=golang-dev
https://golang.org/cl/4714044

13 years agoexp/template: include function name in error returned by function or method call.
Rob Pike [Thu, 14 Jul 2011 01:32:06 +0000 (11:32 +1000)]
exp/template: include function name in error returned by function or method call.

R=golang-dev, rsc, r
CC=golang-dev
https://golang.org/cl/4711049

13 years agoexp/template: simplify method and function calls by using the value's Method
Rob Pike [Thu, 14 Jul 2011 01:00:23 +0000 (11:00 +1000)]
exp/template: simplify method and function calls by using the value's Method
rather than the type's, so a method's invocation works the same as a function's.

R=golang-dev, rsc, r
CC=golang-dev
https://golang.org/cl/4704049