runtime: correct memory leak in select
* adds pass 3 to dequeue from channels eagerly
various other cleanup/churn:
* use switch on cas->send in each pass to
factor out common code.
* longer goto labels, commented at target
* be more agressive about can't happen:
throw instead of print + cope.
* use "select" instead of "selectgo" in errors
* use printf for debug prints when possible
R=ken2, ken3
CC=golang-dev, r
https://golang.org/cl/875041
factor out environment variable checks.
infer $GOROOT etc during build if not set.
it's still necessary to set them for yourself
to use the standard Makefiles.
when running all.bash, don't recompile all the
go packages in run.bash, since make.bash already did.
Russ Cox [Tue, 30 Mar 2010 21:54:32 +0000 (14:54 -0700)]
time: do not segment time strings by character class.
instead use pure substring matching to find template values.
this makes stdZulu unnecessary and allows formats
like "20060102 030405" (used in some internet protocols).
this makes Parse not handle years < 0000 or > 9999 anymore.
that seems like an okay price to pay, trading hypothetical
functionality for real functionality.
also changed the comments on the Time struct to use the
same reference date as the format and parse routines.
Russ Cox [Tue, 30 Mar 2010 17:34:57 +0000 (10:34 -0700)]
single argument panic
note that sortmain.go has been run through hg gofmt;
only the formatting of the day initializers changed.
i'm happy to revert that formatting if you'd prefer.
Rob Pike [Tue, 30 Mar 2010 00:37:22 +0000 (17:37 -0700)]
Flags: add user-defined flag types. The change is really no code; it's just publishing
the set() method and add() functions. But we rename add() to Var() for consistency.
Also rename FlagValue to Value for simplicity.
Also, delete the check for multiple settings for a flag. This makes it possible to
define a flag that collects values, such as into a slice of strings.
Russ Cox [Fri, 26 Mar 2010 21:20:50 +0000 (14:20 -0700)]
prof: install gopprof too
This is a modified version of the open source pprof
from code.google.com/p/google-perftools.
That version is likely to catch up to this one,
but it's still useful to ship our own copy since
we only need the one script from that project,
not all the C++ libraries.
Giles Lean [Fri, 26 Mar 2010 20:23:54 +0000 (13:23 -0700)]
syscall: Create syscall_bsd.go for code used by Darwin and other *BSDs
In this change I'd like to combine the common code that is
present in syscall_darwin.go and syscall_freebsd.go. I
have three reasons for wanting to do this now:
1. reducing code duplication is nearly always good :-)
2. the duplication will get worse if I duplicate this code
a third time for the NetBSD port I'm working on, which
I need to do almost immediately
3. by making this change all in one lump and ignoring any
commonality with the syscall_linux*.go files the diff
is long but, I think, readable
In future it may be possible to cherry pick functions that
also apply to Linux and put them in (say) syscall_unix.go,
and of course some functions may diverge in future and have
to move out to OS or architecture specific files, but today
I want just the low hanging fruit.
Tested and passed on:
Darwin (Snow Leopard, 10.6): amd64 and 386
FreeBSD (8.0-RELEASE): 386 only(*)
(*) All my virtualisation software has stopped playing nice
with FreeBSD for the moment, so I don't have facilities to
test the amd64 port. As the OS X port is OK and the diff
looks all right to my eyes I shall keep my fingers crossed.
If someone with a FreeBSD/amd64 system cares to test and
report I would be appreciative.
2010-03-27 update: I have replaced my virtualisation software, and have working FreeBSD/i386 and FreeBSD/amd64 virtual machines again.
As I hoped (and expected -- programmers are optimists :-) the code built and passed all but the two currently known to fail tests on FreeBSD/amd64. I rechecked FreeBSD/i386 too: same results.
Robert Griesemer [Thu, 25 Mar 2010 23:59:02 +0000 (16:59 -0700)]
godoc: don't convert multi-line functions into one-liners by default
- new heuristic: if both the opening { and closing } braces are on the
same line, and the function body doesn't contain comments or is other-
wise too long (e.g. signature too long), it is formatted as a one-line
function
- related cleanups along the way
- gofmt -w src misc led to no additional changes as expected
R=rsc, rsc1
CC=golang-dev, ken2, r
https://golang.org/cl/758041
Dean Prichard [Thu, 25 Mar 2010 07:23:07 +0000 (00:23 -0700)]
arm: disable some problematic tests
test/64bit.go: segfaults on sheevaplug(armv5)
The following have long runtimes when GC is on.
Sample run time in seconds for android emulator
and sheevaplug
test/stack.go: 4934s 1780s
test/ken/chan.go: 860s 296s
test/gc1.go: 218s 69s
Robert Griesemer [Wed, 24 Mar 2010 23:28:59 +0000 (16:28 -0700)]
godoc: show relative file names without leading '/' (per r's request)
- change the various url-xxx formatters to return a relative URL path
- make the leading '/' for URLs explicit in the template
- on the way change some |html formatters to |html-esc
(html should only be used for formatting AST nodes)
R=rsc, r
CC=golang-dev
https://golang.org/cl/740041
Fumitoshi Ukai [Wed, 24 Mar 2010 01:09:24 +0000 (18:09 -0700)]
websocket: implement new protocol
http://www.whatwg.org/specs/web-socket-protocol/
(draft of draft-hixie-thewebsocketprotocol-76)
draft-hixie-thewebsocketprotocol-76 will introduce new handshake
incompatible draft 75 or prior.
http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol