From 7293a53ad311c879306a8b3ff7290f8643047e91 Mon Sep 17 00:00:00 2001 From: Marcin Bugaj Date: Mon, 11 May 2026 16:57:59 +0200 Subject: [PATCH 1/5] Review remarks --- ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs b/ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs index db3e5925d..cb25d9f53 100644 --- a/ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs +++ b/ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs @@ -3,9 +3,6 @@ #[cfg(all(target_os = "zkvm", target_vendor = "zisk"))] use crate::alloc_extern::vec::Vec; -#[cfg(not(all(target_os = "zkvm", target_vendor = "zisk")))] -use num_traits::ops::bytes; - use crate::{ syscalls::{ syscall_bn254_curve_add, syscall_bn254_curve_dbl, SyscallBn254CurveAddParams, From bd95917df4b5de9727cc5643547b530c5c250622 Mon Sep 17 00:00:00 2001 From: Marcin Bugaj Date: Tue, 12 May 2026 11:12:14 +0200 Subject: [PATCH 2/5] `zkvm-definitions` made "no_std" --- definitions/src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/definitions/src/lib.rs b/definitions/src/lib.rs index e90181091..ec211f733 100644 --- a/definitions/src/lib.rs +++ b/definitions/src/lib.rs @@ -1,3 +1,5 @@ +#![no_std] + mod syscall; pub use syscall::*; From 77cdcd58b3dac78ea3c6475dc1ee3652ba432386 Mon Sep 17 00:00:00 2001 From: Marcin Bugaj Date: Tue, 12 May 2026 11:12:53 +0200 Subject: [PATCH 3/5] `zkvm-interface` made "no_std" --- zkvm-interface/build.rs | 1 + zkvm-interface/src/lib.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/zkvm-interface/build.rs b/zkvm-interface/build.rs index cfe0ce2f3..79fffcc9b 100644 --- a/zkvm-interface/build.rs +++ b/zkvm-interface/build.rs @@ -10,6 +10,7 @@ fn main() { .header(&accelerators_header) .header(&io_header) .clang_arg("-std=c11") + .use_core() .allowlist_type("zkvm_.*") .allowlist_var("ZKVM_.*") .allowlist_function("^zkvm_.*|^read_input$|^write_output$") diff --git a/zkvm-interface/src/lib.rs b/zkvm-interface/src/lib.rs index d13c36a11..ec88ab255 100644 --- a/zkvm-interface/src/lib.rs +++ b/zkvm-interface/src/lib.rs @@ -1,3 +1,4 @@ +#![no_std] //! zkVM C Interface Bindings //! //! This crate provides Rust bindings generated by bindgen from the standard zkVM From 5594ef369e2350180732fac7744e0e4dd2e458f4 Mon Sep 17 00:00:00 2001 From: Marcin Bugaj Date: Tue, 12 May 2026 11:13:36 +0200 Subject: [PATCH 4/5] Panic handler added in `ziskos` --- ziskos/entrypoint/src/lib.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ziskos/entrypoint/src/lib.rs b/ziskos/entrypoint/src/lib.rs index 2918a0356..25e356802 100644 --- a/ziskos/entrypoint/src/lib.rs +++ b/ziskos/entrypoint/src/lib.rs @@ -1,4 +1,6 @@ #![cfg_attr(all(target_os = "zkvm", target_vendor = "zisk"), no_std)] +#![cfg_attr(all(target_os = "zkvm", target_vendor = "zisk"), feature(core_intrinsics))] +#![cfg_attr(all(target_os = "zkvm", target_vendor = "zisk"), allow(internal_features))] #![allow(unexpected_cfgs)] #![allow(unused_imports)] @@ -457,4 +459,13 @@ pub mod ziskos { core::arch::global_asm!(include_str!("dma/memcmp.s")); //core::arch::global_asm!(include_str!("dma/inputcpy.s")); core::arch::global_asm!(include_str!("dma/memset.s")); + + #[panic_handler] + fn panic(info: &core::panic::PanicInfo) -> ! { + if let Some(msg) = info.message().as_str() { + sys_write(1, msg.as_ptr(), msg.len()); + sys_write(1, b"\n".as_ptr(), 1); + } + core::intrinsics::abort() + } } From 283650b681f13892eabd443412d712dc4ddd7afa Mon Sep 17 00:00:00 2001 From: Marcin Bugaj Date: Tue, 12 May 2026 12:32:48 +0200 Subject: [PATCH 5/5] Check libziskos.a does not bundle std --- .github/workflows/pr.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 8d7cdafc8..dd12ccb93 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -78,6 +78,19 @@ jobs: cd "$GITHUB_WORKSPACE/tools/test-env" ./build_zisk.sh + - name: Check libziskos.a does not bundle std + run: | + cargo +zisk build -p ziskos --release \ + --target riscv64ima-zisk-zkvm-elf \ + --config 'profile.release.lto="fat"' + LIBZISKOS=$(find target -name "libziskos.a" -path "*riscv64ima*" | head -1) + if ar t "$LIBZISKOS" | grep -q std; then + echo "FAIL: libziskos.a contains std object files:" + ar t "$LIBZISKOS" | grep std + exit 1 + fi + echo "OK: libziskos.a contains no std object files" + - name: Build setup env: USE_CACHE_SETUP: "1"