Difference between revisions of "Go"

From RogueBasin
Jump to navigation Jump to search
(Remove the note about FFI binary distribution problems, the issue seems to have been resolved in more recent versions of Go)
(Updated info for 2012, we now have a stable v1 and it runs on Windows)
Line 1: Line 1:
'''Go''' is a programming language announced by Google in November 2009. It is a native-code compiled, garbage-collected, concurrent language. The design idea seems to be to make a modernized version of C.
'''Go''' is a programming language announced by Google in November 2009. It is a native-code compiled, garbage-collected, concurrent language. The design idea seems to be to make a modernized version of C. Version 1 of Go was released in March 2012, and should be a stable target for future applications.


== Roguelike Issues ==
== Roguelike Issues ==
Line 5: Line 5:
Go has several modern programming features, such as garbage collection and closures, which help when developing roguelikes. It has a reasonably simple duck-typing-based object system, which is clean, but doesn't necessarily match the complex problem of roguelike data modeling. The concurrent features aren't much needed in main roguelike logic, which is generally very sequential, but can help when programming an user interface that runs asynchronously with the game logic.
Go has several modern programming features, such as garbage collection and closures, which help when developing roguelikes. It has a reasonably simple duck-typing-based object system, which is clean, but doesn't necessarily match the complex problem of roguelike data modeling. The concurrent features aren't much needed in main roguelike logic, which is generally very sequential, but can help when programming an user interface that runs asynchronously with the game logic.


Go supports Linux, BSD and OS X, but as of 2010-01, the Go build environment has not been completely ported to Windows. It has two compilers, '''gc''', and a gcc front-end '''gccgo'''. As of 2010-01, gccgo doensn't support garbage collection, and therefore isn't a viable compiler for a long-running Go program such as a computer game.
Go has two compilers, the standalone '''gc''' one and a GCC front-end '''gccgo'''. The official GCC distribution has included the Go front end since version 4.6. The '''gc''' toolchain supports Linux, BSD, OS X and Windows on x86-32 or x86-64. As of 2012-07, there is some ARM support, but it's unclear how feasible developing Go applications for ARM devices running Android would be.


There is FFI support for linking to external C libraries like [[SDL]] or [[Curses]]. Calling C code from Go is reasonably straightforward.
There is FFI support for linking to external C libraries like [[SDL]] or [[Curses]]. Calling C code from Go is reasonably straightforward.

Revision as of 11:32, 22 July 2012

Go is a programming language announced by Google in November 2009. It is a native-code compiled, garbage-collected, concurrent language. The design idea seems to be to make a modernized version of C. Version 1 of Go was released in March 2012, and should be a stable target for future applications.

Roguelike Issues

Go has several modern programming features, such as garbage collection and closures, which help when developing roguelikes. It has a reasonably simple duck-typing-based object system, which is clean, but doesn't necessarily match the complex problem of roguelike data modeling. The concurrent features aren't much needed in main roguelike logic, which is generally very sequential, but can help when programming an user interface that runs asynchronously with the game logic.

Go has two compilers, the standalone gc one and a GCC front-end gccgo. The official GCC distribution has included the Go front end since version 4.6. The gc toolchain supports Linux, BSD, OS X and Windows on x86-32 or x86-64. As of 2012-07, there is some ARM support, but it's unclear how feasible developing Go applications for ARM devices running Android would be.

There is FFI support for linking to external C libraries like SDL or Curses. Calling C code from Go is reasonably straightforward.

Related Links