nelhage/gojit
JIT code-generation in Go!
{ "createdAt": "2014-04-26T17:44:18Z", "defaultBranch": "master", "description": "JIT code-generation in Go!", "fullName": "nelhage/gojit", "homepage": "", "language": "Go", "name": "gojit", "pushedAt": "2015-11-06T16:45:57Z", "stargazersCount": 348, "topics": [], "updatedAt": "2025-08-11T10:55:45Z", "url": "https://github.com/nelhage/gojit"}gojit — pure-golang runtime code-generation
Section titled “gojit — pure-golang runtime code-generation”This is the result of my spending the hack day at Gophercon 2014 playing with doing JIT from golang code. This repository contains several packages:
-
gojitContains the basic JIT support — allocate executable chunks of memory, and convert them into callable golang functions.
-
amd64Contains a simplistic amd64 assembler designed for use with
gojit -
bfContains a just-in-time compiler for Brainfuck that demos the above packages
-
gobfContains a binary that provides a command-line interface to
bf
gobf can be fetched using
go get github.com/nelhage/gojit/gobfAnd then run as gobf file.bf. For some built-in examples:
$ gobf $GOPATH/src/github.com/nelhage/gojit/bf/test/hello.bfHello World!$ gobf $GOPATH/src/github.com/nelhage/gojit/bf/test/hello.bf | gobf $GOPATH/src/github.com/nelhage/gojit/bf/test/rot13.bfUryyb Jbeyq!Portability
Section titled “Portability”This code has been tested on darwin/amd64 and linux/amd64. It is
extremely unlikely to work anywhere else.