MCPcopy Index your code
hub / github.com/RyouZhang/go-lua

github.com/RyouZhang/go-lua @v0.4.7

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.7 ↗ · + Follow
104 symbols 172 edges 12 files 3 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

glua

embed lua script language for Go

go luajit glue,very very fast, support lua coroutine

Demo

easy use, like:

package main

import (
    "context"
    "fmt"
    "time"

    "github.com/RyouZhang/go-lua"
)

func main() {

    ts := time.Now()
    res, err := glua.NewAction().WithScript(`
    function fib(n)
        if n == 0 then
            return 0
        elseif n == 1 then
            return 1
        end
        return fib(n-1) + fib(n-2)
    end
    `).WithEntrypoint("fib").AddParam(35).Execute(context.Background())

    fmt.Println("cost:", time.Now().Sub(ts))
    fmt.Println(res, err)
}

Benchmark

fib(35) fibt(35) Language (Type)
wassmer-go 57ms `` Wasm
glua 110ms 1.5ms Luajit(VM)
Tengo 2,315ms 3ms Tengo (VM)
go-lua 4,028ms 3ms Lua (VM)
GopherLua 4,409ms 3ms Lua (VM)
goja 5,194ms 4ms JavaScript (VM)
starlark-go 6,954ms 3ms Starlark (Interpreter)
gpython 11,324ms 4ms Python (Interpreter)
Yaegi 4,715ms 10ms Yaegi (Interpreter)
otto 48,539ms 6ms JavaScript (Interpreter)
Anko 52,821ms 6ms Anko (Interpreter)
- - - -
Go 47ms 2ms Go (Native)
Lua 756ms 2ms Lua (Native)
Python 1,907ms 14ms Python2 (Native)

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

Extension points exported contracts — how you extend this code

A (Interface)
(no doc) [1 implementers]
demo/demo.go
LuaExternFunc (FuncType)
(no doc)
extern.go
Metric (Interface)
(no doc)
glua.go

Core symbols most depended-on inside this repo

metricCounter
called by 10
glua.go
metricGauge
called by 10
glua.go
WithEntrypoint
called by 7
action.go
Execute
called by 7
action.go
pushToLua
called by 6
wapper.go
generateLuaStateId
called by 6
utils.go
WithScriptPath
called by 6
action.go
AddParam
called by 6
action.go

Shape

Function 68
Method 25
Struct 8
Interface 2
FuncType 1

Languages

Go71%
C29%

Modules by API surface

glua.c30 symbols
glua.go12 symbols
wapper.go10 symbols
action.go9 symbols
demo/demo.go8 symbols
utils.go7 symbols
scheduler.go7 symbols
vm.go6 symbols
pool.go5 symbols
extern.go5 symbols
dummy.go5 symbols

For agents

$ claude mcp add go-lua \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact