61 lines
2.2 KiB
Markdown
61 lines
2.2 KiB
Markdown
# All generators
|
|
|
|
* handle support in exports
|
|
|
|
* push/pull-buffer support in exports
|
|
|
|
# wasmtime
|
|
|
|
* 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 ???)
|
|
|
|
# JS
|
|
|
|
* 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 for `option<T>` and `enum` variants, but that's it.
|
|
|
|
* Is there a better representation for flags than simply an integer?
|
|
|
|
* Should functions returning `expected<T, E>` get translated in JS to functions
|
|
that return `T` and throw `E`?
|
|
|
|
* 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 plain `number` types to
|
|
work with it. Should generated bindings be more flexible though and work with
|
|
`number` in addition to `bigint`?
|
|
|
|
* 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 a `clone` method so they're interchangeable from `tsc`'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.
|