Stream: git-wasmtime

Topic: wasmtime / PR #12216 Add support for map type


view this post on Zulip Wasmtime GitHub notifications bot (Dec 23 2025 at 21:42):

yordis opened PR #12216 from yordis:yordis/feat-map-support to bytecodealliance:main:

<!--
Please make sure you include the following information:

Our development process is documented in the Wasmtime book:
https://docs.wasmtime.dev/contributing-development-process.html

Please ensure all communication follows the code of conduct:
https://github.com/bytecodealliance/wasmtime/blob/main/CODE_OF_CONDUCT.md
-->

view this post on Zulip Wasmtime GitHub notifications bot (Dec 23 2025 at 21:43):

yordis edited PR #12216:

<!--
Please make sure you include the following information:

Our development process is documented in the Wasmtime book:
https://docs.wasmtime.dev/contributing-development-process.html

Please ensure all communication follows the code of conduct:
https://github.com/bytecodealliance/wasmtime/blob/main/CODE_OF_CONDUCT.md
-->

References

view this post on Zulip Wasmtime GitHub notifications bot (Dec 23 2025 at 21:44):

yordis edited PR #12216:

Context

This is adding support for map based on https://github.com/WebAssembly/component-model/pull/554

References

view this post on Zulip Wasmtime GitHub notifications bot (Dec 23 2025 at 21:51):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 23 2025 at 21:52):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 23 2025 at 21:53):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 23 2025 at 23:46):

github-actions[bot] commented on PR #12216:

Subscribe to Label Action

cc @fitzgen

<details>
This issue or pull request has been labeled: "wasmtime:api", "wasmtime:c-api", "wasmtime:config", "wizer"

Thus the following users have been cc'd because of the following labels:

To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.

Learn more.
</details>

view this post on Zulip Wasmtime GitHub notifications bot (Dec 24 2025 at 01:06):

github-actions[bot] commented on PR #12216:

Label Messager: wasmtime:config

It looks like you are changing Wasmtime's configuration options. Make sure to
complete this check list:

[fuzzing-config]: https://github.com/bytecodealliance/wasmtime/blob/ca0e8d0a1d8cefc0496dba2f77a670571d8fdcab/crates/fuzzing/src/generators.rs#L182-L194
[fuzzing-docs]: https://docs.wasmtime.dev/contributing-fuzzing.html


<details>

To modify this label's message, edit the <code>.github/label-messager/wasmtime-config.md</code> file.

To add new label messages or remove existing label messages, edit the
<code>.github/label-messager.json</code> configuration file.

Learn more.

</details>

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 18:09):

alexcrichton commented on PR #12216:

On a skim this looks like it's all in the right direction, thanks! As as a heads up the wasm-tools deps will be updated in https://github.com/bytecodealliance/wasmtime/pull/12254 which'll avoid the need for git deps. I'll take a closer look once this is further along in CI passing tests

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 20:28):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 20:32):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 20:42):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 22:56):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 23:34):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 08 2026 at 10:17):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 08 2026 at 11:46):

github-actions[bot] commented on PR #12216:

Subscribe to Label Action

cc @fitzgen

<details>
This issue or pull request has been labeled: "fuzzing"

Thus the following users have been cc'd because of the following labels:

To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.

Learn more.
</details>

view this post on Zulip Wasmtime GitHub notifications bot (Jan 08 2026 at 19:19):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 09 2026 at 02:46):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 16 2026 at 19:34):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 16 2026 at 19:55):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 16 2026 at 20:26):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 16 2026 at 20:28):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 16 2026 at 20:28):

yordis created PR review comment:

Is it ok to do this? I kept getting things to commit locally, so I added this

view this post on Zulip Wasmtime GitHub notifications bot (Jan 16 2026 at 20:28):

yordis submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 20 2026 at 20:18):

alexcrichton submitted PR review:

This is looking quite good to me, thanks for the thorough tests!

I haven't scrutinized the trampoline generation nor the lifting/lowering yet, but I can do that once the tests added here are passing (the #[ignore] ones at least).

If you can one thing I'd also recommend is modeling as many tests as possible as a *.wast test since that's generally the easiest to run and share (albeit difficult to write and debug)

view this post on Zulip Wasmtime GitHub notifications bot (Jan 20 2026 at 20:18):

alexcrichton created PR review comment:

Is this still applicable?

view this post on Zulip Wasmtime GitHub notifications bot (Jan 20 2026 at 20:18):

alexcrichton created PR review comment:

Yeah this is fine to have here, no worries

view this post on Zulip Wasmtime GitHub notifications bot (Jan 20 2026 at 20:18):

alexcrichton created PR review comment:

Mind splitting this out to a separate test file to avoid gating this preexsting test on the feature? It's not 100% relevant to us insofar as Wasmtime can put all the tests in one place, but in the interest of one day sharing tests with other runtimes it might be good to split things out by feature

view this post on Zulip Wasmtime GitHub notifications bot (Jan 20 2026 at 20:18):

alexcrichton created PR review comment:

Could this get scoped to just the tests in question using this feature?

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 06:26):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 06:42):

yordis submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 06:42):

yordis created PR review comment:

Yes, still applicable. Just that I learned I need to implement few traits still

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 06:43):

yordis deleted PR review comment.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 07:15):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 07:31):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 08:47):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 08:58):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 09:43):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 11:12):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 11:45):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 06 2026 at 16:14):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 10 2026 at 20:12):

yordis requested alexcrichton for a review on PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 16 2026 at 23:06):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 16 2026 at 23:07):

yordis has marked PR #12216 as ready for review.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 16 2026 at 23:07):

yordis requested wasmtime-fuzz-reviewers for a review on PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 16 2026 at 23:07):

yordis requested wasmtime-core-reviewers for a review on PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 16 2026 at 23:07):

yordis requested wasmtime-default-reviewers for a review on PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 20 2026 at 21:16):

alexcrichton submitted PR review:

Mostly some thoughts about deduplication/sharing of the gnarliest bits below --

view this post on Zulip Wasmtime GitHub notifications bot (Feb 20 2026 at 21:16):

alexcrichton created PR review comment:

Shouldn't this take the alignment of the value into account too?

Another possibility would be to use CanonicalAbiInfo::record(...) to calcuate this since that'll help encapsulate the alignment/etc.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 20 2026 at 21:16):

alexcrichton created PR review comment:

Is most of this code copied from translation lists? If so would it be possible to refactor things to share more amongst the two implementations?

view this post on Zulip Wasmtime GitHub notifications bot (Feb 20 2026 at 21:16):

alexcrichton created PR review comment:

Leftover TODO or still active?

view this post on Zulip Wasmtime GitHub notifications bot (Feb 20 2026 at 21:16):

alexcrichton created PR review comment:

This is a lot of duplication between HashMap and wasmtime_environ::collections::HashMap. Can this be refactored to avoid such duplication?

view this post on Zulip Wasmtime GitHub notifications bot (Feb 20 2026 at 21:16):

alexcrichton created PR review comment:

Clone here can be extremely inefficient, so can this be done without cloning all keys/values?

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 01:22):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 03:01):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 03:01):

yordis submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 03:01):

yordis created PR review comment:

It wasn't, fixed!

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 04:37):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 04:40):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 05:04):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 05:28):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 05:31):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 06:04):

yordis commented on PR #12216:

@alexcrichton addressed the comments, about the sharing stuff, feedback welcome there, I am not sure if it is the best way or not; not sure what you had in mind

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 06:05):

yordis requested alexcrichton for a review on PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 18:17):

alexcrichton submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 18:17):

alexcrichton created PR review comment:

Reading over crates/environ/src/component/types.rs again, I think it would be best to store the "tuple ABI" inside of the TypeMap structure. That way it wouldn't need to be caluclated at runtime either here or in the typed.rs case and it would only be calculated in one location.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 18:17):

alexcrichton created PR review comment:

For lifting here what I'd recommend is that since this is implemented in terms of the fallible hash map this can delegate to the fallible version, then convert the fallible version to the std version.

Fore xample linear_lift_from_flat here would call HashMap::linear_lift_form_flat(...), and if successful, would convert that to std::collections::HashMap

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 18:17):

alexcrichton created PR review comment:

That might also be a good location to store a value_offset: u32 value which is the offset from the start of the tuple to the value, so it also wouldn't need to be recomputed here for example.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 18:17):

alexcrichton created PR review comment:

What I might recommend for deduplicating this with the above HashMap implementation is to have two helpers on top of lower_map_iter, specifically linear_lower_map_to_memory and linear_lower_map_to_flat. That would have the boilerplate here (plus a generic iterator) and that way the hash map lower implementations would be one-liners to the shared functions.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 27 2026 at 18:17):

alexcrichton created PR review comment:

This would be a good place to delegate to HashMap::typecheck(...) as well for example as opposed to duplicating the method body here.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 03:40):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 04:20):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 04:22):

yordis submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 04:22):

yordis created PR review comment:

I didn’t delegate directly to HashMap::typecheck(...) because under std that HashMap alias resolves to std::collections::HashMap, so direct delegation/dual impls can overlap and cause trait conflicts.

I extracted a shared typecheck_map(...) helper instead, which removes duplication and keeps behavior identical across std and no_std.

Is this OK? Or did I missed something?

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 05:16):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 06:13):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 06:31):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 08:37):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 08:56):

yordis requested alexcrichton for a review on PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 07 2026 at 08:56):

yordis commented on PR #12216:

@alexcrichton CI :green_apple: again, :anotherone:

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 22:01):

alexcrichton submitted PR review:

Thanks again! I think this is all suitable enough to continue further iteration in-tree.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 22:02):

alexcrichton added PR #12216 Add support for map type to the merge queue.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 22:25):

github-merge-queue[bot] removed PR #12216 Add support for map type from the merge queue.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 23:08):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 23:14):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 23:15):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 23:18):

yordis updated PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 23:23):

alexcrichton has enabled auto merge for PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 23:34):

alexcrichton added PR #12216 Add support for map type to the merge queue.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 23:56):

alexcrichton merged PR #12216.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 09 2026 at 23:56):

alexcrichton removed PR #12216 Add support for map type from the merge queue.


Last updated: Mar 23 2026 at 18:16 UTC