---
id: faq
title: FAQ
---
## What is bfc?
bfc is an LLVM-based compiler that converts
[Brainfuck](https://en.wikipedia.org/wiki/Brainfuck) to native code.
## Is this a serious project?
It's a legitimate BF implementation with genuine compiler
optimisations. bfc has been [referenced on
Wikipedia](https://en.wikipedia.org/w/index.php?title=Brainfuck&oldid=1139432166#cite_ref-13)
and [the llvm-sys
docs](https://gitlab.com/taricorp/llvm-sys.rs#documentation).
bfc is also a toy. I'm always pleasantly surprised when people find
actual uses for it.
## How fast is it?
I believe it's the second fastest BF compiler. Mats Linander's [BF
optimisation research
project](https://github.com/matslina/bfoptimization) is still faster
on many programs.
## Why did you do this?
BF is a really good language for learning about compilers. With only
eight operations, it's way more feasible to build elaborate features
like speculative execution and instruction reordering. Also, it's fun.
## What license is bfc under?
bfc is licensed under GPLv2 or later. Documentation (files ending .md
or .png) is licensed under [CC-BY
4.0](https://creativecommons.org/licenses/by/4.0/), and [Twemoji
images](https://twemoji.twitter.com/) are also CC-BY 4.0.
Sample programs are largely written by other authors and are under
other licenses.
## What is the logo?
It's a gingerbread man with **B**u**F**falo plaid. I felt it captured the
silliness of the whole project.
## Why not write "Brainf***"?
The unfortunate name of brainfuck is [discussed on the esolangs
wiki](https://esolangs.org/wiki/Brainfuck). Some writers even
use the term "the unmentionable programming language".
To avoid confusion (and help search engines), I use the term
"brainfuck" on introductions, such as the home page. In other cases I
use "BF".
## Are there other BF optimisers?
Many! Some noteworthy examples I've seen are:
* https://code.google.com/p/esotope-bfc/wiki/Optimization
* http://www.nayuki.io/page/optimizing-brainfuck-compiler
* http://mearie.org/projects/esotope/bfc/
* http://calmerthanyouare.org/2015/01/07/optimizing-brainfuck.html
* [http://xn--2-umb.com/10/brainfuck-using-llvm](http://xn--2-umb.com/10/brainfuck-using-llvm)
* https://github.com/stedolan/bf.sed (simple optimisations, but
compiles directly to asm)
* https://github.com/matslina/bfoptimization
* [Platonic Ideal Brainfuck Interpeter](http://catseye.tc/node/pibfi)
[(src)](https://github.com/catseye/pibfi) (even has a profiler!)
* https://github.com/rmmh/beefit (uses LuaJIT)