tardisgo

command module
v0.0.0-...-e0dd9a7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 19, 2016 License: BSD-3-Clause, MIT Imports: 16 Imported by: 0

README

TARDIS Go -> Haxe transpiler

Haxe -> C++ / C# / Java / JavaScript

Build Status GoDoc status

Project status: a non-working curiosity, development currently on-ice

The advent of Go 1.5, with support for both iOS and Android, together with GopherJS, mean that the cross-platform UI objectives of this project are likely to soon be redundant, as libraries to achieve this can now be written directly in Go. The author has therefore paused development of the Haxe aspect of this project, freezing the runtime at Go 1.4. With the advent of Go 1.6, the code compiles but the tests no-longer pass.

All of the core Go language specification is implemented, including single-threaded goroutines and channels. However the package "reflect", which is mentioned in the core specification, is not yet fully supported.

Goroutines are implemented as co-operatively scheduled co-routines. Other goroutines are automatically scheduled every time there is a channel operation or goroutine creation (or call to a function which uses channels or goroutines through any called function). So loops without channel operations may never give up control. The function runtime.Gosched() provides a convenient way to allow other goroutines to run.

Well over half of the standard packages pass their tests for all targets.

The GOOS for TARDISgo is 'nacl', complete with an in-memory file system. However please note that NaCl provides no access to traditional networking. Go programs written for TARDISgo must use Haxe APIs to access host OS functionality.

A start has been made on the automated integration with Haxe libraries, but this is incomplete and the API unstable, see the haxe/hx directory and gohaxelib repository for the story so far.

The code is developed and tested on OS X 10.10.2, using Go 1.5rc1 and Haxe 3.2.0. The short CI test runs on 64-bit Ubuntu. No other platforms are currently regression tested.

Please note that the Haxe compiler may require in excess of 2Gb of memory to compile a non-trivial program to Java or C#.

To see a handful of live visual examples of code generated by this project in operation, please see the top and right-hand-side of tardisgo.github.io.

Installation and use:

go get -u github.com/tardisgo/tardisgo

If tardisgo is not installing and there is a green "build:passing" icon at the top of this page, please e-mail Elliott!

To translate Go to Haxe, from the directory containing your .go files type the command line:

tardisgo yourfilename.go 

A large number of .hx files will be created in the tardis subdirectory, of which Go.hx contains the entry-point. The use of a file per Haxe class makes second and subsequent compilations using C++ much faster, as only the altered classes are recompiled.

To run your transpiled code you will first need to install Haxe, version 3.2.0.

Then to run the tardis/Go.hx file generated above, for example in JavaScript, type the command lines:

haxe -main tardis.Go -cp tardis -dce full -D uselocalfunctions -js tardis/go.js
node < tardis/go.js

... or whatever Haxe compilation options you want to use. See the tgoall.sh script for simple examples. Note that in this example "-dce full" causes Haxe to do dead code elimination and that "-D uselocalfunctions" is a tardisgo haxe flag to generate JS code that is more likely to be optimized by V8.

The default memory model is fast, but requires more memory than you might expect (an int per byte) and only allows some unsafe pointer usages. If your code uses unsafe pointers to re-use memory as different types (say writing a float64 but reading back a uint64), there is a Haxe compilation flag for "fullunsafe" mode (this is slower, but has a smaller memory footprint and allows most unsafe pointers to be modeled accurately). In JS fullunsafe uses the dataview method of object access, for other targets it simulates memory access. Fullunsafe is little-endian only at present and pointer arithmetic (via uintptr) will panic. A command line example:

tardisgo mycode.go
haxe -main tardis.Go -cp tardis -D fullunsafe -js tardis/go-fu.js
node < tardis/go-fu.js

While on the subject of JS, the closure compiler seems to work, but only using the default "SIMPLE_OPTIMIZATIONS" option. It currently generates a large number of warnings.

The in-memory filesystem used by the nacl target is implemented, it can be pre-loaded with files by using the haxe command line flag "-resource" with the name "local/file/path/a.txt@/nacl/file/path/a.txt" thus (for example in JS):

tardisgo your_code_using_package_os.go
haxe -main tardis.Go -cp tardis -js tardis/go.js -resource testdata/config.xml@/myapp/static/config.xml
node < tardis/go.js

To add more than one file, use multiple -resource flags (the haxe ".hxml" compiler parameter file format can be helpful here). The files are stored as part of the executable code, in a target-specific way. The only resources that will be loaded are those named with a leading "/". A log file of the load process can be found at "/fsinit.log" in the in-memory file-system.

To load a zipped file system (very slow to un-zip, but useful for testing) use go code syscall.UnzipFS("myfs.zip") and include -resource myfs.zip on the haxe command line.

To add Go build tags, use the "-tags 'name1 name2'" tardisgo compilation flag. Note that particular Go build tags are required when compiling for OpenFL using the pre-built Haxe API definitions.

Use the "-debug" tardisgo compilation flag to instrument the code and add automated comments to the Haxe. When you experience a panic in this mode the latest Go source code line information and local variables appears in the stack dump. For the C++ & Neko (--interp) targets, a very simple debugger is also available by using the "-D godebug" Haxe flag, for example to use it in C++ type:

tardisgo -debug myprogram.go
haxe -main tardis.Go -cp tardis -dce full -D godebug -cpp tardis/cpp
./tardis/cpp/Go

To get a list of commands type "?" followed by carriage return, after the 1st break location is printed (there is no prompt character).

To run cross-target command-line tests as quickly as possible, the "-haxe X" flag concurrently runs the Haxe compiler and executes the resulting code as follows:

  • "-haxe all" - all supported targets (C++, C#, Java, JavaScript)
  • "-haxe bench" - all supported targets (C++, C#, Java, JavaScript) but using benchmark settings
  • "-haxe js" - only compiles and runs nodeJS (for automated testing, exits with an error if one occurs)
  • "-haxe jsfu" - only compiles (-D fullunsafe) and runs nodeJS (for automated testing, exits with an error if one occurs)
  • "-haxe cpp" - only compiles and runs C++ (for automated testing, exits with an error if one occurs)
  • "-haxe cs" - only compiles and runs C# (for automated testing, exits with an error if one occurs)
  • "-haxe java" - only compiles and runs Java (for automated testing, exits with an error if one occurs)
  • "-haxe math" - only runs C++ and JS with the -D fullunsafe haxe flag (using JS dataview)
  • "-haxe interp" - only runs the haxe interpreter (for automated testing, exits with an error if one occurs)

Compiler output is suppressed and results appear in the order they complete, with an execution time, for example:

tardisgo -haxe all myprogram.go

When using the -haxe flag with the -test flag, if the file "tgotestfs.zip" exists in the current directory, it will be added as a haxe resource and its contents auto-loaded into the in-memory file system.

If you can't work-out what is going on prior to a panic, you can add the "-trace" tardisgo compilation flag to instrument the code even further, printing out every part of the code visited. But be warned, the output can be huge.

Please note that strings in Go are held as Haxe strings, but encoded as UTF-8 even when strings for that host are encoded as UTF-16. The system should automatically do the translation to/from the correct format at the Go/Haxe boundary, but there are certain to be some occasions when a translation has to be done explicitly (see Force.toHaxeString/Force.fromHaxeString in haxe/haxeruntime.go).

Benchmarks

Tabulating the very simple indicative benchmarking results, looking only at elapsed (rather than cpu) time in seconds, as a multiple of the Go time:

Test - of what functionality C++ C# Java JS Closure/JS GopherJS
mandel.go - floating point 1.07x 2.73x 1.25x 1.24x 1.11x 0.99x
fannkuch.go - slice & array indexing 2.09x 4.22x 3.35x 5.31x 5.23x 3.54x
binarytree.go - garbage collection 16.92x 11.62x 1.61x 8.56x 6.58x 0.32x (!)

Figures above are the latest results as at 2nd July 2015, including performace figures after running the Google Closure Compiler on the JS and from the parallel project GopherJS (un-minified). The Haxe compilation flag "-D inlinepointers" was used for all targets, the additional flag "-D useloacalfunctions" was used for the JS target.

Execution speed significantly improved after:

  • re-writing code generation for non-goroutine functions to reconstruct Haxe "while" and "if" control structures from the SSA form where possible; and
  • optimising away local pointers that are only used in a local sub-block and creating temporary local variables to speed execution and reduce code size; however
  • since garbage collection currently relies on the target language runtime, the same Haxe code produces very different results.

Expect further gradual speed improvements.

Unsupported Haxe targets: ActionScript, PHP, Python and Neko

The nature of ActionScript/Flash means that it is not possible to run automated tests, although it seems to be a reliable target.

The PHP, Python and Neko targets are not currently reliable enough to permit automated testing.

PHP specific issues:

  • to compile for PHP you currently need to add the haxe compilation option "--php-prefix tgo" to avoid name conflicts
  • very long PHP class/file names may cause name resolution problems on some platforms

Next steps:

Please go to http://github.com/tardisgo/tardisgo-samples for example Go code modified to work with tardisgo. Including some very simple example code.

For a small technical FAQ, please see the Wiki page.

For public help or discussion please go to the Google Group; or feel free to e-mail Elliott direct to discuss any issues if you prefer.

The documentation is sparse at present, if there is some aspect of the system that you want to know more about, please let Elliott know and he will prioritise that area to add to the wiki.

If you transpile your own code using TARDIS Go, please report the bugs that you find here, so that they can be fixed.

Why do it at all?

The internal objective of the project was for Elliott to learn Go and understand the Go runtime. For both the Go language as a whole, and for the parts of the runtime implemented in TARDISgo, this objective been achieved. However some of the early code that was written would benefit from being refactored.

The external objective of this project was to enable the same Go code to be re-deployed in as many different execution environments as possible, thus saving development time and effort.

However the advent of Go 1.5, with support for both iOS and Android, together with the excellent GopherJS project, mean that the cross-platform UI objectives of this project are now largely redundant.

But it does work. The example code demonstrates both simple command-line examples and multi-platform client-side applications in Go using the APIs available in the Haxe ecosystem:

  • The standard Haxe APIs for JavaScript and Flash.
  • OpenFL "Open Flash" to target HTML5, Windows, Mac, Linux, iOS, Android, BlackBerry, Firefox OS, Tizen and Flash, using compiled auto-generated C++ code where possible (star users are TiVo and Prezzi).

Target long-term use-cases (if the generated code and runtime environment were developed further to make them more efficient) would be:

  • For the Haxe community: provide access to the portable elements of Go's extensive libraries and open-source code base.
  • For the Go community: write code in Go and call to-and-from existing Haxe, JavaScript, Java or C# applications (in C++ you would probably just link as normal through CGo).

Future plans:

The project is currently on ice, pending inspiration for developing it further. As at August 2015, it is the only way to target the JVM or CLR from Go.

The Author retains an interest in collaborating in the development of related project ideas, like:

  • cross-platform development for Go;
  • generating code from Go's SSA form; or
  • making Go a target for Haxe.

If you would like to discuss this or any of the above project ideas, that would be wonderful, please contact Elliott.

License:

MIT license, please see the license file.

Documentation

Overview

TARDIS Go is a Go->Haxe transpiler. However the tool is written with a "language" interface type separating the generic from the language specific parts of the code, which will allow other languages to be targeted in future. To see example code working in your browser please visit http://tardisgo.github.io . For simplicity, the current command line tool is simply a modified version of ssadump: a tool for displaying and interpreting the SSA form of Go programs.

Directories

Path Synopsis
Package asmgo provides the first-pass back-end implementation for TARDIS Go, it also serves as a reference implementation.
Package asmgo provides the first-pass back-end implementation for TARDIS Go, it also serves as a reference implementation.
hx
Package hx provides pseudo-functions to interface to Haxe code, TARDIS Go re-writes these functions as Haxe.
Package hx provides pseudo-functions to interface to Haxe code, TARDIS Go re-writes these functions as Haxe.
goroot
haxe/go1.4/src/archive/tar
Package tar implements access to tar archives.
Package tar implements access to tar archives.
haxe/go1.4/src/archive/zip
Package zip provides support for reading and writing ZIP archives.
Package zip provides support for reading and writing ZIP archives.
haxe/go1.4/src/bufio
Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer object, creating another object (Reader or Writer) that also implements the interface but provides buffering and some help for textual I/O.
Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer object, creating another object (Reader or Writer) that also implements the interface but provides buffering and some help for textual I/O.
haxe/go1.4/src/builtin
Package builtin provides documentation for Go's predeclared identifiers.
Package builtin provides documentation for Go's predeclared identifiers.
haxe/go1.4/src/bytes
Package bytes implements functions for the manipulation of byte slices.
Package bytes implements functions for the manipulation of byte slices.
haxe/go1.4/src/cmd/addr2line
Addr2line is a minimal simulation of the GNU addr2line tool, just enough to support pprof.
Addr2line is a minimal simulation of the GNU addr2line tool, just enough to support pprof.
haxe/go1.4/src/cmd/cgo
Cgo enables the creation of Go packages that call C code.
Cgo enables the creation of Go packages that call C code.
haxe/go1.4/src/cmd/cover
Cover is a program for analyzing the coverage profiles generated by 'go test -coverprofile=cover.out'.
Cover is a program for analyzing the coverage profiles generated by 'go test -coverprofile=cover.out'.
haxe/go1.4/src/cmd/fix
Fix finds Go programs that use old APIs and rewrites them to use newer ones.
Fix finds Go programs that use old APIs and rewrites them to use newer ones.
haxe/go1.4/src/cmd/go
Go is a tool for managing Go source code.
Go is a tool for managing Go source code.
haxe/go1.4/src/cmd/godoc
Godoc extracts and generates documentation for Go programs.
Godoc extracts and generates documentation for Go programs.
haxe/go1.4/src/cmd/gofmt
Gofmt formats Go programs.
Gofmt formats Go programs.
haxe/go1.4/src/cmd/internal/goobj
Package goobj implements reading of Go object files and archives.
Package goobj implements reading of Go object files and archives.
haxe/go1.4/src/cmd/internal/objfile
Package objfile implements portable access to OS-specific executable files.
Package objfile implements portable access to OS-specific executable files.
haxe/go1.4/src/cmd/internal/rsc.io/x86/x86asm
Package x86asm implements decoding of x86 machine code.
Package x86asm implements decoding of x86 machine code.
haxe/go1.4/src/cmd/nm
Nm lists the symbols defined or used by an object file, archive, or executable.
Nm lists the symbols defined or used by an object file, archive, or executable.
haxe/go1.4/src/cmd/objdump
Objdump disassembles executable files.
Objdump disassembles executable files.
haxe/go1.4/src/cmd/pack
Pack is a simple version of the traditional Unix ar tool.
Pack is a simple version of the traditional Unix ar tool.
haxe/go1.4/src/cmd/pprof
Pprof interprets and displays profiles of Go programs.
Pprof interprets and displays profiles of Go programs.
haxe/go1.4/src/cmd/pprof/internal/commands
Package commands defines and manages the basic pprof commands
Package commands defines and manages the basic pprof commands
haxe/go1.4/src/cmd/pprof/internal/driver
Package driver implements the core pprof functionality.
Package driver implements the core pprof functionality.
haxe/go1.4/src/cmd/pprof/internal/fetch
Package fetch provides an extensible mechanism to fetch a profile from a data source.
Package fetch provides an extensible mechanism to fetch a profile from a data source.
haxe/go1.4/src/cmd/pprof/internal/plugin
Package plugin defines the plugin implementations that the main pprof driver requires.
Package plugin defines the plugin implementations that the main pprof driver requires.
haxe/go1.4/src/cmd/pprof/internal/profile
Implements methods to filter samples from profiles.
Implements methods to filter samples from profiles.
haxe/go1.4/src/cmd/pprof/internal/report
Package report summarizes a performance profile into a human-readable report.
Package report summarizes a performance profile into a human-readable report.
haxe/go1.4/src/cmd/pprof/internal/svg
Package svg provides tools related to handling of SVG files
Package svg provides tools related to handling of SVG files
haxe/go1.4/src/cmd/pprof/internal/symbolizer
Package symbolizer provides a routine to populate a profile with symbol, file and line number information.
Package symbolizer provides a routine to populate a profile with symbol, file and line number information.
haxe/go1.4/src/cmd/pprof/internal/symbolz
Package symbolz symbolizes a profile using the output from the symbolz service.
Package symbolz symbolizes a profile using the output from the symbolz service.
haxe/go1.4/src/cmd/pprof/internal/tempfile
Package tempfile provides tools to create and delete temporary files
Package tempfile provides tools to create and delete temporary files
haxe/go1.4/src/cmd/vet
Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string.
Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string.
haxe/go1.4/src/cmd/yacc
Yacc is a version of yacc for Go.
Yacc is a version of yacc for Go.
haxe/go1.4/src/compress/bzip2
Package bzip2 implements bzip2 decompression.
Package bzip2 implements bzip2 decompression.
haxe/go1.4/src/compress/flate
Package flate implements the DEFLATE compressed data format, described in RFC 1951.
Package flate implements the DEFLATE compressed data format, described in RFC 1951.
haxe/go1.4/src/compress/gzip
Package gzip implements reading and writing of gzip format compressed files, as specified in RFC 1952.
Package gzip implements reading and writing of gzip format compressed files, as specified in RFC 1952.
haxe/go1.4/src/compress/lzw
Package lzw implements the Lempel-Ziv-Welch compressed data format, described in T. A. Welch, “A Technique for High-Performance Data Compression”, Computer, 17(6) (June 1984), pp 8-19.
Package lzw implements the Lempel-Ziv-Welch compressed data format, described in T. A. Welch, “A Technique for High-Performance Data Compression”, Computer, 17(6) (June 1984), pp 8-19.
haxe/go1.4/src/compress/zlib
Package zlib implements reading and writing of zlib format compressed data, as specified in RFC 1950.
Package zlib implements reading and writing of zlib format compressed data, as specified in RFC 1950.
haxe/go1.4/src/container/heap
Package heap provides heap operations for any type that implements heap.Interface.
Package heap provides heap operations for any type that implements heap.Interface.
haxe/go1.4/src/container/list
Package list implements a doubly linked list.
Package list implements a doubly linked list.
haxe/go1.4/src/container/ring
Package ring implements operations on circular lists.
Package ring implements operations on circular lists.
haxe/go1.4/src/crypto
Package crypto collects common cryptographic constants.
Package crypto collects common cryptographic constants.
haxe/go1.4/src/crypto/aes
Package aes implements AES encryption (formerly Rijndael), as defined in U.S. Federal Information Processing Standards Publication 197.
Package aes implements AES encryption (formerly Rijndael), as defined in U.S. Federal Information Processing Standards Publication 197.
haxe/go1.4/src/crypto/cipher
Package cipher implements standard block cipher modes that can be wrapped around low-level block cipher implementations.
Package cipher implements standard block cipher modes that can be wrapped around low-level block cipher implementations.
haxe/go1.4/src/crypto/des
Package des implements the Data Encryption Standard (DES) and the Triple Data Encryption Algorithm (TDEA) as defined in U.S. Federal Information Processing Standards Publication 46-3.
Package des implements the Data Encryption Standard (DES) and the Triple Data Encryption Algorithm (TDEA) as defined in U.S. Federal Information Processing Standards Publication 46-3.
haxe/go1.4/src/crypto/dsa
Package dsa implements the Digital Signature Algorithm, as defined in FIPS 186-3.
Package dsa implements the Digital Signature Algorithm, as defined in FIPS 186-3.
haxe/go1.4/src/crypto/ecdsa
Package ecdsa implements the Elliptic Curve Digital Signature Algorithm, as defined in FIPS 186-3.
Package ecdsa implements the Elliptic Curve Digital Signature Algorithm, as defined in FIPS 186-3.
haxe/go1.4/src/crypto/elliptic
Package elliptic implements several standard elliptic curves over prime fields.
Package elliptic implements several standard elliptic curves over prime fields.
haxe/go1.4/src/crypto/hmac
Package hmac implements the Keyed-Hash Message Authentication Code (HMAC) as defined in U.S. Federal Information Processing Standards Publication 198.
Package hmac implements the Keyed-Hash Message Authentication Code (HMAC) as defined in U.S. Federal Information Processing Standards Publication 198.
haxe/go1.4/src/crypto/md5
Package md5 implements the MD5 hash algorithm as defined in RFC 1321.
Package md5 implements the MD5 hash algorithm as defined in RFC 1321.
haxe/go1.4/src/crypto/rand
Package rand implements a cryptographically secure pseudorandom number generator.
Package rand implements a cryptographically secure pseudorandom number generator.
haxe/go1.4/src/crypto/rc4
Package rc4 implements RC4 encryption, as defined in Bruce Schneier's Applied Cryptography.
Package rc4 implements RC4 encryption, as defined in Bruce Schneier's Applied Cryptography.
haxe/go1.4/src/crypto/rsa
Package rsa implements RSA encryption as specified in PKCS#1.
Package rsa implements RSA encryption as specified in PKCS#1.
haxe/go1.4/src/crypto/sha1
Package sha1 implements the SHA1 hash algorithm as defined in RFC 3174.
Package sha1 implements the SHA1 hash algorithm as defined in RFC 3174.
haxe/go1.4/src/crypto/sha256
Package sha256 implements the SHA224 and SHA256 hash algorithms as defined in FIPS 180-4.
Package sha256 implements the SHA224 and SHA256 hash algorithms as defined in FIPS 180-4.
haxe/go1.4/src/crypto/sha512
Package sha512 implements the SHA384 and SHA512 hash algorithms as defined in FIPS 180-2.
Package sha512 implements the SHA384 and SHA512 hash algorithms as defined in FIPS 180-2.
haxe/go1.4/src/crypto/subtle
Package subtle implements functions that are often useful in cryptographic code but require careful thought to use correctly.
Package subtle implements functions that are often useful in cryptographic code but require careful thought to use correctly.
haxe/go1.4/src/crypto/tls
Package tls partially implements TLS 1.2, as specified in RFC 5246.
Package tls partially implements TLS 1.2, as specified in RFC 5246.
haxe/go1.4/src/crypto/x509
Package x509 parses X.509-encoded keys and certificates.
Package x509 parses X.509-encoded keys and certificates.
haxe/go1.4/src/crypto/x509/pkix
Package pkix contains shared, low level structures used for ASN.1 parsing and serialization of X.509 certificates, CRL and OCSP.
Package pkix contains shared, low level structures used for ASN.1 parsing and serialization of X.509 certificates, CRL and OCSP.
haxe/go1.4/src/database/sql
Package sql provides a generic interface around SQL (or SQL-like) databases.
Package sql provides a generic interface around SQL (or SQL-like) databases.
haxe/go1.4/src/database/sql/driver
Package driver defines interfaces to be implemented by database drivers as used by package sql.
Package driver defines interfaces to be implemented by database drivers as used by package sql.
haxe/go1.4/src/debug/dwarf
Package dwarf provides access to DWARF debugging information loaded from executable files, as defined in the DWARF 2.0 Standard at http://dwarfstd.org/doc/dwarf-2.0.0.pdf
Package dwarf provides access to DWARF debugging information loaded from executable files, as defined in the DWARF 2.0 Standard at http://dwarfstd.org/doc/dwarf-2.0.0.pdf
haxe/go1.4/src/debug/elf
Package elf implements access to ELF object files.
Package elf implements access to ELF object files.
haxe/go1.4/src/debug/gosym
Package gosym implements access to the Go symbol and line number tables embedded in Go binaries generated by the gc compilers.
Package gosym implements access to the Go symbol and line number tables embedded in Go binaries generated by the gc compilers.
haxe/go1.4/src/debug/macho
Package macho implements access to Mach-O object files.
Package macho implements access to Mach-O object files.
haxe/go1.4/src/debug/pe
Package pe implements access to PE (Microsoft Windows Portable Executable) files.
Package pe implements access to PE (Microsoft Windows Portable Executable) files.
haxe/go1.4/src/debug/plan9obj
Package plan9obj implements access to Plan 9 a.out object files.
Package plan9obj implements access to Plan 9 a.out object files.
haxe/go1.4/src/encoding
Package encoding defines interfaces shared by other packages that convert data to and from byte-level and textual representations.
Package encoding defines interfaces shared by other packages that convert data to and from byte-level and textual representations.
haxe/go1.4/src/encoding/ascii85
Package ascii85 implements the ascii85 data encoding as used in the btoa tool and Adobe's PostScript and PDF document formats.
Package ascii85 implements the ascii85 data encoding as used in the btoa tool and Adobe's PostScript and PDF document formats.
haxe/go1.4/src/encoding/asn1
Package asn1 implements parsing of DER-encoded ASN.1 data structures, as defined in ITU-T Rec X.690.
Package asn1 implements parsing of DER-encoded ASN.1 data structures, as defined in ITU-T Rec X.690.
haxe/go1.4/src/encoding/base32
Package base32 implements base32 encoding as specified by RFC 4648.
Package base32 implements base32 encoding as specified by RFC 4648.
haxe/go1.4/src/encoding/base64
Package base64 implements base64 encoding as specified by RFC 4648.
Package base64 implements base64 encoding as specified by RFC 4648.
haxe/go1.4/src/encoding/binary
Package binary implements simple translation between numbers and byte sequences and encoding and decoding of varints.
Package binary implements simple translation between numbers and byte sequences and encoding and decoding of varints.
haxe/go1.4/src/encoding/csv
Package csv reads and writes comma-separated values (CSV) files.
Package csv reads and writes comma-separated values (CSV) files.
haxe/go1.4/src/encoding/gob
Package gob manages streams of gobs - binary values exchanged between an Encoder (transmitter) and a Decoder (receiver).
Package gob manages streams of gobs - binary values exchanged between an Encoder (transmitter) and a Decoder (receiver).
haxe/go1.4/src/encoding/hex
Package hex implements hexadecimal encoding and decoding.
Package hex implements hexadecimal encoding and decoding.
haxe/go1.4/src/encoding/json
Package json implements encoding and decoding of JSON objects as defined in RFC 4627.
Package json implements encoding and decoding of JSON objects as defined in RFC 4627.
haxe/go1.4/src/encoding/pem
Package pem implements the PEM data encoding, which originated in Privacy Enhanced Mail.
Package pem implements the PEM data encoding, which originated in Privacy Enhanced Mail.
haxe/go1.4/src/encoding/xml
Package xml implements a simple XML 1.0 parser that understands XML name spaces.
Package xml implements a simple XML 1.0 parser that understands XML name spaces.
haxe/go1.4/src/errors
Package errors implements functions to manipulate errors.
Package errors implements functions to manipulate errors.
haxe/go1.4/src/expvar
Package expvar provides a standardized interface to public variables, such as operation counters in servers.
Package expvar provides a standardized interface to public variables, such as operation counters in servers.
haxe/go1.4/src/flag
Package flag implements command-line flag parsing.
Package flag implements command-line flag parsing.
haxe/go1.4/src/fmt
Package fmt implements formatted I/O with functions analogous to C's printf and scanf.
Package fmt implements formatted I/O with functions analogous to C's printf and scanf.
haxe/go1.4/src/go/ast
Package ast declares the types used to represent syntax trees for Go packages.
Package ast declares the types used to represent syntax trees for Go packages.
haxe/go1.4/src/go/build
Package build gathers information about Go packages.
Package build gathers information about Go packages.
haxe/go1.4/src/go/doc
Package doc extracts source code documentation from a Go AST.
Package doc extracts source code documentation from a Go AST.
haxe/go1.4/src/go/format
Package format implements standard formatting of Go source.
Package format implements standard formatting of Go source.
haxe/go1.4/src/go/parser
Package parser implements a parser for Go source files.
Package parser implements a parser for Go source files.
haxe/go1.4/src/go/printer
Package printer implements printing of AST nodes.
Package printer implements printing of AST nodes.
haxe/go1.4/src/go/scanner
Package scanner implements a scanner for Go source text.
Package scanner implements a scanner for Go source text.
haxe/go1.4/src/go/token
Package token defines constants representing the lexical tokens of the Go programming language and basic operations on tokens (printing, predicates).
Package token defines constants representing the lexical tokens of the Go programming language and basic operations on tokens (printing, predicates).
haxe/go1.4/src/hash
Package hash provides interfaces for hash functions.
Package hash provides interfaces for hash functions.
haxe/go1.4/src/hash/adler32
Package adler32 implements the Adler-32 checksum.
Package adler32 implements the Adler-32 checksum.
haxe/go1.4/src/hash/crc32
Package crc32 implements the 32-bit cyclic redundancy check, or CRC-32, checksum.
Package crc32 implements the 32-bit cyclic redundancy check, or CRC-32, checksum.
haxe/go1.4/src/hash/crc64
Package crc64 implements the 64-bit cyclic redundancy check, or CRC-64, checksum.
Package crc64 implements the 64-bit cyclic redundancy check, or CRC-64, checksum.
haxe/go1.4/src/hash/fnv
Package fnv implements FNV-1 and FNV-1a, non-cryptographic hash functions created by Glenn Fowler, Landon Curt Noll, and Phong Vo.
Package fnv implements FNV-1 and FNV-1a, non-cryptographic hash functions created by Glenn Fowler, Landon Curt Noll, and Phong Vo.
haxe/go1.4/src/haxegoruntime
Package haxegoruntime is automatically included in every TARDIS Go transpilation.
Package haxegoruntime is automatically included in every TARDIS Go transpilation.
haxe/go1.4/src/html
Package html provides functions for escaping and unescaping HTML text.
Package html provides functions for escaping and unescaping HTML text.
haxe/go1.4/src/html/template
Package template (html/template) implements data-driven templates for generating HTML output safe against code injection.
Package template (html/template) implements data-driven templates for generating HTML output safe against code injection.
haxe/go1.4/src/image
Package image implements a basic 2-D image library.
Package image implements a basic 2-D image library.
haxe/go1.4/src/image/color
Package color implements a basic color library.
Package color implements a basic color library.
haxe/go1.4/src/image/color/palette
Package palette provides standard color palettes.
Package palette provides standard color palettes.
haxe/go1.4/src/image/draw
Package draw provides image composition functions.
Package draw provides image composition functions.
haxe/go1.4/src/image/gif
Package gif implements a GIF image decoder and encoder.
Package gif implements a GIF image decoder and encoder.
haxe/go1.4/src/image/jpeg
Package jpeg implements a JPEG image decoder and encoder.
Package jpeg implements a JPEG image decoder and encoder.
haxe/go1.4/src/image/png
Package png implements a PNG image decoder and encoder.
Package png implements a PNG image decoder and encoder.
haxe/go1.4/src/index/suffixarray
Package suffixarray implements substring search in logarithmic time using an in-memory suffix array.
Package suffixarray implements substring search in logarithmic time using an in-memory suffix array.
haxe/go1.4/src/io
Package io provides basic interfaces to I/O primitives.
Package io provides basic interfaces to I/O primitives.
haxe/go1.4/src/io/ioutil
Package ioutil implements some I/O utility functions.
Package ioutil implements some I/O utility functions.
haxe/go1.4/src/log
Package log implements a simple logging package.
Package log implements a simple logging package.
haxe/go1.4/src/log/syslog
Package syslog provides a simple interface to the system log service.
Package syslog provides a simple interface to the system log service.
haxe/go1.4/src/math
Package math provides basic constants and mathematical functions.
Package math provides basic constants and mathematical functions.
haxe/go1.4/src/math/big
Package big implements multi-precision arithmetic (big numbers).
Package big implements multi-precision arithmetic (big numbers).
haxe/go1.4/src/math/cmplx
Package cmplx provides basic constants and mathematical functions for complex numbers.
Package cmplx provides basic constants and mathematical functions for complex numbers.
haxe/go1.4/src/math/rand
Package rand implements pseudo-random number generators.
Package rand implements pseudo-random number generators.
haxe/go1.4/src/mime
Package mime implements parts of the MIME spec.
Package mime implements parts of the MIME spec.
haxe/go1.4/src/mime/multipart
Package multipart implements MIME multipart parsing, as defined in RFC 2046.
Package multipart implements MIME multipart parsing, as defined in RFC 2046.
haxe/go1.4/src/net
Package net provides a portable interface for network I/O, including TCP/IP, UDP, domain name resolution, and Unix domain sockets.
Package net provides a portable interface for network I/O, including TCP/IP, UDP, domain name resolution, and Unix domain sockets.
haxe/go1.4/src/net/http
Package http provides HTTP client and server implementations.
Package http provides HTTP client and server implementations.
haxe/go1.4/src/net/http/cgi
Package cgi implements CGI (Common Gateway Interface) as specified in RFC 3875.
Package cgi implements CGI (Common Gateway Interface) as specified in RFC 3875.
haxe/go1.4/src/net/http/cookiejar
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
haxe/go1.4/src/net/http/fcgi
Package fcgi implements the FastCGI protocol.
Package fcgi implements the FastCGI protocol.
haxe/go1.4/src/net/http/httptest
Package httptest provides utilities for HTTP testing.
Package httptest provides utilities for HTTP testing.
haxe/go1.4/src/net/http/httputil
Package httputil provides HTTP utility functions, complementing the more common ones in the net/http package.
Package httputil provides HTTP utility functions, complementing the more common ones in the net/http package.
haxe/go1.4/src/net/http/internal
Package internal contains HTTP internals shared by net/http and net/http/httputil.
Package internal contains HTTP internals shared by net/http and net/http/httputil.
haxe/go1.4/src/net/http/pprof
Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
haxe/go1.4/src/net/mail
Package mail implements parsing of mail messages.
Package mail implements parsing of mail messages.
haxe/go1.4/src/net/rpc
Package rpc provides access to the exported methods of an object across a network or other I/O connection.
Package rpc provides access to the exported methods of an object across a network or other I/O connection.
haxe/go1.4/src/net/rpc/jsonrpc
Package jsonrpc implements a JSON-RPC ClientCodec and ServerCodec for the rpc package.
Package jsonrpc implements a JSON-RPC ClientCodec and ServerCodec for the rpc package.
haxe/go1.4/src/net/smtp
Package smtp implements the Simple Mail Transfer Protocol as defined in RFC 5321.
Package smtp implements the Simple Mail Transfer Protocol as defined in RFC 5321.
haxe/go1.4/src/net/textproto
Package textproto implements generic support for text-based request/response protocols in the style of HTTP, NNTP, and SMTP.
Package textproto implements generic support for text-based request/response protocols in the style of HTTP, NNTP, and SMTP.
haxe/go1.4/src/net/url
Package url parses URLs and implements query escaping.
Package url parses URLs and implements query escaping.
haxe/go1.4/src/os
Package os provides a platform-independent interface to operating system functionality.
Package os provides a platform-independent interface to operating system functionality.
haxe/go1.4/src/os/exec
Package exec runs external commands.
Package exec runs external commands.
haxe/go1.4/src/os/signal
Package signal implements access to incoming signals.
Package signal implements access to incoming signals.
haxe/go1.4/src/os/user
Package user allows user account lookups by name or id.
Package user allows user account lookups by name or id.
haxe/go1.4/src/path
Package path implements utility routines for manipulating slash-separated paths.
Package path implements utility routines for manipulating slash-separated paths.
haxe/go1.4/src/path/filepath
Package filepath implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths.
Package filepath implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths.
haxe/go1.4/src/reflect
Package reflect implements run-time reflection, allowing a program to manipulate objects with arbitrary types.
Package reflect implements run-time reflection, allowing a program to manipulate objects with arbitrary types.
haxe/go1.4/src/regexp
Package regexp implements regular expression search.
Package regexp implements regular expression search.
haxe/go1.4/src/regexp/syntax
Package syntax parses regular expressions into parse trees and compiles parse trees into programs.
Package syntax parses regular expressions into parse trees and compiles parse trees into programs.
haxe/go1.4/src/runtime
Package tgoruntime provdies functions for the Go "runtime" standard library package when used by TARDIS Go.
Package tgoruntime provdies functions for the Go "runtime" standard library package when used by TARDIS Go.
haxe/go1.4/src/runtime/pprof
Package pprof writes runtime profiling data in the format expected by the pprof visualization tool.
Package pprof writes runtime profiling data in the format expected by the pprof visualization tool.
haxe/go1.4/src/runtime_replaced
Package runtime contains operations that interact with Go's runtime system, such as functions to control goroutines.
Package runtime contains operations that interact with Go's runtime system, such as functions to control goroutines.
haxe/go1.4/src/runtime_replaced/cgo
Package cgo contains runtime support for code generated by the cgo tool.
Package cgo contains runtime support for code generated by the cgo tool.
haxe/go1.4/src/runtime_replaced/debug
Package debug contains facilities for programs to debug themselves while they are running.
Package debug contains facilities for programs to debug themselves while they are running.
haxe/go1.4/src/runtime_replaced/pprof
Package pprof writes runtime profiling data in the format expected by the pprof visualization tool.
Package pprof writes runtime profiling data in the format expected by the pprof visualization tool.
haxe/go1.4/src/runtime_replaced/race
Package race implements data race detection logic.
Package race implements data race detection logic.
haxe/go1.4/src/sort
Package sort provides primitives for sorting slices and user-defined collections.
Package sort provides primitives for sorting slices and user-defined collections.
haxe/go1.4/src/strconv
Package strconv implements conversions to and from string representations of basic data types.
Package strconv implements conversions to and from string representations of basic data types.
haxe/go1.4/src/strings
Package strings implements simple functions to manipulate strings.
Package strings implements simple functions to manipulate strings.
haxe/go1.4/src/sync
Package sync provides basic synchronization primitives such as mutual exclusion locks.
Package sync provides basic synchronization primitives such as mutual exclusion locks.
haxe/go1.4/src/sync/atomic
Package atomic provides low-level atomic memory primitives useful for implementing synchronization algorithms.
Package atomic provides low-level atomic memory primitives useful for implementing synchronization algorithms.
haxe/go1.4/src/syscall
Package syscall contains an interface to the low-level operating system primitives.
Package syscall contains an interface to the low-level operating system primitives.
haxe/go1.4/src/testing/iotest
Package iotest implements Readers and Writers useful mainly for testing.
Package iotest implements Readers and Writers useful mainly for testing.
haxe/go1.4/src/testing_replaced
Package testing provides support for automated testing of Go packages.
Package testing provides support for automated testing of Go packages.
haxe/go1.4/src/testing_replaced/iotest
Package iotest implements Readers and Writers useful mainly for testing.
Package iotest implements Readers and Writers useful mainly for testing.
haxe/go1.4/src/testing_replaced/quick
Package quick implements utility functions to help with black box testing.
Package quick implements utility functions to help with black box testing.
haxe/go1.4/src/text/scanner
Package scanner provides a scanner and tokenizer for UTF-8-encoded text.
Package scanner provides a scanner and tokenizer for UTF-8-encoded text.
haxe/go1.4/src/text/tabwriter
Package tabwriter implements a write filter (tabwriter.Writer) that translates tabbed columns in input into properly aligned text.
Package tabwriter implements a write filter (tabwriter.Writer) that translates tabbed columns in input into properly aligned text.
haxe/go1.4/src/text/template
Package template implements data-driven templates for generating textual output.
Package template implements data-driven templates for generating textual output.
haxe/go1.4/src/text/template/parse
Package parse builds parse trees for templates as defined by text/template and html/template.
Package parse builds parse trees for templates as defined by text/template and html/template.
haxe/go1.4/src/time
Package time provides functionality for measuring and displaying time.
Package time provides functionality for measuring and displaying time.
haxe/go1.4/src/unicode
Package unicode provides data and functions to test some properties of Unicode code points.
Package unicode provides data and functions to test some properties of Unicode code points.
haxe/go1.4/src/unicode/utf16
Package utf16 implements encoding and decoding of UTF-16 sequences.
Package utf16 implements encoding and decoding of UTF-16 sequences.
haxe/go1.4/src/unicode/utf8
Package utf8 implements functions and constants to support text encoded in UTF-8.
Package utf8 implements functions and constants to support text encoded in UTF-8.
haxe/go1.4/src/unsafe
Package unsafe contains operations that step around the type safety of Go programs.
Package unsafe contains operations that step around the type safety of Go programs.
Package haxe provides the Haxe back-end implementation for TARDIS Go
Package haxe provides the Haxe back-end implementation for TARDIS Go
hx
Package hx provides pseudo-functions to interface to Haxe code, TARDIS Go re-writes these functions as Haxe.
Package hx provides pseudo-functions to interface to Haxe code, TARDIS Go re-writes these functions as Haxe.
Package pogo provides the generic components of a tool for transforming the go.tools/go/ssa form of Go programs to other languages
Package pogo provides the generic components of a tool for transforming the go.tools/go/ssa form of Go programs to other languages
tests
core
This package should only test the core language functionality, all standard package tests moved elsewhere
This package should only test the core language functionality, all standard package tests moved elsewhere
Package tgossa provides pure ssa optimization functions in TARDISgo.
Package tgossa provides pure ssa optimization functions in TARDISgo.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL