Skip to content

Releases: Wilfred/bfc

1.12.0

17 Sep 23:52
Compare
Choose a tag to compare

Removed multiply loop optimisation due to soundness issues

1.11.0

17 Jun 16:51
Compare
Choose a tag to compare

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 [>++<-].

1.10.0

15 Jun 07:28
Compare
Choose a tag to compare

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.

1.7.0

20 Feb 01:03
Compare
Choose a tag to compare

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.

1.6.0

07 Feb 12:03
Compare
Choose a tag to compare

Removed multiply loop extraction due to various known soundness failures.

1.5.0

30 Jan 18:57
Compare
Choose a tag to compare

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!