WebAssembly / gc

Branch of the spec repo scoped to discussion of GC integration in WebAssembly
https://webassembly.github.io/gc/
Other
982 stars 70 forks source link

js-api: ToValueType doesn't accept GC heap types #500

Open eqrion opened 8 months ago

eqrion commented 8 months ago

Ref to the spec.

ToValueType (which is used in global and table constructors) doesn't appear to support any of the GC heap types such as anyref. SM and V8 appear to both support this for most of the GC heap types. We appear to diverge around the bottom types (SM accepts 'nullfuncref', V8 does not).

It also looks like SM has a form of {ref: heaptypestring, nullable: boolean} that we support as well. I think we added this for testing and it slipped through.

cc: @takikawa @jakobkummerow

rossberg commented 8 months ago

I had assumed the new types were intentionally left out for now.

But while looking, I also noticed #501.

eqrion commented 8 months ago

I had assumed the new types were intentionally left out for now.

But while looking, I also noticed #501.

That may have been the case, but it seems that both V8 and SM at least implement some of the GC heap types. I personally think supporting all the GC heap types via their shorthands makes sense as it's pretty easy. Non-nullable types or references to type definitions should probably be left out for now.