more thinking around compatibility and governance

This commit is contained in:
Kartik K. Agaram 2021-11-21 18:02:27 -08:00
parent 80d6db0760
commit e43cdbeac8
1 changed files with 35 additions and 28 deletions

View File

@ -12,9 +12,9 @@
## What's this, then?
An extremely naïve, [brutalist](https://en.wikipedia.org/wiki/Brutalist_architecture)
attempt at packaging up simple [Lua](http://www.lua.org) ([5.1](https://www.lua.org/manual/5.1))
apps with almost all the stuff needed to edit and build them. You will need
some Unix-like platform[1] with a C compiler and the ncurses and openssl libraries.
attempt at packaging up simple [Lua](http://www.lua.org) apps with almost all
the stuff needed to edit and build them. You will need some Unix-like
platform[1] with a C compiler and the ncurses and openssl libraries.
Here's how you run one of the example apps (the [Tower of Hanoi](https://en.wikipedia.org/wiki/Tower_of_Hanoi)):
@ -66,47 +66,54 @@ them in Teliva and let people use regular Lua. Or other platforms!
support for graphics at the moment.
- Teliva initializes the ncurses library by default, so apps should assume
they have access to a text-mode window for printing text to, and a keyboard
for reading unbuffered keystrokes from.
they have access to a (color, UTF-8) text-mode window for printing text to,
and a keyboard for reading unbuffered keystrokes from.
- I want to provide sandboxed access to system resources (file system,
network, etc.) which will likely create incompatibilities with the standard
library. I'm disinclined to try to ‘improve’ on Lua syntax,
however. It's not my favorite, but it's good enough.
- To create a well-behaved sandbox, Teliva includes a small set of native
libraries and doesn't support adding more native libraries.
Teliva is not tested much at all yet. This is my first time programming either
in Lua or within Lua. So bug reports are most appreciated if Lua programs
behave unexpectedly under Teliva.
## Will it run any ncurses program?
## What's included?
Hopefully. ncurses is extremely portable; I don't test on all the
configurations ncurses runs on. In particular, I assume terminals with colors
and UTF-8 support.
* [Lua 5.1](https://www.lua.org/manual/5.1)
* The [ncurses](https://tldp.org/HOWTO/NCURSES-Programming-HOWTO) library for
building text-mode user interfaces. ([Alternative documentation](https://tldp.org/LDP/lpg-0.4.pdf))
* The [Kilo](https://github.com/antirez/kilo) text editor, modified to use
ncurses. (Read more about it in this [fantastic walk-through](https://viewsourcecode.org/snaptoken/kilo).)
* The [lcurses](https://github.com/lcurses/lcurses) binding for ncurses (as
module `curses`).
* The [luasocket](https://w3.impa.br/~diego/software/luasocket) library of
networking primitives (modules `socket`, `http`, `url`, `headers`, `mime`,
`ltn12`).
* The [luasec](https://github.com/brunoos/luasec) library for HTTPS support
(modules `https` and `ssl`).
* The [json.lua](https://github.com/rxi/json.lua) library for
serializing/deserializing to JSON (module `json`).
## Will it run any Lua [lcurses](https://github.com/lcurses/lcurses) program?
The modules mentioned above are always available, just like standard Lua 5.1
libraries. They're available in their entirety with one exception:
Some functions in lcurses have [additional smarts](https://github.com/lcurses/lcurses/blob/master/lib/curses.lua).
Teliva is consistent with the underlying ncurses.
* Some functions in lcurses have [additional smarts](https://github.com/lcurses/lcurses/blob/master/lib/curses.lua).
Teliva is consistent with the underlying ncurses.
While most things in these modules are currently available, I expect to delete
capabilities throughout this stack as I discover features that don't fit well
with the Teliva experience. If you use Teliva, please [introduce yourself](http://akkartik.name/contact)
to me so that I am aware of your use cases. Anybody who is interested is
welcome to join me in discussing its future direction.
## What's with the name?
Teliva is the Tamil root for ‘clear’. Very much aspirational.
## Coda
## Feedback
In addition to Lua 1.5, Teliva forks or depends on:
* The [ncurses](https://tldp.org/HOWTO/NCURSES-Programming-HOWTO) library for
building text-mode user interfaces. ([Alternative documentation](https://tldp.org/LDP/lpg-0.4.pdf))
* The [lcurses](https://github.com/lcurses/lcurses) binding for ncurses.
([Documentation](http://lcurses.github.io/lcurses))
* The [Kilo](https://github.com/antirez/kilo) text editor. (Read more about it
in this [fantastic walk-through](https://viewsourcecode.org/snaptoken/kilo).)
* The [luasocket](https://w3.impa.br/~diego/software/luasocket) library of
networking primitives.
* The [luasec](https://github.com/brunoos/luasec) library for HTTPS support.
* The [json.lua](https://github.com/rxi/json.lua) library for
serializing/deserializing to JSON.
Send all praise to them, brickbats to [me](http://akkartik.name/contact).
[Here.](http://akkartik.name/contact)