On 11/29/17 10:23 PM, Walter Bright wrote:
On 11/29/2017 6:54 PM, Steven Schveighoffer wrote:
But even though it doesn't come with Windows, it can be installed
once, and shared between all applications that use it.
That's the theory. Unfortunately, that relies on the library not
changing. Microsoft changes it all the time, hence "dll hell".
My understanding is that if you use the Microsoft supplied MSI package
as a dependency, there is only one installation of the libraries
necessary. Granted, the last time I built MSI packages was about 10
years ago...
But I don't remember having issues with DLL hell with that, even across
compiler releases.
Yes, they changed the library on some revisions, but your MSVCRT dll
would also be installed in the right places (and the right version
loaded at runtime).
But we don't have to look at Microsoft as the gurus of library
deployment, there are many good solutions already out there for other OSes.
A second problem is that due to the way D works most of the time (with
templates just about everywhere), each new release is likely to be
binary-incompatible. So you will essentially need many copies of
druntime, probably one per release that was used to compile any D
programs on your system.
At this point, relying on druntime not changing is just not realistic.
libc is different, having been cast in stone for nearly 30 years now.
Baby steps, let's deploy it as a shared object first :) Until we do
that, there is no point to worry about binary compatibility.
-Steve