Repository navigation
v0.3.0
Release Notes - ZEVM v0.3.0
Release Date: December 2, 2025
Static Linking & Cross-Platform Build
ZEVM v0.3.0 is a production-focused release that ensures all binaries are statically linked, provides a comprehensive cross-platform build system, and verifies 100% feature parity with the Rust revm reference implementation. This release makes ZEVM ready for production deployment with fully self-contained binaries.
What's New
Static Linking Support
- Static Library Linking: All binaries now statically link
blstandmcllibraries - Self-Contained Binaries: No runtime dependency on dynamic libraries for crypto operations
- Cross-Platform Static Linking: Proper static linking support for macOS, Linux, and Windows
- C++ Standard Library Handling: Fixed Linux linking to use
libstdc++instead oflibc++for compatibility with statically linkedmcllibrary
Cross-Platform Build System
- Comprehensive Makefile: New
Makefilewith OS detection and automated dependency installation - Automated Dependency Management:
- macOS: Homebrew integration for
blst,mcl,secp256k1, andopenssl - Linux:
apt-get/dnfsupport for Ubuntu/Debian and Fedora/RHEL - Windows: vcpkg integration (prepared)
- macOS: Homebrew integration for
- Source-Based Installation: Automatic cloning and building of
blstandmclfrom source if not found in standard locations - Dependency Verification:
make check-depstarget to verify all required dependencies before building - Build Targets:
make build,make test,make install-deps,make cleanfor easy workflow
CI/CD Improvements
- Simplified CI Workflow: CI now uses Makefile for consistent builds across platforms
- Ubuntu CI Fixes: Resolved static linking issues on Linux CI runners
- macOS CI Enhancements: Proper handling of dynamic library paths during testing
- Cross-Platform Testing: Automated testing on both
ubuntu-latestandmacos-latest
Feature Parity Verification
- Precompile Coverage: All 18 precompiles verified against Rust implementation
- Gas Cost Verification: Gas costs match exactly with revm implementation
- Input/Output Format: All precompiles produce identical output to revm
- Error Handling: Error conditions and gas calculations verified
Build System Enhancements
- Improved Library Detection: Better handling of library paths and include directories
- Static Library Prioritization: Build system prefers static libraries when available
- Platform-Specific Linking: Proper C++ standard library linking per platform (libc++ on macOS, libstdc++ on Linux)
- Library Path Configuration: Support for custom library paths via build options
Documentation
- Updated README: Enhanced build instructions and dependency information
- Makefile Documentation: Inline comments explaining build targets and OS detection
Breaking Changes
None. This release is backward compatible with v0.2.0.
Migration Guide
Building from Source
The recommended way to build ZEVM is now using the Makefile:
# Install dependencies and build
make install-deps
make build
# Run tests
make test
# Clean build artifacts
make cleanStatic Linking
All binaries are now statically linked by default. This means:
- No need to install
libblst.soorlibmcl.soat runtime - Binaries are self-contained and portable
- Slightly larger binary sizes due to static linking
Dependency Installation
The Makefile automatically installs dependencies:
macOS:
make install-deps # Uses HomebrewLinux (Ubuntu/Debian):
make install-deps # Uses apt-getLinux (Fedora/RHEL):
make install-deps # Uses dnfDependencies are automatically built from source if not found in standard locations.
Technical Details
Static Linking Implementation
- Uses
addObjectFile()for static.alibraries on macOS - Uses
addLibraryPath()andlinkSystemLibrary()on Linux to avoid automaticlinkLibCpp()calls - Explicit
libstdc++linking on Linux to matchlibmcl.aABI requirements - Proper linker order: C++ standard library linked before static libraries on Linux
Build System Architecture
- OS detection via
uname -s - Conditional dependency installation based on detected OS
- Automatic fallback to source-based installation
- Library path detection and configuration
Performance
- Static linking adds minimal overhead (~5-10% larger binaries)
- Runtime performance unchanged
- Improved deployment reliability (no missing library errors)
Known Issues
- Windows static linking requires vcpkg setup (documented in CROSS_PLATFORM.md)
- Some Linux distributions may require manual installation of build tools
Full Changelog: v0.2.0...v0.3.0