Currently I don't know how we can reasonably implement this. Given all the signatures of how we call functions and how functions are called on the host there's no real feasible way that I know of to hook these two up "seamlessly". This means that a component which reexports an imported function can't be run in Wasmtime. One of the main reasons for this is that when calling a component function Wasmtime wants to lower arguments first and then have them lifted when the host is called. With a reexport though there's not actually anything to lower into so we'd sort of need something similar to a table on the side or maybe a linear memory and that seems like it'd get quite complicated quite quickly for not really all that much benefit. As-such for now this simply returns a first-class error (rather than the current panic) in situations like this.
6 lines
200 B
Plaintext
6 lines
200 B
Plaintext
(assert_invalid
|
|
(component
|
|
(import "host-return-two" (func $f (result u32)))
|
|
(export "x" (func $f)))
|
|
"component export `x` is a reexport of an imported function which is not implemented")
|