On Sunday, 24 June 2018 at 14:16:26 UTC, Kamil Koczurek wrote:
I recently wrote a brainfuck compiler in D, which loads the BF
source at compile time, performs some (simple) optimizations,
translates everything to D and puts it into the source code
with a mixin.
I did manage to get some pretty good performance, but for some
programs in brainfuck I have to use LDC instead of DMD because
the latter runs out of memory. Is there a way for me to
optimize my code in such a way that DMD will be able to compile
it?
D code: https://pastebin.com/fg1bqwnd
BF program that works:
https://github.com/erikdubbelboer/brainfuck-jit/blob/master/mandelbrot.bf
BF program that makes DMD crash:
https://github.com/fabianishere/brainfuck/blob/master/examples/hanoi.bf
After putting BF code in code.bf and D in main.d, I compile it
with the following command: dmd main.d -J./
Error msg: unable to fork: Cannot allocate memory
DMD version: DMD64 D Compiler v2.080.0-dirty
If you were able to compile it with LDC and not DMD, then that is
most likely due to the LDC executable being 64-bit (limited to
available system RAM+swaps) and the DMD executable being 32-bit
(limited to 4GB).
If you want to use DMD, build a 64-bit version yourself and
complain on general that the releases are not 64-bit.