Forked and more actively developed tengo version
assert | ||
cmd | ||
compiler | ||
docs | ||
objects | ||
runtime | ||
script | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
Makefile | ||
README.md | ||
tengo.go |
The Tengo Language
Tengo is a small, dynamic, securely embeddable script language for Go.
Tengo is fast because it's compiled/executed as bytecode on stack-based VM that's written in native Go.
Features
- Similar syntax to Go but much simpler
- Dynamically-typed with type coercions
- First-class functions and closures
- Garbage-collected
- Extensible
- Written in Go (no external deps or CGO)
- Executable as a standalone language / REPL
Benchmark
fib(35) | fibt(35) | Type | |
---|---|---|---|
Go | 58ms |
3ms |
Go (native) |
Tengo | 4,245ms |
5ms |
VM on Go |
Lua | 1,739ms |
3ms |
Lua (native) |
go-lua | 5,368ms |
5ms |
Lua VM on Go |
GopherLua | 5,408ms |
5ms |
Lua VM on Go |
Python | 3,176ms |
27ms |
Python (native) |
starlark-go | 15,400ms |
5ms |
Python-like Interpreter on Go |
gpython | 17,724ms |
6ms |
Python Interpreter on Go |
otto | 82,050ms |
22ms |
JS Interpreter on Go |
Anko | 98,739ms |
31ms |
Interpreter on Go |
* fib(35): Fibonacci(35)
* fibt(35): tail-call version of Fibonacci(35)
* Go does not read the source code from file, while all other cases do
* See here for commands/codes used
References
- Language Syntax
- Tengo Objects
- Runtime Types
- Builtin Functions
- Interoperability
- Tengo CLI
- Standard Library (experimental)
Roadmap
v0. (Current)
Things are experimental, and, the focus is on the core language features, stability, basic interoperability, and the performance optimization.
v1. Tengo as a Script Language
This will be the first versioned release, and, the main goal for v1 is to make Tengo as a fast embeddable script language for Go, which means Tengo will be comparable to other Go-based script languages such as Starlark, Lua VMs, and other interpreters.
- Interoperability with Go code
- Sandbox environment
- More language features such as bound methods and switch-case statements
v2. Tengo as a Standalone Language
- Language-level concurrency support
- Tengo Standard Libraries
- Native executables compilation
- More language features