Use object URLs for inlined linked modules #4067
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently
link_to!()
without--split-linked-modules
would build a encoded URL and return it as aString
when accessed.This makes
link_to!()
quite pointless in this case as its not much better then usinginclude_str!()
in Rust.This PR changes this case to use object URLs instead. The resulting URL is also cached on the Rust side with the help of
once_cell
(which was a dependency already), so we don't keep creating new object URLs over and over, which would be a memory leak.A fallback is built-in for service-workers, where the API isn't present.
So this change is a trade-off, the URL is now permanently stored in Wasm memory once called, but the URL is always guaranteed to be quite short, except in the case of service workers. In contrast, when not using
--split-linked-modules
, the whole file was transferred into Wasm memory.Follow-up to #3069.