Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/vmchale/kempe

Kempe is a compiled stack-based language
https://github.com/vmchale/kempe

aarch64 haskell languages stack-based stack-based-language x86-64

Last synced: 4 months ago
JSON representation

Kempe is a compiled stack-based language

Lists

README

        

# Kempe

Kempe is a stack-based language and toy compiler for x86_64 and aarch64. It requires the
[nasm](https://nasm.us/) assembler when targeting x86_64.

Inspiration is primarily from [Mirth](https://github.com/mirth-lang/mirth).

See manual
[here](http://hackage.haskell.org/package/kempe/src/docs/manual.pdf). There is
also a tour of the compiler available
[here](http://vmchale.com/static/original/compiler.pdf).

## Installation

Installation is via [cabal-install](https://www.haskell.org/cabal/):

```
cabal install kempe
```

For shell completions put the following in your `~/.bashrc` or
`~/.bash_profile`:

```
eval "$(kc --bash-completion-script kc)"
```

## Defects

* Errors don't have position information
* Monomorphization fails on recursive polymorphic functions

Hopefully this isn't too sinful; I can't think of any examples of recursive
polymorphic functions
* Can't export or call C functions with more than 6 arguments; can't call or
export large arguments (i.e. structs) passed by value.

This is less of an impediment than it sounds like.
* Cyclic imports are not detected
* Imports are kind of defective

### Comparison

You may wish to use [Mirth](https://github.com/mirth-lang/mirth/) or
[Factor](https://factorcode.org/) instead. Mirth is statically typed (similar to
Kempe) but less mature.