Dylan Graham apresentou o runtime leve LWDR para programação em D em microcontroladores equipados com sistemas operacionais em tempo real (RTOS). A versão atual é direcionada para microcontroladores ARM Cortex-M. O desenvolvimento não tem como objetivo cobrir todas as funcionalidades do D, mas oferece ferramentas básicas. A alocação de memória é feita manualmente (new / delete), o coletor de lixo não está implementado, mas existem vários ganchos para usar os recursos do RTOS.
A versão apresentada suporta:
- alocação e destruição de instâncias de classes e heaps para estruturas;
- invariantes;
- asserts;
- contratos, ferramentas básicas de RTTI (por meio dos recursos Typeinfo);
- interfaces;
- funções virtuais;
- classes abstratas e estáticas;
- arrays estáticos;
- alocação, liberação e redimensionamento de arrays dinâmicos;
- adição de elementos a arrays dinâmicos e concatenação de arrays dinâmicos.
Em estado de funcionalidades experimentais: exceções e Throwables (pois requerem suporte de coletor de lixo).
Não implementados:
- construtores e destrutores de módulos;
- ModuleInfo;
- variáveis locais de thread (TLS);
- delegados e closures;
- arrays associativos;
- dados compartilhados e sincronizados;
- objetos hash.
Fonte: opennet.ru
