Skip to content

When is a start function's post-return option called? #100

Open
@alexcrichton

Description

@alexcrichton

In thinking about start functions recently one question I wasn't sure how to answer is when the returned values are "invalidated" or otherwise when the component can be reentered. A better way to phrase this I found was to ask when is the post-return canonical abi option for a start function invoked? Unlike normal functions which have a clearly defined time when the results have been processed (e.g. lifted and then lowered back into the destination) start functions are different where their values are consumed possibly much later during a component's full instantiation process.

Another related but slightly different scenario: if a component exports both a function and a value, if the embedder supports invoking the function before reading the value then this forces the value to be removed from linear memory and copied to the host. Otherwise ideally the embedder would like to leave the value in linear memory but would require that the exported function is not invoked until the value export is read. This seemed like a pretty different model than the current "you get a bag of exports" model that core wasm has and I wanted to make sure this was intentional.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions