You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
matterbridge/vendor/github.com/d5/tengo
Wim a3bee01e0a
Update dependencies (#886)
5 years ago
..
compiler Update vendor (#852) 5 years ago
objects Update vendor (#852) 5 years ago
runtime Update vendor (#852) 5 years ago
script Update vendor (#852) 5 years ago
stdlib Update dependencies (#886) 5 years ago
.gitignore Update vendor d5/tengo 6 years ago
.goreleaser.yml Update vendor d5/tengo 6 years ago
.travis.yml Update dependencies (#886) 5 years ago
LICENSE Add scripting (tengo) support for every incoming message (#731) 6 years ago
Makefile Update tengo vendor and load the stdlib. Fixes #789 (#792) 6 years ago
README.md Update vendor (#852) 5 years ago
go.mod Update dependencies (#886) 5 years ago
tengo.go Update vendor d5/tengo 6 years ago

README.md

The Tengo Language

GoDoc Go Report Card Build Status Sourcegraph

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

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

References