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?