Lunar is a superset programming language of Lua 5.1, inspired by TypeScript and Ruby.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
lunar fix lexing issues for empty strings Feb 18, 2019
spec/compiler fix lexing issues for empty strings Feb 18, 2019
.travis.yml add luacov Feb 3, 2019
LICENSE init Dec 17, 2018 split "getting started" section for running the compiler vs development Feb 16, 2019


Build Status Coverage Status

The Lua 5.1 superset programming language.

Goals: what we want

  • embeds most idioms into the language (default args, named varargs, classes, etc)
  • implements type checking and type inference
  • implements a language server for LSP features (intellisense, goto def, etc)
  • interoperate with Lua, both ways. Code written in Lunar should be as easy to use in Lua.

Getting Started

Lunar is written for Lua 5.1, therefore you need the Lua 5.1 runtime. On some installs of Lua, you might not have ./?.lua and ./?/init.lua in your LUA_PATH. Configure your system environment variables and append ;./?.lua;./?/init.lua into LUA_PATH.

Prerequisites for development

You will need luarocks (lua package manager), and busted (unit testing framework).

$ git clone
$ luarocks install busted
$ cd ./lunar # the root folder, not the lunar source code folder.

To run tests and verify everything's in working order, just run busted with the root directory of this repository as the current working directory.