Re: Debugging compile time memory usage

2018-06-25 Thread Bauss via Digitalmars-d-learn

On Tuesday, 26 June 2018 at 00:59:24 UTC, Nicholas Wilson wrote:

On Sunday, 24 June 2018 at 14:16:26 UTC, Kamil Koczurek wrote:

[...]


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.


Is there a specific reason why DMD isn't shipped as 64bit by 
default? Literally most machines are 64bit these days, so why do 
we limit ourselves to 32bit?


Re: Debugging compile time memory usage

2018-06-25 Thread Nicholas Wilson via Digitalmars-d-learn

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.


Re: Debugging compile time memory usage

2018-06-24 Thread Stefan Koch via Digitalmars-d-learn

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


Check out https://github.com/UplinkCoder/bf-ctfe.

It uses all tricks which I know to use the least amount of memory.
(Which admittedly still is a lot)

Other then that. you'll have to wait for newCTFE to be stable 
enough for me to give green light for merging.




Debugging compile time memory usage

2018-06-24 Thread Kamil Koczurek via Digitalmars-d-learn
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