Forgot your password?
typodupeerror
Programming

Go Version 1 Released 186

Posted by Soulskill
from the way-to-go dept.
New submitter smwny writes "Google's system programming language, Go, has just reached the 1.0 milestone. From the announcement: 'Go 1 is the first release of Go that is available in supported binary distributions. They are available for Linux, FreeBSD, Mac OS X and, we are thrilled to announce, Windows. ... Go 1 introduces changes to the language (such as new types for Unicode characters and errors) and the standard library (such as the new time package and renamings in the strconv package). Also, the package hierarchy has been rearranged to group related items together, such as moving the networking facilities, for instance the rpc package, into subdirectories of net. A complete list of changes is documented in the Go 1 release notes. That document is an essential reference for programmers migrating code from earlier versions of Go. ... A similar process of revision and stabilization has been applied to the App Engine libraries, providing a base for developers to build programs for App Engine that will run for years.'"
This discussion has been archived. No new comments can be posted.

Go Version 1 Released

Comments Filter:
  • by CondeZer0 (158969) on Wednesday March 28, 2012 @03:21PM (#39499649) Homepage

    The amazing thing is that even before the first stable release is out quite a few organizations are using Go in production to run real systems. Very impressive:

    http://go-lang.cat-v.org/organizations-using-go [cat-v.org]

  • Added value of Go? (Score:5, Interesting)

    by billcarson (2438218) on Wednesday March 28, 2012 @03:25PM (#39499691)
    Can someone explain to me what Go's aim is, and why exactly it requires a new programming language? Is it meant a replacement for Java/C++/Python, or does it cater a new branch of programming?
  • by Urban Garlic (447282) on Wednesday March 28, 2012 @03:46PM (#39499981)

    Maybe I'm too old-school, but when I think "systems language", I think about something that would be good for embedded devices or kernel device drivers, stuff that's pretty close to the metal. I wouldn't use Go for that, garbage-collection and concurrency mean there's heap traffic and IPC signaling under the hood that I probably want to control.

    I agree with the "C but better" characterization, but the ways in which it's better disqualify it from being a good systems tool, I think.

  • by rgbrenner (317308) on Wednesday March 28, 2012 @05:46PM (#39501553)

    This is interesting... If you run the Concurrent Pi example program on the Go website.. it prints:

    3.1417926135957908

    But it should be [uiuc.edu]:

    3.1415926535897932

    It's wrong starting with the 5th digit...

    What kind of language is that inaccurate? And why would they use it as an example program?!

  • by Pengo (28814) on Wednesday March 28, 2012 @06:33PM (#39502127) Journal

    Does anyone know if this is an R&D project that could be poking at the idea of a litigation free runtime for Android away from Dalvik?

    I'm curious to see how this language evolves and its internal adoption inside of google.

    Regardless of the language taking off or not, it's a great to see a new language enter the ecosystem, and no doubt we'll learn things from it that can be brought back into main-stream languages or interesting innovation that could open the doors for new (pray disruptive) development in new areas.

  • by Spykk (823586) on Wednesday March 28, 2012 @07:26PM (#39502767)
    I tried grabbing go and compiled a hello world to compare it to C:

    [talisman@talisman-pc:~/tmp]$ uname -a
    Linux talisman-pc 3.2.13-1-ARCH #1 SMP PREEMPT Sat Mar 24 09:10:39 CET 2012 x86_64 AMD Athlon(tm) II X4 640 Processor AuthenticAMD GNU/Linux
    [talisman@talisman-pc:~/tmp]$ cat test.go
    package main

    import "fmt"

    func main() {
    fmt.Println("Hello, world")
    }
    [talisman@talisman-pc:~/tmp]$ time go build test.go

    real 0m2.215s
    user 0m2.547s
    sys 0m0.210s
    [talisman@talisman-pc:~/tmp]$ ls -lh test
    -rwxr-xr-x 1 talisman talisman 1.3M Mar 28 15:43 test
    [talisman@talisman-pc:~/tmp]$ time ./test
    Hello, world

    real 0m0.003s
    user 0m0.000s
    sys 0m0.000s
    [talisman@talisman-pc:~/tmp]$ cat test.c
    #include <stdio.h>

    int main(int argc, char **argv) {
    printf("Hello, World!");
    return 0;
    }
    [talisman@talisman-pc:~/tmp]$ time gcc test.c

    real 0m0.047s
    user 0m0.027s
    sys 0m0.013s
    [talisman@talisman-pc:~/tmp]$ ls -lh a.out
    -rwxr-xr-x 1 talisman talisman 6.6K Mar 28 15:45 a.out
    [talisman@talisman-pc:~/tmp]$ time ./a.out
    Hello, World!
    real 0m0.001s
    user 0m0.000s
    sys 0m0.000s
    [talisman@talisman-pc:~/tmp]$

    This is obviously not a very scientific comparison, but the takeaways are that the go executable was 1.3M compared to the C executables 6.6K and the go compile took over 2 seconds whereas the C compile took less than 0.05 seconds.

  • by hanwen (8589) on Wednesday March 28, 2012 @08:38PM (#39503525) Homepage Journal

    I write both Go and C++ at google. Sadly, Rob Pike's joke has a definite core of truth: writing C++ code at google is extremely time-consuming and difficult to get right because it has to be multi-threaded and asynchronous.


    Long compile times is more of a build system problem than a compiler problem, IME. Of course, lots of people have broken build systems, and compile the same things over and over again ...

    Well, our in-house developed build system is the best I've ever seen, and probably the best in the industry. Read more about it here [blogspot.com]. Even with all the niftyness of a thoroughly correct build system and a data-center sized ccache, it still sucks.

    Go is definitely awesome, and I recommend everyone to set aside the gripes with the syntax and learn it. I guarantee you that you'll be pleasantly surprised.

Are we running light with overbyte?

Working...