- 14 Jun, 2017 24 commits
-
-
Chris Broadfoot authored
Change-Id: I27aa87607aa82b400411a60c6bdb6f9a42ff97c1 Reviewed-on: https://go-review.googlesource.com/45776 Run-TryBot: Chris Broadfoot <cbro@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Chris Broadfoot authored
Change-Id: I824fc5a62977140ccc62d55e8b42cfd01da935e9 Reviewed-on: https://go-review.googlesource.com/45774Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Add Adam Bender (corporate CLA for Google Inc.) Add Ahmet Alp Balkan (corporate CLA for Google Inc.) Add Aishraj Dahal (individual CLA) Add Alexey Neganov (individual CLA) Add Andrew Benton (individual CLA) Add Bartosz Grzybowski (individual CLA) Add Ben Shi (individual CLA) Add Brandon Bennett (corporate CLA for Facebook, Inc.) Add Brian Starke (individual CLA) Add Bulat Gaifullin (individual CLA) Add Carl Henrik Lunde (individual CLA) Add Carlisia Campos (individual CLA) Add Carlo Alberto Ferraris (individual CLA) Add Carolyn Van Slyck (individual CLA) Add Chew Choon Keat (individual CLA) Add Chris Biscardi (individual CLA) Add Damien Lespiau (corporate CLA for Intel Corporation) Add David NewHamlet (individual CLA) Add Dieter Plaetinck (corporate CLA for RainTank) Add Dominic Green (individual CLA) Add Eitan Adler (individual CLA) Add Evgeniy Polyakov (individual CLA) Add Ewan Valentine (individual CLA) Add Fangming Fang (corporate CLA for ARM Ltd.) Add Felipe Oliveira (individual CLA) Add Filip Gruszczyński (individual CLA) Add Gengliang Wang (individual CLA) Add George Gkirtsou (individual CLA) Add Gregory Man (individual CLA) Add Hauke Löffler (individual CLA) Add Heschi Kreinick (corporate CLA for Google Inc.) Add Hongfei Tan (individual CLA) Add Hugues Bruant (individual CLA) Add Ibrahim AshShohail (individual CLA) Add James Neve (individual CLA) Add James Smith (individual CLA) Add Jamie Stackhouse (individual CLA) Add Jan Berktold (individual CLA) Add Jeff Johnson (corporate CLA for Google Inc.) Add Joe Richey (corporate CLA for Google Inc.) Add Johan Brandhorst (individual CLA) Add Jonathan Stacks (individual CLA) Add Jordan Krage (individual CLA) Add Josselin Costanzi (individual CLA) Add Joël Stemmer (corporate CLA for Google Inc.) Add Julio Montes (corporate CLA for Intel Corporation) Add Kamil Chmielewski (individual CLA) Add Karoly Negyesi (individual CLA) Add Keiji Yoshida (individual CLA) Add Kirill Smelkov (corporate CLA for Nexedi) Add Koichi Shiraishi (individual CLA) Add Kris Nova (individual CLA) Add Kyrylo Silin (individual CLA) Add Lars Jeppesen (individual CLA) Add Lars Wiegman (individual CLA) Add Laurie Clark-Michalek (individual CLA) Add Lion Yang (individual CLA) Add Lorenzo Masini (individual CLA) Add Lucas Clemente (corporate CLA for Google Inc.) Add Marcelo E. Magallon (individual CLA) Add Mark Adams (individual CLA) Add Mark Harrison (corporate CLA for Google Inc.) Add Mark Ryan (corporate CLA for Intel Corporation) Add Martin Lindhe (individual CLA) Add Marwan Sulaiman (individual CLA) Add Matt Blair (individual CLA) Add Matt Harden (individual CLA) Add Matt Strong (individual CLA) Add Mike Wiacek (corporate CLA for Google Inc.) Add Milutin Jovanović (individual CLA) Add Monis Khan (corporate CLA for Red Hat, Inc.) Add Mostyn Bramley-Moore (individual CLA) Add Mura Li (individual CLA) Add Máté Gulyás (individual CLA) Add Nathan Caza (individual CLA) Add Nicholas Maniscalco (individual CLA) Add Nick Kubala (corporate CLA for Google Inc.) Add Nick Miyake (individual CLA) Add Niklas Schnelle (individual CLA) Add Patrick Pelletier (individual CLA) Add Paul Jolly (individual CLA) Add Paulo Flabiano Smorigo (corporate CLA for IBM) Add Peter Nguyen (individual CLA) Add Pravendra Singh (individual CLA) Add Raymond Kazlauskas (individual CLA) Add Remi Gillig (individual CLA) Add Sam Boyer (individual CLA) Add Sean Chittenden (corporate CLA for Joyent, Inc.) Add Sean Christopherson (corporate CLA for Intel Corporation) Add Shintaro Kaneko (individual CLA) Add Takuto Ikuta (corporate CLA for Google Inc.) Add Thomas Bonfort (individual CLA) Add Toshiki Shima (individual CLA) Add Trey Roessig (individual CLA) Add Wade Simmons (individual CLA) Add Wei Xiao (corporate CLA for ARM Ltd.) Add Weichao Tang (individual CLA) Add Will Storey (individual CLA) Add Wu Yunzhou (individual CLA) Add Xu Fee (individual CLA) Add Zach Bintliff (individual CLA) Add Zak (individual CLA) Add Zellyn Hunter (corporate CLA for Square, Inc.) Add Максим Федосеев (individual CLA) Add 张嵩 (individual CLA) Updates #12042 Change-Id: I43922a9489828e519e480f8fc1abc92863e0abcc Reviewed-on: https://go-review.googlesource.com/45770Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Fixes #19695 Change-Id: Ie5103f7905969e25dba6e5fb37344b70e807fc69 Reviewed-on: https://go-review.googlesource.com/45702 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Fixes #17615 Change-Id: I7f88c0c6579c79007492e765d1b5ca4f28d19575 Reviewed-on: https://go-review.googlesource.com/45771Reviewed-by: Russ Cox <rsc@golang.org>
-
thoeni authored
Marshal must process unexported embedded fields of struct type, looking for exported fields in those structs. However, it must not process unexported embedded fields of non-struct type. For example, consider: type t1 struct { X int } type t2 int type T struct { t1 t2 } When considering T, Marshal must process t1 to find t1.X. Marshal must not process t2, but it was. Fix that. Fixes #18009 Change-Id: I62ba0b65ba30fd927990e101a26405a9998787a3 Reviewed-on: https://go-review.googlesource.com/33773 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Brad Fitzpatrick authored
Updates #15418 (the original bug, fixed by https://golang.org/cl/23570) Fixes #19460 (round two) Change-Id: Iac4447daabb56e3b470046c489c22d588c20163e Reviewed-on: https://go-review.googlesource.com/45697Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Heschi Kreinick authored
Change-Id: I956873854724e8afed460f7ff3a657d68ec20fa1 Reviewed-on: https://go-review.googlesource.com/45755Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
Also add runtime· prefixes to the code that is still used. Fixes #19507 Change-Id: Ib6da6b2a9e398061d3f93958ee1258295b6cc33b Reviewed-on: https://go-review.googlesource.com/45699Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
The test requires pthreads. Fixes #20666. Change-Id: Icb2400250a80cdad6680cd1ef6c18ef7343d5e29 Reviewed-on: https://go-review.googlesource.com/45701 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
Fixes #19510 (good details therein) Change-Id: Id28b66d91435d839fd79eeed486527cc77257c12 Reviewed-on: https://go-review.googlesource.com/45698Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
With current GCC a macro that refers to another macro can report an error on the macro definition line, with a note on the use. When cgo is trying to decide which line an error refers to, it is looking at the uses. So if we see an error on a line that we don't recognize followed by a note on a line that we do recognize, treat the note as an error. Fixes #20125. Change-Id: I389cd0eb7d56ad2d54bef70e278d9f76c4d36448 Reviewed-on: https://go-review.googlesource.com/44290 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Hiroshi Ioka <hirochachacha@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Fixes #17802 Change-Id: I245552534c3e21d95c569ac7118ba289244ba11d Reviewed-on: https://go-review.googlesource.com/45652Reviewed-by: Steve Francia <spf@golang.org>
-
Samuel Tan authored
Predefined escapers (i.e. "html" and "urlquery") should only occur in Identifier nodes, and never in Field or Chain nodes, since these are global functions that return string values (see inline comments for more details). Therefore, skip Chain and Field nodes when searching for predefined escapers in template pipelines. Also, make a non-functional change two existing test cases to avoid giving the impression that it is valid to reference a field of a predefined escaper. Fixes #20323 Change-Id: I34f722f443c778699fcdd575dc3e0fd1fd6f2eb3 Reviewed-on: https://go-review.googlesource.com/43296Reviewed-by: Samuel Tan <samueltan@google.com> Reviewed-by: Mike Samuel <mikesamuel@gmail.com> Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alberto Donizetti authored
Updates #20587 Change-Id: I3d65a0124157990b302db8879ee1a4941124ea11 Reviewed-on: https://go-review.googlesource.com/45730Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Austin Clements authored
Currently, semrelease1 readies the next waiter before recording a mutex event. However, if the next waiter is expecting to look at the mutex profile, as is the case in TestMutexProfile, this may delay recording the event too much. Swap the order of these operations so semrelease1 records the mutex event before readying the next waiter. This also means readying the next waiter is the very last thing semrelease1 does, which seems appropriate. Fixes #19139. Change-Id: I1a62063599fdb5d49bd86061a180c0a2d659474b Reviewed-on: https://go-review.googlesource.com/45751 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Peter Weinberger <pjw@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Lynn Boger authored
When using golang on ppc64le there have been issues when building executables that generate extremely large text sections. This is due to the call instruction and the limitation on the offset field, which is smaller than most platforms. If the size of the call target offset is too big for the offset field in the call instruction, then link errors can occur. The original solution to this problem in golang was to split the text section when it became too large, allowing the external (GNU) linker to insert the necessary stub to handle the long call. That worked fine until the another size limit for the program size was hit, where a plt_branch was created instead of a long branch. In that case the plt_branch code sequence expects r2 to contain the address of the TOC, but when golang creates dynamic executables by default (-buildmode=exe) r2 does not always contain the address of the TOC and as a result when building programs that reach this extremely large size, a runtime SEGV or SIGILL can occur due to branching to a bad address. When using internal linking, trampolines are generated to handle the long calls but the text sections are not split. With this change, text sections will still be split approrpriately with external linking but if the buildmode being used does not maintain r2 as the TOC addresses, then trampolines will be created for those calls. Fixes #20497 Change-Id: If5400b0f86c2c08e106b332be6db0b259b07d93d Reviewed-on: https://go-review.googlesource.com/45130 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Ian Lance Taylor authored
Block all signals during a fork. In the parent process, after the fork, restore the signal mask. In the child process, reset all currently handled signals to the default handler, and then restore the signal mask. The effect of this is that the child will be operating using the same signal regime as the program it is about to exec, as exec resets all non-ignored signals to the default, and preserves the signal mask. We do this so that in the case of a signal sent to the process group, the child process will not try to run a signal handler while in the precarious state after a fork. Fixes #18600. Change-Id: I9f39aaa3884035908d687ee323c975f349d5faaa Reviewed-on: https://go-review.googlesource.com/45471 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Alan Donovan authored
Before, all accesses to the lines and infos tables of each File were serialized by the lock of the owning FileSet, causing parsers running in parallel to contend. Now, each File has its own mutex. This fixes a data race in (*File).PositionFor, which used to call f.position then f.unpack without holding the mutex's lock. Fixes golang/go#18348 Change-Id: Iaa5989b2eba88a7fb2e91c1a0a8bc1e7f6497f2b Reviewed-on: https://go-review.googlesource.com/34591Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
Updates #20587 Change-Id: I7effe922242db45f3ce74882d07511aaaac2f634 Reviewed-on: https://go-review.googlesource.com/45613Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Josh Bleecher Snyder authored
I was surprised to see readvarint show up in a cpu profile. Use a few simple optimizations to speed up stack copying: * Avoid making a copy of the cache.entries array or any of its elements. * Use a shift instead of a signed division in stackmapdata. * Change readvarint to return the number of bytes consumed rather than an updated slice. * Make some minor optimizations to readvarint to help the compiler. * Avoid called readvarint when the value fits in a single byte. The first and last optimizations are the most significant, although they all contribute a little. Add a benchmark for stack copying that includes lots of different functions in a recursive loop, to bust the cache. This might speed up other runtime operations as well; I only benchmarked stack copying. name old time/op new time/op delta StackCopy-8 96.4ms ± 2% 82.7ms ± 1% -14.24% (p=0.000 n=20+19) StackCopyNoCache-8 167ms ± 1% 131ms ± 1% -21.58% (p=0.000 n=20+20) Change-Id: I13d5c455c65073c73b656acad86cf8e8e3c9807b Reviewed-on: https://go-review.googlesource.com/43150 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Brad Fitzpatrick authored
The path package has a reference to the path/filepath package, so add a reverse reference. And clarify the path package doesn't do Windows paths. Fixes #20117 Change-Id: I65c5ce24e600b32ea20c5821b744bd89f6aff98c Reviewed-on: https://go-review.googlesource.com/45653Reviewed-by: Jaana Burcu Dogan <jbd@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Austin Clements authored
There are currently two arrays indexed by P ID: allp and pdesc. Consolidate these by moving the pdesc fields into type p so they can be indexed off allp along with all other per-P state. For #15131. Change-Id: Ib6c4e6e7612281a1171ba4a0d62e52fd59e960b4 Reviewed-on: https://go-review.googlesource.com/45572 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
Hiroshi Ioka authored
Current CommentedNode cannot handle associated comments which satisfy node.End() < comment.Pos() This CL solves it. Fixes #20635 Change-Id: I58e2e3703999bb38a6ce37112e986c4b1b2eace0 Reviewed-on: https://go-review.googlesource.com/45292 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
- 13 Jun, 2017 16 commits
-
-
Ian Lance Taylor authored
Updates #20266. Fixes #20664. Change-Id: Ifca30409fc7971497efb6d84f3f98760157c2233 Reviewed-on: https://go-review.googlesource.com/45650Reviewed-by: Austin Clements <austin@google.com>
-
Austin Clements authored
Currently MaxGomaxprocs is 256. The previous CL saved enough per-P static space that we can quadruple MaxGomaxprocs (and hence the static size of allp) and still come out ahead. This is safe for Go 1.9. In Go 1.10 we'll eliminate the hard-coded limit entirely. Updates #15131. Change-Id: I919ea821c1ce64c27812541dccd7cd7db4122d16 Reviewed-on: https://go-review.googlesource.com/45673 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Pravendra Singh authored
According to the language spec, a struct field name should be an identifier. identifier = letter { letter | unicode_digit } . letter = unicode_letter | "_" . Implements a function 'isValidFieldName(fieldName string) bool'. To check if the field name is a valid identifier or not. It will panic if the field name is invalid. It uses the non-exported function implementation 'isLetter' from the package 'scanner', used to parse an identifier. Fixes #20600. Change-Id: I1db7db1ad88cab5dbea6565be15cc7461cc56c44 Reviewed-on: https://go-review.googlesource.com/45590Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Emmanuel Odeke authored
I accidentally set the wrong pattern mask as * []byte("\x4F\x67\x67\x53\x00") --> "OggS", the byte pattern itself. instead of * []byte("\xFF\xFF\xFF\xFF\xFF") which was a copy-paste error. The correct pattern is described at https://mimesniff.spec.whatwg.org/#matching-an-audio-or-video-type-pattern which I was using as a reference but I mistyped. Fixes #20513 Change-Id: Ie9cb60ac7edbf03075070878775b964116ce92d0 Reviewed-on: https://go-review.googlesource.com/44336 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
-
Daniel Theophanes authored
Change-Id: I9b0f17e123805ad9f526f5ea44b23cf4dbadcdcc Reviewed-on: https://go-review.googlesource.com/45611Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Robert Griesemer authored
The compiler now also prints column information - make sure we use the correct regexp for compiler error cleanups. Accept both, error positions with columns and without, since column printing may be disabled with -gcflags=-C. Fixes #20628. Change-Id: I46dc921dd5c29d7b8172cd19a3df57951f60d889 Reviewed-on: https://go-review.googlesource.com/45612 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Brad Fitzpatrick authored
Change-Id: Ib6e2b858fcb15ea95fa8cfcba3bfac4e210605fe Reviewed-on: https://go-review.googlesource.com/45610Reviewed-by: Alberto Donizetti <alb.donizetti@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Daniel Theophanes authored
Ensure a Stmt prepared on a Conn executes on the same driver.Conn. This also removes another instance of duplicated prepare logic as a side effect. Fixes #20647 Change-Id: Ia00a19e4dd15e19e4d754105babdff5dc127728f Reviewed-on: https://go-review.googlesource.com/45391Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Austin Clements authored
Back in the day, allp was just a pointer to an array. As a result, the runtime has a few loops of the form: for i := 0; ; i++ { p := allp[i] if p == nil { break } ... } This is silly now because it requires that allp be one longer than the maximum possible number of Ps, but now that allp is in Go it has a length. Replace these with range loops. Change-Id: I91ef4bc7bd3c9d4fda2264f4aa1b1d0271d7f578 Reviewed-on: https://go-review.googlesource.com/45571 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
Fixes #20266. Change-Id: I51383820880e3d3566ef3d70650a0863756003ba Reviewed-on: https://go-review.googlesource.com/44291 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Adam Langley authored
Change-Id: I4c2c82cb0354f843a3283a650ed2cd2b6aef5895 Reviewed-on: https://go-review.googlesource.com/36900Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alberto Donizetti authored
Updates #20587 Change-Id: I160da21ecdee07c6370be8c46cbd04d4fbb07abb Reviewed-on: https://go-review.googlesource.com/45550Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
Otherwise the packages will not pick up the way that -installsuffix is changed by -buildmode and -race. Fixes #20512. Change-Id: Ieca32c958a531beb6331dff30d7e9a4998867dbb Reviewed-on: https://go-review.googlesource.com/44630 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Ben Shi authored
"MOVW FPSR, g" should be assembled to 0xeef1aa10, but actually 0xee30a110 (RFS). "MOVW g, FPSR" should be 0xeee1aa10, but actually 0xee20a110 (WFS). They should be updated to VFP forms, since the ARM back end doesn't support non-VFP floating points. The patch fixes them and adds more assembly encoding tests. fixes #20643 Change-Id: I3b29490337c6e8d891b400fcedc8b0a87b82b527 Reviewed-on: https://go-review.googlesource.com/45276 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Alex Brainman authored
Last time zoneinfo_abbrs_windows.go was updated in CL 27832. Time for another update. Change-Id: I8dc3a1de6f22e90e634b2176188f257a260b6463 Reviewed-on: https://go-review.googlesource.com/45450Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Per golang.org/s/generatedcode Updates #nnn Change-Id: Ia7513ef6bd26c20b62b57b29f7770684a315d389 Reviewed-on: https://go-review.googlesource.com/45470 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Matt Layher <mdlayher@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-