u6a/README.md

53 lines
1.5 KiB
Markdown
Raw Normal View History

2020-01-30 10:11:10 +00:00
# u6a
2020-05-24 18:56:39 +00:00
[![Travis CI](https://travis-ci.com/esolangs/u6a.svg)](https://travis-ci.com/esolangs/u6a)
[![Codecov](https://codecov.io/gh/esolangs/u6a/branch/master/graphs/badge.svg)](https://codecov.io/gh/esolangs/u6a)
2020-02-02 17:09:21 +00:00
[![LICENSE](https://img.shields.io/badge/licence-GPLv3-blue.svg)](LICENSE)
2020-01-30 10:11:10 +00:00
Implementation of Unlambda, an esoteric programming language.
## Description
2020-02-01 14:45:48 +00:00
The u6a project provides a bytecode compiler and a runtime system for the [Unlambda](http://www.madore.org/~david/programs/unlambda/) programming language.
2020-01-30 10:11:10 +00:00
2020-05-24 18:56:39 +00:00
Ideas behind this implementation can be found [here](https://github.com/esolangs/u6a/wiki/Developer's-Notes-on-Implementing-Unlambda).
2020-01-30 10:11:10 +00:00
2020-02-01 14:45:48 +00:00
## Getting Started
2020-01-30 10:11:10 +00:00
2020-02-01 14:45:48 +00:00
Building:
2020-01-30 10:11:10 +00:00
```bash
# (If not already) Install the required build tools.
sudo apt install build-essential automake
2020-03-14 20:31:20 +00:00
# (If you want to run tests) Install DejaGnu.
sudo apt install dejagnu
2020-02-01 14:45:48 +00:00
# Generate configuration script.
2020-01-30 10:11:10 +00:00
autoreconf --install
2020-02-01 14:45:48 +00:00
# Execute configuration script with desired options.
2020-01-30 10:11:10 +00:00
./configure --prefix=$HOME
2020-02-01 14:45:48 +00:00
# Compile source code and generate executables.
2020-01-30 10:11:10 +00:00
make
# (Optional) Run tests.
make check
# (Optional) Install executables and man pages.
make install
```
2020-02-01 14:45:48 +00:00
Usage:
2020-01-30 10:11:10 +00:00
```bash
2020-02-01 14:45:48 +00:00
# Compile an Unlambda source file into bytecode.
2020-01-30 10:11:10 +00:00
u6ac -o foo.unl.bc foo.unl
2020-02-08 16:51:31 +00:00
# Execute the bytecode file.
2020-01-30 10:11:10 +00:00
u6a foo.unl.bc
```
See [**u6ac**(1)](man/u6ac.1) and [**u6a**(1)](man/u6a.1) man pages for details.
2020-02-01 14:45:48 +00:00
## Future Plans
2020-01-30 10:11:10 +00:00
2020-02-01 14:45:48 +00:00
* Interactive debugger: `u6adb`
2020-01-30 10:11:10 +00:00
* More compile-time optimizations
2020-02-01 14:45:48 +00:00
* More test cases
* LLVM backend for `u6ac`