On Tuesday, 20 December 2016 at 12:00:43 UTC, Walter Bright wrote:
On 12/18/2016 1:02 PM, Ilya Yaroshenko wrote:
I need to understand how it is can be done because I did not
find a valid solution.
mir-cpuid has global symbols, they are accessed using
extern(C) API. If multiple
libraries trying to initialize it than it will be initialized
only once.
extern C API does not solve a problem with DRuntime because
current DRuntime is
not a betterC library and it is huge. A huge betterC library
is a problem too
because it is less portable.
cpuid can be written in a manner that it is self-contained. If
so, it doesn't matter how large druntime is, as it won't have
references to any of the rest of it and so the rest won't be
pulled in by the linker.
This is true for application but not for libraries. mir-glas
depends on mir-cpuid. If I want GLAS to be ported for a new
target then I will release a new CPUID version and will be able
to use it the same day. With DRuntime (as solid project), I need
to wait up to 6 months before it will be released with DMD and
then with LDC. Workaround are possible, but they requires more
efforts, more time, more code.
Please do not force Mir to use DRuntime. We need a solid solution
I do not force anyone to drop DRuntime: Mir libraries can be used
with DRuntime/Phobos. We have full backward compatibility.
DRuntime does not satisfy portability requirements (which was
repeated multiple times in this thread). DRuntime (at least for
now and future few years) is a big constraint for betterC libs to
replace existing C analogs. Please do not force me to use
DRuntime.