diff --git a/PR_tipset_reservations_ffi.md b/PR_tipset_reservations_ffi.md new file mode 100644 index 00000000..56e7cdfd --- /dev/null +++ b/PR_tipset_reservations_ffi.md @@ -0,0 +1,73 @@ +# feat: add FVM reservation Begin/End FFI with error messages + +This PR wires the ref‑fvm reservation session API through filecoin‑ffi and extends the Begin/End FFI to return short human‑readable error messages alongside status codes. Lotus uses the status codes for gating and the messages for logging; ref‑fvm remains network‑version agnostic. + +## Summary + +- Add C ABI exports for `FVM_BeginReservations` / `FVM_EndReservations` with status codes plus optional error strings. +- Provide Go wrappers that map status codes to typed errors and attach the engine‑provided message when present. +- Keep the status‑code contract as the only semantic signal for hosts (messages are logging only). + +## Changes + +### Cgo surface and Go bindings + +- **`cgo/fvm.go`** + - Extend C declarations: + - `int32_t FVM_BeginReservations(InnerFvmMachine_t *executor, const uint8_t *cbor_plan_ptr, size_t cbor_plan_len, const uint8_t **error_msg_ptr, size_t *error_msg_len);` + - `int32_t FVM_EndReservations(InnerFvmMachine_t *executor, const uint8_t **error_msg_ptr, size_t *error_msg_len);` + - `void FVM_DestroyReservationErrorMessage(uint8_t *error_msg_ptr, size_t error_msg_len);` + - Add Go wrappers: + - `func FvmBeginReservations(executor *FvmMachine, plan SliceRefUint8) (int32, string)` + - `func FvmEndReservations(executor *FvmMachine) (int32, string)` + - Behaviour: + - Call the C ABI, copy the returned message (if any) into Go memory, and free the FFI allocation via `FVM_DestroyReservationErrorMessage`. + +- **`fvm.go`** + - Define typed reservation errors: + - `ErrReservationsNotImplemented` + - `ErrReservationsInsufficientFunds` + - `ErrReservationsSessionOpen` + - `ErrReservationsSessionClosed` + - `ErrReservationsNonZeroRemainder` + - `ErrReservationsPlanTooLarge` + - `ErrReservationsOverflow` + - `ErrReservationsInvariantViolation` + - Implement: + - `ReservationStatusToError(code int32) error` mapping raw status codes to these sentinels. + - `(*FVM).BeginReservations(plan []byte) error`: + - Calls `cgo.FvmBeginReservations`, maps status to a typed error, and if a non‑empty message is present, wraps the error as `fmt.Errorf("%w: %s", baseErr, msg)`. + - `(*FVM).EndReservations() error` with analogous behaviour. + - These APIs are called by Lotus’ FVM wrapper (`chain/vm/fvm.go`) when orchestrating Begin/End reservations. + +### Rust FFI glue + +- **`rust/src/fvm/machine.rs`** + - Introduce helper: + - `fn set_reservation_error_message_out(error_msg_ptr_out: *mut *const u8, error_msg_len_out: *mut usize, msg: &str)` to allocate and expose a short message over the FFI. + - Add `fn map_reservation_error_to_status(err: ReservationError, error_msg_ptr_out: *mut *const u8, error_msg_len_out: *mut usize) -> FvmReservationStatus` that: + - Maps `fvm4::executor::ReservationError` variants to `FvmReservationStatus`. + - Sets a short message string for non‑OK statuses, e.g.: + - `ErrInsufficientFundsAtBegin { sender }` → message including sender ID. + - `ErrReservationInvariant(reason)` → message including the invariant description. + - Lock poisoning or missing executor → `ErrReservationInvariant` with a descriptive message. + - Update: + - `FVM_BeginReservations(...) -> FvmReservationStatus` to: + - Decode the plan, look up the current `InnerFvmMachine`, and call `executor.begin_reservations(plan)`. + - On error, call `map_reservation_error_to_status` to populate both status and message. + - `FVM_EndReservations() -> FvmReservationStatus` similarly calls `executor.end_reservations()` and uses the mapping helper on error. + - Add tests that: + - Exercise `map_reservation_error_to_status` for representative errors (`InsufficientFundsAtBegin`, `ReservationInvariant`) and verify that: + - Status values are as expected. + - Returned messages are non‑empty and contain the relevant context. + - `FVM_DestroyReservationErrorMessage` can free the allocation safely. + +### Tests + +Error propagation is verified via integration tests in consuming repositories (e.g. Lotus). + +## Notes + +- Hosts must continue to base consensus decisions purely on status codes (mapped to typed errors on the Go side). The new messages are for logging and operator diagnostics only. +- The FFI remains agnostic to network version; activation and gating are handled entirely in Lotus using the tipset network version and feature flags. + diff --git a/cgo/fvm.go b/cgo/fvm.go index 38affcf6..70112b6d 100644 --- a/cgo/fvm.go +++ b/cgo/fvm.go @@ -7,8 +7,23 @@ package cgo #cgo pkg-config: ${SRCDIR}/../filcrypto.pc #include "../filcrypto.h" #include + +// Reservation session C ABI. These declarations mirror the FVM_BeginReservations +// and FVM_EndReservations exports defined in the Rust FFI. +// Status codes follow the FvmReservationStatus enum: +// 0 = Ok +// 1 = ErrNotImplemented +// 2 = ErrInsufficientFundsAtBegin +// 3 = ErrSessionOpen +// 4 = ErrSessionClosed +// 5 = ErrNonZeroRemainder +// 6 = ErrPlanTooLarge +// 7 = ErrOverflow +// 8 = ErrReservationInvariant +void FVM_DestroyReservationErrorMessage(uint8_t *error_msg_ptr, size_t error_msg_len); */ import "C" +import "unsafe" func CreateFvmMachine(fvmVersion FvmRegisteredVersion, chainEpoch, chainTimestamp, chainId, baseFeeHi, baseFeeLo, baseCircSupplyHi, baseCircSupplyLo, networkVersion uint64, stateRoot SliceRefUint8, tracing, flushAllBlocks bool, blockstoreId, externsId uint64) (*FvmMachine, error) { resp := (*resultFvmMachine)(C.create_fvm_machine( @@ -94,3 +109,39 @@ func FvmMachineFlush(executor *FvmMachine) ([]byte, error) { } return (SliceBoxedUint8)(resp.value).copy(), nil } + +// FvmBeginReservations invokes the FVM_BeginReservations C ABI with a CBOR-encoded plan. +// It returns the raw reservation status code as defined by FvmReservationStatus, +// along with an optional, human-readable error message from the engine. +func FvmBeginReservations(executor *FvmMachine, plan SliceRefUint8) (int32, string) { + var msgPtr *C.uint8_t + var msgLen C.size_t + + status := C.FVM_BeginReservations((*C.InnerFvmMachine_t)(executor), plan.ptr, plan.len, &msgPtr, &msgLen) + + if msgPtr == nil || msgLen == 0 { + return int32(status), "" + } + + msgBytes := C.GoBytes(unsafe.Pointer(msgPtr), C.int(msgLen)) + C.FVM_DestroyReservationErrorMessage(msgPtr, msgLen) + + return int32(status), string(msgBytes) +} + +// FvmEndReservations invokes the FVM_EndReservations C ABI and returns the raw status code. +func FvmEndReservations(executor *FvmMachine) (int32, string) { + var msgPtr *C.uint8_t + var msgLen C.size_t + + status := C.FVM_EndReservations((*C.InnerFvmMachine_t)(executor), &msgPtr, &msgLen) + + if msgPtr == nil || msgLen == 0 { + return int32(status), "" + } + + msgBytes := C.GoBytes(unsafe.Pointer(msgPtr), C.int(msgLen)) + C.FVM_DestroyReservationErrorMessage(msgPtr, msgLen) + + return int32(status), string(msgBytes) +} diff --git a/fvm.go b/fvm.go index 81cf2b6c..e238a116 100644 --- a/fvm.go +++ b/fvm.go @@ -28,6 +28,42 @@ type FVM struct { executor *cgo.FvmMachine } +var ( + ErrReservationsNotImplemented = fmt.Errorf("fvm reservations not implemented") + ErrReservationsInsufficientFunds = fmt.Errorf("fvm reservation insufficient funds at begin") + ErrReservationsSessionOpen = fmt.Errorf("fvm reservation session already open") + ErrReservationsSessionClosed = fmt.Errorf("fvm reservation session closed") + ErrReservationsNonZeroRemainder = fmt.Errorf("fvm reservation non-zero remainder at end") + ErrReservationsPlanTooLarge = fmt.Errorf("fvm reservation plan too large") + ErrReservationsOverflow = fmt.Errorf("fvm reservation arithmetic overflow") + ErrReservationsInvariantViolation = fmt.Errorf("fvm reservation invariant violation") +) + +func ReservationStatusToError(code int32) error { + switch code { + case 0: + return nil + case 1: + return ErrReservationsNotImplemented + case 2: + return ErrReservationsInsufficientFunds + case 3: + return ErrReservationsSessionOpen + case 4: + return ErrReservationsSessionClosed + case 5: + return ErrReservationsNonZeroRemainder + case 6: + return ErrReservationsPlanTooLarge + case 7: + return ErrReservationsOverflow + case 8: + return ErrReservationsInvariantViolation + default: + return fmt.Errorf("unknown FVM reservation status code: %d", code) + } +} + const ( applyExplicit = iota applyImplicit @@ -119,6 +155,38 @@ func CreateFVM(opts *FVMOpts) (*FVM, error) { return fvm, nil } +// BeginReservations starts a reservation session for the given CBOR-encoded plan. +// It returns a typed error based on the underlying FVM reservation status code, +// optionally wrapped with a short human-readable message from the engine. +func (f *FVM) BeginReservations(plan []byte) error { + defer runtime.KeepAlive(f) + status, msg := cgo.FvmBeginReservations(f.executor, cgo.AsSliceRefUint8(plan)) + baseErr := ReservationStatusToError(status) + if baseErr == nil { + return nil + } + if msg == "" { + return baseErr + } + return fmt.Errorf("%w: %s", baseErr, msg) +} + +// EndReservations ends the active reservation session. +// It returns a typed error based on the underlying FVM reservation status code, +// optionally wrapped with a short human-readable message from the engine. +func (f *FVM) EndReservations() error { + defer runtime.KeepAlive(f) + status, msg := cgo.FvmEndReservations(f.executor) + baseErr := ReservationStatusToError(status) + if baseErr == nil { + return nil + } + if msg == "" { + return baseErr + } + return fmt.Errorf("%w: %s", baseErr, msg) +} + func (f *FVM) ApplyMessage(msgBytes []byte, chainLen uint) (*ApplyRet, error) { // NOTE: we need to call KeepAlive here (and below) because go doesn't guarantee that the // receiver will live to the end of the function. If we don't do this, go _will_ garbage diff --git a/rust/Cargo.lock b/rust/Cargo.lock index ddcfaa6f..29f242e9 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -4,18 +4,18 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -30,9 +30,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -45,9 +45,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "ambassador" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b27ba24e4d8a188489d5a03c7fabc167a60809a383cdb4d15feb37479cd2a48" +checksum = "e68de4cdc6006162265d0957edb4a860fe4e711b1dc17a5746fd95f952f08285" dependencies = [ "itertools 0.10.5", "proc-macro2", @@ -55,12 +55,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -72,18 +66,18 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.97" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" dependencies = [ "backtrace", ] [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] name = "arrayref" @@ -103,17 +97,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "async-trait" -version = "0.1.88" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "atty" version = "0.2.14" @@ -127,15 +110,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -143,7 +126,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets", + "windows-link", ] [[package]] @@ -158,6 +141,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base256emoji" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" +dependencies = [ + "const-str", + "match-lookup", +] + [[package]] name = "bellpepper" version = "0.2.1" @@ -230,11 +223,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -318,9 +311,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c79a94619fade3c0b887670333513a67ac28a6a7e653eb260bf0d4103db38d" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -347,9 +340,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" dependencies = [ "allocator-api2", ] @@ -386,10 +379,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.18" +version = "1.2.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525046617d8376e3db1deffb079e91cef90a89fc3ca5c185bbf8c9ecdd15cd5c" +checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -397,9 +391,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" @@ -414,11 +408,10 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "num-traits", "windows-link", @@ -461,22 +454,11 @@ dependencies = [ [[package]] name = "cobs" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" - -[[package]] -name = "config" -version = "0.12.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ad70579325f1a38ea4c13412b82241c5900700a69785d73e2736bd65a33f86" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "async-trait", - "lazy_static", - "nom", - "pathdiff", - "serde", - "toml 0.5.11", + "thiserror 2.0.17", ] [[package]] @@ -488,7 +470,7 @@ dependencies = [ "nom", "pathdiff", "serde", - "toml 0.8.20", + "toml", ] [[package]] @@ -497,6 +479,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-str" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -511,9 +499,9 @@ checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "convert_case" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" dependencies = [ "unicode-segmentation", ] @@ -544,33 +532,36 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4b56ebe316895d3fa37775d0a87b0c889cc933f5c8b253dbcc7c7bcb7fe7e4" +checksum = "90431884c6dd00d473229135f69cb43a2257c12f05ca478f994f4778c0607f28" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95cabbc01dfbd7dcd6c329ca44f0212910309c221797ac736a67a5bc8857fe1b" +checksum = "7e023ca3e629d01bb1215a0846099dfd9065060c07e4727b2e4d49060c2a6e4b" +dependencies = [ + "cranelift-srcgen", +] [[package]] name = "cranelift-bforest" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ffe46df300a45f1dc6f609dc808ce963f0e3a2e971682c479a2d13e3b9b8ef" +checksum = "a61a409e5403fe1b7d4f49fecde2a950790c8dfed897c60da0dfb30af7689011" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b265bed7c51e1921fdae6419791d31af77d33662ee56d7b0fa0704dc8d231cab" +checksum = "aaa87718ca965f169ee43a7b5f89e46e06f93229adc62949d23fcfa8d2590d05" dependencies = [ "serde", "serde_derive", @@ -578,9 +569,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e606230a7e3a6897d603761baee0d19f88d077f17b996bb5089488a29ae96e41" +checksum = "134d091c729077b82b14cfad1ed9df542901175c70eefa453c26a375bd1de1c8" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -592,7 +583,7 @@ dependencies = [ "cranelift-entity", "cranelift-isle", "gimli", - "hashbrown 0.15.2", + "hashbrown 0.15.5", "log", "pulley-interpreter", "regalloc2", @@ -600,39 +591,42 @@ dependencies = [ "serde", "smallvec", "target-lexicon", + "wasmtime-internal-math", ] [[package]] name = "cranelift-codegen-meta" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a63bffafc23bc60969ad528e138788495999d935f0adcfd6543cb151ca8637d" +checksum = "9c1529f8643e11f6c5d3954295f3b3923ab251cd3220d0eb034115345e0c953e" dependencies = [ - "cranelift-assembler-x64", + "cranelift-assembler-x64-meta", "cranelift-codegen-shared", + "cranelift-srcgen", + "heck", "pulley-interpreter", ] [[package]] name = "cranelift-codegen-shared" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af50281b67324b58e843170a6a5943cf6d387c06f7eeacc9f5696e4ab7ae7d7e" +checksum = "3a17d7ff63eb0ef851174f4c31a073bcc5886664327e00416dc4fd01aa0d00a8" [[package]] name = "cranelift-control" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c20c1b38d1abfbcebb0032e497e71156c0e3b8dcb3f0a92b9863b7bcaec290c" +checksum = "209b093d693e67630415600597d4d5faea798315422b7648862213b58668fe04" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2c67d95507c51b4a1ff3f3555fe4bfec36b9e13c1b684ccc602736f5d5f4a2" +checksum = "b48f2b24fc3eec954a1d17e5a9c04957ba24f6202dbaa8df52472ba7624e854a" dependencies = [ "cranelift-bitset", "serde", @@ -641,9 +635,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e002691cc69c38b54fc7ec93e5be5b744f627d027031d991cc845d1d512d0ce" +checksum = "ca8aea478d61a71f7f56d19ee2642359c00fc2fa54bc0db0d6c5edd52f1d3efd" dependencies = [ "cranelift-codegen", "log", @@ -653,26 +647,32 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93588ed1796cbcb0e2ad160403509e2c5d330d80dd6e0014ac6774c7ebac496" +checksum = "da142f3cc42beaa44bf2558567751816c6adf776f2cfc40ba79ff9e5c232d808" [[package]] name = "cranelift-native" -version = "0.118.0" +version = "0.123.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5b09bdd6407bf5d89661b80cf926ce731c9e8cc184bf49102267a2369a8358e" +checksum = "be7b57410e388de0828fa9178e8693abe996bf2356a7f55be35719ee5b162755" dependencies = [ "cranelift-codegen", "libc", "target-lexicon", ] +[[package]] +name = "cranelift-srcgen" +version = "0.123.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9641751da85481f0e04033228403eca2becd2a3d9aff56f6c8bed8b9147bfc" + [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -747,9 +747,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array 0.14.7", "typenum", @@ -813,7 +813,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -824,20 +824,20 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] name = "data-encoding" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "data-encoding-macro" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9724adfcf41f45bf652b3995837669d73c4d49a1b5ac1ff82905ac7d9b5558" +checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -845,19 +845,19 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e4fdb82bd54a12e42fb58a800dcae6b9e13982238ce2296dc3570b92148e1f" +checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -871,7 +871,7 @@ checksum = "74ef43543e701c01ad77d3a5922755c6a1d71b22d942cb8042be4994b380caff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -892,7 +892,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -902,28 +902,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] name = "derive_more" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" dependencies = [ "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.100", + "rustc_version", + "syn 2.0.111", "unicode-xid", ] @@ -953,7 +954,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -1076,12 +1077,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.11" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.60.2", ] [[package]] @@ -1096,40 +1097,40 @@ dependencies = [ [[package]] name = "execute" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a82608ee96ce76aeab659e9b8d3c2b787bffd223199af88c674923d861ada10" +checksum = "0be3cc61fe54b4cae4463cdbda0401978ffe19d4dcc7a5201a312cddf64726dd" dependencies = [ "execute-command-macro", "execute-command-tokens", - "generic-array 1.2.0", + "generic-array 1.3.5", ] [[package]] name = "execute-command-macro" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90dec53d547564e911dc4ff3ecb726a64cf41a6fa01a2370ebc0d95175dd08bd" +checksum = "b3e748391d89b43c52decaed8645b4a83a09d14f5ee868071c6813389e9e7036" dependencies = [ "execute-command-macro-impl", ] [[package]] name = "execute-command-macro-impl" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8cd46a041ad005ab9c71263f9a0ff5b529eac0fe4cc9b4a20f4f0765d8cf4b" +checksum = "57dd896da3fbb77138059b015c013459d96063c66bcdd3b9094ff2e9d3f19a47" dependencies = [ "execute-command-tokens", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] name = "execute-command-tokens" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69dc321eb6be977f44674620ca3aa21703cb20ffbe560e1ae97da08401ffbcad" +checksum = "729eda2ea2f6c5ef85150c85a9b2ce0a8e01f040e59cdb32521eaa6c840c9d51" [[package]] name = "ext-trait" @@ -1184,15 +1185,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "fdlimit" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1b" -dependencies = [ - "libc", -] - [[package]] name = "fdlimit" version = "0.3.0" @@ -1246,21 +1238,21 @@ dependencies = [ "blstrs", "cid", "fil_logger", - "filecoin-proofs-api 19.0.0", + "filecoin-proofs-api", "filepath", - "fvm 2.11.0", - "fvm 3.13.0", - "fvm 4.7.4", + "fvm 2.11.3", + "fvm 3.13.3", + "fvm 4.7.5", "fvm_ipld_blockstore", "fvm_ipld_encoding", - "fvm_shared 2.11.0", - "fvm_shared 3.13.0", - "fvm_shared 4.7.4", + "fvm_shared 2.11.3", + "fvm_shared 3.13.3", + "fvm_shared 4.7.5", "group", "lazy_static", "libc", "log", - "memmap2 0.9.5", + "memmap2 0.9.9", "num-traits", "rand", "rand_chacha", @@ -1275,29 +1267,9 @@ dependencies = [ [[package]] name = "filecoin-hashers" -version = "13.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85413176cea16bfe171caafab023044820c0033b243b535b19116776ffd3f285" -dependencies = [ - "anyhow", - "bellperson", - "blstrs", - "ff", - "generic-array 0.14.7", - "hex", - "lazy_static", - "merkletree", - "neptune", - "rand", - "serde", - "sha2", -] - -[[package]] -name = "filecoin-hashers" -version = "14.0.0" +version = "14.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35146fe3c46db098607ca7decb0349236a90592d6fee0c2eea7301dd1f5733ac" +checksum = "9081144cced0c2b7dc6e7337c2c8c7f4c6ff7ef0bb9c0b75b7f1aaeb1428ebd7" dependencies = [ "anyhow", "bellperson", @@ -1313,40 +1285,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "filecoin-proofs" -version = "18.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "096b8b483f6ed5823150daf6cd22ee8e32b3dabcb4fd70dab70044e73bcab107" -dependencies = [ - "anyhow", - "bellperson", - "bincode", - "blake2b_simd", - "blstrs", - "ff", - "filecoin-hashers 13.1.0", - "fr32 11.1.0", - "generic-array 0.14.7", - "hex", - "iowrap", - "lazy_static", - "log", - "memmap2 0.5.10", - "merkletree", - "once_cell", - "rand", - "rayon", - "serde", - "serde_json", - "sha2", - "storage-proofs-core 18.1.0", - "storage-proofs-porep 18.1.0", - "storage-proofs-post 18.1.0", - "storage-proofs-update 18.1.0", - "typenum", -] - [[package]] name = "filecoin-proofs" version = "19.0.1" @@ -1359,8 +1297,8 @@ dependencies = [ "blake2b_simd", "blstrs", "ff", - "filecoin-hashers 14.0.0", - "fr32 12.0.0", + "filecoin-hashers", + "fr32", "generic-array 0.14.7", "hex", "iowrap", @@ -1374,29 +1312,13 @@ dependencies = [ "serde", "serde_json", "sha2", - "storage-proofs-core 19.0.1", - "storage-proofs-porep 19.0.1", - "storage-proofs-post 19.0.1", - "storage-proofs-update 19.0.1", + "storage-proofs-core", + "storage-proofs-porep", + "storage-proofs-post", + "storage-proofs-update", "typenum", ] -[[package]] -name = "filecoin-proofs-api" -version = "18.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3aea8140d1e2d2ac18347e6121ee24d0e903f9cfdc2eb2ee507932e352c9e7b8" -dependencies = [ - "anyhow", - "bincode", - "blstrs", - "filecoin-proofs 18.1.0", - "fr32 11.1.0", - "lazy_static", - "serde", - "storage-proofs-core 18.1.0", -] - [[package]] name = "filecoin-proofs-api" version = "19.0.0" @@ -1406,11 +1328,11 @@ dependencies = [ "anyhow", "bincode", "blstrs", - "filecoin-proofs 19.0.1", - "fr32 12.0.0", + "filecoin-proofs", + "fr32", "lazy_static", "serde", - "storage-proofs-core 19.0.1", + "storage-proofs-core", ] [[package]] @@ -1423,6 +1345,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + [[package]] name = "flexi_logger" version = "0.24.2" @@ -1472,39 +1400,25 @@ dependencies = [ [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] [[package]] name = "fr32" -version = "11.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "627a3f3108ee3287759a45f6d5aafe48b3017509df9b677115f88266d61e0815" -dependencies = [ - "anyhow", - "blstrs", - "byte-slice-cast", - "byteorder", - "ff", - "thiserror 1.0.69", -] - -[[package]] -name = "fr32" -version = "12.0.0" +version = "12.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "421ea28e99936741d874ac1718a79d5cfdb1a4f3ad6c26950b2386ac94aa3b1a" +checksum = "cf1de08b59372f0316e8c7e304aaec13f180ccb33d55ebe02c10034a0826a2bd" dependencies = [ "anyhow", "blstrs", "byte-slice-cast", "byteorder", "ff", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1525,9 +1439,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "fvm" -version = "2.11.0" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f13787ae9133feb34220c466012c6213e37b2250c450e975e89d8605f29869e0" +checksum = "46ac319707d764f918da586d0e4a9c0cad5c1a62104d71cf681607ae018bb2a9" dependencies = [ "anyhow", "blake2b_simd", @@ -1536,13 +1450,13 @@ dependencies = [ "derive-getters", "derive_builder", "derive_more", - "filecoin-proofs-api 18.1.0", + "filecoin-proofs-api", "fvm-wasm-instrument 0.2.0", "fvm_ipld_amt", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_ipld_hamt", - "fvm_shared 2.11.0", + "fvm_shared 2.11.3", "lazy_static", "log", "multihash-codetable", @@ -1556,29 +1470,29 @@ dependencies = [ "serde", "serde_repr", "serde_tuple", - "thiserror 2.0.12", + "thiserror 2.0.17", "wasmtime", "yastl", ] [[package]] name = "fvm" -version = "3.13.0" +version = "3.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec811a96ebae4df6248d0224b6279868dde14d7d5c80ea03dcc682b5ca3f130d" +checksum = "cc667420f9eb21a12e979416f5cc56244bc08c55d69b3cd93798b393ba524a50" dependencies = [ "anyhow", "blake2b_simd", "byteorder", "cid", "derive_more", - "filecoin-proofs-api 18.1.0", + "filecoin-proofs-api", "fvm-wasm-instrument 0.4.0", "fvm_ipld_amt", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_ipld_hamt", - "fvm_shared 3.13.0", + "fvm_shared 3.13.3", "lazy_static", "log", "minstant", @@ -1592,7 +1506,7 @@ dependencies = [ "replace_with", "serde", "serde_tuple", - "thiserror 2.0.12", + "thiserror 2.0.17", "wasmtime", "wasmtime-environ", "yastl", @@ -1600,21 +1514,21 @@ dependencies = [ [[package]] name = "fvm" -version = "4.7.4" +version = "4.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed594b0fb8be1d1dbd566e19707ed5a7f3ef944bd14316562bc5ff581a1e0f1e" +checksum = "73b57c20e53ec98fa897b3a6ff3ea6e863c58a419ae012968dec273257f1a466" dependencies = [ "ambassador", "anyhow", "cid", "derive_more", - "filecoin-proofs-api 19.0.0", + "filecoin-proofs-api", "fvm-wasm-instrument 0.4.0", "fvm_ipld_amt", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_ipld_hamt", - "fvm_shared 4.7.4", + "fvm_shared 4.7.5", "lazy_static", "log", "minstant", @@ -1626,7 +1540,7 @@ dependencies = [ "replace_with", "serde", "static_assertions", - "thiserror 2.0.12", + "thiserror 2.0.17", "wasmtime", "wasmtime-environ", "yastl", @@ -1667,7 +1581,7 @@ dependencies = [ "multihash-codetable", "once_cell", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1695,7 +1609,7 @@ dependencies = [ "serde_ipld_dagcbor", "serde_repr", "serde_tuple", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -1715,14 +1629,14 @@ dependencies = [ "once_cell", "serde", "sha2", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "fvm_shared" -version = "2.11.0" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bc0622e1f2d9558c1c4881311aa4ee31fccd914949ce78e8c676d997e69828e" +checksum = "42d57fb77a8ed5cf9baab0afa9b5c0a5944bfa9cb9c9decb5fbaf1756f8136d4" dependencies = [ "anyhow", "blake2b_simd", @@ -1732,7 +1646,7 @@ dependencies = [ "cs_serde_bytes", "data-encoding", "data-encoding-macro", - "filecoin-proofs-api 18.1.0", + "filecoin-proofs-api", "fvm_ipld_blockstore", "fvm_ipld_encoding", "k256", @@ -1746,24 +1660,24 @@ dependencies = [ "serde", "serde_repr", "serde_tuple", - "thiserror 2.0.12", + "thiserror 2.0.17", "unsigned-varint", ] [[package]] name = "fvm_shared" -version = "3.13.0" +version = "3.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf991ac588f2372767b2a146f2a72e18357a07be820e7f771602a4eb9313e1a" +checksum = "942e5cb74415dc5938633fd1bf5c614808546bb324668fdcbfc8dffff2fc0e58" dependencies = [ "anyhow", - "bitflags 2.9.0", + "bitflags 2.10.0", "blake2b_simd", "bls-signatures", "cid", "data-encoding", "data-encoding-macro", - "filecoin-proofs-api 18.1.0", + "filecoin-proofs-api", "fvm_ipld_encoding", "k256", "lazy_static", @@ -1774,24 +1688,24 @@ dependencies = [ "num-traits", "serde", "serde_tuple", - "thiserror 2.0.12", + "thiserror 2.0.17", "unsigned-varint", ] [[package]] name = "fvm_shared" -version = "4.7.4" +version = "4.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ae4c07a461207b41bd8a79124baaeb191b343b4ea210793069c98a37b179b8" +checksum = "94d3a23bf6d2a96ca280745afea1a79c5b701d5ac07814ec50ea34380762d47a" dependencies = [ "anyhow", - "bitflags 2.9.0", + "bitflags 2.10.0", "blake2b_simd", "bls-signatures", "cid", "data-encoding", "data-encoding-macro", - "filecoin-proofs-api 19.0.0", + "filecoin-proofs-api", "fvm_ipld_encoding", "k256", "num-bigint", @@ -1799,7 +1713,7 @@ dependencies = [ "num-integer", "num-traits", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "unsigned-varint", ] @@ -1816,52 +1730,53 @@ dependencies = [ [[package]] name = "generic-array" -version = "1.2.0" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c8444bc9d71b935156cc0ccab7f622180808af7867b1daae6547d773591703" +checksum = "eaf57c49a95fd1fe24b90b3033bee6dc7e8f1288d51494cb44e627c295e38542" dependencies = [ + "rustversion", "typenum", ] [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", ] [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" dependencies = [ "fallible-iterator", - "indexmap 2.9.0", + "indexmap 2.12.1", "stable_deref_trait", ] [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" @@ -1884,14 +1799,26 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "foldhash", "serde", ] +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -1903,9 +1830,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1931,7 +1858,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1951,9 +1878,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1975,21 +1902,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -1998,99 +1926,61 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", + "icu_locale_core", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -2099,9 +1989,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -2110,9 +2000,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -2130,13 +2020,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.16.1", "serde", + "serde_core", ] [[package]] @@ -2151,9 +2042,9 @@ dependencies = [ [[package]] name = "inventory" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab08d7cd2c5897f2c949e5383ea7c7db03fb19130ffcfbf7eda795137ae3cb83" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" dependencies = [ "rustversion", ] @@ -2196,15 +2087,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -2231,19 +2113,19 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -2303,15 +2185,15 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.171" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libm" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "linux-raw-sys" @@ -2321,37 +2203,36 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.27" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "mach2" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" dependencies = [ "libc", ] @@ -2372,19 +2253,30 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58093314a45e00c77d5c508f76e77c3396afbbc0d01506e7fae47b018bac2b1d" +[[package]] +name = "match-lookup" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1265724d8cb29dbbc2b0f06fffb8bf1a8c0cf73a78eede9ba73a4a66c52a981e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memfd" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" +checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" dependencies = [ - "rustix 0.38.44", + "rustix 1.1.2", ] [[package]] @@ -2398,9 +2290,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -2430,9 +2322,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] @@ -2449,11 +2341,12 @@ dependencies = [ [[package]] name = "multibase" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" dependencies = [ "base-x", + "base256emoji", "data-encoding", "data-encoding-macro", ] @@ -2504,7 +2397,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", "synstructure", ] @@ -2579,7 +2472,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -2613,23 +2506,23 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.2", "libc", ] [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "crc32fast", - "hashbrown 0.15.2", - "indexmap 2.9.0", + "hashbrown 0.15.5", + "indexmap 2.12.1", "memchr", ] @@ -2687,9 +2580,9 @@ checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -2697,15 +2590,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-link", ] [[package]] @@ -2740,9 +2633,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pkg-config" @@ -2752,9 +2645,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "positioned-io" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8078ce4d22da5e8f57324d985cc9befe40c49ab0507a192d6be9e59584495c9" +checksum = "d4ec4b80060f033312b99b6874025d9503d2af87aef2dd4c516e253fbfcdada7" dependencies = [ "byteorder", "libc", @@ -2763,9 +2656,9 @@ dependencies = [ [[package]] name = "postcard" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -2773,6 +2666,15 @@ dependencies = [ "serde", ] +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2804,56 +2706,59 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.8", ] [[package]] name = "proc-macro2" -version = "1.0.94" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] [[package]] -name = "psm" -version = "0.1.25" +name = "pulley-interpreter" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58e5423e24c18cc840e1c98370b3993c6649cd1678b4d24318bcf0a083cbe88" +checksum = "0f18b4e1b955bf4d6077dbc9d1d43a3a16f8c8b011a67dbafbd671ab4335c48b" dependencies = [ - "cc", + "cranelift-bitset", + "log", + "pulley-macros", + "wasmtime-internal-math", ] [[package]] -name = "pulley-interpreter" -version = "31.0.0" +name = "pulley-macros" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3325791708ad50580aeacfcce06cb5e462c9ba7a2368e109cb2012b944b70e" +checksum = "0b4b4aee26ad4085bcde356a00853e11fe1f06f4ae0d27a1cdfac9dd2529fa62" dependencies = [ - "cranelift-bitset", - "log", - "wasmtime-math", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "radium" @@ -2888,7 +2793,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -2902,9 +2807,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -2912,9 +2817,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -2922,22 +2827,22 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.10.0", ] [[package]] name = "regalloc2" -version = "0.11.2" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc06e6b318142614e4a48bc725abbf08ff166694835c43c9dae5a9009704639a" +checksum = "5216b1837de2149f8bc8e6d5f88a9326b63b8c836ed58ce4a0a29ec736a59734" dependencies = [ "allocator-api2", "bumpalo", - "hashbrown 0.15.2", + "hashbrown 0.15.5", "log", "rustc-hash", "smallvec", @@ -2945,9 +2850,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -2957,9 +2862,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -2968,15 +2873,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "replace_with" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a8614ee435691de62bcffcf4a66d91b3594bf1428a5722e79103249a095690" +checksum = "51743d3e274e2b18df81c4dc6caf8a5b8e15dbe799e0dca05c7617380094e884" [[package]] name = "rfc6979" @@ -3033,9 +2938,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -3058,31 +2963,31 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", - "errno 0.3.11", + "bitflags 2.10.0", + "errno 0.3.14", "libc", "linux-raw-sys 0.4.15", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] name = "rustix" -version = "1.0.5" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.0", - "errno 0.3.11", + "bitflags 2.10.0", + "errno 0.3.14", "libc", - "linux-raw-sys 0.9.4", - "windows-sys", + "linux-raw-sys 0.11.0", + "windows-sys 0.60.2", ] [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" @@ -3143,44 +3048,55 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.17" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] name = "serde_ipld_dagcbor" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99600723cf53fb000a66175555098db7e75217c415bdd9a16a65d52a19dcc4fc" +checksum = "46182f4f08349a02b45c998ba3215d3f9de826246ba02bb9dddfe9a2a2100778" dependencies = [ "cbor4ii", "ipld-core", @@ -3190,14 +3106,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -3208,7 +3125,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -3243,9 +3160,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -3270,24 +3187,9 @@ checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" [[package]] name = "sha2raw" -version = "13.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73744f6a373edfc5624f452ec705a762e1154bb88c6699242bf37c56d99a6ebb" -dependencies = [ - "byteorder", - "cpufeatures", - "digest", - "fake-simd", - "lazy_static", - "opaque-debug", - "sha2-asm", -] - -[[package]] -name = "sha2raw" -version = "14.0.0" +version = "14.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90007d4997c15161e16bda035b950af95dd6ddd597c13ec676bc4aef519b466f" +checksum = "63724e248a02820435baefe81a582d39957b9f8f212c11a3c88f50c11bfdd112" dependencies = [ "byteorder", "cpufeatures", @@ -3325,9 +3227,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] @@ -3343,20 +3245,14 @@ dependencies = [ [[package]] name = "sppark" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16bf457036c0a778140ce4c3bcf9ff30c5c70a9d9c0bb04fe513af025b647b2c" +checksum = "d9c900139f3f6fdc8db217881a946adf00e935102fdd82b0e1bc19bacbffa311" dependencies = [ "cc", "which", ] -[[package]] -name = "sptr" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" - [[package]] name = "stabby" version = "36.2.2" @@ -3394,9 +3290,9 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -3404,41 +3300,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "storage-proofs-core" -version = "18.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390385ae6787ad5d4312f3b6f0462c9f6615d9a7863376f8636604e6e43f3d28" -dependencies = [ - "aes", - "anyhow", - "bellperson", - "blake2b_simd", - "blstrs", - "byteorder", - "cbc", - "config 0.12.0", - "ff", - "filecoin-hashers 13.1.0", - "fr32 11.1.0", - "fs2", - "generic-array 0.14.7", - "itertools 0.10.5", - "lazy_static", - "log", - "memmap2 0.5.10", - "merkletree", - "num_cpus", - "rand", - "rand_chacha", - "rayon", - "semver", - "serde", - "serde_json", - "sha2", - "thiserror 1.0.69", -] - [[package]] name = "storage-proofs-core" version = "19.0.1" @@ -3452,10 +3313,10 @@ dependencies = [ "blstrs", "byteorder", "cbc", - "config 0.14.1", + "config", "ff", - "filecoin-hashers 14.0.0", - "fr32 12.0.0", + "filecoin-hashers", + "fr32", "fs2", "generic-array 0.14.7", "itertools 0.13.0", @@ -3471,49 +3332,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror 2.0.12", -] - -[[package]] -name = "storage-proofs-porep" -version = "18.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd8c6bbeb00933edb41152fdabf28d2519d6a1b6ea176a793e3198a07bb9acd" -dependencies = [ - "anyhow", - "bellperson", - "bincode", - "blake2b_simd", - "blstrs", - "byte-slice-cast", - "byteorder", - "chacha20", - "crossbeam", - "fdlimit 0.2.1", - "ff", - "filecoin-hashers 13.1.0", - "fr32 11.1.0", - "generic-array 0.14.7", - "glob", - "hex", - "lazy_static", - "libc", - "log", - "memmap2 0.5.10", - "merkletree", - "neptune", - "num-bigint", - "num-traits", - "num_cpus", - "pretty_assertions", - "rayon", - "rustversion", - "serde", - "serde_json", - "sha2", - "sha2raw 13.1.0", - "storage-proofs-core 18.1.0", - "yastl", + "thiserror 2.0.17", ] [[package]] @@ -3531,10 +3350,10 @@ dependencies = [ "byteorder", "chacha20", "crossbeam", - "fdlimit 0.3.0", + "fdlimit", "ff", - "filecoin-hashers 14.0.0", - "fr32 12.0.0", + "filecoin-hashers", + "fr32", "generic-array 0.14.7", "glob", "hex", @@ -3554,31 +3373,11 @@ dependencies = [ "serde", "serde_json", "sha2", - "sha2raw 14.0.0", - "storage-proofs-core 19.0.1", + "sha2raw", + "storage-proofs-core", "yastl", ] -[[package]] -name = "storage-proofs-post" -version = "18.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779fbfe1455a57d2a7fd655ce1b2e97bf9f238b65c71919e92aa9df8f2ced8b1" -dependencies = [ - "anyhow", - "bellperson", - "blstrs", - "byteorder", - "ff", - "filecoin-hashers 13.1.0", - "generic-array 0.14.7", - "log", - "rayon", - "serde", - "sha2", - "storage-proofs-core 18.1.0", -] - [[package]] name = "storage-proofs-post" version = "19.0.1" @@ -3590,37 +3389,13 @@ dependencies = [ "blstrs", "byteorder", "ff", - "filecoin-hashers 14.0.0", + "filecoin-hashers", "generic-array 0.14.7", "log", "rayon", "serde", "sha2", - "storage-proofs-core 19.0.1", -] - -[[package]] -name = "storage-proofs-update" -version = "18.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4b391917dbcffa2297295971a02cc54aa19aa8b5378d539a435e78f8050153" -dependencies = [ - "anyhow", - "bellperson", - "blstrs", - "ff", - "filecoin-hashers 13.1.0", - "fr32 11.1.0", - "generic-array 0.14.7", - "lazy_static", - "log", - "memmap2 0.5.10", - "merkletree", - "neptune", - "rayon", - "serde", - "storage-proofs-core 18.1.0", - "storage-proofs-porep 18.1.0", + "storage-proofs-core", ] [[package]] @@ -3633,8 +3408,8 @@ dependencies = [ "bellperson", "blstrs", "ff", - "filecoin-hashers 14.0.0", - "fr32 12.0.0", + "filecoin-hashers", + "fr32", "generic-array 0.14.7", "lazy_static", "log", @@ -3643,8 +3418,8 @@ dependencies = [ "neptune", "rayon", "serde", - "storage-proofs-core 19.0.1", - "storage-proofs-porep 19.0.1", + "storage-proofs-core", + "storage-proofs-porep", ] [[package]] @@ -3661,9 +3436,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "supraseal-c2" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd636fe8d238305b3022c399f9973c88f58d75212ef36d2ff1ebd51e20285d5b" +checksum = "ea1b727b012f4a4ca34b3a7a90eb5cb8cca9ba614769bc6d6933094fc2be51d2" dependencies = [ "blst", "cc", @@ -3683,9 +3458,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.100" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -3694,13 +3469,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -3711,9 +3486,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" +checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c" [[package]] name = "temp-env" @@ -3726,15 +3501,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.19.1" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom 0.3.4", "once_cell", - "rustix 1.0.5", - "windows-sys", + "rustix 1.1.2", + "windows-sys 0.60.2", ] [[package]] @@ -3757,11 +3532,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -3772,18 +3547,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -3797,9 +3572,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -3807,47 +3582,75 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.11" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] -name = "toml" -version = "0.8.20" +name = "toml_datetime" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.12.1", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", + "toml_write", "winnow", ] +[[package]] +name = "toml_edit" +version = "0.23.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9b7ac41d92f2d2803f233e297127bac397df7b337e0460a1cc39d6c006dee4" +dependencies = [ + "indexmap 2.12.1", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "trait-set" version = "0.3.0" @@ -3861,15 +3664,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-segmentation" @@ -3906,21 +3709,16 @@ checksum = "0976c77def3f1f75c4ef892a292c31c0bbe9e3d0702c63044d7c76db298171a3" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -3935,50 +3733,37 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.100", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3986,22 +3771,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.100", - "wasm-bindgen-backend", + "syn 2.0.111", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] @@ -4017,12 +3802,12 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.226.0" +version = "0.236.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d81b727619aec227dce83e7f7420d4e56c79acd044642a356ea045b98d4e13" +checksum = "724fccfd4f3c24b7e589d333fc0429c68042897a7e8a5f8694f31792471841e7" dependencies = [ "leb128fmt", - "wasmparser 0.226.0", + "wasmparser 0.236.1", ] [[package]] @@ -4041,20 +3826,20 @@ version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" dependencies = [ - "bitflags 2.9.0", - "indexmap 2.9.0", + "bitflags 2.10.0", + "indexmap 2.12.1", "semver", ] [[package]] name = "wasmparser" -version = "0.226.0" +version = "0.236.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc28600dcb2ba68d7e5f1c3ba4195c2bddc918c0243fd702d0b6dbd05689b681" +checksum = "a9b1e81f3eb254cf7404a82cee6926a4a3ccc5aad80cc3d43608a070c67aa1d7" dependencies = [ - "bitflags 2.9.0", - "hashbrown 0.15.2", - "indexmap 2.9.0", + "bitflags 2.10.0", + "hashbrown 0.15.5", + "indexmap 2.12.1", "semver", "serde", ] @@ -4071,72 +3856,94 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.226.0" +version = "0.236.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "753a0516fa6c01756ee861f36878dfd9875f273aea9409d9ea390a333c5bcdc2" +checksum = "2df225df06a6df15b46e3f73ca066ff92c2e023670969f7d50ce7d5e695abbb1" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.226.0", + "wasmparser 0.236.1", ] [[package]] name = "wasmtime" -version = "31.0.0" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fe78033c72da8741e724d763daf1375c93a38bfcea99c873ee4415f6098c3f" +checksum = "2a235dd929114a9ef24170a2bd56260a687edacad33e8a7865b8c1cc663351c5" dependencies = [ "addr2line", "anyhow", - "bitflags 2.9.0", + "bitflags 2.10.0", "bumpalo", "cc", "cfg-if", - "hashbrown 0.15.2", - "indexmap 2.9.0", + "hashbrown 0.15.5", + "indexmap 2.12.1", "libc", "log", "mach2", "memfd", "object", "once_cell", - "paste", "postcard", - "psm", "pulley-interpreter", "rayon", - "rustix 0.38.44", + "rustix 1.1.2", "serde", "serde_derive", "smallvec", - "sptr", "target-lexicon", - "wasmparser 0.226.0", - "wasmtime-asm-macros", - "wasmtime-cranelift", + "wasmparser 0.236.1", "wasmtime-environ", - "wasmtime-fiber", - "wasmtime-jit-icache-coherence", - "wasmtime-math", - "wasmtime-slab", - "wasmtime-versioned-export-macros", - "windows-sys", + "wasmtime-internal-asm-macros", + "wasmtime-internal-cranelift", + "wasmtime-internal-fiber", + "wasmtime-internal-jit-debug", + "wasmtime-internal-jit-icache-coherence", + "wasmtime-internal-math", + "wasmtime-internal-slab", + "wasmtime-internal-unwinder", + "wasmtime-internal-versioned-export-macros", + "windows-sys 0.60.2", +] + +[[package]] +name = "wasmtime-environ" +version = "36.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7e455d0dc49fad35574e28c110eb23eeda80cfecbe075051892a067298e943" +dependencies = [ + "anyhow", + "cranelift-bitset", + "cranelift-entity", + "gimli", + "indexmap 2.12.1", + "log", + "object", + "postcard", + "serde", + "serde_derive", + "smallvec", + "target-lexicon", + "wasm-encoder 0.236.1", + "wasmparser 0.236.1", + "wasmprinter 0.236.1", ] [[package]] -name = "wasmtime-asm-macros" -version = "31.0.0" +name = "wasmtime-internal-asm-macros" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47f3d44ae977d70ccf80938b371d5ec60b6adedf60800b9e8dd1223bb69f4cbc" +checksum = "f8883d844cbbf729046f7580e72c1f8014b1330b0f56b323890cf05842356163" dependencies = [ "cfg-if", ] [[package]] -name = "wasmtime-cranelift" -version = "31.0.0" +name = "wasmtime-internal-cranelift" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52fc12eb8ea695a30007a4849a5fd56209dd86a15579e92e0c27c27122818505" +checksum = "0ec12999113da589f806085a967a5c3d2ac0ca26585842374bf1199dba365f00" dependencies = [ "anyhow", "cfg-if", @@ -4146,92 +3953,94 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "gimli", - "itertools 0.12.1", + "itertools 0.14.0", "log", "object", "pulley-interpreter", "smallvec", "target-lexicon", - "thiserror 1.0.69", - "wasmparser 0.226.0", + "thiserror 2.0.17", + "wasmparser 0.236.1", "wasmtime-environ", - "wasmtime-versioned-export-macros", + "wasmtime-internal-math", + "wasmtime-internal-versioned-export-macros", ] [[package]] -name = "wasmtime-environ" -version = "31.0.0" +name = "wasmtime-internal-fiber" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6b4bf08e371edf262cccb62de10e214bd4aaafaa069f1cd49c9c1c3a5ae8e4" +checksum = "86fc72924e1256cf1f4bcc70428392eb6c7725b688c505b7e099d2b3961d45e4" dependencies = [ "anyhow", - "cranelift-bitset", - "cranelift-entity", - "gimli", - "indexmap 2.9.0", - "log", - "object", - "postcard", - "serde", - "serde_derive", - "smallvec", - "target-lexicon", - "wasm-encoder 0.226.0", - "wasmparser 0.226.0", - "wasmprinter 0.226.0", + "cc", + "cfg-if", + "libc", + "rustix 1.1.2", + "wasmtime-internal-asm-macros", + "wasmtime-internal-versioned-export-macros", + "windows-sys 0.60.2", ] [[package]] -name = "wasmtime-fiber" -version = "31.0.0" +name = "wasmtime-internal-jit-debug" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8828d7d8fbe90d087a9edea9223315caf7eb434848896667e5d27889f1173" +checksum = "fc4bd73187d8f1accd19d9f10195d0d87c035e6231009ba98bb6d94fefb0ecf1" dependencies = [ - "anyhow", "cc", - "cfg-if", - "rustix 0.38.44", - "wasmtime-asm-macros", - "wasmtime-versioned-export-macros", - "windows-sys", + "wasmtime-internal-versioned-export-macros", ] [[package]] -name = "wasmtime-jit-icache-coherence" -version = "31.0.0" +name = "wasmtime-internal-jit-icache-coherence" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a54f6c6c7e9d7eeee32dfcc10db7f29d505ee7dd28d00593ea241d5f70698e64" +checksum = "0340a96a39c5ae8a48bb6794037c9fdec3bb13672dd8d688878e97233869d5ed" dependencies = [ "anyhow", "cfg-if", "libc", - "windows-sys", + "windows-sys 0.60.2", ] [[package]] -name = "wasmtime-math" -version = "31.0.0" +name = "wasmtime-internal-math" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1108aad2e6965698f9207ea79b80eda2b3dcc57dcb69f4258296d4664ae32cd" +checksum = "02d451d317f911b3aa832a427abd832a0fd28f0f659e15ffbc3f8809e897050f" dependencies = [ "libm", ] [[package]] -name = "wasmtime-slab" -version = "31.0.0" +name = "wasmtime-internal-slab" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d6a321317281b721c5530ef733e8596ecc6065035f286ccd155b3fa8e0ab2f" +checksum = "cbd2df91a81105cd5e1db81a35e5f3cf8eae871b72c97bd04a3cb5d9e21e8d77" + +[[package]] +name = "wasmtime-internal-unwinder" +version = "36.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d425451d62f8075085ebed056341d94f6fefd1cb94b1a7c7d6eb99b0682e399d" +dependencies = [ + "anyhow", + "cfg-if", + "cranelift-codegen", + "log", + "object", +] [[package]] -name = "wasmtime-versioned-export-macros" -version = "31.0.0" +name = "wasmtime-internal-versioned-export-macros" +version = "36.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5732a5c86efce7bca121a61d8c07875f6b85c1607aa86753b40f7f8bd9d3a780" +checksum = "0445c94839f5f76122f6be138ce7d7d53044a8b48a9305a9522460e836e51e0d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -4286,11 +4095,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys", + "windows-sys 0.60.2", ] [[package]] @@ -4301,9 +4110,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.61.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", @@ -4314,46 +4123,46 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-result" -version = "0.3.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ "windows-link", ] @@ -4364,7 +4173,16 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", ] [[package]] @@ -4373,14 +4191,31 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -4389,65 +4224,110 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winnow" -version = "0.7.6" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.0", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "with_builtin_macros" @@ -4469,17 +4349,11 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "wyz" @@ -4508,11 +4382,10 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -4520,34 +4393,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] [[package]] @@ -4567,15 +4440,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -4588,14 +4461,25 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", ] [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -4604,11 +4488,11 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.111", ] diff --git a/rust/src/fvm/engine.rs b/rust/src/fvm/engine.rs index 5b4a36d6..e0168925 100644 --- a/rust/src/fvm/engine.rs +++ b/rust/src/fvm/engine.rs @@ -9,13 +9,27 @@ use fvm3::engine::MultiEngine as MultiEngine3; use fvm4::engine::MultiEngine as MultiEngine4; use fvm4::executor::{ApplyKind, ApplyRet}; +use fvm4_shared::address::Address; use fvm4_shared::econ::TokenAmount; use fvm4_shared::message::Message; +use fvm4_shared::ActorID; use super::blockstore::CgoBlockstore; use super::externs::CgoExterns; use super::types::*; +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum ReservationError { + NotImplemented, + InsufficientFundsAtBegin { sender: ActorID }, + SessionOpen, + SessionClosed, + NonZeroRemainder, + PlanTooLarge, + Overflow, + ReservationInvariant(String), +} + // Generic executor; uses the current engine types pub trait CgoExecutor: Send { fn execute_message( @@ -26,6 +40,23 @@ pub trait CgoExecutor: Send { ) -> anyhow::Result; fn flush(&mut self) -> anyhow::Result; + + /// Begin a gas reservation session for the given plan. + /// + /// Default implementation reports reservations as not implemented for this engine version. + fn begin_reservations( + &mut self, + _plan: Vec<(Address, TokenAmount)>, + ) -> Result<(), ReservationError> { + Err(ReservationError::NotImplemented) + } + + /// End the active gas reservation session. + /// + /// Default implementation reports reservations as not implemented for this engine version. + fn end_reservations(&mut self) -> Result<(), ReservationError> { + Err(ReservationError::NotImplemented) + } } pub struct Config { diff --git a/rust/src/fvm/machine.rs b/rust/src/fvm/machine.rs index d1feca62..4802f3b5 100644 --- a/rust/src/fvm/machine.rs +++ b/rust/src/fvm/machine.rs @@ -26,6 +26,7 @@ use super::engine::*; use super::externs::CgoExterns; use super::types::*; use crate::destructor; +use crate::fvm::engine::ReservationError; use crate::util::types::{catch_panic_response, catch_panic_response_no_default, Result}; const STACK_SIZE: usize = 64 << 20; // 64MiB @@ -44,6 +45,21 @@ lazy_static! { const LOTUS_FVM_CONCURRENCY_ENV_NAME: &str = "LOTUS_FVM_CONCURRENCY"; const VALID_CONCURRENCY_RANGE: RangeInclusive = 1..=256; +#[derive_ReprC] +#[repr(i32)] +#[derive(PartialEq, Eq, Debug, Copy, Clone)] +pub enum FvmReservationStatus { + Ok = 0, + ErrNotImplemented = 1, + ErrInsufficientFundsAtBegin = 2, + ErrSessionOpen = 3, + ErrSessionClosed = 4, + ErrNonZeroRemainder = 5, + ErrPlanTooLarge = 6, + ErrOverflow = 7, + ErrReservationInvariant = 8, +} + fn available_parallelism() -> u32 { std::thread::available_parallelism() .map(usize::from) @@ -144,9 +160,10 @@ fn create_fvm_machine_generic( let externs = CgoExterns::new(externs_id); let engine = ENGINES.get(network_version)?; - Ok(Some( - Box::new(engine.new_executor(config, blockstore, externs)?).into(), - )) + let inner = engine.new_executor(config, blockstore, externs)?; + let boxed: repr_c::Box = Box::new(inner).into(); + + Ok(Some(boxed)) }) } } @@ -429,6 +446,267 @@ destructor!( destructor!(destroy_fvm_machine_flush_response, Result>); +#[ffi_export] +#[allow(non_snake_case)] +fn FVM_DestroyReservationErrorMessage(error_msg_ptr: *mut u8, error_msg_len: usize) { + if error_msg_ptr.is_null() || error_msg_len == 0 { + return; + } + + // Safety: the pointer and length are produced by the FFI side in + // FVM_BeginReservations/FVM_EndReservations using the same layout. + unsafe { + let layout = match std::alloc::Layout::array::(error_msg_len) { + Ok(layout) => layout, + Err(_) => return, + }; + std::alloc::dealloc(error_msg_ptr, layout); + } +} + +fn clear_reservation_error_message_out( + error_msg_ptr_out: *mut *const u8, + error_msg_len_out: *mut usize, +) { + if !error_msg_ptr_out.is_null() { + // Safety: caller provided a valid pointer. + unsafe { *error_msg_ptr_out = std::ptr::null() }; + } + if !error_msg_len_out.is_null() { + // Safety: caller provided a valid pointer. + unsafe { *error_msg_len_out = 0 }; + } +} + +fn set_reservation_error_message_out( + error_msg_ptr_out: *mut *const u8, + error_msg_len_out: *mut usize, + message: &str, +) { + if error_msg_ptr_out.is_null() || error_msg_len_out.is_null() { + return; + } + + let bytes = message.as_bytes(); + if bytes.is_empty() { + // Nothing to set; leave outputs cleared. + return; + } + + let layout = match std::alloc::Layout::array::(bytes.len()) { + Ok(layout) => layout, + Err(_) => return, + }; + + // Safety: allocate and copy the message bytes for the host. The host is + // responsible for freeing the allocation via FVM_DestroyReservationErrorMessage. + unsafe { + let ptr = std::alloc::alloc(layout); + if ptr.is_null() { + return; + } + std::ptr::copy_nonoverlapping(bytes.as_ptr(), ptr, bytes.len()); + *error_msg_ptr_out = ptr as *const u8; + *error_msg_len_out = bytes.len(); + } +} + +fn map_reservation_error_to_status( + err: ReservationError, + error_msg_ptr_out: *mut *const u8, + error_msg_len_out: *mut usize, +) -> FvmReservationStatus { + use ReservationError::*; + + match err { + NotImplemented => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservations not implemented", + ); + FvmReservationStatus::ErrNotImplemented + } + InsufficientFundsAtBegin { sender } => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + &format!("insufficient funds at begin for sender {sender}"), + ); + FvmReservationStatus::ErrInsufficientFundsAtBegin + } + SessionOpen => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation session already open", + ); + FvmReservationStatus::ErrSessionOpen + } + SessionClosed => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "no reservation session open", + ); + FvmReservationStatus::ErrSessionClosed + } + NonZeroRemainder => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation ledger has non-zero remainder at session end", + ); + FvmReservationStatus::ErrNonZeroRemainder + } + PlanTooLarge => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation plan too large", + ); + FvmReservationStatus::ErrPlanTooLarge + } + Overflow => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation arithmetic overflow or underflow", + ); + FvmReservationStatus::ErrOverflow + } + ReservationInvariant(reason) => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + &format!("reservation invariant violated: {reason}"), + ); + FvmReservationStatus::ErrReservationInvariant + } + } +} + +#[ffi_export] +#[allow(non_snake_case)] +fn FVM_BeginReservations( + executor: &'_ InnerFvmMachine, + cbor_plan_ptr: *const u8, + cbor_plan_len: usize, + error_msg_ptr_out: *mut *const u8, + error_msg_len_out: *mut usize, +) -> FvmReservationStatus { + clear_reservation_error_message_out(error_msg_ptr_out, error_msg_len_out); + + let machine_mutex = match &executor.machine { + Some(m) => m, + None => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation invariant violated: missing executor on current machine", + ); + return FvmReservationStatus::ErrReservationInvariant; + } + }; + + // Empty plan is a no-op and must not enter reservation mode. + if cbor_plan_len == 0 { + return FvmReservationStatus::Ok; + } + + // Enforce a maximum encoded plan size (256 KiB). + // This is based on a maximum of 4096 entries at 64 bytes per entry. + const MAX_PLAN_BYTES: usize = 256 * 1024; + if cbor_plan_len > MAX_PLAN_BYTES { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation plan too large (encoded bytes)", + ); + return FvmReservationStatus::ErrPlanTooLarge; + } + + let bytes = unsafe { + if cbor_plan_ptr.is_null() { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation invariant violated: null plan pointer", + ); + return FvmReservationStatus::ErrReservationInvariant; + } + std::slice::from_raw_parts(cbor_plan_ptr, cbor_plan_len) + }; + + let plan: Vec<(Address, TokenAmount)> = match fvm_ipld_encoding::from_slice(bytes) { + Ok(p) => p, + Err(_) => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation invariant violated: invalid plan CBOR encoding", + ); + return FvmReservationStatus::ErrReservationInvariant; + } + }; + + let mut executor = match machine_mutex.lock() { + Ok(guard) => guard, + Err(_) => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation invariant violated: executor lock poisoned", + ); + return FvmReservationStatus::ErrReservationInvariant; + } + }; + + match executor.begin_reservations(plan) { + Ok(()) => FvmReservationStatus::Ok, + Err(err) => map_reservation_error_to_status(err, error_msg_ptr_out, error_msg_len_out), + } +} + +#[ffi_export] +#[allow(non_snake_case)] +fn FVM_EndReservations( + executor: &'_ InnerFvmMachine, + error_msg_ptr_out: *mut *const u8, + error_msg_len_out: *mut usize, +) -> FvmReservationStatus { + clear_reservation_error_message_out(error_msg_ptr_out, error_msg_len_out); + + let machine_mutex = match &executor.machine { + Some(m) => m, + None => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation invariant violated: missing executor on current machine", + ); + return FvmReservationStatus::ErrReservationInvariant; + } + }; + + let mut executor = match machine_mutex.lock() { + Ok(guard) => guard, + Err(_) => { + set_reservation_error_message_out( + error_msg_ptr_out, + error_msg_len_out, + "reservation invariant violated: executor lock poisoned", + ); + return FvmReservationStatus::ErrReservationInvariant; + } + }; + + match executor.end_reservations() { + Ok(()) => FvmReservationStatus::Ok, + Err(err) => map_reservation_error_to_status(err, error_msg_ptr_out, error_msg_len_out), + } +} + #[derive(Clone, Debug, PartialEq, Eq, Serialize_tuple, Deserialize_tuple)] struct LotusGasCharge { pub name: Cow<'static, str>, @@ -604,6 +882,10 @@ fn build_lotus_trace( #[cfg(test)] mod test { + use super::{ + map_reservation_error_to_status, FVM_DestroyReservationErrorMessage, FvmReservationStatus, + }; + use crate::fvm::engine::ReservationError; use crate::fvm::machine::{build_lotus_trace, LotusGasCharge}; use fvm4::gas::Gas; use fvm4::gas::GasCharge; @@ -681,4 +963,58 @@ mod test { assert_eq!(lotus_trace.logs[0], "something happened"); assert_eq!(lotus_trace.logs[1], "something else happened"); } + + #[test] + fn reservation_error_mapping_sets_message_for_insufficient_funds() { + let mut msg_ptr: *const u8 = std::ptr::null(); + let mut msg_len: usize = 0; + + let status = map_reservation_error_to_status( + ReservationError::InsufficientFundsAtBegin { sender: 42 }, + &mut msg_ptr, + &mut msg_len, + ); + + assert_eq!(status, FvmReservationStatus::ErrInsufficientFundsAtBegin); + assert!(!msg_ptr.is_null()); + assert!(msg_len > 0); + + let msg = unsafe { + let slice = std::slice::from_raw_parts(msg_ptr, msg_len); + std::str::from_utf8(slice).expect("reservation error message is valid UTF-8") + }; + assert!( + msg.contains("sender 42"), + "expected message to contain sender id, got {msg}" + ); + + FVM_DestroyReservationErrorMessage(msg_ptr as *mut u8, msg_len); + } + + #[test] + fn reservation_error_mapping_sets_message_for_invariant() { + let mut msg_ptr: *const u8 = std::ptr::null(); + let mut msg_len: usize = 0; + + let status = map_reservation_error_to_status( + ReservationError::ReservationInvariant("test invariant".to_string()), + &mut msg_ptr, + &mut msg_len, + ); + + assert_eq!(status, FvmReservationStatus::ErrReservationInvariant); + assert!(!msg_ptr.is_null()); + assert!(msg_len > 0); + + let msg = unsafe { + let slice = std::slice::from_raw_parts(msg_ptr, msg_len); + std::str::from_utf8(slice).expect("reservation error message is valid UTF-8") + }; + assert!( + msg.contains("test invariant"), + "expected message to contain invariant reason, got {msg}" + ); + + FVM_DestroyReservationErrorMessage(msg_ptr as *mut u8, msg_len); + } } diff --git a/rust/src/proofs/api.rs b/rust/src/proofs/api.rs index 7b0a686e..e837520b 100644 --- a/rust/src/proofs/api.rs +++ b/rust/src/proofs/api.rs @@ -1718,7 +1718,7 @@ pub mod tests { let registered_proof_window_post = RegisteredPoStProof::StackedDrgWindow2KiBV1_1; let cache_dir = tempfile::tempdir()?; - let cache_dir_path = cache_dir.into_path(); + let cache_dir_path = cache_dir.keep(); let cache_dir_path_ref = as_bytes(&cache_dir_path); let prover_id = [1u8; 32]; @@ -1962,9 +1962,9 @@ pub mod tests { let registered_proof_empty_sector_update = RegisteredUpdateProof::StackedDrg2KiBV1; let new_cache_dir = tempfile::tempdir()?; - let new_cache_dir_path = new_cache_dir.into_path(); + let new_cache_dir_path = new_cache_dir.keep(); let removed_data_dir = tempfile::tempdir()?; - let removed_data_dir_path = removed_data_dir.into_path(); + let removed_data_dir_path = removed_data_dir.keep(); let buf_b: Vec = (0..2032).map(|_| rng.gen()).collect(); let mut piece_file_c = tempfile::tempfile()?; @@ -2820,7 +2820,7 @@ pub mod tests { let registered_proof_window_post = RegisteredPoStProof::StackedDrgWindow2KiBV1_1; let cache_dir = tempfile::tempdir()?; - let cache_dir_path = cache_dir.into_path(); + let cache_dir_path = cache_dir.keep(); let cache_dir_path_ref = as_bytes(&cache_dir_path); let prover_id = [1u8; 32]; @@ -3009,7 +3009,7 @@ pub mod tests { ) -> Result<()> { // miscellaneous setup and shared values let cache_dir = tempfile::tempdir()?; - let cache_dir_path = cache_dir.into_path(); + let cache_dir_path = cache_dir.keep(); let cache_dir_path_ref = as_bytes(&cache_dir_path); let prover_id = [1u8; 32];