Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README

Lust
====

Lust is a very early project about writing a JIT / Interpreted Lisp.

You can find documentation about Lust at https://zmedley.com/lust

At the moment, Lust has a functional but incomplete interpreter and
some very early sketches of JIT compilation using Mozilla's Cranelift
as a backend. The interpreter is functional in that it supports the
following:

- Tail recursion
- Proper macros
- Lists and numbers
- Importing of other files
- Character / string support

It is not yet functional in the following ways:

- Only extremely basic I/O support
- No garbage collection

The JIT compiler supports almost nothing and is extremely experimental
at the moment. For some time it could JIT simple numeric function's
that took two arguments, but that has since been removed now that
lists are in the interpreter. If you're interested you can take a look
in src/jit.rs, but there isn't much more than a couple experiments
living in there.

The timeline for this project looks something like this:

- Move all the features in the non-functional list to the functional
  list to make the interpreter complete.
- Improve user experience for people using the language in
  Emacs. Other editors are down the line becuase I don't use them.
- Once the language is plesant enough to use that programs written in
  it are large enough to be slow incrementally add JIT support.

Building Lust
=============

To built Lust you'll need a working Rust installation. First clone
this repository and then build / run it using cargo. This workflow
will probably look something like this:

```
git clone https://github.com/ZekeMedley/lust.git
cd lust
cargo build
cargo run
```

If you'd like to start a repl with the standard library loaded in,
change `cargo run` above to `cargo run std.lisp`.


Learning Lust
=============

Lust is very unstable at this point so I've intentionally avoided
writing any external documentation for the lanaguage. If you are
determined though I have been keeping documentation up to data in
`src/builtins.rs` and in `std.lisp` where builtins and the standard
library are defined.

About

A work in progress l(isp in r)ust

Topics

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.