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

Reply via email to