#language #embeddable #extension #forth #concatenative

bin+lib rivet

A small concatenative language designed for embedding, inspired by Kitten. Currently incomplete, mostly just squatting the name :3

2 releases

Uses old Rust 2015

0.0.1 Aug 31, 2017
0.0.0 Aug 8, 2017

#5 in #concatenative

MIT license

33KB
824 lines

rivet

A simple concatenative programming language inspired by Kitten.

The goal is to be embeddable language for Rust programs, as if there aren't enough of those.

The defining doc that made me want to do this was http://evincarofautumn.blogspot.com/2012/02/why-concatenative-programming-matters.html but all their stuff is worth reading.

An interesting goal: allow the program embedding this to be able to specify hard limits on CPU usage, etc, appropriate for running untrusted programs. Though this also requires being a bit careful with the compiler, so that nobody can DoS it by giving it pathological input.

Current status

It's trivially turing-complete, but it's also amazingly rough. Not really ready for public usage.

Things to do

Soon

  • Remove unwraps
  • More data types? Arrays, structs, numerical tower
  • More function metadata, function types?
  • More useful interpreter program -- load files, etc.
  • Better error handling

Less soon

  • Functions as some type other than just AST's (bytecode? threaded code?)
  • Static type checking
  • Module system???
  • Nicer definition/statement syntax
  • Prelude module

Dependencies

~7MB
~142K SLoC