On Tuesday, 17 May 2016 at 08:51:01 UTC, Jacob Carlborg wrote:
As an alternative to glibc there's a C standard library called
musl [1]. This is the C standard library used by ELLCC [2], a
cross-compiler based on Clang. This cross-compiler makes it
very easy to target other platforms and can be used as the C
compiler when building with LDC.
The issue is that musl doesn't support the functions defined by
execinfo.h: backtrace, backtrace_symbols_fd and
backtrace_symbols, since these are glibc extensions. As far as
I can see, these functions are used in two places in druntime:
src/rt/backtrace/dwarf.d [3] and src/core/runtime.d [4].
The imports of execinfo is guarded by version(CRuntime_Glibc).
I see that CRuntime_Glibc is a predefined version identifier
defined by the compiler on Linux.
I'm not sure how to best handle different C standard libraries
when it comes to choosing which one to use. Is it best to
choose that when building the compiler or when building
druntime? Or can it be a runtime option?
[1] https://www.musl-libc.org
[2] http://ellcc.org
[3]
https://github.com/dlang/druntime/blob/master/src/rt/backtrace/dwarf.d#L41
[4]
https://github.com/dlang/druntime/blob/master/src/core/runtime.d#L433-L434
What is the current status? Without support of musl-libc, I can
not ad support for a Alpine linux distribution. It is a shame
because they already have go and rust support.