LWDR (Light Weight D Runtime) v0.3.0
Dylan Graham
dylan.graham2000 at gmail.com
Fri Jul 9 19:10:33 UTC 2021
On Friday, 9 July 2021 at 14:30:07 UTC, lili wrote:
> Great Work!
Thanks!
> Why standard D Runtime can not run on MCU?
The standard D Runtime is reliant on a fully-fledged OS, which
don't fit onto small embedded devices and [they're incompatible
with them](https://electronics.stackexchange.com/a/19243) For
example, Linux requires a memory management unit (MMU), yet the
Cortex-M series lack that feature.
The runtime itself is quite heavy due to the enormity of the
features it supports. For example, the functions in DRuntime's
[`lifetime.d`](https://github.com/dlang/druntime/blob/15b49cc725df280a72508f729ec4495ffbac66c3/src/rt/lifetime.d#L86) are dependent on GC code, which adds memory overhead to store those instructions and stack space. In LWDR, [`lifetime`](https://github.com/hmmdyl/LWDR/tree/master/source/lifetime) functions just point to your own implementation, yielding a leaner memory footprint. It's a very pedantic example, but it adds up after a while on a resource-constrained platform.
> Will you plan that LWDR support other arch like RISC-v ?
Yes :)
Asides from some ARM EABI specific stuff in
[`rt/sections.d`](https://github.com/hmmdyl/LWDR/blob/d55a39d028942f0eb1582d473317f89030995703/source/rt/sections.d#L38), I don't think it'd difficult getting LWDR running on another MCU platform (as of v0.3.0).
More information about the Digitalmars-d-announce
mailing list