Add a little bit to README

This commit is contained in:
Calvin Rose 2017-04-25 18:22:43 -04:00
parent 14f8b12706
commit d295e281e1
1 changed files with 40 additions and 1 deletions

View File

@ -1,3 +1,42 @@
# gst
A language and vm.
GST is a language and vm that is small and embeddable, has metaprogramming
facilities, can interoperate with C, and has enough features to make it
a useful general purpose programming language. It is a modern variant of
Lisp with several native useful datatypes. Some of the more interesting and
useful features are first class functions and closures, immutable and mutable
hashtables, arrays, and bytebuffers, macros (NYI), tail-call optimization,
and continuations (coroutines, error handling). The runtime and bootstrapping
compiler are written in C99, but should eventually be completely compatible
with C89 compilers.
As of April 2017, still WIP. While the basic runtime is in place, as are many
native functions, several important features are still being implemented and
defined, like continuations and macros. These are also dependant on the
compiler being ported to gst, which is ongoing. The module system is also not yet
fully defined.
Currently, there is a repl for trying out the language, as well as the ability
to run script files. This client program is separate from the core runtime, so
gst could be embedded into other programs.
## Compiling and Running
Clone the repository and run:
```sh
make run
```
To build the runtime and launch a repl. The GNU readline library is
also required for the repl/client, but is not a dependency of the gst runtime.
## Basic programs
To run some basic programs, run the client with one argument, the name of the
file to run. For example, the client that is built will be located in the
client directory, so running a program `script.gst` from the project directory
would be
```sh
client/gst script.gst
```