Skip to content

Latest commit

 

History

History
53 lines (43 loc) · 1.75 KB

README.md

File metadata and controls

53 lines (43 loc) · 1.75 KB

Salmon

An experimental Lisp compiler.

Build Status

WARNING! This section describes what is goals of the project are, not what is actually present. To see what is actually present, see the Progress Section.

Salmon is a statically typed lisp designed to seamlessly interact with C in both directions. It is desinged to be used in cases where a high-level lanague is wanted, but it would be otherwise cumbersome to write an sutiable foreign function interface to a particular library or API.

It's main features are:

  • Inferred static types
  • Powerful macro system
  • No GC: memory is managed through ownership tracking
  • Automatic import of C libraries
  • Automatic export of Salmon libraries for use in C programs

The language is named after the delicious fish, and as a tribute to a similar project with similar goals: Carp.

Building

Build requirements:

  • meson + ninja

Install instructions:

git clone --recurse-submodules https://github.com/sdilts/Salmon.git
cd Salmon
meson build
ninja -C build

If you feel like running the tests, run them with ninja test

The executable can then be ran with ./salmon/salmon.

Progress

This section describes what is planned, what is implemented, and maybe what still needs to be thought out, all of which will probably change several times before this is done.

  • The Syntax of the lanague:
    • Reader macros
    • string literals
    • Keywords and symbols
    • different floating point types
    • Packages
  • Reader:
    • Reader macros
    • String literals
    • Keywords and symbols
    • floating point numbers
    • Packages