The D ecosystem in Debian with free-as-in-freedom DMD

Matthias Klumpp via Digitalmars-d digitalmars-d at puremagic.com
Mon Apr 10 06:20:00 PDT 2017


On Monday, 10 April 2017 at 13:07:22 UTC, Vladimir Panteleev 
wrote:
> On Monday, 10 April 2017 at 12:59:37 UTC, Matthias Klumpp wrote:
>>> Who came up with those policies and decided that they apply 
>>> to D? Because I really don't think they should.
>> [...]
>> You need to see here that D is not the center of the world and 
>> we will need to make it work nicely with the rest of the 
>> system.
>
> The opposite is also true: requiring a stable shared library 
> API of every packaged D library is just as unreasonable. In 
> fact, to make these rules useful and applicable to all D 
> programs, you'd have to completely forbid templates in the 
> library's public interface, which would immediately exclude 
> Phobos for one.

There is a really easy way to fix this: SONAMEs. Whenever you 
change something in the library breaking ABI or API, you bump 
it's SOVERSION, which will force the distribution to perform a 
transition and rebuild the dependency chain. If you give 
absolutely zero stability guarantees, you just set the SOVERSION 
equal to the project's version and trigger a transition every 
time (incredibly annoying, but, well, okay).

This has worked nicely for every language. If you don't have 
templates in your API or don't change the templates between 
releases, you can survive with one library for a long time.

This is working really great on the level of individual 
libraries, but if the whole language is ABI-unstable, the issues 
are much bigger and harder to track.

Btw, at time we are just ignore the ABI issues, and surprisingly 
nothing broke yet, indicating that ABI breakage isn't very common 
or not affecting commonly used interfaces much.


More information about the Digitalmars-d mailing list