📈 GH Trending Explorer 🎲 Surprise me

← all repos

teal-language / tl

git clone https://github.com/teal-language/tl.git v0.24.8 · 1y ago 🔥 on GitHub Trending today

The compiler for Teal, a typed dialect of Lua

+14
stars, 24h · #340
—
stars, 7 days
—
stars, 30 days
3.0k
★ total
167
forks · 133 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageLua
LicenseMIT
Created2019-02-02 (7y ago)
Last push12d ago
Watchers43
OwnerOrganization

Seen on GitHub Trending

  • 2026-10-20 — #11 daily in lua · +14 ★

GitHub topics

Links

README excerpt
Teal
====
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.
## Introduction
You can read the tutorial chapter
of the Teal documentation to get started with an overview of the language.
## Installing
### Via LuaRocks
Install Lua and LuaRocks, then run:
 [code] 
This should put a `tl` command in your `$PATH` (run `eval $(luarocks path)` if
the LuaRocks-installed binaries are not in your `$PATH`).
Teal works with Lua 5.1-5.4, including LuaJIT.
### Binaries
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.
## Running
### Using the compiler directly
Once `tl` is in your path, there are a few subcommands:
* `tl run script.tl` will run a Teal script.
* `tl check module.tl` will type check a Teal module, report any errors and
 quit.
* `tl gen module.tl` will check for syntax errors and
 generate a `module.lua` file in plain Lua with all type annotations
 stripped.
* `tl warnings` will 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.
### Building projects with Cyan
To build whole projects, you probably won't want to run `tl` on each
file individually. We recommend using Cyan,
the build tool designed for Teal.
## 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:
 [code] 
Once the package loader is activated, your `require()` calls can load and
compile `.tl` files on-the-fly.
## Documentation
You can read the rendered documentation online;
it can also be generated locally from the files in the docs/ folder
of this repository.
## Type definitions
`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
Teal language support is currently available for Vim, Visual Studio Code, lite with linter support and Helix with LSP support.
## Community
* Join the chat on Gitter!
 * You can also join via Matrix at #teal-language_community:gitter.im
Teal is a project started by Hisham Muhammad,
develo