Beta 2.079.0
Mike Franklin
slavo5150 at yahoo.com
Mon Feb 19 23:37:49 UTC 2018
On Monday, 19 February 2018 at 18:50:47 UTC, Dukc wrote:
> Huh? Did I understand right? Just add an empty object.d into
> your project and --BetterC is now basically needless, plus the
> executable is most likely even smaller?
Kindof, but not exactly. The -betterC switch still adds some
nuance such as...
> assert failures are directed to the C runtime library
https://dlang.org/spec/betterc.html
... just to name one.
Though, with 2.079, you should be much less constrained in your
no-/partial- runtime implementation.
For example, I'm exploring a minimal runtime implementation for
using D on bare-metal microcontrollers
(https://github.com/JinShil/stm32f42_discovery_demo) The device
tree (i.e. bus/peripherals/registers/bitfields) is statically
known at compile-time. I use this pattern to model the device
tree...
final abstract class RCC : Peripheral!(AHB1, 0x3800)
{
final abstract class CR : Register!(0x00,
Access.Byte_HalfWord_Word)
{
alias PLLSAIRDY = Bit!(29, Mutability.r);
alias PLLISAION = Bit!(28, Mutability.rw);
}
}
https://github.com/JinShil/stm32f42_discovery_demo/blob/93f2c53578a18e8ce8e6a3985db14f361590f07f/source/stm32f42/rcc.d#L24
That would be impossible with -betterC, because -betterC doesn't
support classes.
I suspect others will find more compelling use cases.
With 2.079 it may also be possible to implement certain features
of D that are disabled in -betterC by providing custom
implementations of runtime hooks
(https://wiki.dlang.org/Runtime_Hooks) or other features in the
runtime.
I'm of the opinion, however, that with the right changes to the
compiler-runtime coupling, as demonstrated in 2.079, a better C
can be achieved without the -betterC compiler switch. There's
still more work to be done, though, and the -betterC compiler
switch will still have its uses. It should be noted, however,
that it was the work done on -betterC that made the changes in
2.079 possible.
Mike
More information about the Digitalmars-d-announce
mailing list