Releases: NomicFoundation/solx
Releases · NomicFoundation/solx
Release list
0.1.5
📝 Changelog
✨ Features
- feat(slang): thread SemanticAnalysis through emitter chain
- feat(slang): return Option from expression emission
- feat(mlir): add llvm.data_layout and llvm.target_triple to module
- feat(mlir): add typed constants, allocas, loads, and casts to builder
- feat(slang): ABI-based function naming
- feat(slang): emit initializer before alloca
- feat(slang): skip redundant casts and comparisons
- feat(mlir): align pass pipeline with solc (canonicalizer, modifier lowering)
- feat(slang): checked arithmetic with sol.cadd/sol.csub/sol.cmul/sol.cdiv
- feat(slang): rewrite logical AND/OR as sol.if + i1 alloca
- feat(slang): emit default constructor with FunctionKind attribute
- feat(dev): add a cargo clippy alias for slang
- feat(slang): migrate Sol dialect emission to ODS-generated builders (#332)
- feat(slang): add assert built-in (#345)
- feat(mlir): add lit tests (#362)
- feat(slang): emit sol.this for ThisKeyword expressions (#369)
- feat(slang): encode require string literal message (#346)
- feat(slang): use slang's
compute_canonical_signature()for method identifiers (#354) - feat(slang): lower revert statements (#361)
- feat(slang): integer literal narrowing (#367)
- feat(slang): lower additional EVM intrinsics (#376)
- feat(slang): cast function call arguments to match parameter types (#352)
- feat(cli): filter MLIR output by dialect via --emit-mlir (#380)
- feat(slang): lower emit statements (#377)
- feat(solx-dev): split LLVM utils and tests build flags (#396)
- feat(slang): lower explicit constructor body and wire the deploy module (#405)
- feat(solx-dev): add
--enable-toolsto installoptandllc(#435) - feat(slang): resolve compound Slang type variants (#387)
- feat(slang): emit multi-value return statements (#388)
- feat(slang): resolve Contract, Interface, and Enum type variants (#390)
- feat(slang): wire gasleft, msg.sig, msg.data, addr.code intrinsics (#392)
- feat(solx-dev): add --install-distribution flag for lean CI install (#439)
- feat(slang): emit tuple deconstruction statements (#389)
- feat(slang): wire cryptographic and modular-arithmetic intrinsics (#393)
- feat(slang): resolve UserDefinedValue types via target-type lookup (#410)
- feat(slang): emit sol.return after sol.revert (#370)
- feat(slang): support multi-result function calls in deconstruction (#391)
- feat(slang): emit contract-level constant references (#401)
- feat(slang): wire .length on arrays, bytes, and strings (#411)
- feat(slang): wire address.send and address.transfer (#412)
- feat(slang): wire abi.encode, abi.encodePacked, abi.encodeWithSelector, abi.encodeWithSignature, abi.decode (#414)
- feat(slang): wire IndexAccessExpression to sol.gep / sol.map (#415)
- feat(slang): wire array push/pop and array literals (#416)
- feat(slang): support a[i] / m[k] assignment targets (#419)
- feat(slang): read and write struct fields in memory, calldata, and storage (#422)
- feat(slang): wire struct-literal constructors (#424)
- feat(slang): allow runtime require message via Error(string) call (#425)
- feat(slang): emit state variable initializers in constructor (#426)
- feat(mlir): emit wide integer constants without parser round-trip (#428)
- feat(slang): support packed state variable slots (#427)
🐛 Fixes
- fix(slang): normalize Windows paths in compilation config
- fix(ci): override CARGO_TARGET_DIR for solx-dev build in build-llvm action
- fix(dev): path canonicalization in solc+MLIR build
- fix: cargo-deny failure from vulnerable rustls-webpki (#335)
- fix(mlir): remove text round-trip from finalize_module (#333)
- fix(mlir): use ptr_type for sol.alloca alloc_type attribute (#340)
- fix(slang): use declared type for state variable storage operations (#358)
- fix(slang): use arith.constant for i1 booleans (#359)
- fix: update rand to 0.9.3 for dependabot alert #8 (#336)
- fix(ci): pin MSYS2 to stabilize Windows ccache (#374)
- fix(tests): correct EIP-55 checksum in literal_types fixture (#385)
- fix(deps): update rust crate toml to 0.9 (#400)
- fix(deps): update rust crate reqwest to 0.13 (#399)
- fix(ci): fetch reference solc directly from raw.githubusercontent.com (#406)
- fix(deps): pin reqwest to 0.12 to restore HTTPS in solx-compiler-downloader (#407)
- fix(deps): update rust crate toml to v1 (#423)
- fix(ci): pin js package managers and ignore pnpm build scripts (#432)
- fix(mlir): adapt to Sol→Yul pipeline split and align codegen with solc (#436)
- fix(deps): update rust crate revm to v37 (#421)
- fix(slang): skip no-op casts in TypeConversion::emit (#386)
- fix(evmla): track typed stack through SWAPX/DUPX (#431)
- fix(ci): pin Node 24 for renovate-config-check (#440)
- fix(slang): allocate named return parameters (#413)
- fix(tester): pass debug output dir via SOLX_OUTPUT_DIR env var (#442)
- fix(llvm): pin the fix and add a test for invalid memset optimization (#441)
- fix(standard-json): always emit sourceLocation start/end (#443)
- fix(deps): update rust crate rust_xlsxwriter to 0.95 (#449)
- fix(llvm): pin the fix and add a test for irreducible CFG (#454)
- fix(deps): update rust crate revm to v38 (#468)
- fix(benchmark): solx-tester skips E codegen; Hardhat ignores the configured solx (#497)
- fix(deps): bump crossbeam-epoch to 0.9.20 (RUSTSEC-2026-0204) (#516)
- fix(deps): update rust crate revm to v40 (#511)
- fix(test-harness): fix the integration error gate and self-verify compiler (#529)
- fix(ci): derive Boost MinGW compiler tag on Windows (#530)
- fix(deps): update rust crate rust_xlsxwriter to 0.96 (#539)
- fix(deps): update rust crate num-bigint to 0.5 (#538)
- fix(deps): update rust crate revm to v41 (#541)
- fix(tests): add a test for a codegen bug caused by branch folding (#542)
📦 Other Changes
- build: bump object from 0.37.3 to 0.39.0 (#318)
- build: bump melior from 0.26.4 to 0.26.9 (#313)
- build: bump mikepenz/release-changelog-builder-action from 6.1.1 to 6.2.0 (#317)
- build: bump codecov/codecov-action from 5.5.3 to 6.0.0 (#315)
- build: bump gimli from 0.33.0 to 0.33.1 (#320)
- build: bump ron from 0.12.0 to 0.12.1 (#321)
- build: bump sha2 from 0.10.9 to 0.11.0 (#314)
- build: bump cc from 1.2.57 to 1.2.58 (#322)
- build: bump revm from 34.0.0 to 36.0.0 (#319)
- build: bump libc from 0.2.183 to 0.2.184 (#323)
- build: bump docker/login-action from 4.0.0 to 4.1.0 (#326)
- build: bump indexmap from 2.13.0 to 2.13.1 (#327)
- build: bump mshick/add-pr-comment from 3.9.0 to 3.10.0 (#324)
- ci: free disk space on macOS runners to fix flaky builds (#329)
- ci: add merge_group trigger to required status check workflows (#328)
- ci: add Socket Firewall (SFW) composite action and test workflow (#250)
- build: bump sha3 from 0.10.8 to 0.11.0 (#325)
- build: bump semver from 1.0.27 to 1.0.28 (#330)
- build: bump cc from 1.2.58 to 1.2.59 (#331)
- chore: bump slang_solidity and Rust toolchain to 1.94.0
- refactor(slang): remove catch_unwind guards
- refactor(slang): resolve member access via BuiltIn variants
- build: bump docker/build-push-action from 7.0.0 to 7.1.0 (#334)
- build: bump actions/upload-artifact from 7.0.0 to 7.0.1 (#338)
- build: bump mikepenz/release-changelog-builder-action from 6.2.0 to 6.2.1 (#339)
- build: bump softprops/action-gh-release from 2.6.1 to 3.0.0 (#343)
- ci(sfw): install SFW CA in container path (#357)
- build: bump indexmap from 2.13.1 to 2.14.0 (#349)
- build: bump rayon from 1.11.0 to 1.12.0 (#351)
- refactor(mlir): replace type cache HashMap with TypeFactory (#341)
- build: bump cc from 1.2.59 to 1.2.60 (#348)
- build: bump libc from 0.2.184 to 0.2.185 (#350)
- test(debug-info): migrate DWARF debug info validation to solx-tester (#342)
- build: bump rustls-webpki to 0.103.13 for RUSTSEC-2026-0104 (#363)
- build: bump clap from 4.6.0 to 4.6.1 (#366)
- ci(cache): re-add ccache as artifact-cache fallback (#360)
- build: bump actions/cache from 5.0.4 to 5.0.5 (#368)
- build: bump assert_cmd from 2.2.0 to 2.2.1 (#373)
- build: bump actions/setup-node from 6.3.0 to 6.4.0 (#372)
- build: bump object from 0.39.0 to 0.39.1 (#381)
- chore: Configure Renovate (#378)
- ci: extract submodule init into a composite action (#383)
- chore(deps): update github-actions (#397)
- chore(deps): update cargo minor/patch (#395)
- chore(deps): update ubuntu:24.04 docker digest to c4a8d55 (#394)
- refactor(slang): resolve callee via slang's binder (#382)
- ci(cache): drop LLVM_PARALLEL_LINK_JOBS to 1 on macOS x86 (#402)
- chore(deps): update rust crate md5 to 0.8 (#398)
- refactor(slang): don't thread
SemanticAnalysisthrough the emitters (#403) - chore(cargo): bump workspace resolver to 3 (#408)
- ci(slang): run MLIR lit tests in slang-tests workflow (#384)
- ci(llvm): disable LLVM tools on all platforms via install-distribution (#404)
- chore(deps): update github-actions (#417)
- chore(deps): update rust crate toml to v0.9.12 (#418)
- chore(renovate): pin mlir-sys to <220 (#420)
- refactor(solx-dev): move JS pkg manager pins into harness configs (#434)
- chore(deps): update dependency pnpm to v10.28.2 [security] (#438)
- chore(config): migrate Renovate config (#437)
- chore(deps): update cargo-bins/cargo-binstall action to v1.19.1 (#445)
- chore(deps): update cargo minor/patch (#444)
- chore(deps): update dependency hardhat to v3 (#450)
- chore(deps): update dependency hardhat to v2.28.6 (#446)
- chore(deps): update dependency pnpm to v10.33.4 (#447)
- chore(deps): update github-actions (#456)
- chore(deps): update rust to v1.95.0 (#458)
- chore(deps): update rust crate sha3 to 0.12 (#457)
- chore(deps): update dependency bun to v1.3.14 (#455)
- refactor(slang): Migrate to
slang_solidity_v2(#453) - ci: change runner to solx-linux-amd64-self-hosted (#375)
- chore(slang): bump slang_solidity_v2 and fix hex literal lowering (#459)
- chore(deps): update github-actions (#465)
- chore(deps): update cargo minor/patch (#466)
- chore(deps): update dependency pnpm to v11 (#467)
- chore(deps): update dependency pnpm to v11.3.0 (#469)
- chore(deps...
0.1.4
📝 Changelog
✨ Features
- feat(install): add version selection support to install script (#185)
- feat: bump Rust edition to 2024 (#190)
- feat: debug info for function definitions and calls (#187)
- feat(solx-dev): add configurable Excel report comparisons (#193)
- feat(solx-dev): add
solc buildsubcommand (#192) - feat(cli): group CLI options into sections in --help output (#195)
- feat: add MLIR infrastructure and unify solx-tester (#186)
- feat(cli): add IR output flags and consolidate debug output
- feat(debug-info): add DWARF debug info support for EVM assembly pipeline (#198)
- feat(standard-json): add IR output support for EVMLA, EthIR, and LLVM IR (#200)
- feat: integrate Slang as second Solidity frontend (#215)
- feat: add solx-mlir crate with MLIR-to-EVM pipeline (#219)
- feat: update Solidity frontend to v0.8.34
- feat: Slang + MLIR compilation pipeline (#270)
- feat: emit labeled MLIR at each pipeline stage (#308)
- perf(evm-assembly): use u64 for block tags, HashSet for visited tracking (#208)
- perf: schedule large contracts first in parallel compilation (LPT) (#309)
🐛 Fixes
- fix: install script by marking workflow_dispatch builds as prereleases (#189)
- fix(build): check for custom MLIR dialects before enabling MLIR linking (#199)
- fix(evm-assembly): correctness fixes and performance improvements (#207)
- fix(ci): resolve hardcoded MSYS2 paths for free Windows runners
- fix: update yanked dependencies (keccak, zip) (#231)
- fix: stub MLIR ExecutionEngine symbols for Windows linking
- fix: strip debuginfo from Windows debug builds to avoid PE size limit
- fix: tighten cargo-deny security settings and skip transitive duplicates
- fix(ci): unblock doc-only PRs from pending pr-checks gate
- fix: pin external test repos to commit SHAs for reproducible CI
- fix(yul): reject BLOBHASH and BLOBBASEFEE in Yul pipeline
- fix(cli): remove -O0 from --help text and add rejection test
- security: verify SHA256 checksum of downloaded Boost tarball (#243)
📚 Documentation
- docs: improve documentation clarity and README (#194)
- docs: restructure into sections, add compiler internals and developer guide (#209)
- docs: point README links to Markdown sources
- docs: add CLAUDE.md and AI agent instruction symlinks (#263)
- docs: fix documentation inconsistencies since 0.1.3 release
📦 Codebase
- Dependencies (37 updates)
- CI/CD pipeline improvements (36 changes)
- Code quality improvements (14 refactors, tests, and chores)
0.1.3
📝 Changelog
✨ Features
- feat: update to solc v0.8.33 (#179)
- feat: update LLVM to EraVM-free v21.1 repository (#174)
- feat: minimize the share of GPL-licensed code (#156)
- feat: emit a metadata tag if unsafe asm is present (#158)
- feat: inline EVM assembly
mainfunction into __entry (#170) - feat: add optnone and noinline attrs for -O0 mode (#168)
🐛 Fixes
- fix: improve the handling of empty input (#144)
- fix: pull the LLVM fix for CGP sign extension (#147)
- fix: add all source directories to allow-path (#151)
- fix: the fuzzer-discovered case with srem overflow (#173)
- fix: do not allow EVM versions before cancun (#182)
📦 Refactoring
- feat: migrate the compiler tester to this monorepo (#153)
- feat: migrates the LLVM builder to this monorepo (#145)
- feat: support REVM tracing to stdout (#166)
- feat: full Hardhat and Foundry spreadsheet reports (#175)
- fix: the order of benchmark data from solx-tester (#160)
- fix: clone the LLVM IR module before emitting assembly (#163)
- fix: some deps that are still pointing to main (#162)
- fix: replace raw reqwest downloader with a recoverable workflow (#181)
🚧 Infrastructure
- fix: the benchmark report layouts (#172)
- fix: broken documentation links and references (#177)
- fix: EVM platform lowercase and bug report link (#180)
- ci: add WTFAcademy/WTF-gas-optimization to the benchmarks (#169)
- ci: simplified benchmark runs against main (#178)
- ci: fix deploy-docs.yaml permissions (#183)
- ci: replace remaining matter-labs runners (#184)
- ci: skip disabled projects for hardhat table (#148)
- ci: support tester workflows (#157)
- ci: replace Matter Labs runners with Nomic runners (#171)
- ci: update repository references to NomicFoundation/solx (#167)
0.1.2
📝 Changelog
✨ Features
- feat: add an env var for dumping standard JSON input (#123)
- feat: add a metadata size hint for LLVM (#126)
- feat: support escaped Yul object identifiers (#129)
🐛 Fixes
- fix: emit empty contracts required by Hardhat v3 (#133)
- fix: do not call LLVMIsELF during linking (#134)
- fix: don't rematerialize CALLDATALOAD when it redefines a VR (#137)
- fix: unsafe memory asm detection in dependencies (#139)
📦 Other Changes
- ci: add a16z/cicada to tested projects (#112)
- ci: add common Foundry benchmarks (#124)
- ci: add more Foundry projects for benchmarking (#120)
- ci: update forge-benchmarks.toml to the latest version (#127)
- ci: fix the Hardhat workflow (#128)
- ci: add Hardhat v3 sample to tested projects (#135)
- ci: unify Hardhat markdown tables reporting (#142)
- chore: migrate era-compiler-* to this monorepo (#131)
0.1.1
📝 Changelog
✨ Features
- feat: temporarily disable Yul optimizations (#88)
- feat: move the spill area handling to solx (#106)
- feat: support pipeline profiling (#114)
- feat: add a special attribute to LLVM IR entry functions (#116)
- feat: support CODECOPYing constant byte arrays (#103)
- feat: include numerous LLVM optimizations (#119)
🐛 Fixes
- fix: make EVMLA block predecessors ordered again (#101)
- fix: add a placeholder object for gasEstimates (#111)
📦 Other Changes
0.1.0
📝 Changelog
✨ Features
- feat: provide linux and macos installation script (#81)
- feat: make stack never too deep again (#77)
- feat: support env-vars for solx-specific parameters (#90)
🐛 Fixes
- fix: side effects for block and transaction variables (#93)
- fix: runtime bytecode size limit check and -Oz mode (#97)
📚 Documentation
📦 Other Changes
0.1.0-alpha.4
What's Changed
Features
- feat: support the EVM-style deploy-time linking
- feat: implement placeholders in bytecode hex representation
- feat: strict selection of standard JSON output data (#65)
- feat: add remaining output data CLI parameters (#69)
- feat: remove unnecessary re-serialization of EVM assembly (#72)
- feat: add e2e/CLI tests for stdin input (#73)
- feat: do not copy Yul into the lexer (#74)
Fixes
- fix: Yul object naming assumptions and keywords (#64)
- fix: stdin input support for all languages (#63)
- fix: object ordering in deploy time linking (#68)
- fix: turn off size optimization fallback by default (#70)
Other
- chore: fix changelog for releases (#53)
- chore: use default gh changelog for releases (#54)
- docs: add the solc building step (#62)
- ci: update linux amd64 gnu runners (#66)
- ci: run forge tests with solx (#36)
- ci: mark only official tag releases as latest (#75)
Full Changelog: 0.1.0-alpha.3...0.1.0-alpha.4
0.1.0-alpha.3
What's Changed
- fix: add placeholders for unsupported output by @hedgar2017 in #47
- docs: tooling cannot manage solx executables yet by @hedgar2017 in #50
- chore: set the LLVM branch back to main by @hedgar2017 in #51
- docs: update README.md to remove dead links in installation instructions. by @arose00 in #52
- ci: fix release condition and permissions typo by @antonbaliasnikov in #49
New Contributors
Full Changelog: 0.1.0-alpha.2...0.1.0-alpha.3
0.1.0-alpha.1
What's Changed
- feat: prototype of a Solidity-to-EVM compiler statically linked with solc by @hedgar2017 in #1
- feat: support new features by @hedgar2017 in #5
- ci: fix ccache regen, release and sanitizers workflows by @antonbaliasnikov in #4
- chore: add era-solidity and llvm as submodules by @antonbaliasnikov in #7
- feat: make the version endpoint on pair with the CLI by @hedgar2017 in #8
- feat: rebuild solx if static library deps are changed by @hedgar2017 in #9
- chore: set the license to GPL-3.0 by @hedgar2017 in #10
- feat: use the default callback from the updated solc API by @hedgar2017 in #6
- feat: add error handling for libsolc path arguments by @hedgar2017 in #11
- feat: add the solc version to --version output by @hedgar2017 in #12
- fix: TODOs and disabled tests by @hedgar2017 in #13
- feat: EVM dependencies by @hedgar2017 in #15
- chore: cumulative PR for compatibility with Foundry by @hedgar2017 in #16
- fix: show contract path in --recursive-process by @hedgar2017 in #17
- chore: add acknowledgement for solc by @popzxc in #18
- feat: Update README.md by @popzxc in #20
- chore: optimize output selection by @hedgar2017 in #19
- fix: sets the stack limit back to 64 MB by @hedgar2017 in #22
- feat: Add current status to README.md by @akiramenai in #21
New Contributors
- @akiramenai made their first contribution in #21
Full Changelog: https://github.com/matter-labs/solx/commits/0.1.0-alpha.1
0.1.0-alpha.2
What's Changed
- fix: Update recommended build links by @popzxc in #24
- fix: release links by @popzxc in #25
- chore: update the logo by @hedgar2017 in #26
- chore: update deps by @hedgar2017 in #23
- chore: update README.md by @hedgar2017 in #27
- feat: add the Book of SolX by @hedgar2017 in #29
- feat: add minimal EVM deploy code for LLVM IR by @hedgar2017 in #28
- chore: change licenses of solc-independent crates to MIT/Apache by @hedgar2017 in #31
- feat: make IPFS hash and CBOR equivalent again by @hedgar2017 in #32
- fix: LLVM IR standard JSON by @hedgar2017 in #33
- chore: use codecov token for coverage results by @antonbaliasnikov in #34
- fix: reduce Yul object identifier to their last segment by @hedgar2017 in #35
- ci: deploy docs after successful release by workflow call by @antonbaliasnikov in #38
- feat(evm): bytecode metadata by @hedgar2017 in #37
- docs: added cd to
mdBookby @PatrickAlphaC in #40 - feat: add the --no-import-callback flag by @hedgar2017 in #41
- fix(evm): do not emit unreachable in entry function by @hedgar2017 in #39
- fix: solc solidity_compiler foreign function signature by @hedgar2017 in #43
- ci: add special workflow for license consent by @antonbaliasnikov in #44
- feat: update to LLVM 19 by @hedgar2017 in #42
- chore: release v0.1.0-alpha.2 by @hedgar2017 in #46
New Contributors
- @PatrickAlphaC made their first contribution in #40
Full Changelog: 0.1.0-alpha.1...0.1.0-alpha.2