On Saturday, 23 May 2015 at 06:35:50 UTC, Anthony Monterrosa
wrote:
Does D require the standard library to function? Or to be
more direct, does D as a language need its library, or core
library, to function correctly?
I have become very interested in how programming languages
do their magic; how they interact with the computer itself, and
their inner mechanics. This eventually led me to resources that
said the line between a language and its library differs
between languages, and I was wondering where D stood on that
line.
Note: since, I'm already here, does anyone know how D
manipulates/uses standard streams to make its write/read
functions as well? I can't find any resources telling me a
non-abstracted way of this being completed.
P.S. I'm only a freshman computer science student, so if some
of this should be basic, I simply don't know it yet.
Thanks in advance!
I have some bare metal code that works without Druntime.
The compiler injects code that references some druntime
components, which causes the linker to barf if they're not
defined somewhere. You can simply define them as global void*
vars like so:
---
module kernel.kmain;
// So we compile without druntime.
extern(C) __gshared void* _d_dso_registry;
extern(C) __gshared void* _Dmodule_ref;
extern(C) __gshared void* _d_arraybounds;
extern(C) __gshared void* _d_assert;
extern(C) __gshared void* _d_unittest;
// rest of code here
---
This was back in DMD 2.065 so things may have changed between
then and now.
bye,
lobo