Description
The wasm-unknown
target invokes wasm-ld
with the --import-memory
option, which causes the following import to be emitted in the output:
(import "env" "memory" (memory $mimport$0 2))
This is undesirable to have as default behavior for wasm-unknown
, because it introduces a mandatory import into what is otherwise a freestanding module.
If the --import-memory
were to be removed from targets/wasm-unknown.json
ldflags, then wasm-ld
would emit this instead:
;; Declare and export the Memory, which requires no special import binding in the host
(memory $0 2)
(export "memory" (memory $0))
This option appears to have been added as part of a larger change in 2cd966d, but it's unclear from the commit message why --import-memory
was added. Based on discussion in the PR, I think it was simply to reduce the number of bytes in an absolute bare-bones "hello world" module, which IMO is not a compelling reason to have it set by default.