-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WASM Move Calls #1499
base: feat/identity-rebased-alpha
Are you sure you want to change the base?
WASM Move Calls #1499
Conversation
* MoveType has been moved from identity_iota_core to identity_iota_interaction * The identity_iota_interaction README has been updated to use the latest draft for folder and crate names
…iota_interaction::...`
…lpha # Conflicts: # identity_iota_core/Cargo.toml # identity_iota_core/src/rebased/iota/well_known_networks.rs
…ta_core/rebase version
…ta_core for the redesigned crate structure * Compiling identity_iota_core for wasm32 will result in one compiler error due to missing wasm-bindings for ProgrammableTransaction (TODO in identity_iota_core/src/rebased/transaction.rs) * identity_iota_core and examples are compilable for non wasm32 platforms * Remaining compiler warnings should be investigated * identity_iota_core e2e tests are compilable but will fail due to serialization/deserialization issues. For example: IotaTransactionBlockResponse bcs deserialization failed: NotSupported("deserialize_any") thread 'identity::adding_controller_works' panicked at /home/christof/Develop/iotaledger/identity.rs/identity_iota_core/src/rebased/transaction.rs:84:14: IotaTransactionBlockResponse bcs deserialization failed: NotSupported("deserialize_any") stack backtrace: 0: rust_begin_unwind 1: core::panicking::panic_fmt 2: core::result::unwrap_failed 3: <identity_iota_core::rebased::transaction::TransactionOutput<T> as core::convert::From<identity_iota_core::rebased::transaction::TransactionOutputInternal<T>>>::from 4: <T as identity_iota_core::rebased::transaction::Transaction>::execute_with_opt_gas::{{closure}} 5: identity_iota_core::rebased::transaction::Transaction::execute::{{closure}} 6: e2e::identity::adding_controller_works::{{closure}} 7: tokio::runtime::scheduler::current_thread::CurrentThread::block_on 8: tokio::runtime::runtime::Runtime::block_on 9: e2e::identity::adding_controller_works 10: core::ops::function::FnOnce::call_once note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
…ialization BCS deserialization is not available for IotaTransactionBlockResponse because the BCS format is not self describing and several struct fields of IotaTransactionBlockResponse are optionally skipped during serialization. JSON deserialization will probably be available but using a cloned instance to convert a TransactionOutputInternal into a TransactionOutput will have a much better efficiency.
…Credential All tests running successfully for the first time now
* Fix clippy error writing `&Vec` instead of `&[_]` involves a new object where a slice will do * allow error clippy::too_many_arguments
… from format checks
…nd identity_iota_interaction
…iles and add clippy + format steps for bindings/wasm/iota_interaction_ts
…s crate is processed as workspace member
… merged PR - identity_wasm rust toolchain set to "1.84.0"
…on strings returns the number of bytes also
Co-authored-by: wulfraem <[email protected]>
…feat/wasm32-develop-alpha
… non-wasm platforms
…fixed issues in reorganized typedoc.json files
I'll definitely need some more hours to deep dive into this PR especially for my personal favorite check this out 👍 🤩 One request from my side would be to change the target branch to |
Here some more context to better explain the hack used in the implementation of user-driven move-calls. WASM bindgen allows to pass Rust closures to JS, but it only accepts let f = || intent_fn(...); since In order for
let wrapped_fn = Cell::new(Some(intent_fn)); // We wrap it in an Option to leverage its Default implementation.
let f = || {
wrapped_fn
.take() // only requires shared access to self and moves out its content i.e. Option<impl FnOnce>
.unwrap() // returns an impl FnOnce
(...); // invokes and consumes `intent_fn`
}; The compiler will infer |
…o feat/ts-move-calls
Remove npm dependency @iota/iota-sdk from iota_interaction_ts package.json and use @iota/iota.js instead
Rename 'brew update' option --preinstall to --auto-update https://docs.brew.sh/Manpage#update-up-options Homebrew/brew#13299
Description of change
Port all calls to move functions to TS using IOTA's TS SDK and bind these move calls through WASM into
iota_interaction_ts
package.Links to any relevant issues
Closes #1449
Type of change
How the change has been tested
Huge trust me bro as the project is not yet compilable.