teal-src/README.md
author Kim Alvefur <zash@zash.se>
Sat, 23 Mar 2024 20:48:19 +0100
changeset 13465 c673ff1075bd
parent 13009 1167aaf1aa1f
permissions -rw-r--r--
mod_posix: Move everything to util.startup This allows greater control over the order of events. Notably, the internal ordering between daemonization, initialization of libunbound and setup of signal handling is sensitive. libunbound starts a separate thread for processing DNS requests. If this thread is started before signal handling has been set up, it will not inherit the signal handlers and instead behave as it would have before signal handlers were set up, i.e. cause the whole process to immediately exit. libunbound is usually initialized on the first DNS request, usually triggered by an outgoing s2s connection attempt. If daemonization happens before signals have been set up, signals may not be processed at all.
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