1
0
mirror of https://github.com/janet-lang/janet synced 2024-06-26 07:03:16 +00:00
A dynamic language and bytecode VM.
Go to file
2018-01-25 19:22:17 -05:00
contrib/vim Work on interpreter. adding more opcodes and syscalls. 2017-11-24 23:17:04 -05:00
src Addition and subtraction inlining. 2018-01-25 18:49:08 -05:00
test Begin C Function specialization in the compiler. 2018-01-24 17:59:00 -05:00
.gitignore Gitignore was ignore files. 2018-01-20 11:04:30 -05:00
.travis.yml Add OSX to travis. 2017-06-29 22:01:50 -04:00
CMakeLists.txt Begin C Function specialization in the compiler. 2018-01-24 17:59:00 -05:00
LICENSE License 2017-04-17 22:36:44 -04:00
Makefile Oh travis 2018-01-20 10:57:01 -05:00
README.md Update README.md 2018-01-25 19:22:17 -05:00

dst

Build Status

dst is a functional programming language and vm. It is a 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 compiler are written in C99.

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 dst could be embedded into other programs.

Features

  • First class closures
  • Garbage collection
  • Lexical scoping
  • First class green threads (continuations)
  • Mutable and immutable arrays (array/tuple)
  • Mutable and immutable hashtables (table/struct)
  • Mutable and immutable strings (buffer/string)
  • Byte code interpreter with an assembly interface, as well as bytecode verification
  • Proper tail calls for functional code
  • Direct interop with C
  • REPL (read eval print loop)

The code can be compiled to be either a bytecode interpreter and runtime, or a full language.

Compiling and Running

To build the runtime and run test, run

make test

A repl can also be run with

make repl