bew / tl

The compiler for Teal, a typed dialect of Lua

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Build Status Join the chat at

This is the repository of tl, the compiler for Teal, a typed dialect of Lua.

The core compiler has no dependencies and is implemented as a single tl.lua file which you can load into your projects. Running tl.loader() will add Teal support to your package loader, meaning that require() will be able to run .tl files.


Here are videos of talks given at FOSDEM 2019 and 2020 which discuss the history of Lua and types, outline the motivations behind Teal and talk about the project's progress:


Via LuaRocks

Install Lua and LuaRocks, then run:

luarocks install tl

This should put a tl command in your $PATH (run eval $(luarocks path) if the LuaRocks-installed binaries are not in your $PATH)


Alternatively, you can find pre-compiled binaries for Linux x86_64 and Windows x86_64 at the releases page. The packages contain a stand-alone executable that can run Teal programs (without the need of a separate Lua installation) and also compile them to Lua.

Try it from your browser

You can give Teal a try directly from your browser with the Teal Playground! It compiles Teal into Lua using Fengari, a Lua VM implemented in JavaScript, so everything runs on the client.


Once tl is in your path, there are a few subcommands:

  • tl run will run a Teal script.
  • tl check will type check a Teal module, report any errors and quit.
  • tl gen will check for syntax errors and generate a module.lua file in plain Lua with all type annotations stripped.
  • tl build will compile your project via the rules defined in tlconfig.lua.
  • tl warnings will list all warnings the compiler can generate.

Loading Teal code from Lua

You can either pre-compile your .tl files into .lua, or you can add the tl.lua module into your project and activate the Teal package loader:

local tl = require("tl")

Once the package loader is activated, your require() calls can load and compile .tl files on-the-fly.


You can learn more about programming with Teal in the tutorial.

Type definitions

We have a collaborative repository for type definitions of Lua libraries at — check it out and make your contribution!

Text editor support

Teal language support is currently available for Vim, Visual Studio Code and lite with linter support.


Teal is a project started by Hisham Muhammad, developed by a growing number of contributors and is written using Teal itself!


License is MIT, the same as Lua.

ezoic increase your site revenue


The compiler for Teal, a typed dialect of Lua

License:MIT License


Language:Lua 100.0%Language:Makefile 0.0%