Criteria for 1.0 (was: Re: If D becomes a failure, what's the key reason, do you think?)

Dave Dave_member at pathlink.com
Thu Jul 13 14:00:23 PDT 2006


Sean Kelly wrote:
> Kirk McDonald wrote:
>> Walter Bright wrote:
>>> Kirk McDonald wrote:
>>>
>>>> Here's something that has been annoying me, and this week-old thread 
>>>> is as good a place as any to bring it up: Shared library support on 
>>>> Linux. I could not take D seriously if it did a "1.0" release 
>>>> without this. I do hate to cram more on your plate, Walter, but I 
>>>> consider this a more serious issue than even this import thing that 
>>>> has gripped the newsgroup for the past week.
>>>
>>>
>>> I know about the shared library issue on Linux. And to tell the 
>>> truth, I've been procrastinating on it. The big job, -fPIC, is done. 
>>> I don't know how much beyond that needs to be done.
>>>
>>> Will the shared libraries work with GDC?
>>
>> Ha! Well, at least this simple case does:
>>
>> [myso2.d]
>> import std.stdio;
>>
>> export extern(C)
>> void mysoprint() { writefln("Hello 'so' world!"); }
>>
>> [myso.d]
>> export extern(C) void mysoprint();
>>
>> [test.d]
>> import myso;
>>
>> void main() {
>>     mysoprint();
>> }
>>
>> $ gdc -shared -Wl,-soname,libmyso.so -o libmyso.so myso2.o -lc
>> /usr/bin/ld: warning: creating a DT_TEXTREL in object.
>>
>> (Not sure what that means...)
>>
>> $ sudo cp libmyso.so /usr/lib
>> $ gdc -c test.d
>> $ gdc test.o -Wl,-lmyso -o test
>> $ ./test
>> Hello 'so' world!
>>
>> Sweet. However, I am a little concerned. When making DLLs on Windows, 
>> there is some boilerplate code needed to initialize and shut down the 
>> GC and do some other routine things. Is something like that needed here?
> 
> I think it is.  Perhaps the best approach would be to expose two extern 
> (C) functions: one for startup and one for shutdown.  By default, these 
> would be called automatically by internal/dmain2, but the user could opt 
> to call them in DllInit or whatever if he knows that function will not 
> be the entry point for his program.  In Ares, I'd probably call these 
> "cr_init" and "cr_term" where "cr" means "compiler runtime."
> 

Could these be exposed to be the same on both platforms? If so that 
would be great.

Thanks,

- Dave

> 
> Sean



More information about the Digitalmars-d mailing list