Skip to content

Releases: eosrio/spring

Spring v1.2.3-alpha1

Spring v1.2.3-alpha1 Pre-release
Pre-release

Choose a tag to compare

@igorls igorls released this 05 Jun 08:15

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), continuing AntelopeIO/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_id to status — #1883 (@heifner)
  • BP peer gossip disconnect (connect_bp_gossip_peers flag) — #1884 (@heifner)
  • Reduce duplicate-trx debug log output; single-line error strings — #1885 (@heifner)

Correctness / stability

Build / packaging / supply-chain

Test

  • Wait for block 2 so block 1 doesn't get a stale timestamp — #1876 (@heifner)

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-versionv1.2.3-alpha1-<hash>.

What to test / known limitations

  • Primary ask: run a node with eos-vm-oc-enable=all against your chain and watch for any
    block-validation / transaction_mroot mismatch — 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