dcollections 1.0 and 2.0a beta released

Jacob Carlborg doob at me.com
Fri May 28 03:10:49 PDT 2010


On 2010-05-27 12:32, Steven Schveighoffer wrote:
> On Wed, 26 May 2010 10:06:32 -0400, Bruno Medeiros
> <brunodomedeiros+spam at com.gmail> wrote:
>
>> On 24/05/2010 16:45, Andrei Alexandrescu wrote:
>>>> In the past I have built a C++ library that abstracted features of
>>>> the OS. My goal was to make it possible to dynamically load a module
>>>> that abstracted things like setting the IP address of a network
>>>> interface. My modules used std::string instead of char * to lookup
>>>> services to get objects that implement the interface. Big mistake. On
>>>> a later version of the standard C++ runtime, the private
>>>> implementation of std::string changed, so the dynamically loaded
>>>> libraries crashed horribly. No change in string's interface, just the
>>>> private stuff changed, but because it's a template, the code that
>>>> uses it necessarily has to be aware of it. We ended up ditching the
>>>> standard C++ library's version of string, and used STLPort so we
>>>> could control the library.
>>>>
>>>> I envision this same sort of problem would be likely with D
>>>> collection objects that were not used via interfaces.
>>>
>>> I see no problem retrofitting a no-interface container into a formal
>>> interface if so needed.
>>
>>
>> I don't understand this discussion: isn't the reason above pretty much
>> a dead-on hard requirement for the collections to have interfaces?
>> Something like, for example, an interface version of the range traits?
>
> Only if you wish to have binary compatibility with dynamic libs. Such a
> thing isn't likely today since dynamic libs aren't very well supported
> in D, and even phobos or dcollections isn't a dynamic lib.

I've got my patch, for build Tango as a dynamic library on Mac, quite 
recently included in trunk. And I've also have a patch for druntime and 
Phobos in bugzilla just waiting to be included + one patch making it 
easier creating dynamic libraries directly with DMD. I would say it's a 
bad idea to still think that dynamic libraries aren't support, we have 
to think forward and assume they will be supported.

> And I have specifically decided not to use interfaces with ranges
> because that makes them reference types. Ranges work well as value
> types, but not well as reference types. Therefore, to use dcollections
> as interfaces, you must not require the range traits.
>
> -Steve


-- 
/Jacob Carlborg


More information about the Digitalmars-d-announce mailing list