teal-src/README.md
author Kim Alvefur <zash@zash.se>
Thu, 28 Mar 2024 15:39:59 +0100
changeset 13473 f9171624fd03
parent 13009 1167aaf1aa1f
permissions -rw-r--r--
MUC: Fix legacy hats (thanks nicoco) Why do we not have tests for this?
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13006
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
# Teal definitions and sources
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
This directory contains files written in the
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
[Teal](https://github.com/teal-language/tl) language, a typed dialect of
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
Lua.  There are two kinds of files, `.tl` Teal source code and `.d.tl`
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
type definitions files for modules written in Lua. The later allows
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
writing type-aware Teal using regular Lua or C code.
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
## Setup
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
The Teal compiler can be installed from LuaRocks using:
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
13008
47efa93ea859 teal-src/README: Tweak markdown syntax
Kim Alvefur <zash@zash.se>
parents: 13006
diff changeset
    13
```bash
47efa93ea859 teal-src/README: Tweak markdown syntax
Kim Alvefur <zash@zash.se>
parents: 13006
diff changeset
    14
luarocks install tl
47efa93ea859 teal-src/README: Tweak markdown syntax
Kim Alvefur <zash@zash.se>
parents: 13006
diff changeset
    15
```
13006
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    16
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
## Checking types
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
```bash
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    20
tl check teal-src/prosody/util/example.tl
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
```
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
Some editors and IDEs also have support, see [text editor
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
support](https://github.com/teal-language/tl#text-editor-support)
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
13009
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    27
## Compiling to Lua
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    28
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    29
`GNUmakefile` contains a rule for building Lua files from Teal sources.
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    30
It also applies [LuaFormat](https://github.com/Koihik/LuaFormatter) to
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    31
make the resulting code more readable, albeit this makes the line
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    32
numbers no longer match the original Teal source.  Sometimes minor
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    33
`luacheck` issues remain, such as types being represented as unused
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    34
tables, which can be removed.
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    35
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    36
```bash
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    37
sensible-editor teal-src/prosody/util/example.tl
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    38
# Write some code, remember to run tl check
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    39
make util/example.lua
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    40
sensible-editor util/example.lua
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    41
# Apply any minor tweaks that may be needed
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    42
```
1167aaf1aa1f teal-src/README: Words on Compiling to Lua
Kim Alvefur <zash@zash.se>
parents: 13008
diff changeset
    43
13006
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    44
## Files of note
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    45
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    46
`module.d.tl`
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    47
:	Describes the module environment.
d8e2b995f975 teal-src: Add a README with a few pointers to get started
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    48