CTFE and Wasm

Dukc ajieskola at gmail.com
Sat Apr 30 08:51:26 UTC 2022


On Saturday, 30 April 2022 at 07:08:48 UTC, Ola Fosheim Grøstad 
wrote:
> I understand why both D and C++ users make a fuzz about CTFE, 
> it gives them a feeling of being able to extend the type system 
> or language in a way they are used to. However they are still 
> at wn disadvantage to more powerful languages that allow 
> construction of new types at runtime and do CTFE as an 
> optimization.

No, we're not at a disadvantage. If CTFE was just an 
optimisation, it'd mean we could not use it to compute values 
that have to be compile-time by definition. Example:

```D
//CTFE-able function
@safe pure size_t neededSize(size_t a, size_t b)
{ //Whatever...
}

struct SomeTemplateStruct(T)
{ //This wouldn't be possible without CTFE built in to semantics
   ubyte[neededSize(T.sizeof, 4)] anArray;

   //Neither would this
   static if(neededSize(T.sizeof, 8))
   { //...
   }
}
```

>
> Reason 1: compilation performance.
> Reason 2: poor debugging tooling.
>
> I'd say you don't have a proper CTFE solution until you can set 
> breakpoints in all functions and see what goes on.

You can still execute the CTFE-able functions at runtime when 
these are what you prefer.

And nothing prevents the compiler backend from optimising the 
calculations to compile time even when they are semantically 
runtime, which I understand is what you're advocating.

>
> One possibility is to reuse WASM infrastructure by compiling 
> CTFE functions to WASM and use source maps for debugging.
>
> What do you think?

Complex and not needed, for reasons above.




More information about the Digitalmars-d mailing list