WebAssembly / WebAssembly/component-model
Consider allowing caller-supplied buffer optimization for return values
Nobody has claimed this yet.
- Dominant language
- WebAssembly
- Stars
- 1.4k
- Forks
- 130
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 15
Description
Based on discussions in wasi-http/#8, we should consider a return-value optimization that avoids calling realloc by instead allowing the core wasm caller to supply a (buffer, length) i32 pair as a param. From my perspective, the main questions to consider are:
- For this to be useful, the optimization needs to apply not just for
list/stringreturn types but alsoresult<string>and other nested cases. But how far should this go? In the limit, it could apply to any use oflist/stringthat's not nested inside alist, but that's probably too far. - If the return value is a dynamically-sized
list/stringwhich needs more bytes than given, should it just fall back to callingreallocand can the caller then be expected to observe this case by noting that the returned pointer is not the same as the given one? - Is the speedup worth adding the special case?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the linked wasi-http/#8 discussion and this issue's questions about list/string, result, nested return values, realloc fallback, and observable pointers. Define the optimization's scope and fallback behavior, then document or specify the decision and evaluate whether the speedup justifies the special case.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- wasm
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100