]>
Cypherpunks repositories - gostls13.git/log
Robert Griesemer [Mon, 16 Nov 2009 22:26:29 +0000 (14:26 -0800)]
Don't emit line tags when source code is printed as part of
package documentation using templates. The line tag interferes
with the anchor tag introduces by the template.
This fixes an an issue where some headers lost their ability
to link to the respective source code.
R=rsc
https://golang.org/cl/154166
David Symonds [Mon, 16 Nov 2009 21:39:59 +0000 (13:39 -0800)]
Add some primitive type aliases to exp/iterable and define Iter on them.
R=rsc
https://golang.org/cl/155065
David G. Andersen [Mon, 16 Nov 2009 20:40:01 +0000 (12:40 -0800)]
An asked-for-in #go-nuts extension to quickly create a repeated
copy of a string or a byte array.
strings.Repeat("-", 50)
bytes.Repeat(b, 99)
R=rsc
https://golang.org/cl/155063
David G. Andersen [Mon, 16 Nov 2009 20:39:37 +0000 (12:39 -0800)]
Adding my name to authors/contributors. I'm waiting to hear
back from Carnegie Mellon about whether they're interested in
signing the agreement (do you know if they have already?).
In the meantime, I'm submitting these changes on my own time.
If CMU has already signed the corporate contributor agreement,
please remove my name from the AUTHORS list.
R=rsc
https://golang.org/cl/154161
Kai Backman [Mon, 16 Nov 2009 19:58:28 +0000 (11:58 -0800)]
s/AJMP/AB/ to fix build breakage.
R=rsc
https://golang.org/cl/155069
Adam Langley [Mon, 16 Nov 2009 19:56:18 +0000 (11:56 -0800)]
doc: fix typo.
Fixes #218
R=r
CC=golang-dev
https://golang.org/cl/155067
Robert Griesemer [Mon, 16 Nov 2009 16:58:55 +0000 (08:58 -0800)]
- Clarify that struct composite literal keys are field names not selectors.
- Slight re-phrasing of struct type section since "field name" was not
properly introduced.
Fixes #164.
R=r, rsc, iant
https://golang.org/cl/155061
Robert Griesemer [Mon, 16 Nov 2009 01:42:27 +0000 (17:42 -0800)]
Use ElementType consistently.
Fixes #173.
R=r, rsc, r1
https://golang.org/cl/154156
Russ Cox [Mon, 16 Nov 2009 01:24:14 +0000 (17:24 -0800)]
gc: fix up floating point NaN comparisons
Fixes #167.
R=ken2
https://golang.org/cl/155062
Adam Langley [Sun, 15 Nov 2009 22:00:46 +0000 (14:00 -0800)]
crypto/md5: fix comment typo.
Fixes #210.
R=rsc
CC=golang-dev
https://golang.org/cl/155057
Rob Pike [Sun, 15 Nov 2009 21:09:43 +0000 (13:09 -0800)]
add a paragraph about GOMAXPROCS
R=rsc
CC=golang-dev
https://golang.org/cl/154153
Russ Cox [Sun, 15 Nov 2009 20:57:39 +0000 (12:57 -0800)]
godefs: avoid gcc 4'isms in command line.
Fixes #97.
R=r
https://golang.org/cl/155054
Russ Cox [Sun, 15 Nov 2009 20:57:33 +0000 (12:57 -0800)]
godocs.js: fix bad variable name
Thanks to anno.langen.
Fixes #103.
R=r
https://golang.org/cl/155050
Russ Cox [Sun, 15 Nov 2009 20:57:28 +0000 (12:57 -0800)]
makefiles: use correct gcc order in case --as-needed is in use.
Suggested by eostapets.
Fixes #141.
R=r
https://golang.org/cl/155049
Russ Cox [Sun, 15 Nov 2009 20:57:21 +0000 (12:57 -0800)]
cgo: arrange for English error messages
Fixes #21.
R=r
https://golang.org/cl/155048
Russ Cox [Sun, 15 Nov 2009 20:57:15 +0000 (12:57 -0800)]
runtime: avoid crash in Caller
Fixes #176.
R=r
https://golang.org/cl/154146
Russ Cox [Sun, 15 Nov 2009 20:57:09 +0000 (12:57 -0800)]
gc: five bug fixes, one better error.
* check for struct literal assignment to private fields.
* record, fix crash involving parallel map assignment.
* avoid infinite recursion in exportassignok.
* make floating point bounds check precise.
* avoid crash on invalid receiver.
* add context to error about implicit assignment.
Fixes #86.
Fixes #88.
Fixes #158.
Fixes #174.
Fixes #201.
Fixes #204.
R=ken2
https://golang.org/cl/154144
Russ Cox [Sun, 15 Nov 2009 20:56:50 +0000 (12:56 -0800)]
http.URLEscape: escape all bytes required by RFC 2396
Fixes #125.
R=r
https://golang.org/cl/154143
Russ Cox [Sun, 15 Nov 2009 20:56:39 +0000 (12:56 -0800)]
gotest: show the test file pattern in "no test files" error
Fixes #190.
R=r
https://golang.org/cl/154142
Rob Pike [Sun, 15 Nov 2009 20:09:59 +0000 (12:09 -0800)]
fix some typos in the documentation
Fixes #196.
R=rsc
https://golang.org/cl/154152
Rob Pike [Sun, 15 Nov 2009 20:07:27 +0000 (12:07 -0800)]
fix bug in bytes.Map and add test cases for Map in both strings and bytes packages.
thanks to ulrik.sverdrup for the test case.
Fixes #191.
R=rsc
CC=golang-dev
https://golang.org/cl/155056
Robert Griesemer [Sun, 15 Nov 2009 19:33:20 +0000 (11:33 -0800)]
Use // to start comment instead of #.
Fixes #189.
R=r
CC=rsc
https://golang.org/cl/155055
Russ Cox [Sun, 15 Nov 2009 08:00:05 +0000 (00:00 -0800)]
cc: drop redundant strcpy
Fixes #192.
R=ken2
https://golang.org/cl/155047
Russ Cox [Sun, 15 Nov 2009 07:25:55 +0000 (23:25 -0800)]
cc: eliminate two fixed-size buffers
Fixes bug 168.
Alternative to https://golang.org/cl/152143.
R=ken2
https://golang.org/cl/155042
Kai Backman [Sun, 15 Nov 2009 07:08:22 +0000 (23:08 -0800)]
complain if GOARCH != arm. fix build break caused by gomake
introduction.
R=rsc
https://golang.org/cl/152109
Adam Langley [Sun, 15 Nov 2009 04:38:00 +0000 (20:38 -0800)]
crypto/rsa: handle the case of non-coprime blinds.
We are dealing with the multiplicative group ℤ/pqℤ. Multiples of
either p or q are not members of the group since they cannot have an
inverse. (Such numbers are 0 in the subgroup ℤ/pℤ.)
With p and q of typical size (> 512 bits), the probability of a random
blind [1..pq-1] being a multiple of p or q is negligible. However, in
the unit tests, much smaller sizes are used and the event could occur.
This change checks the result of the ext GCD and deals with this case.
It also increases the size of p and q in the unit test as a large
number of the keys selected were p, q = 227,169.
R=rsc
CC=golang-dev
https://golang.org/cl/154141
Kai Backman [Sun, 15 Nov 2009 04:08:22 +0000 (20:08 -0800)]
make arm pass match what's working on real hardware
R=rsc
https://golang.org/cl/154097
Russ Cox [Sun, 15 Nov 2009 03:28:13 +0000 (19:28 -0800)]
test/interface/receiver.go: expand to do dynamic
versions of static checks in receiver1.go
R=r
https://golang.org/cl/155045
Devon H. O'Dell [Sat, 14 Nov 2009 23:29:09 +0000 (15:29 -0800)]
Build changes to support work on the BSDs.
This does still contain some FreeBSD-specific bits, but
it's a pain to do partial diffs.
R=rsc
https://golang.org/cl/152138
Devon H. O'Dell [Sat, 14 Nov 2009 23:28:47 +0000 (15:28 -0800)]
Adding myself to AUTHORS/CONTRIBUTORS for Go.
R=rsc
https://golang.org/cl/155041
Môshe van der Sterre [Sat, 14 Nov 2009 22:42:22 +0000 (14:42 -0800)]
encoding/binary: implemented the Write function
The ByteOrder.Put* methods are already available, this change uses
them to implement the Write function.
R=golang-dev, agl1, rsc, r
https://golang.org/cl/152141
Môshe van der Sterre [Sat, 14 Nov 2009 22:42:15 +0000 (14:42 -0800)]
Adding my name to CONTRIBUTORS and AUTHORS
As Adam Langley mentioned, this should go in with
https://golang.org/cl/152141
R=rsc
CC=agl1
https://golang.org/cl/154138
Russ Cox [Sat, 14 Nov 2009 22:14:27 +0000 (14:14 -0800)]
gc: do not try to constant-evaluate (interface{})("bar")
Fixes #183.
R=ken
https://golang.org/cl/154139
Rob Pike [Sat, 14 Nov 2009 20:23:24 +0000 (12:23 -0800)]
move evaluation of null-matching instructions one iteration earlier.
performance hit of about 20% but more intuitive results for submatches.
we need a good regexp package at some point.
Fixes #110.
R=rsc
CC=golang-dev
https://golang.org/cl/152131
Abhinav Gupta [Sat, 14 Nov 2009 19:46:09 +0000 (11:46 -0800)]
xml: Fixed CDATA parsing.
Fixes #128.
R=r, rsc
https://golang.org/cl/154126
Abhinav Gupta [Sat, 14 Nov 2009 19:45:32 +0000 (11:45 -0800)]
Added self to AUTHORS and CONTRIBUTORS.
R=rsc
https://golang.org/cl/154128
Russ Cox [Sat, 14 Nov 2009 18:28:53 +0000 (10:28 -0800)]
typos
Fixes #171.
Fixes #172.
R=agl1
https://golang.org/cl/154136
David Titarenco [Sat, 14 Nov 2009 02:06:47 +0000 (18:06 -0800)]
Created new Conn.Flush() public method so the fd pipeline can be drained arbitrarily by the user.
Commented both flush methods so people know what they are looking at.
This is a necessary fix for streaming and long polling HTTP services.
Fixes #93.
R=r, rsc, david.titarenco
https://golang.org/cl/154099
David Titarenco [Sat, 14 Nov 2009 02:06:27 +0000 (18:06 -0800)]
Added self to AUTHORS and CONTRIBUTORS prior to first submission.
R=rsc
https://golang.org/cl/153057
Nigel Tao [Sat, 14 Nov 2009 01:40:20 +0000 (17:40 -0800)]
Remove unnecessary int(h) casts in image.go.
R=rsc
https://golang.org/cl/154125
Rob Pike [Sat, 14 Nov 2009 00:00:55 +0000 (16:00 -0800)]
fix typo
R=rsc
https://golang.org/cl/152128
James Aguilar [Fri, 13 Nov 2009 23:52:30 +0000 (15:52 -0800)]
Correct indentation for go-mode where a close brace following a semi-
colon-less statement would be indented one stop too many.
R=rsc, aclements
CC=aclements
https://golang.org/cl/154096
James Aguilar [Fri, 13 Nov 2009 23:52:24 +0000 (15:52 -0800)]
Add myself to the contributors file.
R=rsc
https://golang.org/cl/152101
Adam Langley [Fri, 13 Nov 2009 22:59:04 +0000 (14:59 -0800)]
json: minor comment fix.
I screwed up and didn't write one of the code review changes to disk
before submitting.
TBR=rsc
R=rsc
https://golang.org/cl/154122
Rob Pike [Fri, 13 Nov 2009 21:15:18 +0000 (13:15 -0800)]
Explain why
-flag true
does not work although
-flag=true
does.
Fixes #139.
R=iant
CC=golang-dev
https://golang.org/cl/154118
Russ Cox [Fri, 13 Nov 2009 21:10:53 +0000 (13:10 -0800)]
test/run: use bash, not sh.
use bash builtin time instead of
assuming /usr/bin/time exists.
R=r
https://golang.org/cl/152124
Adam Langley [Fri, 13 Nov 2009 21:00:45 +0000 (13:00 -0800)]
json: allow one to unmarshal a top-level JSON array.
Fixies issue 114.
R=rsc
CC=golang-dev
https://golang.org/cl/154121
Russ Cox [Fri, 13 Nov 2009 19:34:33 +0000 (11:34 -0800)]
path.TestWalk: disable error case if root
(chmod 0 doesn't cause errors for root)
Fixes #22.
R=gri
https://golang.org/cl/152120
Adam Langley [Fri, 13 Nov 2009 19:29:13 +0000 (11:29 -0800)]
json: fix addressing of slice indexes that are multiples of 8.
Fixes #147.
R=rsc
CC=golang-dev
https://golang.org/cl/152123
Adam Langley [Fri, 13 Nov 2009 18:08:51 +0000 (10:08 -0800)]
runtime: warn about SELinux based mmap failures on Linux.
SELinux will cause mmap to fail when we request w+x memory unless the
user has configured their policies. We have a warning in make.bash,
but it's quite likely that the policy will be reset at some point and
then all their binaries start failing.
This patch prints a warning on Linux when mmap fails with EACCES.
R=rsc
CC=golang-dev
https://golang.org/cl/152086
Russ Cox [Fri, 13 Nov 2009 07:38:48 +0000 (23:38 -0800)]
yet another attempt to avoid conflicts with
<stdio.h>, which we weren't even #including
R=r
https://golang.org/cl/154108
Rob Pike [Fri, 13 Nov 2009 07:35:45 +0000 (23:35 -0800)]
remove dead code from test
R=rsc
CC=golang-dev
https://golang.org/cl/152118
Rob Pike [Fri, 13 Nov 2009 07:19:12 +0000 (23:19 -0800)]
sudo.bash tries to install acid and db, which don't exist any more
R=rsc
CC=golang-dev
https://golang.org/cl/152117
Kevin Ballard [Fri, 13 Nov 2009 02:40:42 +0000 (18:40 -0800)]
Teach emacs M-x gofmt to save region/restrictions
R=agl, agl1
https://golang.org/cl/152078
Russ Cox [Fri, 13 Nov 2009 02:37:39 +0000 (18:37 -0800)]
codereview: clpatch tweaks
R=agl1
https://golang.org/cl/152114
Robert Griesemer [Fri, 13 Nov 2009 02:26:45 +0000 (18:26 -0800)]
Remove -align flag from gofmt.
(Making it work correctly with -spaces is a bit of work and the output
won't make much sense as it is intended as input to tabwriter.)
Fixes #100.
R=rsc
https://golang.org/cl/154102
Kai Backman [Fri, 13 Nov 2009 00:12:28 +0000 (16:12 -0800)]
fix style nit ignored in previous cl
R=rsc
https://golang.org/cl/152110
Kai Backman [Thu, 12 Nov 2009 23:23:23 +0000 (15:23 -0800)]
add support for pre arm v6 cas. set GOARM=5 to enable.
R=rsc
https://golang.org/cl/154101
Russ Cox [Thu, 12 Nov 2009 23:12:52 +0000 (15:12 -0800)]
tag new release at 4015/
cb140bac9ab0
R=r
https://golang.org/cl/154100
Russ Cox [Thu, 12 Nov 2009 22:55:26 +0000 (14:55 -0800)]
test/run: unset GREP_OPTIONS
Fixes #116.
R=r
https://golang.org/cl/152106
Russ Cox [Thu, 12 Nov 2009 22:55:04 +0000 (14:55 -0800)]
os.TestSeek: use a smaller but still 64-bit seek offset.
Might fix issue 91.
R=r
https://golang.org/cl/152108
Rob Pike [Thu, 12 Nov 2009 22:28:45 +0000 (14:28 -0800)]
produce helpful error when gotest doesn't find a Makefile
Fixes #117.
R=rsc, agl1
CC=golang-dev
https://golang.org/cl/152107
Rob Pike [Thu, 12 Nov 2009 22:10:16 +0000 (14:10 -0800)]
add a paragraph about semicolons to the tutorial.
fix a typo caught by kakugawa@gmail.com
Fixes #92.
R=rsc
CC=golang-dev
https://golang.org/cl/152105
Adam Langley [Thu, 12 Nov 2009 21:55:20 +0000 (13:55 -0800)]
exp/draw: correct Makefile.
Thanks to Allister Macleod
Fixes #112.
R=rsc
CC=golang-dev
https://golang.org/cl/152102
Rob Pike [Thu, 12 Nov 2009 19:05:20 +0000 (11:05 -0800)]
fix a couple of typos.
add a mention of range to the tutorial.
change tutorial's title.
R=rsc
CC=golang-dev
https://golang.org/cl/152098
Russ Cox [Thu, 12 Nov 2009 08:22:45 +0000 (00:22 -0800)]
cc, ld: fix more gcc 4.3 -O2 compile bugs
same as https://golang.org/cl/152088
in more files.
Fixes #83.
R=r, r1
https://golang.org/cl/152091
Kai Backman [Thu, 12 Nov 2009 07:23:11 +0000 (23:23 -0800)]
add cache flushing call after generating closure.
go/test: passes 88% (306/347)
R=rsc
https://golang.org/cl/152089
Russ Cox [Thu, 12 Nov 2009 06:20:05 +0000 (22:20 -0800)]
avoid seg fault when return type is unknown
Fixes #80.
R=ken
https://golang.org/cl/154079
Russ Cox [Thu, 12 Nov 2009 06:19:58 +0000 (22:19 -0800)]
gopack: work around gcc bug in hash function
Fixes #48. (this time for sure!)
R=r, r1
https://golang.org/cl/152088
Rob Pike [Thu, 12 Nov 2009 03:39:57 +0000 (19:39 -0800)]
fix typo in ByteSize example
R=rsc, agl1
CC=golang-dev
https://golang.org/cl/154076
David Symonds [Thu, 12 Nov 2009 01:31:28 +0000 (17:31 -0800)]
Fix capitalisation of "Git".
R=rsc
https://golang.org/cl/154071
Robert Griesemer [Thu, 12 Nov 2009 01:25:51 +0000 (17:25 -0800)]
vector: s/Element/interface{}/
Fixes #74.
R=rsc
https://golang.org/cl/154073
Adam Langley [Thu, 12 Nov 2009 01:13:14 +0000 (17:13 -0800)]
json: support \u escaping in strings
Fixes #73.
R=rsc
CC=golang-dev
https://golang.org/cl/154072
Russ Cox [Thu, 12 Nov 2009 00:58:27 +0000 (16:58 -0800)]
cgo: add more information about gcc output parsing failures
R=r
https://golang.org/cl/152084
Russ Cox [Thu, 12 Nov 2009 00:33:23 +0000 (16:33 -0800)]
fix BUFSIZ redeclaration warnings
R=r
https://golang.org/cl/152085
Russ Cox [Wed, 11 Nov 2009 23:48:38 +0000 (15:48 -0800)]
fix TestRemoveAll again (tested as root this time).
Fixes #22.
R=r
https://golang.org/cl/154069
Adam Langley [Wed, 11 Nov 2009 23:02:15 +0000 (15:02 -0800)]
make.bash: detect and warn about SELinux policy that crashes us.
The default SELinux policy on Fedora 12 (at least) disallows stack
pages to be +x. This causes all binaries written by 6g/6l to segfault
immedately. The 'true' way to fix this issue is to mark binaries with
the correct type. However, that assumes that 6l is going to detect
SELinux, figure out the correct type for the current distribution and
set the type (without libselinux).
For now we'll warn users and point them towards the way to enable
execstack for the whole system.
http://code.google.com/p/go/issues/detail?id=47
R=rsc
CC=golang-dev
http://codereview.prom.corp.google.com/
1026041
Russ Cox [Wed, 11 Nov 2009 22:52:38 +0000 (14:52 -0800)]
typo
Fixes #69.
R=r
https://golang.org/cl/152082
Russ Cox [Wed, 11 Nov 2009 22:52:29 +0000 (14:52 -0800)]
os test: do not use symlink > 255 bytes.
Fixes #62.
R=r
https://golang.org/cl/152080
Russ Cox [Wed, 11 Nov 2009 22:52:21 +0000 (14:52 -0800)]
cc: correct handling of allocn(0, 1, d)
Fixes #29.
R=r
https://golang.org/cl/152076
Russ Cox [Wed, 11 Nov 2009 22:52:15 +0000 (14:52 -0800)]
gotest: add LC_ALL=C
R=r
https://golang.org/cl/154067
Russ Cox [Wed, 11 Nov 2009 22:52:08 +0000 (14:52 -0800)]
getc/ungetc in assemblers; BUFSIZ everywhere.
Fixes #67.
R=r
https://golang.org/cl/154068
Russ Cox [Wed, 11 Nov 2009 22:51:53 +0000 (14:51 -0800)]
point at how to get easy_install on Ubuntu.
Fixes #59.
Add note about export.
R=r
https://golang.org/cl/152079
Russ Cox [Wed, 11 Nov 2009 22:48:33 +0000 (14:48 -0800)]
two gopack nits.
1. allocate an extra byte for use by write.
2. throw away the code trying to translate
uid and gid to names. i suspect it of causing
seg faults in some situations, and it is
not needed by the compilers.
Fixes #48. (I hope.)
R=r
https://golang.org/cl/152077
Adam Langley [Wed, 11 Nov 2009 21:30:47 +0000 (13:30 -0800)]
Revert make.bash which slipped into the previous revision.
R=rsc
http://codereview.prom.corp.google.com/
1024051
Adam Langley [Wed, 11 Nov 2009 21:21:37 +0000 (13:21 -0800)]
Reland
a112249da741 , this time with missing file.
Russ Cox [Wed, 11 Nov 2009 21:08:35 +0000 (13:08 -0800)]
avoid clash with stdio's getc, ungetc.
Fixes #50.
R=r
https://golang.org/cl/154064
Russ Cox [Wed, 11 Nov 2009 21:07:46 +0000 (13:07 -0800)]
log test: don't assume a fixed set of letters for $GOROOT
Fixes #27.
R=r
https://golang.org/cl/152075
Russ Cox [Wed, 11 Nov 2009 20:54:52 +0000 (12:54 -0800)]
roll back 3985: build is broken
TBR=agl1
CC=golang-dev
https://golang.org/cl/154065
Adam Langley [Wed, 11 Nov 2009 20:34:46 +0000 (12:34 -0800)]
big:
Turn methods that don't store the result in their receiver into
functions in order to preserve the convention.
Re-jig Exp and Div by moving their guts into nat.go.
Add ProbablyPrime to perform Miller-Rabin primality tests.
crypto/rsa: reenable key generation since we now have ProbablyPrime.
R=gri
CC=go-dev
http://codereview.prom.corp.google.com/
1024038
Russ Cox [Wed, 11 Nov 2009 20:00:50 +0000 (12:00 -0800)]
work with GNU Make 3.80
Fixes #30.
R=r1, r
https://golang.org/cl/154061
Russ Cox [Wed, 11 Nov 2009 20:00:41 +0000 (12:00 -0800)]
gc: increase maximum path size in getwd from 100 to 1000.
Fixes #31.
To try the fix before the next release:
hg pull -u
R=r1, r
https://golang.org/cl/154058
Russ Cox [Wed, 11 Nov 2009 20:00:34 +0000 (12:00 -0800)]
os: do not test error case of TestRemoveAll when root
Fixes #22.
R=r1, r
https://golang.org/cl/152073
Russ Cox [Wed, 11 Nov 2009 20:00:15 +0000 (12:00 -0800)]
use fully qualified names for hash interfaces
Fixes #38.
R=r1, r
https://golang.org/cl/152072
Rob Pike [Wed, 11 Nov 2009 19:44:27 +0000 (11:44 -0800)]
add a paragraph in the FAQ about the situation with Windows support
R=rsc, iant
CC=golang-dev
https://golang.org/cl/154059
Adam Langley [Wed, 11 Nov 2009 19:19:33 +0000 (11:19 -0800)]
gopack: convert long to time_t before taking a pointer.
Fixes #40.
R=rsc, r1
CC=golang-dev
https://golang.org/cl/154057
Adam Langley [Wed, 11 Nov 2009 19:18:17 +0000 (11:18 -0800)]
docs: list make as a build dep.
Fixes #45.
R=rsc, r1
CC=golang-dev
https://golang.org/cl/154055
Russ Cox [Wed, 11 Nov 2009 07:42:21 +0000 (23:42 -0800)]
lib9: rip out platform specific code that breaks on pclinuxos
R=r
CC=golang-dev
https://golang.org/cl/154049
Russ Cox [Wed, 11 Nov 2009 04:11:16 +0000 (20:11 -0800)]
move release tag
R=r
https://golang.org/cl/154045
Kevin Ballard [Wed, 11 Nov 2009 04:05:24 +0000 (20:05 -0800)]
Implement new emacs command M-x gofmt
Define a new interactive function in go-mode.el called gofmt.
This function passes the current buffer through the external `gofmt`
tool and replaces the buffer with the result.
R=agl, rsc
https://golang.org/cl/154044