Are you aware that GNU Guile, which is self hosted (written mainly in scheme), can interpret brainfuck?
https://www.gnu.org/software/guile/manual/guile.html#Support...
https://www.gnu.org/software/guile/manual/guile.html#Support...
See this question that I asked (and later answered myself) around that time: https://softwareengineering.stackexchange.com/questions/2847...
Most of the project was figuring out things similar to that. You get to appreciate how high-level machine code on our processors really is! When things like "set the stack pointer to 1234" are one instruction, instead of 10k.