e75a0a085d | ||
---|---|---|
.gitignore | ||
README.md | ||
UNLICENSE | ||
brainfuck.md | ||
gir.html | ||
gir.js | ||
ir.md | ||
optimizations.md |
README.md
Gir is an optimizing brainfuck interpreter in Javascript.
Name
𒌋𒀜 gir (Sumerian) - n. kiln
License
Everything in the repo is under Unlicense / CC0.
Status
Gir can parse, prettyprint, and run programs in brainfuck. Gir supports following optimizations:
- Turn runs of +- or <> into one command
- Turn [-] or [+] into one command
- Add offsets to commands that modify tape, to reduce moving tape head
- Turn multiply loops into one command
TODO
gir.js
- Implement
:;#
- Make VM and transformMultiplyLoops use a Proxied object that gives out 0 for nonexistent elements for tape and allows using [] interface
- Keep a cache of compiled programs in
run()
- Support for other types of EOF?
gir.html
- Implement a UI
Documentation
- Document the VM
- Document the user-facing API
- Document the overall architecture
General
- Get this on NPM?