Dylan Graham presented a lightweight runtime LWDR for D programming of microcontrollers equipped with a real-time operating system (RTOS). The current version is aimed at ARM Cortex-M microcontrollers. The development does not aim to fully cover all D capabilities, but provides basic tools. Memory allocation is done manually (new / delete), there is no garbage collector, but there are a number of hooks for using RTOS tools.
The presented version supports:
- allocation and destruction of class and heap instances for structures;
- invariants;
- asserts;
- contracts, basic RTTI tools (at the expense of Typeinfo);
- interfaces;
- virtual functions;
- abstract and static classes;
- static arrays;
- allocating, freeing and resizing dynamic arrays;
- adding elements to a dynamic array and concatenating dynamic arrays.
In the status of experimental features: exceptions and Throwables (as they require scavenger support).
Not implemented:
- module constructors and destructors;
- ModuleInfo;
- thread local variables (TLS);
- delegates and closures;
- associative arrays;
- shared and synchronized data;
- hashed objects.
Source: opennet.ru