libphobos.so libdruntime.so

"Jérôme M. Berger" jeberger at free.fr
Fri Feb 3 10:25:00 PST 2012


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))
> 
	Do not forget to add the proper soname information *inside* the
files. With GNU ld you need these options: "-soname
libphobos2.so.060"...

		Jerome
-- 
mailto:jeberger at free.fr
http://jeberger.free.fr
Jabber: jeberger at jabber.fr

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120203/a9f68bf4/attachment.pgp>


More information about the Digitalmars-d mailing list