| CARVIEW |
hbf: An optimizing Brainfuck compiler and evaluator
hbf is a compiler and executor of Brainfuck programs. It provides two executables: hbfc the Brainfuck compiler, and hbf the virtual machine that executes compiled Brainfuck programs.
[Skip to Readme]
Flags
Manual Flags
| Name | Description | Default |
|---|---|---|
| dump | Dump stg and core files | Disabled |
| profile | Enable profiling in benchmarks | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- hbf-0.2.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.2.0.0 |
|---|---|
| Change log | ChangeLog.md |
| Dependencies | base (>=4.10.0.0 && <4.13), binary (>=0.8.5.1), bytestring (>=0.10.8.0), deepseq (>=1.4.3.0), filepath (>=1.4.1.2), hbf, optparse-applicative (>=0.14.0.0), parsec (>=3.1.13.0), primitive (>=0.6.2.0), text (>=1.2.2.0), transformers (>=0.5.2.0), vector (>=0.12.0.1) [details] |
| Tested with | ghc ==8.2.1, ghc ==8.2.2, ghc ==8.4.1, ghc ==8.4.2, ghc ==8.4.3 |
| License | GPL-3.0-only |
| Copyright | Sebastian Galkin, 2018 |
| Author | Sebastian Galkin |
| Maintainer | paraseba@gmail.com |
| Uploaded | by paraseba at 2018-07-04T16:02:14Z |
| Category | Language |
| Home page | https://github.com/paraseba/hbf |
| Bug tracker | https://github.com/paraseba/hbf/issues |
| Source repo | head: git clone git@github.com:paraseba/hbf.git |
| Distributions | |
| Executables | hbfc, hbf |
| Downloads | 2145 total (14 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs available [build log] Last success reported on 2018-07-04 [all 1 reports] |
Readme for hbf-0.2.0.0
[back to package description]HBF

An unoptimized Brainfuck optimizing compiler and evaluator.
HBF can compile standard Brainfuck code into an optimized Intermediate Representation (IR). This IR can later be executed for faster Brainfuck program evaluation.
Getting Started
Installing
Use your preferred method for installing HBF from Hackage. If you prefer to build from source you can use cabal.
Usage
Let's say you have a Brainfuck program in the file mandelbrot.bf, for example,
you can get one here
You can compile the program to the Intermediate Representation using the hbfc executable provided by this project:
hbfc mandelbrot.bf
That will create a file mandelbrot.bfc in the same directory. If you want the output in a different
path you cane use --output option to hbfc
Now, you can run the compiled program:
hbf mandelbrot.bfc
and get something like:

There are several options to both the compiler and the evaluator, to modify levels of optimization, output and others. Try
--help to learn more.
Hacking
HBF has heavily documented code. You can read the documentation on Hackage.
All the optimizations are implemented in the compiler,
for an example, you can look at the documentation for
mulOpt.
Running the tests
cabal test
Test coverage report for the last build can be found here.
Running the benchmarks
cabal bench
License
This project is licensed under the GPL-3 License - see the LICENSE file for details
Copyright 2018 Sebastian Galkin.
Acknowledgments
This work is based on the excellent project bfoptimization by matslina: