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-28 15:29:47 -05:00
contrib/vim Work on interpreter. adding more opcodes and syscalls. 2017-11-24 23:17:04 -05:00
src Add macros in compiler. 2018-01-28 15:29:47 -05:00
test Add macros in compiler. 2018-01-28 15:29:47 -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 More work on adding c functions. Added buffer literals again. 2018-01-27 15:15:09 -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, tail-call optimization, and continuations. 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 via abstract types and C functions
  • Dynamically load C libraries
  • REPL (read eval print loop)

Compiling and Running

To build the runtime and run test, run

make test

A repl can also be run with

make repl