Releases: eosrio/spring
Release list
Spring v1.2.3-alpha1
Spring v1.2.3-alpha1 — eosrio/spring maintenance line
⚠️ Alpha — for testing only, not for production. First testing build of the
community-maintained 1.2.x stable line (eosrio/spring), continuingAntelopeIO/spring
after upstream stalled. Built on v1.2.2 — the version production Antelope/Vaulta chains
actually run — with a hard rule of zero compatibility breaks (no consensus/protocol-rule,
ABI/serialization/wire, or RPC/SHiP response-shape changes). The v2.0 line is out of scope.
Headline: EOS VM OC now builds on modern LLVM — implements #578
The Optimized Compiler (EOS VM OC) was stuck on LLVM ORCv1, removed in LLVM 12 and long gone
from current distros. This release migrates OC to modern LLVM (built against LLVM 18) by
bypassing ORC (AOT harvest via SimpleCompiler + RuntimeDyld), dual-path so one source still
compiles on legacy LLVM 7–11 and 14+.
Because OC executes smart-contract code on-chain, it was validated for consensus-identical
behavior before shipping even an alpha:
- ✅ ~48,000 real Jungle4 blocks synced through the LLVM-18 OC with zero
transaction_mroot
divergence. - ✅ 701/702 OC WASM-spec unit tests pass.
- ✅ Relocation-safety gate never fired → LLVM-18 OC blobs are self-contained.
The implementation is adapted from Wire Network's (Wire-Network/wire-sysio) verified LLVM
11→18 migration of the same WAVM-derived compiler — credit Kevin Heifner / Wire Network — and
re-worked onto the 1.2.x tree by eosrio.
Changes since v1.2.2
All upstream fixes below were harvested from AntelopeIO/spring PRs and credited to their
original authors. 🙏
Consensus / producer (Savanna)
- Apply blocks mid-production when our branch is locked out by a strong QC — #1888 (@heifner)
- Signal the controller to apply blocks if sync was interrupted — #1879 (@heifner)
- Do not OC-interrupt during replay — #1881 (@heifner)
P2P / networking
- Do not establish a connection if a duplicate is already connected; add
connection_idto status — #1883 (@heifner) - BP peer gossip disconnect (
connect_bp_gossip_peersflag) — #1884 (@heifner) - Reduce duplicate-trx debug log output; single-line error strings — #1885 (@heifner)
Correctness / stability
- Avoid undefined behavior — #1875 (@heifner)
- Avoid reusing
boost::flat_map::iteratorafteremplace(invalidated) — #1818 (@greg7mdp) - Explicitly initialize the atomic
timer_state_t— #1742 (@spoonincode)
Build / packaging / supply-chain
- Validate the hash of the Debian pinned package repository — #1841 (@spoonincode)
- Use Debian's package snapshot repo for old buster packages — #1834 (@spoonincode)
- Change
.deb/.rpmpackage vendor to "Vaulta Foundation" — #1870 (@spoonincode)
Test
eosrio fork work (new in this line)
- EOS VM OC → modern LLVM 18 — implements #578; adapted from Wire Network's migration (see above).
- Ubuntu 24.04 + 26.04 build platforms + CI matrix wiring; OC re-enabled on 24.04/26.04 against system
llvm-18. - Reproducible build: OC built on LLVM 18; deduped the pinned LLVM source download.
Credits
Huge thanks to the upstream AntelopeIO / Vaulta Spring contributors whose work this builds on —
Kevin Heifner (@heifner, Wire Network), Matt Witherspoon (@spoonincode), and
Greg (@greg7mdp) — and to Wire Network for the EOS VM OC LLVM-18 migration that AntelopeIO#578
is based on. Harvested, adapted to the 1.2.x line, validated, and packaged by eosrio.
Artifacts
antelope-spring_1.2.3-alpha1_amd64.deb— hermetic reproducible build. Installs and runs on
Ubuntu 20.04 / 22.04 / 24.04 / 26.04 (glibc forward-compat), full EOS VM OC included.antelope-spring-1.2.3-alpha1-x86_64.tar.zst— same build as a portable tarball.SHA256SUMS.txt— checksums for the two artifacts.
Verify: nodeos --full-version → v1.2.3-alpha1-<hash>.
What to test / known limitations
- Primary ask: run a node with
eos-vm-oc-enable=allagainst your chain and watch for any
block-validation /transaction_mrootmismatch — that is the consensus signal for AntelopeIO#578. - This is an alpha: OC-on-LLVM-18 has broad real-chain validation but limited mainnet-scale
soak time. Validate before putting it on a production producer. - CI in this repo targets self-hosted runners not yet provisioned for
eosrio/spring, so these
artifacts were built and validated locally rather than by repo CI.
Full diff: v1.2.2...v1.2.3-alpha1