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 and 2020 which discuss the history of Lua and types, outline the motivations behind Teal and talk about the project's progress:
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
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.
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.
You can learn more about programming with Teal in the tutorial.
We have a collaborative repository for type definitions of Lua libraries 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.