-
handle support in exports
-
push/pull-buffer support in exports
-
buffer-in-buffer doesn't work. Doesn't work because we can't get a re-access of the transaction to add more buffers into it after-the-fact.
-
Needs more testing on big-endian.
-
Features from wiggle:
- use
GuestError::InFunc
more liberally- stores/loads
try_from
conversions
- generate just the trait (??? what to do about
wasmtime
dep ???)
- use
-
Is there a better representation for general
variant
types? Currently it's{ tag: string, val: T }
but that seems like it's probably sub-par. There's specializations foroption<T>
andenum
variants, but that's it. -
Is there a better representation for flags than simply an integer?
-
Should functions returning
result<T, E>
get translated in JS to functions that returnT
and throwE
? -
Adding imports to an import object is clunky because you need to also pass in a closure which extracts values from the raw instance. Unsure how to make this less clunky though.
-
Needs more testing on big-endian. Specifically slice copies are probably not correct.
-
Style with names needs to be respected, currently things are using
to_snake_case
but I think JS prefers camelCase? -
The
bigint
type is strict in that it does not accept plainnumber
types to work with it. Should generated bindings be more flexible though and work withnumber
in addition tobigint
? -
Host-handle types are always ascribed as
any
but ideally we'd do better than that and assign them types. Maybe the type should be imported from somewhere else? -
Lifting/lowering of variants can almost surely use a more compressed technique which generates less code.
-
Enums are handled in lowering as either strings or numbers, but should only numbers be handled here? Does anyone pass around strings as enum values?
-
Exported handle types in JS aren't nominal. As of this writing they all only have a
drop
and aclone
method so they're interchangeable fromtsc
's perspective. Ideally these would be nominal separate types. -
Imported handle types show up as
any
in TS, unsure how to plumb through actual types to get that actually typed.