playground: interleave standard output and error correctly

The change reconstructs the correct interleaving of the standard
output and error. Playground buffers those streams separetely
and performs a sorted merge.

The change depends on the change https://golang.org/cl/105235,
which makes Playground timestamps change when the stream fd changes.
It's recommended to merge this change after the CL 105235 went into
go release, but it can be picked with CL 106216 until that happens.

Fixes golang/go#24615
Fixes golang/go#24659

Change-Id: I76f8815c47e8961d5c435e55c761c7a7bf3920ce
Reviewed-on: https://go-review.googlesource.com/105496
Reviewed-by: Andrew Bonventre <andybons@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2 files changed
tree: e97327c6f55a56661bbfa05ea73c50bf48b8d40c
  1. AUTHORS
  2. CONTRIBUTING.md
  3. CONTRIBUTORS
  4. Dockerfile
  5. LICENSE
  6. Makefile
  7. PATENTS
  8. README.md
  9. app.yaml
  10. cache.go
  11. client.go
  12. codereview.cfg
  13. edit.go
  14. edit.html
  15. enable-fake-time.patch
  16. fake_fs.lst
  17. fmt.go
  18. logger.go
  19. main.go
  20. play.go
  21. play_test.go
  22. sandbox.go
  23. server.go
  24. server_test.go
  25. share.go
  26. static/
  27. store.go
  28. strict-time.patch
README.md

playground

This subrepository holds the source for the Go playground: https://play.golang.org/

Building

# build the image
docker build -t playground .

Running

docker run --name=play --rm -d -p 8080:8080 playground
# run some Go code
cat /path/to/code.go | go run client.go | curl -s --upload-file - localhost:8080/compile

Deployment

gcloud --project=golang-org --account=person@example.com app deploy app.yaml

Contributing

To submit changes to this repository, see https://golang.org/doc/contribute.html.