Open jsturtevant opened 1 month ago
Note that you can specify -Wl,--wasi-adapter,proxy
to the linker (e.g. as a CustomLinkerArg
) when targeting wasi-http, which will stub out those imports.
It is by design that the actual imports is a superset of "used" imports (including from other worlds). I expect that in the long term, as both WASI and .NET's use of it mature, this set will only grow.
CustomLinkerArg
CustomLinkerArg
-> LinkerArg
(https://github.com/dotnet/runtime/pull/107194#issuecomment-2322059659).
Tagging subscribers to 'arch-wasm': @lewing See info in area-owners.md if you want to be subscribed.
It is by design that the actual imports is a superset of "used" imports (including from other worlds). I expect that in the long term, as both WASI and .NET's use of it mature, this set will only grow.
I guess I am not following this fully. In this case the component implements wasi-http not wasi-cli. Why would it have wasi-cli imports if it's not using it?
I guess I am not following this fully. In this case the component implements wasi-http not wasi-cli
The .NET runtime assumes that it has access to the full "system library"; it differentiates these libraries by the OS component of the RID. Since we only have wasi-wasm
, there is one and only monolithic WASI.
Why would it have wasi-cli imports if it's not using it?
There is a path somewhere (which could be dynamically unreachable) that eventually calls the imports. Consider e. g. that a lot of knobs that .NET exposes are configured via environment variables.
problem statement
When building a component for
wasi:http
when running in wasmtime I get the following error:When inspecting the component built I see imports for
wasi:cli/environemnt
andwasi:cli/exit
, even though I only built against thewasi:http
world:I was able to work around it by telling wasmtime to provide the cli imports:
question
Should these imports be included in the component? Is there a way to detect during compilation if the env/exit are being used and not include them?
Discussion in Bytecode Alliance Zulip: https://bytecodealliance.zulipchat.com/#narrow/stream/407028-C.23.2F.2Enet-collaboration/topic/missing.20implementation.20was.20not.20found.20in.20linker
example
https://github.com/jsturtevant/wasi-http-oci