mirror of
				https://github.com/42wim/matterbridge.git
				synced 2025-11-03 23:37:24 +01:00 
			
		
		
		
	
The Tengo Language
Tengo is a small, dynamic, fast, secure script language for Go.
Tengo is fast and secure because it’s compiled/executed as bytecode on stack-based VM that’s written in native Go.
/* The Tengo Language */
fmt := import("fmt")
each := func(seq, fn) {
    for x in seq { fn(x) }
}
sum := func(init, seq) {
    each(seq, func(x) { init += x })
    return init
}
fmt.println(sum(0, [1, 2, 3]))   // "6"
fmt.println(sum("", [1, 2, 3]))  // "123"
Run this code in the Playground
Features
- Simple and highly readable Syntax
- Dynamic typing with type coercion
 - Higher-order functions and closures
 - Immutable values
 - Garbage collection
 
 - Securely Embeddable and Extensible
 - Compiler/runtime written in native Go (no external deps or cgo)
 - Executable as a standalone language / REPL
 - Use cases: rules engine, state machine, gaming, data pipeline, transpiler
 
Benchmark
| fib(35) | fibt(35) | Type | |
|---|---|---|---|
| Go | 48ms | 
3ms | 
Go (native) | 
| Tengo | 2,349ms | 
5ms | 
VM on Go | 
| Lua | 1,416ms | 
3ms | 
Lua (native) | 
| go-lua | 4,402ms | 
5ms | 
Lua VM on Go | 
| GopherLua | 4,023ms | 
5ms | 
Lua VM on Go | 
| Python | 2,588ms | 
26ms | 
Python (native) | 
| starlark-go | 11,126ms | 
6ms | 
Python-like Interpreter on Go | 
| gpython | 15,035ms | 
4ms | 
Python Interpreter on Go | 
| goja | 5,089ms | 
5ms | 
JS VM on Go | 
| otto | 68,377ms | 
11ms | 
JS Interpreter on Go | 
| Anko | 92,579ms | 
18ms | 
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