Git Product home page Git Product logo

tl's Introduction

Teal

Build Status Join the chat at https://gitter.im/dotnet/coreclr

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

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:

Installing

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).

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

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 build will compile your project via the rules defined in tlconfig.lua.
  • 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.

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")
tl.loader()

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

Documentation

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

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 and lite with linter support.

Community

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

License

License is MIT, the same as Lua.

tl's People

Contributors

hishamhm avatar euclidianace avatar pdesaulniers avatar kipras avatar kikito avatar darrenjennings avatar zash avatar yjhmelody avatar jlplabs avatar 25a0 avatar catwell avatar lenscas avatar factubsio avatar xvxx avatar pigpigyyy avatar fcr-- avatar bew avatar dnchu avatar mingodad avatar dragondeplatino avatar capsadmin avatar jcd1230 avatar tul avatar akavel avatar sylviettee avatar fang- avatar luauser32167 avatar mundusnine avatar cloudfreexiao avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.