TARDIS Go sample code
Sample code using TARDIS Go, both command line and animated graphical.
For help or general discussions about this repository please go to the Google Group.
Go by example : adapted command line examples
- hello world
- variadic functions
- channel synchronization
- Non-Blocking Channel Operations
- range over channel
- collections (uses "strings" package)
- string functions (uses "strings" package)
- stateful goroutines (uses "sync/atomic" package)
- sorting by functions (uses "sort" package)
- encoding to/from base64 (uses "encoding/base64" package)
Command line samples showing Haxe called from Go
- geturl Print tardisgo web site LICENSE in the simplest way possible using the Haxe pseudo-functions API library
- printdatetime - Print current Haxe date and time using the Haxe "target".Lib.println() API if one exists - shows use of the _cross API definition and also has an example of hand-building a haxe api definition
Go as Haxe library examples
OpenFL : animated graphical multi-platform samples showing Go called from Haxe
You can see these examples working live at http://tardisgo.github.io/
- gohandlingmouseevents (adapted from the OpenFL example) - Shows use of the _openfl API definition
- concurrentgophers (inspired by slide 21 of "Concurrency is not Parallelism (it's better)" a talk by Rob Pike) - Shows use of the Haxe pseudo-functions API library
- 8concurrentgophers (as above, but with 8 gophers rather than 2, for FOSDEM14 presentation; shows maximum use of Haxe, accessing Go variables as required - not currently recommended, as it requires a knowledge of TARDISgo internal datastructures)
To compile and run them you will also need to follow the instructions to install OpenFL here. From the "Source" directory, check there is a "tardis" sub-directory and run the tardisgo command as normal e.g. "tardisgo gophers.go". Then follow the normal OpenFL development process from the directory above, try: "openfl test html5". Or use the tgoopenfl.sh script described below. Tested with OpenFL command-line tools version 2.1.6.
For OSX and Ubuntu users, here are some scripts that might help, they are written for HAXE 3.1.1. NOTE: The tardisgo -testall flag (e.g. "tardisgo -testall mycode.go") provides the same functionality as tgoall.sh/tgoallu.sh below, but runs all the jobs concurrently and so is faster:
- tgo.sh : transpile all the code in the current directory and run haxe on the result using the user-provided haxe flags
- tgoall.sh : transpile all the code in the current directory for all haxe targets and test each of them (requires all the haxe target languages to be installed, with any required haxelibs, tested on OSX)
- tgoallu.sh : Ubuntu version of tgoall.sh
- tgoopenfl.sh : wrapper for the OpenFL command, to transpile the Go first
A snapshot of TARDIS Go's poor relative performance as at January 2014 can be found in the graph here. But please note that both llgo and GopherJS had elements of their core Go implementations missing when these tests were run.
Improving the speed of TARDIS Go will be a focus of future development, with results reported at intervals.
A directory for non-passing tests that are a work-in-progress and are referenced by tardisgo issues.