digitalmars.D.learn - CT usage only in executable
- strtr (4/4) Jul 14 2010 Not that the memory is really significant compared to the rest of my pro...
- bearophile (4/8) Jul 14 2010 Are you able to create a smallish test case?
- strtr (9/17) Jul 14 2010 ----
- strtr (3/20) Jul 15 2010 Too busy reading TDPL? ;)
- bearophile (5/7) Jul 15 2010 D compiler contains an interpreter. It's not available at runtime mostly...
- Daniel Murphy (9/29) Jul 16 2010 I think if you use enum instead of const/immutable the compiler is not m...
- strtr (3/11) Jul 16 2010 I'm using D1.
- Daniel Murphy (7/19) Jul 16 2010 Sorry, I don't have D1 installed. Can you use enum to declare manifest
- Simen kjaeraas (6/12) Jul 16 2010 Enhancement, I'd say. And yes, DMD does that. It's the reason for
- torhu (4/8) Jul 17 2010 As a workaround you could try putting those arrays in a separate module
- strtr (2/10) Jul 17 2010 Thanks, I'll try that if dmd will not do this as well before my program ...
Not that the memory is really significant compared to the rest of my program, but I have a few fairly large arrays I use only in compile time and I was wondering why dmd still includes those in the executable (simple text search dug them up).
Jul 14 2010
strtr:Not that the memory is really significant compared to the rest of my program, but I have a few fairly large arrays I use only in compile time and I was wondering why dmd still includes those in the executable (simple text search dug them up).Are you able to create a smallish test case? Bye, bearophile
Jul 14 2010
== Quote from bearophile (bearophileHUGS lycos.com)'s articlestrtr:---- module main; const char[] CT_STRING = "int i=0;"; void main(){ mixin( CT_STRING ); } ---- The string can be found in the executable.Not that the memory is really significant compared to the rest of my program, but I have a few fairly large arrays I use only in compile time and I was wondering why dmd still includes those in the executable (simple text search dug them up).Are you able to create a smallish test case? Bye, bearophile
Jul 14 2010
== Quote from strtr (strtr sp.am)'s article== Quote from bearophile (bearophileHUGS lycos.com)'s articleToo busy reading TDPL? ;) btw. how long until runtime mixins? :Dstrtr:---- module main; const char[] CT_STRING = "int i=0;"; void main(){ mixin( CT_STRING ); } ---- The string can be found in the executable.Not that the memory is really significant compared to the rest of my program, but I have a few fairly large arrays I use only in compile time and I was wondering why dmd still includes those in the executable (simple text search dug them up).Are you able to create a smallish test case? Bye, bearophile
Jul 15 2010
strtr:Too busy reading TDPL? ;)I have not answered because my answer is not useful: I am sure that constant is present in the binary, you probably need LDC with Link-Time Optimization activated to remove them.btw. how long until runtime mixins? :DD compiler contains an interpreter. It's not available at runtime mostly for design and ideological reasons, but in theory it's not hard to pull it out of the compiler and make it available at runtime too. Bye, bearophile
Jul 15 2010
"strtr" <strtr sp.am> wrote in message news:i1lro6$307u$1 digitalmars.com...== Quote from bearophile (bearophileHUGS lycos.com)'s articleI think if you use enum instead of const/immutable the compiler is not meant to put them in the executable (it might anyway in some/all cases). eg. module main; enum CT_STRING = "int i=0;"; void main(){ mixin( CT_STRING ); }strtr:---- module main; const char[] CT_STRING = "int i=0;"; void main(){ mixin( CT_STRING ); } ---- The string can be found in the executable.Not that the memory is really significant compared to the rest of my program, but I have a few fairly large arrays I use only in compile time and I was wondering why dmd still includes those in the executable (simple text search dug them up).Are you able to create a smallish test case? Bye, bearophile
Jul 16 2010
== Quote from Daniel Murphy (yebblies nospamgmail.com)'s articleI think if you use enum instead of const/immutable the compiler is not meant to put them in the executable (it might anyway in some/all cases). eg. module main; enum CT_STRING = "int i=0;"; void main(){ mixin( CT_STRING ); }I'm using D1. Should I report this as a bug?
Jul 16 2010
"strtr" <strtr sp.am> wrote in message news:i1ql53$306c$1 digitalmars.com...== Quote from Daniel Murphy (yebblies nospamgmail.com)'s articleSorry, I don't have D1 installed. Can you use enum to declare manifest constants in D1 or is it a D2 thing? If the string is left in the executable from const char[] CT_STRING = "blah blah"; void main () {} then I think this is a bug/enhancement for the linker.I think if you use enum instead of const/immutable the compiler is not meant to put them in the executable (it might anyway in some/all cases). eg. module main; enum CT_STRING = "int i=0;"; void main(){ mixin( CT_STRING ); }I'm using D1. Should I report this as a bug?
Jul 16 2010
Daniel Murphy <yebblies nospamgmail.com> wrote:Sorry, I don't have D1 installed. Can you use enum to declare manifest constants in D1 or is it a D2 thing?It's a D2 thing. I believe the D1 way to do it is with static const.If the string is left in the executable from const char[] CT_STRING = "blah blah"; void main () {} then I think this is a bug/enhancement for the linker.Enhancement, I'd say. And yes, DMD does that. It's the reason for the enum manifest constants in D2. -- Simen
Jul 16 2010
On 15.07.2010 02:29, strtr wrote:Not that the memory is really significant compared to the rest of my program, but I have a few fairly large arrays I use only in compile time and I was wondering why dmd still includes those in the executable (simple text search dug them up).As a workaround you could try putting those arrays in a separate module which you don't link into your executable. If you use a build tool like xfbuild, you can exclude files with the -X switch. CTFE would still work.
Jul 17 2010
== Quote from torhu (no spam.invalid)'s articleOn 15.07.2010 02:29, strtr wrote:Thanks, I'll try that if dmd will not do this as well before my program is finished :)Not that the memory is really significant compared to the rest of my program, but I have a few fairly large arrays I use only in compile time and I was wondering why dmd still includes those in the executable (simple text search dug them up).As a workaround you could try putting those arrays in a separate module which you don't link into your executable. If you use a build tool like xfbuild, you can exclude files with the -X switch. CTFE would still work.
Jul 17 2010