This is a pre-release supporting Protocol 28, and follows v28.0.0-rc.1. Upgrading requires changes to some contracts. See the migration guide for the full detail on each breaking change, including those released in rc.1.
Note that any changes including breaking changes may be made until the stable release.
Breaking changes
- None
Fixes
MuxedAddressvalues from differentEnvs can be compared in tests. Comparison now falls back to comparing serialized values when the object handles come from separate environments, matching every other SDK type. Such comparisons used to panic. Tests only. #2047BytesN<N>rejects anNlarger thanu32::MAXwhen converting fromBytes. On 64-bit hostsNwas truncated tou32, so aBytesof a different length could be accepted. Contracts built for Wasm were unaffected, whereusizeis 32 bits. #2050- Generated spec XDR statics are now private and hidden from docs. The
__SPEC_XDR_TYPE_*,__SPEC_XDR_EVENT_*and__SPEC_XDR_FN_*statics generated bycontracttype,contracterror,contracteventandcontractimpl, and the module wrapping the function one, no longer appear in the public API or in rustdoc. They exist only to place thecontractspecv0link section in the Wasm, and are__-prefixed#[doc(hidden)]internals nothing external is meant to reference. Rebuilt test Wasms are byte-identical. #2054 #2032
Docs
- The auth docs include a full custom account example, showing a contract account implementing
CustomAccountInterfaceend to end. #2053 - Add AFL++ fuzzing examples #2016
- The default example in the SDK docs is clearer, better representing what a first contract looks like. #2041
- Rust docs prior to release are now built and published to GitHub Pages, alongside docs.rs. #2025 #2040 #2039
Other changes
- Add an AFL++ fuzzing test crate and docs for running it. #2016
- Add socket tier 1 reachability analysis. #1923
- Run beta and nightly Rust builds on a schedule. #2026
- Remove a stale rlib/LTO comment from the fuzz crate. #2031
- Bump the gh-aw setup action to v0.87.10. #2036
- Bump version to 28.0.0-rc.2. #2055
Full Changelog: v28.0.0-rc.1...v28.0.0-rc.2