All Projects → hawkw → Seax

hawkw / Seax

Licence: mit
A VM-based runtime environment for functional programming languages

Programming Languages

rust
11053 projects
lisp
113 projects

Projects that are alternatives of or similar to Seax

Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-50%)
Mutual labels:  interpreter, virtual-machine
Esta
Interpreted language and bytecode VM of my own design written in Rust [Unmaintained]
Stars: ✭ 28 (-22.22%)
Mutual labels:  interpreter, virtual-machine
maxc
Programming Language maxc
Stars: ✭ 36 (+0%)
Mutual labels:  interpreter, virtual-machine
X11Basic
X11-Basic BASIC programming language.
Stars: ✭ 42 (+16.67%)
Mutual labels:  interpreter, virtual-machine
Gravity
Gravity Programming Language
Stars: ✭ 3,968 (+10922.22%)
Mutual labels:  interpreter, virtual-machine
hematita
A memory safe Lua interpreter
Stars: ✭ 118 (+227.78%)
Mutual labels:  interpreter, virtual-machine
RISVM
A low overhead, embeddable bytecode virtual machine in C++
Stars: ✭ 21 (-41.67%)
Mutual labels:  interpreter, virtual-machine
Animach
Scheme语言实现和运行时环境 / A Scheme runtime & implementation
Stars: ✭ 45 (+25%)
Mutual labels:  interpreter, virtual-machine
Wasm3
🚀 The fastest WebAssembly interpreter, and the most universal runtime
Stars: ✭ 4,375 (+12052.78%)
Mutual labels:  interpreter, virtual-machine
V8
The official mirror of the V8 Git repository
Stars: ✭ 18,808 (+52144.44%)
Mutual labels:  interpreter, virtual-machine
jaws
Jaws is an invisible programming language! Inject invisible code into other languages and files! Created for security research -- see blog post
Stars: ✭ 204 (+466.67%)
Mutual labels:  interpreter, virtual-machine
Neko
The Neko Virtual Machine
Stars: ✭ 447 (+1141.67%)
Mutual labels:  interpreter, virtual-machine
vein
🔮⚡️Vein is an open source high-level strictly-typed programming language with a standalone OS, arm and quantum computing support.
Stars: ✭ 31 (-13.89%)
Mutual labels:  interpreter, virtual-machine
lust
A parser, compiler, and virtual machine evaluator for a minimal subset of Lua; written from scratch in Rust.
Stars: ✭ 120 (+233.33%)
Mutual labels:  interpreter, virtual-machine
jingle
🔔 Jingle is a dynamically-typed, multi-paradigm programming language designed for humans and machines.
Stars: ✭ 34 (-5.56%)
Mutual labels:  interpreter, virtual-machine
3bc-lang
Low level language, tiny virtual machine that works on computers and microcontrollers. (Friendly Punched cards)
Stars: ✭ 155 (+330.56%)
Mutual labels:  interpreter, virtual-machine
ol
Otus Lisp (Ol in short) is a purely* functional dialect of Lisp.
Stars: ✭ 157 (+336.11%)
Mutual labels:  interpreter, virtual-machine
Arduino-FVM
Byte Token Threaded Forth Virtual Machine (FVM) for Arduino
Stars: ✭ 35 (-2.78%)
Mutual labels:  interpreter, virtual-machine
Umka Lang
Umka: a statically typed embeddable scripting language
Stars: ✭ 308 (+755.56%)
Mutual labels:  interpreter, virtual-machine
Ph7
An Embedded Implementation of PHP (C Library)
Stars: ✭ 422 (+1072.22%)
Mutual labels:  interpreter, virtual-machine

Seax

Join the chat at https://gitter.im/hawkw/seax

A virtual machine-based platform for executing programs in functional programming language.

This project is split across a number of separate Cargo crates, each with its own Git repository:

  • Seax Command-Line Application (this repository)

Build Status Coverage GitHub release License

A command-line application for compiling programs to SVM bytecode, executing SVM bytecode files, and invoking the  the Scheme interpreter, either on source code files or as a REPL. This is so that the individual components of the system may be written as libraries rather than as executable programs. If additional compilers targeting the SVM are developed, this main program may invoke them as well. This repository also contains the main documentation and issue tracker for Seax.
  • Seax Virtual Machine (SVM)

    Build Status Coverage Latest RustDoc Latest SVM release License

    The core of the project, a virtual machine for evaluating Seax bytecode programs. SVM is based on the SECD machine described by Peter Landin in 1963. This crate contains the main SECD implementation, definitions of the SVM instruction set and cell types, and a library for encoding and decoding Seax bytecode files. SVM is distributed as a library so that it may be included in other programs.

  • Seax Scheme Compiler

    Build Status Coverage Latest RustDoc Latest Seax Scheme release License

    A Scheme interpreter/compiler targeting the Seax VM. This implementation aims to conform with the Revised6 Report on Scheme (R6RS) whenever possible, but may not be a complatible implementation. seax-scheme is released as a library, rather than an executable, so that it may be included in other applications which use Scheme as an embedded language.

  • Seax Utilities

Build Status Coverage Latest RustDoc Latest release License

A library of general-purpose reusable code for writing compilers targeting the Seax platform. This crate includes traits for abstract syntax tree nodes for Seax programs, and an implementation of the ForkTable data structure for representing scopes and symbol tables.

Instructions

Building Seax

Seax is implemented using the Rust programming language. In order to build Seax from source, you're going to need Cargo, Rust's build automation tool. Continuous integration builds of Seax are built against the latest Rust nightly. Therefore, backwards compatibility with earlier Rust versions are not always guaranteed.

If you have Cargo and an up-to-date Rust install, you can build Seax quite easily by running cargo build --release from the root directory. This will build all of the Seax libraries and the application, which will be output to target/release/seax.

Note that this builds the fully-optimized release Seax executable, and is intended for individuals who want to use Seax. Seax developers may want to build less optimized debug executables instead.

RustDoc documentation for Seax can be built using the cargo doc command.

Using Seax

Seax currently supports the following commands:

  • seax repl launches the Scheme interpreter in read-eval-print loop mode
  • seax FILE.scm invokes the interpreter on a Scheme source code file (.scm)

The following flags are also supported:

  • -v or --verbose launches Seax in verbose mode. Prepare yourself for a great deal of debug logging if you enable this flag.
  • -d or --debug enables debugging state dumps from SVM fatal errors. This may incur a performance penalty.

Commands for running compiled Seax bytecode files and for compiling Scheme source code to Seax bytecode files will be added when these features reach a higher level of completion.

Documentation

In addition to the RustDoc API documentation provided for each Seax library, the Seax book contains detailed information on the design and implementation of Seax, as well as instructions on writing programs targeting the Seax platform. Note that the Seax book is currently under active development and is not yet complete.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].