Hitchikers Guide to Porting Phobos / D Runtime to other architectures
Mike
none at none.com
Mon Jan 6 04:22:35 PST 2014
On Monday, 6 January 2014 at 11:47:57 UTC, Dwhatever wrote:
> I'm trying to do the same, trying to compile OS free code but I
> haven't so far been successful because D requires the runtime
> and then also Phobos. Compared to C/C++ where you can create
> pretty advanced stand alone code without even include any
> standard libraries, this because much of C++ is part of the
> compiler.
I created a bare-metal freestanding (OS Free) hello world program
and wrote a wiki about it here
(http://wiki.dlang.org/Extremely_minimal_semihosted_%22Hello_World%22)
The problem is that there's not really much D in that D program,
but it is a working foundation on which to build. If you plan on
writing D code for embedded systems, you probably don't want all
of the runtime anyway (at least I don't).
Using GDC compiled for arm-none-eabi, I created a malloc/free
implementation in D and am now able to create classes that are
allocated on the heap with "new" and deallocated using "destroy".
I also created a reference counted implementation too that
automatically deallocates when the reference count reaches 0.
But, I'm still struggling with the memory management as a whole.
Unfortunately once I started creating structs and classes I had
to implement a bunch of "TypeInfo.." stuff in object.d even
though it appears none of it gets used. My object.d is now only
about 140 lines.
This was only possible with a recent change to GDC
(http://forum.dlang.org/post/mailman.3.1387377012.2938.d.gnu@puremagic.com)
and the -fno-emit-moduleinfo switch. I tried with LDC too, but
LDC requires the world, so I gave up for now.
If any compiler implementers are reading this, please try to
generate only code that is used by the program being compiled. I
need to get this sorted out and submit some bug/enhancement
requests to the compiler writers, but I first need to understand
things better so I can articulate it well.
> With D this is not the case. I don't really have a good picture
> what is part of the compiler or the runtime. Even creating a
> simple sample class and create a stack object requires that I
> include *everything*, that hairy runtime phobos nest. The
> runtime also has dependencies into Phobos which I find to be
> very inconvenient and I don't think it is a good idea. The
> runtime should be stand alone and Phobos should depended on the
> runtime and not vice versa.
I sympathize and agree. I can't see the abstraction in the
phobos/runtime hairball. That's why I'm throwing the baby out
with the bathwater and making a new baby.
I also wish the runtime wasn't so coupled to the garbage
collector. The garbage collector is just one of several ways to
manage memory, and I don't think the runtime should be so
dependent on it, but that's probably easier said than done.
> Compared to C/C++, D is very hard to get to work in the
> embedded/OS less environment because of this.
I agree, but it won't get any better until you and I step up and
do something about it.
More information about the Digitalmars-d
mailing list