Add module import validation and configurable failure handling#284
Draft
wbssbw wants to merge 4 commits intoobelisk:mainfrom
Draft
Add module import validation and configurable failure handling#284wbssbw wants to merge 4 commits intoobelisk:mainfrom
wbssbw wants to merge 4 commits intoobelisk:mainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
This change enhances module loading safety and configurability by validating module imports at compile time and adding configurable behavior for handling various failure modes. The API function registration code was also refactored using a declarative macro to reduce boilerplate and improve maintainability.
Changes
Code refactoring:
runtime/plaid/src/functions/api.rsusing a newdefine_api_functions!macro that generates both the function registration logic and a lookup functionis_known_api_functionfrom thefunctionsmodule for use in module validationModule loading improvements:
MissingFunctionerror if an unknown import is detectedConfiguration:
FailureBehaviorconfiguration struct with three panic options:panic_on_module_parsing_failure- terminates if module file parsing failspanic_on_module_compilation_failure- terminates if WASM compilation failspanic_on_invalid_signature- terminates if signature verification failsRationale
Previously, modules with invalid imports would fail at runtime when attempting to call undefined functions, making debugging difficult. By validating imports at compile time, errors are surfaced earlier with clearer messages.
The refactored API registration code reduces maintenance burden and makes it easier to audit which functions are exposed to WASM modules.