Skip to content
This repository has been archived by the owner. It is now read-only.
A pure Go implementation of the Lua virtual machine.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
stdlib rename import paths to new github username Mar 24, 2017
LICENSE change current status Jul 23, 2013


A pure Go implementation of the Lua virtual machine (v5.2).

Goals / Features

  • Run Lua code. Make every pure Lua code (without C calls outside of the standard libs) work as expected. Every lua binary chunk compiled using luac should work on Lune, unless it relies on the C API.
  • Implement the Lua standard libraries in Go. Make it transparent to Lua code.
  • Embeddable. This is a Go package, it can be embedded in any Go application.
  • Go-friendly. Just like Lua is the dynamic companion to C, Lune tries to bring this Batman and Robin camaraderie to Go. This means registering Go functions to be callable from Lua-on-Lune. This may be a port of the C API to Go, or something else that does more or less the same thing.

Current status

Dormant. Unstable. Ugly. Unsafe. Unfast.

A few things work, though, like ummm... loading and deserializing the binary chunks. On 64-bit little-endian architectures at least. And running some trivial programs (see ./vm/testdata). Closures that actually use the closed-over environment currently don't work (upvalues in Lua literature). Tail calls and variadic arguments and return values don't work. Metamethods are not there yet.


The BSD 3-Clause license, the same as the Go language. Lua itself is licensed under the MIT License.

You can’t perform that action at this time.