diff --git a/CHANGELOG.md b/CHANGELOG.md index eef8ad56..d8fce50a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,178 +1 @@ -# v1.11.0 (released 17th June 2023) - -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 `[>++<-]`. - -# v1.10.0 (released 15th June 2023) - -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. - -# v1.9.0 (released 24th October 2020) - -Updated to LLVM 10.0. - -Bug fixes: - -* Fixed an issue with stripping symbols on macOS (#23). -* ANSI colour codes are only output when stdout is a TTY (#15). - -# v1.8.0 - -Updated to LLVM 8.0. - -Fixed a linking error on recent LLVM versions, and a pass manager -segfault on LLVM 8. - -# v1.7.0 - -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. - -# v1.6.0 - -Extracting multiply loops was causing a variety of soundness failures -and segfaults. This peephole optimisation has been moved to a branch -until it's more robust. - -# v1.5.0 - -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. - -# v1.4.0 - -Portability: - -* bfc now supports cross-compilation, so you can compile for any - architecture that LLVM supports. - -* Fixed an issue compiling bfc on ARM. - -Performance: - -* LLVM's default optimisation levels are tuned for C. We now run LLVM - optimisation passes twice, to fully leverage LLVM. Many programs now - execute in less than half the time. - -* We now run optimisations using LLVM's API directly rather than - shelling out to `opt` and `llc`. This provides a modest improvement - to compile time. - -# v1.3.0 - -Performance: - -* We now specify the data layout and target to LLVM, as recommended - by the LLVM team. In principle this is faster, but we've seen no - measurable performance boost. - -Compatibility: - -* bfc now provides up to 100,000 cells. This has been increased to - support awib, which requires at least 65,535 cells available. - -Bug fixes: - -* Fixed a compiler crash due to bounds analysis ignoring offsets. -* Show a more helpful error if `llc`, `clang` or `strip` are not - available. - -Usability: - -* bfc now reports errors and warnings with colour-coded diagnostics - and filenames. -* bfc now generates an error with position on syntax errors. -* bfc now generates a warning with position on dead code. -* bfc now generates a warning with position on code that is guaranteed - to error at runtime. - -# v1.2.0 - -Optimisations: - -* Compile time execution is now much smarter. Previously, we had to -finish executing loops in order to skip runtime execution. We can now -partly execute loops at runtime. This is a big help to many programs -with a large outer loop, previously they did not benefit from compile -time exeuction. - -Compiler performance: - -* `--dump-bf` is now much faster. - -Bug fixes: - -* In some cases, reorder with offset led to miscompilation -(only seen in mandelbrot.bf). - -# v1.1.0 - -Optimisations: - -* New optimisation: reorder with offset. See the readme for more - details. -* Remove redundant sets, dead loop removal and combine before read are - now smarter. Previously they required adjacent instructions, but - they now find the next relevant instruction when there are - irrelevant intermediate instructions. -* LLVM optimisation level can now be set with `--llvm-opt`. - -Bug fixes: - -* Fixed an issue with writing to stdout during speculative execution - (we were writing to stdin instead). - -Usability: - -* Improved the output of `--help` -* `--dump-bf-ir` has been renamed to `--dump-bf` - -# v1.0.0 - -First release! - -* Compiles to 32-bit x86 binaries. -* Peephole optimisations -* Cell bounds analysis -* Speculative execution +See diff --git a/docs/changelog.md b/docs/changelog.md index 707a47cd..677a4d9b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -3,8 +3,6 @@ id: changelog title: Changelog --- - - # v1.11.0 (released 17th June 2023) Fixed a crash on compiling empty programs at low optimisation levels.