# Rust -> Zisk speedup: Potential Projects This document outlines potential projects for improving the performance of Rust programs compiled to Zisk. ## 1. Improve Rust -> RISC-V -> ZisK translation - Summary: Incremental improvements to existing compiler stack, there are some known inefficiencies in the generated RISC-V, we can try to eliminate them at various stages - Size: Small, 1 month - Impact: Low-Medium - estimate of around 10%-20% perf improvement - Risk: Low Items: - Tweak LLVM passes to improve generated RISC-V - RISC-V instruction re-optimization to leverage ZisK features (e.g. fuse loads and stores) References: - https://github.com/michaeljclark/rv8 ## 2. ZK-friendly WASM interpreter - Summary: Think Zeth, but for WASM. As a result you have ZisK program that takes WASM module, function to call and input arguments and produces the function output - Size: Small, 1-2 months - Impact: Low-Medium - depending on how efficient the interpreter will be - Risc: Low Items: - Chose WASM interprer - Compile it to RISC-V then to ZisK - Optimize performance on interesting WASM programs ## 3. WASM -> ZisK compiler using Cranelift - Summary: Use WASM as intermediate representation instead of RISC-V and leverage Cranelift to implement WASM -> ZisK translation - Size: Medium, 2-4 months - Impact: Medium - estimate of around 20%-50% perf improvement - Risk: Medium - there is a chance we don't see a significant perf improvement or this turns out a lot more work than anticipated. Also, maintaining this will be more challenging due to new concepts (WASM, Cranelift compiler) Items: - Cranelift backend that can generate ZisK - [Implemention of ZiskOS ABI](https://github.com/0xPolygonHermez/zisk/blob/develop/ziskos/entrypoint/src/lib.rs) (e.g. reading inputs and writing outputs) for WASM toolchain - Alternatively, we can implement [WASI](https://wasi.dev/interfaces) in ZisK and use Rust primitives for this (`println!` and `stdin`) - Implementation of WASM VM host functions in ZisK (e.g. `memory.grow`) References: - [ZKWASM](https://hackmd.io/@aborg-dev/SknlI9Q3h)