Add support for i128 and u128 #4222
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.
Fixes #2822
This adds WASM ABI support for
i128andu128. Both are split into 2u64and passed as such in the ABI.The following types can now be used in argument and return positions:
i128,u128,Option<i128>, andOption<u128>. Return positions can also useResult<i128, E>andResult<u128, E>.It's important to note that
Result<Option<i128>, E>is not supported. This is because theWasmAbitrait supports at most 4 primitives, butResult<Option<i128>, E>would require 5 primitives (2 fori128, 1 for the option tag, 1 for the result tag, and 1 for the error variant value). FutureResult<Option<T>, E>ABI optimizations (either combining the result and option tag into one primitive, or raising the number of supported primitives to 5) will makeResult<Option<i128>, E>possible, but this should be a separate PR IMO.Related to #4201.