From 7cd1dda7457ff2453a3d6444fc65749201618885 Mon Sep 17 00:00:00 2001 From: Leo Alt Date: Thu, 30 Jul 2026 02:06:01 +0200 Subject: [PATCH] chore: pin libyulc 0.0.2 0.0.1 predated the Mathlib work in yul-compiler. Mathlib was being linked into the library because every Lean module's initializer references the initializer of each module it imports, so a single bare `import Mathlib` in the runtime closure pulled all of compiled Mathlib in. Narrowing those imports (powdr-labs/yul-compiler#137, #138 and powdr-labs/yul-semantics#40) took the link closure from 8,724 objects to 1,112. Measured on this branch, rebuilding solc against each release: 0.0.1 0.0.2 delta solc 355,502,216 219,069,328 -136.4 MB solc, stripped 236,446,528 151,078,184 -85.4 MB .text 185,199,409 121,448,177 -63.8 MB defined symbols 1,001,102 570,826 -430k Both binaries compile the block- and object-rooted test inputs to byte-identical bytecode. Co-Authored-By: Claude Opus 5 (1M context) --- cmake/yulc.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/yulc.cmake b/cmake/yulc.cmake index d8230773e417..069c24a07122 100644 --- a/cmake/yulc.cmake +++ b/cmake/yulc.cmake @@ -15,9 +15,9 @@ # no linker accepts inside a shared object. The release also ships libyulc.so # for that case, but solc does not need it. -set(YULC_VERSION "0.0.1" CACHE STRING "Version of the libyulc release to download") +set(YULC_VERSION "0.0.2" CACHE STRING "Version of the libyulc release to download") set(YULC_RELEASE_SHA256 - "1b8bf1c09cb6b3feaef4efe3d10c3c3348d0a96dc3cf17ba818aabe357d0f32f" + "6b21a4d6d0c280769372085cb08386ce9409ffc61aba4a1ed351dd236a721356" CACHE STRING "SHA-256 of the libyulc release tarball" ) set(YULC_ROOT "" CACHE PATH