libphobos.so libdruntime.so

Jonathan M Davis jmdavisProg at gmx.com
Thu Feb 2 17:33:49 PST 2012


On Friday, February 03, 2012 02:29:20 Marco Leise wrote:
> As time goes by the D runtime will have it's place on Unix systems next to
> the C runtime. The upcoming support for PIC is the next step. Now I just
> want to quickly raise awareness for "sonames". For any library, there may
> be several incompatible versions installed, since new features are added
> and old features a deprecated. This happens in Phobos as well, no doubt
> 
> :). So the solution is to put the version in the library name as well, so
> 
> they can coexist in the same directory (/usr/lib).
> 
> Here is an example for the two versions of libunique I have installed:
> 	/usr/lib64/libunique-1.0.so         (link to
> /usr/lib64/libunique-1.0.so.0.100.6)
> 	/usr/lib64/libunique-1.0.so.0       (link to
> /usr/lib64/libunique-1.0.so.0.100.6)
> 	/usr/lib64/libunique-1.0.so.0.100.6
> 	/usr/lib64/libunique-3.0.so         (link to
> /usr/lib64/libunique-3.0.so.0.0.2)
> 	/usr/lib64/libunique-3.0.so.0       (link to
> /usr/lib64/libunique-3.0.so.0.0.2)
> 	/usr/lib64/libunique-3.0.so.0.0.2
> As you can see there is actually the full version down to the tiniest
> minor version appended to the file name and several layers of coarser
> versioning. An application can now link against libunique-1.0.so to get
> the old API and /usr/lib64/libunique-3.0.so to get the new API.
> 
> The same has to happen with druntime and Phobos2 or otherwise our programs
> will break with every new release that deprecates or changes non-template
> functions. That would probably be *every* release at the moment, so it
> could look like this:
> /usr/lib64/libphobos2.so     (link to /usr/lib64/libphobos2.so.060)
> /usr/lib64/libphobos2.so.058
> /usr/lib64/libphobos2.so.059
> /usr/lib64/libphobos2.so.060
> /usr/lib64/libdruntime.so     (link to /usr/lib64/libdruntime.so.060)
> /usr/lib64/libdruntime.so.058
> /usr/lib64/libdruntime.so.059
> /usr/lib64/libdruntime.so.060
> 
> There are two steps involved in getting this out of the door now:
> 1) I'm not an expert with these things, but from the looks of it, I think
> the Makefile should handle appending the version string
> 2) The runtime should be downloadable as a separate package (like the
> famous MSVC Runtime Redistributables)
> Developers have three choices then:
> - static linking
> - packaging the so/dll with their application (always using the
> tested-works version)
> - use the system installation of druntime/Phobos2 (benefit from patches
> (as far as WinSxS doesn't intervene))

I would point out that druntime is bundled with libphobos.a. I wouldn't expect 
libdruntime to be on the system.

- Jonathan M Davis


More information about the Digitalmars-d mailing list