How can I use WebAssembly Reference Types with LDC?
Richard (Rikki) Andrew Cattermole
richard at cattermole.co.nz
Sat Sep 14 21:15:38 UTC 2024
On 15/09/2024 5:05 AM, TM wrote:
> On Saturday, 14 September 2024 at 12:08:13 UTC, kinke wrote:
>> 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);
>> ```
>
> Thank you for your response. Unfortunately, I was unable to generate
> wasm's externref using the method you suggested. It appears that
> dcompute cannot generate code targeting wasm.
>
> Sadly, it seems difficult to achieve this with the capabilities of the
> dlang.
Indeed, what Martin is suggesting is that a compiler improvement is
required.
There is no way to do what you want currently.
More information about the digitalmars-d-ldc
mailing list