aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-02-20net, syscall: more accurate parsers for routing messages on BSD variantsMikio Hara
This changes fixes two issues with regard to handling routing messages as follows: - Misparsing on platforms (such as FreeBSD) supporting multiple architectures in the same kernel (kern.supported_archs="amd64 i386") - Misparsing with unimplemented messages such as route, interface address state notifications To fix those issues, this change implements all the required socket address parsers, adds a processor architecture identifying function to FreeBSD and tests. Fixes #9707. Fixes #8203. Change-Id: I7ed7b4a0b6f10f54b29edc681a2f35603f2d8d45 Reviewed-on: https://go-review.googlesource.com/4330 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-02-20cmd/go: simplify/fix handling private github reposIngo Oeser
Before Go 1.4, the traditional way to work with a private Github repository was to run something similar the following: ``` git config --global url."git@github.com:".insteadOf "https://github.com/" ``` It would allow go get and friends to transparently work as expected, automatically rewriting https URLs to use SSH for auth. This worked both when pushing and pulling. In Go 1.4 this broke, now requiring the use of `go get -f` instead of `go get` in order to fetch private repositories. This seems neither intended nor practical, as it requires changing a lot of tooling. So just use `git config remote.origin.url` instead of `git remote -v` as this reflects the actual substitution intended in the `insteadOf` config directive. Also remove now useless parsing. Also add a check against supported schemes to avoid errors in later commands using this URL and expecting such a scheme. Fixes #9697 Change-Id: I907327f83504302288f913a68f8222a5c2d673ee Reviewed-on: https://go-review.googlesource.com/3504 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-02-20doc: dummy commit in go1.5.txtRuss Cox
Change-Id: I678336daf99f7d7d19f99506f1a604de8e05bf43 Reviewed-on: https://go-review.googlesource.com/5400 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-20[dev.cc] cmd/asm: bring asm on ppc64 in sync with 9aRob Pike
I created a .s file that covered every instruction and operand production in 9a/a.y and made sure that 9a and asm give bit-identical results for it. I found a few things, including one addressing mode (R1+R2) that was not present in the source we use. Fixed those I also found quite a few things where 9a's grammar accepts the instruction but liblink rejects it. These need to be sorted out, and I will do that separately. Once that's done, I'll turn my test file into a proper test. Change-Id: Ib093271b0f7ffd64ffed164ed2a820ebf2420e34 Reviewed-on: https://go-review.googlesource.com/5361 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-20[dev.cc] runtime,syscall: quiet some more vet errorsRob Pike
Fix many incorrect FP references and a few other details. Some errors remain, especially in vlop, but fixing them requires semantics. For another day. Change-Id: Ib769fb519b465e79fc08d004a51acc5644e8b259 Reviewed-on: https://go-review.googlesource.com/5288 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-20[dev.cc] cmd/internal/obj, cmd/internal/gc, new6g: reconvertRuss Cox
Reconvert using rsc.io/c2go rev 27b3f59. Changes to converter: - fatal does not return, so no fallthrough after fatal in switch - many more function results and variables identified as bool - simplification of negated boolean expressions Change-Id: I3bc67da5e46cb7ee613e230cf7e9533036cc870b Reviewed-on: https://go-review.googlesource.com/5171 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2015-02-20[dev.cc] cmd/gc: tweak default fatal in ordersafeexpr for c2goRuss Cox
c2go was putting a fallthrough after the fatal call. Changed c2go to know that fatal doesn't return, but then there is a missing return at the end of the translated Go function. Move code around a little to make C and Go agree. Change-Id: Icef3d55ccdde0709c02dd0c2b78826f6da33a146 Reviewed-on: https://go-review.googlesource.com/5170 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2015-02-19cmd/dist: show friendlier error message when building outside a Git repoAndrew Gerrand
Fixes #9932 Change-Id: I7943470a1784278a5c6e99c3b66c59d4953734ba Reviewed-on: https://go-review.googlesource.com/5340 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-02-19runtime: do not unmap work.spans until after checkmark phaseRuss Cox
This is causing crashes. Change-Id: I1832f33d114bc29894e491dd2baac45d7ab3a50d Reviewed-on: https://go-review.googlesource.com/5330 Reviewed-by: Rick Hudson <rlh@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19[dev.cc] runtime,syscall: add symbols for FP and SP references in darwin-armRob Pike
Maybe fix build. Change-Id: I99ea76f0e6e472f0e88405bf5d77f72d4b097abd Reviewed-on: https://go-review.googlesource.com/5287 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19[dev.cc] cmd/go: enable verifyAsm for all architecturesRob Pike
Change-Id: Ia1ba28c81e31d149c59a48d5f71628ac0ff14d8e Reviewed-on: https://go-review.googlesource.com/5283 Reviewed-by: Minux Ma <minux@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19[dev.cc] cmd/asm: accept #define A /* nothing */Rob Pike
Was rejected but should be legal. Change-Id: I0189e3bef6b67c6ba390c75a48a8d9d8f39b7636 Reviewed-on: https://go-review.googlesource.com/5286 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19runtime: missed change from reorganization CLRuss Cox
That is, I accidentally dropped this change of Austin's when preparing my CL. I blame Git. Change-Id: I9dd772c84edefad96c4b16785fdd2dea04a4a0d6 Reviewed-on: https://go-review.googlesource.com/5320 Reviewed-by: Austin Clements <austin@google.com>
2015-02-19runtime: reorganize memory codeRuss Cox
Move code from malloc1.go, malloc2.go, mem.go, mgc0.go into appropriate locations. Factor mgc.go into mgc.go, mgcmark.go, mgcsweep.go, mstats.go. A lot of this code was in certain files because the right place was in a C file but it was written in Go, or vice versa. This is one step toward making things actually well-organized again. Change-Id: I6741deb88a7cfb1c17ffe0bcca3989e10207968f Reviewed-on: https://go-review.googlesource.com/5300 Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Rick Hudson <rlh@golang.org>
2015-02-19[dev.cc] test: disable rotate testsRuss Cox
They use too much memory in the current Go compiler draft. This should fix some builders. Reenabling is #9933. Change-Id: Ib5ef348b2c55d2012ffed765f2a6df99dec171f4 Reviewed-on: https://go-review.googlesource.com/5302 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19cmd/pprof: add -runtime flagDmitry Vyukov
The flag disables stripping of runtime frames in profiles. This is useful when analyzing runtime itself. Before: $ go tool pprof --text --alloc_objects --lines fmt.test /tmp/mprof flat flat% sum% cum cum% 2768 79.65% 79.65% 32768 79.65% fmt_test.TestComplexFormatting fmt/fmt_test.go:744 6554 15.93% 95.58% 6554 15.93% regexp/syntax.(*compiler).rune regexp/syntax/compile.go:267 1820 4.42% 100% 1820 4.42% runtime.malg runtime/proc1.go:1977 After: $ go tool pprof --text --alloc_objects --lines --runtime fmt.test /tmp/mprof flat flat% sum% cum cum% 32768 79.65% 79.65% 32768 79.65% runtime.convT2E runtime/iface.go:139 6554 15.93% 95.58% 6554 15.93% runtime.growslice runtime/slice.go:89 1820 4.42% 100% 1820 4.42% runtime.malg runtime/proc1.go:1977 Change-Id: If468dfa5c5bbd0809c45a58d912d3115fac009ed Reviewed-on: https://go-review.googlesource.com/5291 Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
2015-02-19runtime: don't test gdb on darwinJosh Bleecher Snyder
Fixes #9927 Change-Id: I2114cc21f7a4772e3d42bcad9642a8a545cd8e16 Reviewed-on: https://go-review.googlesource.com/5285 Reviewed-by: Minux Ma <minux@golang.org>
2015-02-19runtime: use more natural types in struct workbufAustin Clements
Until recently, struct workbuf had only lfnode and uintptr fields before the obj array to make it convenient to compute the size of the obj array. It slowly grew more fields until this became inconvenient enough that it was restructured to make the size computation easy. Now the size computation doesn't care what the field types are, so switch to more natural types. Change-Id: I966140ba7ebb4aeb41d5c66d9d2a3bdc17dd4bcf Reviewed-on: https://go-review.googlesource.com/5262 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19runtime: switch to gcWork abstractionAustin Clements
This converts the garbage collector from directly manipulating work buffers to using the new gcWork abstraction. The previous management of work buffers was rather ad hoc. As a result, switching to the gcWork abstraction changes many details of work buffer management. If greyobject fills a work buffer, it can now pull from work.partial in addition to work.empty. Previously, gcDrain started with a partial or empty work buffer and fetched an empty work buffer if it filled its current buffer (in greyobject). Now, gcDrain starts with a full work buffer and fetches an partial or empty work buffer if it fills its current buffer (in greyobject). The original behavior was bad because gcDrain would immediately drop the empty work buffer returned by greyobject and fetch a full work buffer, which greyobject was likely to immediately overflow, fetching another empty work buffer, etc. The new behavior isn't great at the start because greyobject is likely to immediately overflow the full buffer, but the steady-state behavior should be more stable. Both before and after this change, gcDrain fetches a full work buffer if it drains its current buffer. Basically all of these choices are bad; the right answer is to use a dual work buffer scheme. Previously, shade always fetched a work buffer (though usually from m.currentwbuf), even if the object was already marked. Now it only fetches a work buffer if it actually greys an object. Change-Id: I8b880ed660eb63135236fa5d5678f0c1c041881f Reviewed-on: https://go-review.googlesource.com/5232 Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
2015-02-19runtime: introduce higher-level GC work abstractionAustin Clements
This introduces a producer/consumer abstraction for GC work pointers that internally handles the details of filling, draining, and shuffling work buffers. In addition to simplifying the GC code, this should make it easy for us to change how we use work buffers, including cleaning up how we use the work.partial queue, reintroducing a FIFO lookahead cache, adding prefetching, and using dual buffers to avoid flapping. This commit doesn't change any existing code. The following commit will switch the garbage collector from explicit workbuf manipulation to gcWork. Change-Id: Ifbfe5fff45bf0362d6d7c3cecb061f0c9874077d Reviewed-on: https://go-review.googlesource.com/5231 Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
2015-02-19runtime: drop unused workbufhdr.id fieldAustin Clements
Change-Id: If7729b3c7df6dc7fcd41f293e2ef2472c769fe8b Reviewed-on: https://go-review.googlesource.com/5261 Reviewed-by: Rick Hudson <rlh@golang.org>
2015-02-19doc: fix broken link in READMERyan Seys
Change-Id: I73450aeb59571f3285ff59ae214739e1866c9aa0 Reviewed-on: https://go-review.googlesource.com/5270 Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-02-19[dev.cc] cmd/asm: add ppc64Rob Pike
Fairly straightforward. A couple of unusual addressing tricks. Also added the ability to write R(10) to mean R10. PPC64 uses this for a couple of large register spaces. It appears for ARM now as well, since I saw some uses of that before, although I rewrote them in our source. I could put it in for 386 and amd64 but it's not worth it. Change-Id: I3ffd7ffa62d511b95b92c3c75b9f1d621f5393b6 Reviewed-on: https://go-review.googlesource.com/5282 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19image/jpeg: support 16-bit quantization tables and Extended SequentialNigel Tao
frames. Fixes #9888. Change-Id: I60f1d843e72e1b7bc77ab984f149c9ddb5258a06 Reviewed-on: https://go-review.googlesource.com/5251 Reviewed-by: Rob Pike <r@golang.org>
2015-02-19[dev.cc] runtime: fix FP reference in atomic_ppc64x.sRob Pike
References to FP must now have a symbol. Change-Id: I3f06b99cc48cbd4ccd6f23f2e4b0830af40f7f3d Reviewed-on: https://go-review.googlesource.com/5281 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19[dev.cc] cmd/9a,new9a: set v=1 on static namesRob Pike
Oversight in 9a: did not set the static bit in the assembler for symbols with <>. Change-Id: Id508dcd3ed07733e60395aefa86d0035faab14a9 Reviewed-on: https://go-review.googlesource.com/5280 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19runtime: make gcDrainN take an int instead of uintptrAustin Clements
Nit. There's no reason to take a uintptr and doing so just requires casts in annoying places. Change-Id: Ifeb9638c6d94eae619c490930cf724cc315680ba Reviewed-on: https://go-review.googlesource.com/5230 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-19runtime: fix accidentally exported OpenBSD constantsMatthew Dempsky
Change-Id: I2de63668a1c0152cc329df55c2d6d014e8183158 Reviewed-on: https://go-review.googlesource.com/4943 Reviewed-by: Minux Ma <minux@golang.org>
2015-02-18encoding/json: Fixed the comment specifying Marshal behavior for maps.Aaron Jacobs
The comment previously was reversed in sense (it appeared to be describing unmarshaling). I've fixed that, and added the caveat that map keys are subject to UTF-8 coercion like other strings. Change-Id: Id08082aa71401a6e7530a42f979fbb50bd1f4e6a Reviewed-on: https://go-review.googlesource.com/5221 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
2015-02-18image: change Rectangle.Eq to return true for all empty rectangles, evenNigel Tao
if their nominal Min and Max points differ. This is a behavior change, but arguably a bug fix, as Eq wasn't previously consistent with In, and the concept of a rectangle being a set of points. This is demonstrated by the new geom_test.go test. It does mean that r.Eq(s) no longer implies that Inset'ting both r and s with a negative inset results in two rectangles that are still Eq, but that seems acceptable to me. The previous behavior is still available as "r == s". Also clarify the image.Rect doc comment when the inputs are non-canonical. Also simplify the Point and Rectangle Eq implementations dating from before Go 1.0, when you couldn't compare structs via the == operator. Change-Id: Ic39e628db31dc5fe5220f4b444e6d5000eeace5b Reviewed-on: https://go-review.googlesource.com/5006 Reviewed-by: Rob Pike <r@golang.org>
2015-02-18doc: add cgi change go1.5.txtBrad Fitzpatrick
Change-Id: I829529929906d4758c7ba10d356c251b44e35a8d Reviewed-on: https://go-review.googlesource.com/5190 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-02-18net/http/cgi: fix REMOTE_ADDR, REMOTE_HOST, add REMOTE_PORTAlex Sergeyev
Env vars were incorrectly copying whole value of http.RemoteAddr to REMOTE_ADDR and REMOTE_HOST. They contained IP:port pair which instead should only have IP (RFC 3875, other sources). Module also was not setting REMOTE_PORT variable which become de-facto standard for passing TCP client port to CGI scripts (Apache mod_cgi, IIS, and probably others) Fixes #9861 Change-Id: Ia73e664c48539e3c7db4997d09d957884e98d8a5 Reviewed-on: https://go-review.googlesource.com/4933 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-02-18[dev.cc] cmd/9a, cmd/new9a: fix line numbersRuss Cox
Fixed for the other assemblers in CL 2297042 in 2010. Change-Id: I6cf41c569e884d98d295369e60e550ff8c0884e6 Reviewed-on: https://go-review.googlesource.com/5173 Reviewed-by: Rob Pike <r@golang.org>
2015-02-18[dev.cc] cmd/dist, cmd/go: build new6g etc and verify against 6gRuss Cox
Change-Id: Ide7cff506274ec76d26bdffe7890ca2c28737f2b Reviewed-on: https://go-review.googlesource.com/4852 Reviewed-by: Rob Pike <r@golang.org>
2015-02-18crypto/x509: embed certificates on darwin/armDavid Crawshaw
Change-Id: Ia6b06f19e5ac424f01a1b90b78b507363b0c4577 Reviewed-on: https://go-review.googlesource.com/5061 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2015-02-18cmd/gc: replace NULL by nilDavid du Colombier
In CL 3964, NULL was used instead of nil. However, Plan 9 doesn't declare NULL. Change-Id: Ied3850aca5c8bca5974105129a37d575df33f6ec Reviewed-on: https://go-review.googlesource.com/5150 Reviewed-by: Minux Ma <minux@golang.org>
2015-02-18cmd/gc: generate simpler names for closuresDmitry Vyukov
Fixes #8291 There were several complaints about closure names in the issue tracker. The first problem is that you see names like net/http.funcĀ·001 in profiles, traces, etc. And there is no way to figure out what is that function. Another issue is non-US-ascii symbols. All programs out there should accept UTF-8. But unfortunately it is not true in reality. For example, less does not render middle dot properly. This change prepends outer function name to closure name and replaces middle dot with dot. Now names look like: main.glob.func1 main.glob.func2 main.glob.func2.1 main.init.1 main.init.1.func1 main.init.1.func1.1 main.main.func1 main.main.func1.1 Change-Id: I725726af88f2ad3ced2e3450f0f06bf459fd91c0 Reviewed-on: https://go-review.googlesource.com/3964 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-18[dev.cc] cmd/internal/obj/ppc64: set Ctxt when allocating ProgsRob Pike
This will get fixed properly upstream, but this will serve for now. Change-Id: I25e5210d190bc7a06a5b9f80724e3360d1a6b10c Reviewed-on: https://go-review.googlesource.com/5121 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-18[dev.cc] cmd/asm: make 4(SP) illegal except on 386Rob Pike
Require a name to be specified when referencing the pseudo-stack. If you want a real stack offset, use the hardware stack pointer (e.g., R13 on arm), not SP. Fix affected assembly files. Change-Id: If3545f187a43cdda4acc892000038ec25901132a Reviewed-on: https://go-review.googlesource.com/5120 Run-TryBot: Rob Pike <r@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Dave Cheney <dave@cheney.net>
2015-02-18doc: document Go 1.4.2Andrew Gerrand
Change-Id: Ia87047cbc720fb03d2f67aec48abe18bce8dbf78 Reviewed-on: https://go-review.googlesource.com/5112 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-18[dev.cc] cmd/yacc: introduce yyParser to expose parser stateRuss Cox
Historically, yacc has supported various kinds of inspections and manipulations of the parser state, exposed as global variables. The Go implementation of yacc puts that state (properly) in local stack variables, so it can only be exposed explicitly. There is now an explicit parser type, yyParser, returned by a constructor, yyNewParser. type yyParser interface { Parse(yyLexer) int Lookahead() int } Parse runs a parse. A call to the top-level func Parse is equivalent to calling yyNewParser().Parse, but constructing the parser explicitly makes it possible to access additional parser methods, such as Lookahead. Lookahead can be called during grammar actions to read (but not consume) the value of the current lookahead token, as returned by yylex.Lex. If there is no current lookahead token, Lookahead returns -1. Invoking Lookahead corresponds to reading the global variable yychar in a traditional Unix yacc grammar. To support Lookahead, the internal parsing code now separates the return value from Lex (yychar) from the reencoding used by the parsing tables (yytoken). This has the effect that grammars that read yychar directly in the action (possible since the actions are in the same function that declares yychar) now correctly see values from the Lex return value space, not the internal reencoding space. This can fix bugs in ported grammars not even using SetParse and Lookahead. (The reencoding was added on Plan 9 for large character sets. No Plan 9 programs using yacc looked at yychar.) Other methods may be added to yyParser later as needed. Obvious candidates include equivalents for the traditional yyclearin and yyerrok macros. Change-Id: Iaf7649efcf97e09f44d1f5bc74bb563a11f225de Reviewed-on: https://go-review.googlesource.com/4850 Reviewed-by: Rob Pike <r@golang.org>
2015-02-18[dev.cc] cmd/asm/internal/asm: add operand parsing tests for 386 and armRob Pike
Change-Id: If2aafc4dd3f91650fc7727ea7d534ad7aa627c8c Reviewed-on: https://go-review.googlesource.com/5090 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-17[dev.cc] cmd/internal/gc, cmd/new6g etc: convert from cmd/gc, cmd/6g etcRuss Cox
First draft of converted Go compiler, using rsc.io/c2go rev 83d795a. Change-Id: I29f4c7010de07d2ff1947bbca9865879d83c32c3 Reviewed-on: https://go-review.googlesource.com/4851 Reviewed-by: Rob Pike <r@golang.org>
2015-02-17[dev.cc] cmd/go: install new6g etc (once they are committed) to tool directoryRuss Cox
Change-Id: I2853535ab6c79d14f430c780161e4c35c52d9fb3 Reviewed-on: https://go-review.googlesource.com/4839 Reviewed-by: Rob Pike <r@golang.org>
2015-02-17[dev.cc] cmd/gc, cmd/ld, runtime: minor tweaks for c2goRuss Cox
Change-Id: I3be69a4ebf300ad24b55b5f43fd7ad1f001c762e Reviewed-on: https://go-review.googlesource.com/4838 Reviewed-by: Rob Pike <r@golang.org>
2015-02-17[dev.cc] cmd/dist: write default GO386 for cmd/internal/objRuss Cox
Change-Id: Ida60c30041505c321fbfc48b22b8ff5af1a3f474 Reviewed-on: https://go-review.googlesource.com/4837 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Minux Ma <minux@golang.org>
2015-02-17[dev.cc] cmd/asm: clean up jumpsRob Pike
Set TYPE_BRANCH for x(PC) in the parser and the assembler has less work to do. This also makes the operand test handle -4(PC) correctly. Also add a special test case for AX:DX, which should be fixed in obj really. Change-Id: If195e3a8cf3454a73508633e9b317d66030da826 Reviewed-on: https://go-review.googlesource.com/5071 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-17image/draw: add CMYK fast path.Nigel Tao
Change-Id: I9582aff7ca141a8aead5692af74b9c708b1700cc Reviewed-on: https://go-review.googlesource.com/5020 Reviewed-by: Rob Pike <r@golang.org>
2015-02-17[dev.cc] misc/cgo/test: fix PC reference in arm assemblerRob Pike
Use R15. May fix build. Change-Id: Ia25b0936c5aab2a427f8e6531688c3e537fbfdd0 Reviewed-on: https://go-review.googlesource.com/5070 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-17[dev.cc] cmd/asm/internal/asm: add operand parsing testRob Pike
Generated by reducing all the amd64 operands in the core. Will add 386 and ARM later; this is a trial balloon. NOTE: There is at least one anomaly: AX:DX doesn't print correctly in this situation. Change-Id: I9f327c1890b100e3edb7b1b2a1c01f3e4b798f43 Reviewed-on: https://go-review.googlesource.com/4967 Reviewed-by: Russ Cox <rsc@golang.org>