On Saturday, 22 February 2020 at 13:20:40 UTC, IGotD- wrote:
I'm trying to find information how to port D, especially the D
runtime to a proprietary OS.
Here is my "Frankenstein" MCU project:
https://github.com/denizzzka/d_c_arm_test
Maybe this will help you somehow.
It is forced to use simultaneously: ldc2, clang, gcc, make,
meson. Currently it uses ARM but also I interested in RISC-V.
It almost works except druntime.
Will there be a future improvement of this so that OS specific
support can be moved to separate files and selected on module
level instead?
Hurrah! I come by search with same idea!
I looked into druntime for several days (and never before) and
now I think that tree of its source code isn't organized properly
and this stucks porting it to architectures very different from
well-known Posix.
For example, look:
https://github.com/dlang/druntime/blob/master/src/core/stdc/errno.d
https://github.com/dlang/druntime/blob/master/src/core/stdc/stdio.d
Without moving out of architecture-dependent code into separate
"subprojects" it is impossible to imagine that this code can be
ported without significant labor costs.
Also, such a takeaway is necessary because by "architecture" we
can mean identical "CPU + OS" bundles but just with different
definitions of modern types like int_fast16_t and so on -
thousands of "architectures"! This is actual for MCU.
Moreover, it would be nice to make as much as possible any parts
of this "backend" optional. Let a compilation error happens if
there is no some functionality. Then these talks about a certain
"minimal druntime", which, in fact, provides abilities what
already gives betterC, will stop.
Perhaps this proposal isn't new, but the search yielded nothing
except your message.