Home / Emurgo / cardano-serialization-lib
May 19, 2-3 AM (0)
May 19, 3-4 AM (0)
May 19, 4-5 AM (0)
May 19, 5-6 AM (0)
May 19, 6-7 AM (0)
May 19, 7-8 AM (0)
May 19, 8-9 AM (0)
May 19, 9-10 AM (0)
May 19, 10-11 AM (0)
May 19, 11-12 PM (0)
May 19, 12-1 PM (0)
May 19, 1-2 PM (0)
May 19, 2-3 PM (0)
May 19, 3-4 PM (0)
May 19, 4-5 PM (0)
May 19, 5-6 PM (0)
May 19, 6-7 PM (0)
May 19, 7-8 PM (0)
May 19, 8-9 PM (0)
May 19, 9-10 PM (0)
May 19, 10-11 PM (0)
May 19, 11-12 AM (0)
May 20, 12-1 AM (0)
May 20, 1-2 AM (0)
May 20, 2-3 AM (0)
May 20, 3-4 AM (0)
May 20, 4-5 AM (0)
May 20, 5-6 AM (0)
May 20, 6-7 AM (0)
May 20, 7-8 AM (0)
May 20, 8-9 AM (0)
May 20, 9-10 AM (0)
May 20, 10-11 AM (0)
May 20, 11-12 PM (0)
May 20, 12-1 PM (0)
May 20, 1-2 PM (0)
May 20, 2-3 PM (1)
May 20, 3-4 PM (0)
May 20, 4-5 PM (0)
May 20, 5-6 PM (0)
May 20, 6-7 PM (0)
May 20, 7-8 PM (0)
May 20, 8-9 PM (0)
May 20, 9-10 PM (0)
May 20, 10-11 PM (0)
May 20, 11-12 AM (0)
May 21, 12-1 AM (0)
May 21, 1-2 AM (0)
May 21, 2-3 AM (0)
May 21, 3-4 AM (0)
May 21, 4-5 AM (0)
May 21, 5-6 AM (0)
May 21, 6-7 AM (0)
May 21, 7-8 AM (0)
May 21, 8-9 AM (0)
May 21, 9-10 AM (0)
May 21, 10-11 AM (0)
May 21, 11-12 PM (0)
May 21, 12-1 PM (0)
May 21, 1-2 PM (0)
May 21, 2-3 PM (0)
May 21, 3-4 PM (0)
May 21, 4-5 PM (0)
May 21, 5-6 PM (0)
May 21, 6-7 PM (0)
May 21, 7-8 PM (0)
May 21, 8-9 PM (0)
May 21, 9-10 PM (0)
May 21, 10-11 PM (0)
May 21, 11-12 AM (0)
May 22, 12-1 AM (0)
May 22, 1-2 AM (0)
May 22, 2-3 AM (0)
May 22, 3-4 AM (0)
May 22, 4-5 AM (0)
May 22, 5-6 AM (0)
May 22, 6-7 AM (0)
May 22, 7-8 AM (0)
May 22, 8-9 AM (0)
May 22, 9-10 AM (0)
May 22, 10-11 AM (0)
May 22, 11-12 PM (0)
May 22, 12-1 PM (0)
May 22, 1-2 PM (0)
May 22, 2-3 PM (0)
May 22, 3-4 PM (0)
May 22, 4-5 PM (0)
May 22, 5-6 PM (0)
May 22, 6-7 PM (0)
May 22, 7-8 PM (0)
May 22, 8-9 PM (0)
May 22, 9-10 PM (0)
May 22, 10-11 PM (0)
May 22, 11-12 AM (0)
May 23, 12-1 AM (0)
May 23, 1-2 AM (0)
May 23, 2-3 AM (0)
May 23, 3-4 AM (0)
May 23, 4-5 AM (0)
May 23, 5-6 AM (0)
May 23, 6-7 AM (0)
May 23, 7-8 AM (0)
May 23, 8-9 AM (0)
May 23, 9-10 AM (0)
May 23, 10-11 AM (0)
May 23, 11-12 PM (0)
May 23, 12-1 PM (0)
May 23, 1-2 PM (0)
May 23, 2-3 PM (0)
May 23, 3-4 PM (0)
May 23, 4-5 PM (0)
May 23, 5-6 PM (0)
May 23, 6-7 PM (0)
May 23, 7-8 PM (0)
May 23, 8-9 PM (0)
May 23, 9-10 PM (0)
May 23, 10-11 PM (0)
May 23, 11-12 AM (0)
May 24, 12-1 AM (0)
May 24, 1-2 AM (0)
May 24, 2-3 AM (0)
May 24, 3-4 AM (0)
May 24, 4-5 AM (0)
May 24, 5-6 AM (0)
May 24, 6-7 AM (0)
May 24, 7-8 AM (0)
May 24, 8-9 AM (0)
May 24, 9-10 AM (0)
May 24, 10-11 AM (0)
May 24, 11-12 PM (0)
May 24, 12-1 PM (0)
May 24, 1-2 PM (0)
May 24, 2-3 PM (0)
May 24, 3-4 PM (0)
May 24, 4-5 PM (0)
May 24, 5-6 PM (0)
May 24, 6-7 PM (1)
May 24, 7-8 PM (1)
May 24, 8-9 PM (1)
May 24, 9-10 PM (4)
May 24, 10-11 PM (1)
May 24, 11-12 AM (2)
May 25, 12-1 AM (1)
May 25, 1-2 AM (0)
May 25, 2-3 AM (0)
May 25, 3-4 AM (0)
May 25, 4-5 AM (0)
May 25, 5-6 AM (0)
May 25, 6-7 AM (0)
May 25, 7-8 AM (0)
May 25, 8-9 AM (0)
May 25, 9-10 AM (0)
May 25, 10-11 AM (0)
May 25, 11-12 PM (0)
May 25, 12-1 PM (0)
May 25, 1-2 PM (0)
May 25, 2-3 PM (0)
May 25, 3-4 PM (0)
May 25, 4-5 PM (0)
May 25, 5-6 PM (0)
May 25, 6-7 PM (0)
May 25, 7-8 PM (0)
May 25, 8-9 PM (0)
May 25, 9-10 PM (0)
May 25, 10-11 PM (0)
May 25, 11-12 AM (0)
May 26, 12-1 AM (0)
May 26, 1-2 AM (0)
May 26, 2-3 AM (0)
12 commits this week May 19, 2026 - May 26, 2026
fix: make CostModel::from fallible via TryFrom<Vec<i128>>
The infallible From<Vec<i128>> was a footgun: 15.0.3 built malformed
Int silently for out-of-range values; the interim 16.0.0 work
tightened that to a panic. Both are wrong at a public boundary, so
replace with TryFrom<Vec<i128>> returning JsError on overflow.
Internal call sites (tx_builder_constants, fakes, tests) use
.try_from(...).unwrap() since their values are compile-time known
to fit. Tests assert the error path; the panic test is gone.
fix: tighten MintAssets to CDDL nonzero_int64
Conway CDDL constrains mint amounts to
  mint = {+ policy_id => {+ asset_name => nonzero_int64}}
i.e. each amount must be a non-zero int64. Previously MintAssets::insert
only rejected zero; values up to the full CBOR int range were accepted,
producing on-chain-invalid mints that would also fail later in MultiAsset
conversion (BigNum/u64).

* MintAssets::insert and MintAssets::new_from_entry now reject any value
  whose magnitude exceeds i64::MAX with a clear CDDL-citing error.
* Int gains a pub(crate) fits_int64() helper for shared use.
* CBOR deserialization is intentionally left permissive: it preserves
  on-the-wire values so callers can inspect or apply their own policy.
  Validation lives at the construction boundary instead, which is the
  only path that goes through MintAssets::insert.
* Tests updated: cover the lower CBOR-int corner, the int64 boundary
  edges on both sides, and the deserialize-passthrough behavior.
fix: pull noop_proc_macro under dont-expose-wasm on wasm targets
lib.rs falls back to noop_proc_macro::wasm_bindgen both for non-wasm
builds and for wasm builds that opt out of wasm-bindgen via the
`dont-expose-wasm` feature. The crate was previously declared only
in the non-wasm target dependency table, so consumers depending on
csl with `features = ["dont-expose-wasm"]` and target=wasm32 hit
`unresolved import `noop_proc_macro``. Declare it as an optional
wasm-target dep and wire `dont-expose-wasm` to activate it via
`dep:noop_proc_macro` — keeps it out of normal wasm builds.
build: pin wasm-bindgen per build variant
asm.js needs wasm-bindgen <=0.2.93 (binaryen's wasm2js rejects
the multi-table modules emitted from 0.2.95 onward; 0.2.94 is
yanked, 0.2.96+ requires nightly Rust). Other targets use
0.2.103, which is the floor the manifest now permits.

The manifest opens the range to ">=0.2.93, <0.3" and the build
helper drives the precise pick via `cargo update --precise` per
variant. Cargo.lock is not checked in, so the pin lives only in
the local lock for the duration of the build.
fix: align Mint and BigInt::as_int with new Int lower bound
- MintAssets::insert and CBOR deserializer reject Int::MIN_I128
  (-2^64), since |x| = 2^64 cannot fit a u64 burn amount in
  MultiAsset; previously Mint::as_negative_multiasset() would panic.
- Mint::as_multiasset replaces .unwrap() with if-let as
  defense-in-depth.
- BigInt::as_int recognizes the two-limb [0, 1] representation of
  -2^64 and maps it to Int::MIN_I128 instead of returning None.
- Tests: MintAssets rejection (insert and CBOR), BigInt::as_int
  round-trip across the full CBOR int range.