A special treat

Steven Schveighoffer schveiguy at yahoo.com
Tue Feb 9 13:44:39 PST 2010


On Tue, 09 Feb 2010 16:28:27 -0500, Walter Bright  
<newshound1 at digitalmars.com> wrote:

> Steven Schveighoffer wrote:
>> On Tue, 09 Feb 2010 15:58:37 -0500, Walter Bright  
>> <newshound1 at digitalmars.com> wrote:
>>
>>> Steve Teale wrote:
>>>> The inability to do this is a real show-stopper for D on Linux, and  
>>>> unless things have got better since I last tried, the same can be  
>>>> said for Windows DLLs.
>>>
>>> The dmd/samples/d/dserver.d is an example of a Windows DLL in D.
>>  According to Don (haven't tried, because I don't have a windows box  
>> handy), any D2 DLL will fail, even an empty one because of  
>> http://d.puremagic.com/issues/show_bug.cgi?id=3342
>
> It is a bad problem, but it doesn't apply to implicitly loaded DLLs,  
> only dynamically loaded ones, and it also doesn't apply to Vista or  
> Windows 7.

But implicitly loaded DLLs aren't supported by D!  However, I was not  
aware that it only applied to dynamically loaded ones, that is good to  
know.

>> That aside, having to handle manual steps to ensure the runtime doesn't  
>> lose its mind is unacceptable.  It has to be handled without any manual  
>> runtime coding to be a viable solution.  DDL is not a solution, its a  
>> hack.
>>  In other words, I should be able to flip a compiler switch to build a  
>> shared lib, and I shouldn't have to do anything special aside from  
>> exporting symbols.  This is the way it is in all other programming  
>> languages.
>>  Until Phobos is a shared lib, I don't think we need to have any  
>> discussions about any existing solutions.  That is requirement number 1  
>> for saying D supports shared libs.
>
> Shared libraries (on Linux) and Windows DLLs are very different things.

Yes, I agree they are two different problems to solve.  But to a  
developer, they look the same.

> Phobos as a DLL is a different problem than creating DLLs with D. DLLs  
> in D can be created that are statically linked with Phobos, and that can  
> be accessed by any executable in any language.

They can be accessed by another D program?  My understanding is that all  
kinds of weird problems happen if you dynamically link two D programs  
together.  I'm not speaking from first-hand experience, I may be wrong.

It is very important that Phobos be a dynamic library and that you can  
build dynamic libraries easily without manual manipulation of the  
runtime.  If these two things are accomplished, then D can say it supports  
dynamic libraries, not before.  Half ass support doesn't count.  It's like  
saying a car has a cup holder because you can wedge your cup between the  
seat and the e-brake.

-Steve



More information about the Digitalmars-d mailing list