gir/README.md

40 lines
897 B
Markdown

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?