Skip to content

Latest commit

 

History

History
32 lines (19 loc) · 1.13 KB

README.md

File metadata and controls

32 lines (19 loc) · 1.13 KB

Brainsuck

Brainsuck is an optimizing compiler prototype for the Brainfuck programming language. It's written in Scala using the same technologies used in Spark SQL's Catalyst optimizer. It's minimum, and only consists of 292 lines of code (test code not included). This project is designed for my QCon Beijing 2015 talk.

How to build

$ sbt stage

Run

Use the following command line to run the Hanoi tower example:

JAVA_OPTS=-Xss8m ./target/universal/stage/bin/brainsuck scripts/hanoi.b -O 2

The -O flag is used to specify optimization level (0, 1, or 2). -O 0 disables all optimizations.

Brainsuck uses recursion extensively for conciseness. That's why you need to specify stack size to avoid stack overflow. These recursions can be easily removed, but this makes the codebase unnecessarily bloated. Anyway, this is only a demo for a talk :^)

Acknowledgement

This project is inspired by brainfuck optimization strategies authored by Mats Linander.

Licence

MIT