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
- GitHub: github.com/teal-language/tl
- Homepage: https://teal-language.org
- Releases · Issues · Hacker News mentions
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