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
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
Here are videos of talks given at FOSDEM 2019, 2020 and 2021 which discuss the history of Lua and types, outline the motivations behind Teal and talk about the project's progress:
Check also the tutorial to get started with an overview of the language.
Install Lua and LuaRocks, then run:
luarocks install tl
This should put a
tl command in your
eval $(luarocks path) if
the LuaRocks-installed binaries are not in your
Teal works with Lua 5.1-5.4, including LuaJIT.
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
tl is in your path, there are a few subcommands:
tl run script.tlwill run a Teal script.
tl check module.tlwill type check a Teal module, report any errors and quit.
tl gen module.tlwill check for syntax errors and generate a
module.luafile in plain Lua with all type annotations stripped.
tl buildwill compile your project via the rules defined in
tl warningswill list all warnings the compiler can generate.
tl also supports some compiler options.
These can either be specified on the command line or inside a tlconfig.lua file at the root of your project.
Loading Teal code from Lua
You can either pre-compile your
.tl files into
.lua, or you can add
tl.lua module into your project and activate the Teal package loader:
local tl = require("tl") tl.loader()
Once the package loader is activated, your
require() calls can load and
.tl files on-the-fly.
tl supports declaration files, which can be used to annotate the types
of third-party Lua libraries.
We have a collaborative repository for declaration files at https://github.com/teal-language/teal-types — check it out and make your contribution!
Text editor support
License is MIT, the same as Lua.