How can I use WebAssembly Reference Types with LDC?

kinke noone at nowhere.com
Sat Sep 14 12:08:13 UTC 2024


On Saturday, 14 September 2024 at 08:28:02 UTC, TM wrote:
> In C/C++, you can access wasm's externref and funcref using:
> ```C++
> char __attribute__((address_space(10)))* //externref
> char __attribute__((address_space(20)))* //funcref
> ```
> Does D provide similar functionality?

Nope, there's currently no way to customize the address-space of 
pointers. dcompute has 2-3 magic structs for expressing such 
pointers.

Maybe this could by solved via some magic
```D
// magic struct requiring compiler support
struct __as_pointer(T, uint addressSpace) { T* ptr; alias this = 
ptr; }

alias ExternRef(T) = __as_pointer!(T, 10);
alias FuncRef(T) = __as_pointer!(T, 20);
```


More information about the digitalmars-d-ldc mailing list