How minimal I can go using D on GDC?

Timo Sintonen t.sintonen at luukku.com
Sun May 12 10:13:28 PDT 2013


On Sunday, 12 May 2013 at 15:27:04 UTC, Iain Buclaw wrote:
> On 12 May 2013 15:41, Rel <relmail at rambler.ru> wrote:
>
>> Benjamin Thaut, yes I know. but here is an example, if I add a 
>> class to
>> the code like that:
>>
>>
>> module main;
>>
>> extern (C) void* _Dmodule_ref = null;
>> extern (C) void printf(const char*, ...);
>>
>> extern (C) void puts(const char*);
>> extern (C) void exit(int);
>>
>> class A {
>>         int a = 100;
>>         int b = 200;
>>
>> };
>>
>> extern (C) void main() {
>>         scope(exit) {
>>                 puts("Exiting!");
>>                 exit(0);
>>         }
>>
>>         A a; printf("%d %d\n", a.a, a.b);
>> }
>>
>
> This code won't work.  classes are reference types and need to 
> be
> initialised with 'new'.  This requires TypeInfo_Class 
> information to
> do...   You could possible use 'scope A a = new A'.  But again 
> your going
> into the bounds of needing rtti for the initialiser var to 
> assign it on the
> stack.
>
> Structs would be your friend here...

I have used the option -fno-emit-moduleinfo and got rid of 
_Dmodule_ref

Anything created with 'new' needs memory allocation. I have just 
published a minimum memory allocation in my repo.

The address of my minimum runtime environment repository is:
bitbucket.org/timosi/minlibd



More information about the D.gnu mailing list