bfc

An industrial-grade brainfuck compiler

GPL-2.0 License

Downloads
4.6K
Stars
495
Committers
7

Bot releases are visible (Hide)

bfc - 1.12.0 Latest Release

Published by github-actions[bot] about 1 year ago

Removed multiply loop optimisation due to soundness issues

bfc - 1.11.0

Published by github-actions[bot] over 1 year ago

Fixed a crash on compiling empty programs at low optimisation levels.

The strip argument is now -s, consistent with other compilers, and
binaries are no longer stripped by default.

Stripping is now done during linking, rather than shelling out to
strip. This is faster and more robust.

Improved dead code elimination after multiply loops, e.g. [>++<-][-]
is equivalent to [>++<-].

bfc - 1.10.0

Published by github-actions[bot] over 1 year ago

Updated to LLVM 13.

Interface:

  • Improved diagnostics display on warnings and errors.
  • CLI argument parsing now uses the clap library. No arguments have
    changed, but help and argument parsing errors should be clearer.
bfc - 1.7.0

Published by Wilfred over 8 years ago

Bug fixes:

  • Fixed a rare crash on programs with a large number of instructions
    had no effect.
  • Fixed a memory issue where programs with a large number of cells
    (which were stored on the stack) were misoptimised and
    segfaulted. Cell storage is now on the heap.

Optimisations:

  • Stripping symbols from the output binary can now be controlled with
    --strip.
  • Re-added a multiply loop optimisation. This was removed in 1.5.0 due to
    soundness bugs.

Usability:

  • Added a --version CLI argument.
bfc - 1.6.0

Published by Wilfred over 8 years ago

Removed multiply loop extraction due to various known soundness failures.

bfc - 1.5.0

Published by Wilfred over 8 years ago

Bug fixes:

  • Fixed an optimisation that incorrectly removed instructions when
    both . and , instructions were present.
  • Moved to LLVM 3.8, as LLVM 3.7 misoptimised some programs (see #8).

Usability:

  • bfc now reports a helpful error on nonexistent targets.
  • Improved wording of the warning message on multiply loops that
    access out-of-bounds cells.
  • Added a --passes CLI argument to customise which bfc optimisation
    passes are run.

Now with precompiled binaries for users to play with!