mirror of
https://github.com/janet-lang/janet
synced 2024-11-28 11:09:54 +00:00
Update README.md
This commit is contained in:
parent
4a131fe47e
commit
62987de75b
41
README.md
41
README.md
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
[![Build Status](https://travis-ci.org/bakpakin/gst.svg?branch=master)](https://travis-ci.org/bakpakin/gst)
|
[![Build Status](https://travis-ci.org/bakpakin/gst.svg?branch=master)](https://travis-ci.org/bakpakin/gst)
|
||||||
|
|
||||||
GST is a language and vm that is small and embeddable, has metaprogramming
|
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
|
facilities, can interoperate with C, and has enough features to make it
|
||||||
a useful general purpose programming language. It is a modern variant of
|
a useful general purpose programming language. It is a variant of
|
||||||
Lisp with several native useful datatypes. Some of the more interesting and
|
Lisp with several native useful datatypes. Some of the more interesting and
|
||||||
useful features are first class functions and closures, immutable and mutable
|
useful features are first class functions and closures, immutable and mutable
|
||||||
hashtables, arrays, and bytebuffers, macros (NYI), tail-call optimization,
|
hashtables, arrays, and bytebuffers, macros (NYI), tail-call optimization,
|
||||||
@ -12,13 +12,11 @@ and continuations (coroutines, error handling). The runtime and bootstrapping
|
|||||||
compiler are written in C99, but should eventually be completely compatible
|
compiler are written in C99, but should eventually be completely compatible
|
||||||
with C89 compilers.
|
with C89 compilers.
|
||||||
|
|
||||||
As of April 2017, still WIP. While the basic runtime is in place, as are many
|
As of July 2017, still WIP. While the basic runtime is in place, as are many
|
||||||
native functions, several important features are still being implemented and
|
native functions, several important features are still being implemented and
|
||||||
defined, like continuations and macros. These are also dependant on the
|
defined, like the module system and macros.
|
||||||
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
|
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
|
to run script files. This client program is separate from the core runtime, so
|
||||||
gst could be embedded into other programs.
|
gst could be embedded into other programs.
|
||||||
|
|
||||||
@ -28,8 +26,7 @@ Clone the repository and run:
|
|||||||
```sh
|
```sh
|
||||||
make run
|
make run
|
||||||
```
|
```
|
||||||
To build the runtime and launch a repl. The GNU readline library is
|
To build the runtime and launch a repl.
|
||||||
also required for the repl/client, but is not a dependency of the gst runtime.
|
|
||||||
|
|
||||||
## Basic programs
|
## Basic programs
|
||||||
|
|
||||||
@ -37,37 +34,37 @@ 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
|
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
|
client directory, so running a program `script.gst` from the project directory
|
||||||
would be
|
would be
|
||||||
|
```bash
|
||||||
```sh
|
|
||||||
client/gst script.gst
|
client/gst script.gst
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can also use the `--help` option to see more usage information for the vm.
|
||||||
|
|
||||||
|
## Running Tests
|
||||||
|
|
||||||
|
Simply run `make test` to run the currently minimal test suite.
|
||||||
|
|
||||||
## Todo
|
## Todo
|
||||||
|
|
||||||
|
* Documentation, with the caveat that things may change.
|
||||||
* Use serialization to allow creation of bytecode files that can be loaded.
|
* Use serialization to allow creation of bytecode files that can be loaded.
|
||||||
This includes defining a file format for the bytecode files.
|
This includes defining a file format for the bytecode files. This mostly done.
|
||||||
|
The byte code serialization could also be useful for the module system for loading artifacts.
|
||||||
|
* Pattern matching/regex library, as well as string formatting functions. This
|
||||||
|
would also be useful for implementing better error messages.
|
||||||
* Better error messages, expecially for compilation. This probably means string
|
* Better error messages, expecially for compilation. This probably means string
|
||||||
formating functions.
|
formating functions.
|
||||||
* Pattern matching/regex library.
|
|
||||||
* Macro/specials system that happens before compilation
|
* Macro/specials system that happens before compilation
|
||||||
* Module system that happens before compilation. This would be closely tied to
|
* Module system. Something similar to node's require.
|
||||||
the macro/specials system (require implemented as compile time special). For
|
|
||||||
now, a runtime require might make more sense.
|
|
||||||
* Change name (gst is the name of many projects, including GNU Smalltalk).
|
* Change name (gst is the name of many projects, including GNU Smalltalk).
|
||||||
Maybe make logo :)?
|
Maybe make logo :)?
|
||||||
* Automated testing, including Makefile target.
|
|
||||||
* Travis CI.
|
|
||||||
* Change C API to be stack based for fewer potential memory management
|
* Change C API to be stack based for fewer potential memory management
|
||||||
problems. This could mean making current C API internal and use separate
|
problems. This could mean making current C API internal and use separate
|
||||||
API externally.
|
API externally.
|
||||||
* Store source information in parallel data structure after parsing
|
* Store source information in parallel data structure after parsing
|
||||||
* Use source information during compilation
|
* Use source information during compilation
|
||||||
* Bitwise operators that operate on integer types
|
|
||||||
* Use Lua style memory alocator backend C API (one single function for
|
* Use Lua style memory alocator backend C API (one single function for
|
||||||
allocating/reallocating/freeing memory).
|
allocating/reallocating/freeing memory).
|
||||||
* More CLI functionality for main client
|
|
||||||
* Document builtin libraries and functions.
|
|
||||||
* Document C API.
|
|
||||||
* More builtin libraires.
|
* More builtin libraires.
|
||||||
* Fuzzing
|
* Fuzzing
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user