Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
153 commits
Select commit Hold shift + click to select a range
f40bd42
Fixes and improvements to upstream code for clean build (#148)
tim-hoffman Oct 7, 2025
ab0e5ae
Initial setup for LLZK backend (#149)
tim-hoffman Oct 7, 2025
52a339e
update llvm dependencies and add script to do that easily (#150)
tim-hoffman Oct 7, 2025
1966def
Minimal end-to-end implementation to generate an empty LLZK module (#…
tim-hoffman Oct 8, 2025
f77482e
Update llzk-rs dependency (#152)
tim-hoffman Oct 8, 2025
3b7b503
Refactor so lint checks can be added on just the LLZK generation code…
tim-hoffman Oct 9, 2025
bb51412
update llzk-rs/llzk-lib dependency (#154)
tim-hoffman Oct 15, 2025
16d98f3
remove some unnecessary stuff from the flake (#158)
tim-hoffman Oct 17, 2025
7a5ed7a
create tests from circom documentation (#155)
tim-hoffman Oct 17, 2025
e18c85a
get latest from `llzk-rs` (#159)
tim-hoffman Oct 17, 2025
7124958
get latest `llzk-rs` (#160)
tim-hoffman Oct 18, 2025
e09547b
Add CI workflow to run clippy (#156)
tim-hoffman Oct 20, 2025
cb38df9
add tests from circom v1 (#161)
tim-hoffman Oct 21, 2025
9a849e7
Make lit emulator handle multi-line RUN script (#162)
tim-hoffman Oct 23, 2025
e1f447c
A few test updates (#163)
tim-hoffman Oct 23, 2025
c67a9e3
update to latest LLZK (#164)
tim-hoffman Oct 30, 2025
efbdc26
update LLZK dependency (#165)
tim-hoffman Nov 3, 2025
cfe63dd
get latest LLZK (#166)
tim-hoffman Nov 4, 2025
896e6b3
update to latest LLZK for CallOp support (#167)
tim-hoffman Nov 6, 2025
86170c2
Handle errors in `generate_llzk()` cleanly (#170)
tim-hoffman Nov 18, 2025
d659ea2
allow minor version updates, update melior (#168)
tim-hoffman Nov 18, 2025
b06bb89
support command line option for MLIR pass pipeline (#171)
tim-hoffman Nov 18, 2025
f3bcabc
add rustfmt rules and run formatting (#169)
tim-hoffman Nov 18, 2025
9bcf640
Add tests, normalize test check format (#172)
tim-hoffman Nov 19, 2025
82a58fb
[LLZK-356] Basic code generation skeleton and build the fields and fu…
tim-hoffman Nov 20, 2025
6bed60e
Add fall-through Error for prefix/infix ops that aren't supported (#173)
tim-hoffman Nov 20, 2025
abcf7d0
Handle `Statement::ConstraintEquality` (#225)
tim-hoffman Dec 3, 2025
5e032f5
simplify error conversion just using `Into` (#227)
tim-hoffman Dec 3, 2025
f77a483
Update `llzk` dependency (#231)
tim-hoffman Dec 5, 2025
fa7e4b1
Handle `todo!()` requiring `getSelfValue` functions (#232)
tim-hoffman Dec 5, 2025
ecb343f
Handle basic infix ops (#226)
tim-hoffman Dec 5, 2025
30bf0c4
fix: Result was dropped (#233)
tim-hoffman Dec 8, 2025
2ec5538
update `llzk-rs` dependency (#234)
tim-hoffman Dec 8, 2025
3482efc
Handle `assert` in template and function (#228)
tim-hoffman Dec 8, 2025
e746ba5
Print diagnostic is generated module does not verify (#235)
tim-hoffman Dec 9, 2025
bce4c5e
handle early return properly (#236)
tim-hoffman Dec 9, 2025
443b4e0
simplify returns of `gen_llzk_*` functions (#237)
tim-hoffman Dec 10, 2025
4ee879f
NFC: cleanup a few minor things (#238)
tim-hoffman Dec 11, 2025
cc17506
add tests from "inspect option" docs page (#240)
tim-hoffman Dec 11, 2025
ea24961
Properly track variable shadowing and overwriting in nested blocks (#…
tim-hoffman Dec 11, 2025
e90c842
allow for custom handling of variables overwritten within scope (#244)
tim-hoffman Dec 17, 2025
6e03ffb
forces includes to separate lines (#248)
tim-hoffman Dec 17, 2025
6899761
add helper functions (#247)
tim-hoffman Dec 18, 2025
7263ab5
fix: missing read in constrain from AssignSignal (#249)
tim-hoffman Dec 18, 2025
f41cb22
preserve undef ops that have use sites (#250)
tim-hoffman Dec 18, 2025
d1a6405
avoid universal match in lit tests (#246)
tim-hoffman Dec 18, 2025
d27e69c
return Result not Option from `get_named_value` (#245)
tim-hoffman Dec 29, 2025
d1902d4
Add call op generation for functions (#254)
Dec 29, 2025
fd728d5
stabilize function/template ordering (#255)
tim-hoffman Dec 29, 2025
e15f576
fix: handle uses of output signal written earlier (#256)
tim-hoffman Dec 29, 2025
c0be798
Implement `IfThenElse` translation in functions (#252)
tim-hoffman Dec 29, 2025
1dd93dd
update test that passes from combination of recent PRs (#257)
tim-hoffman Dec 29, 2025
971fd59
Add infix op implementations (#239)
Dec 29, 2025
57a5a4c
Implement `BoolNot` prefix op (#253)
Dec 30, 2025
cf7d399
Rename `ExprGenResult` for broader applicability and clarify some doc…
tim-hoffman Dec 30, 2025
fb9f5ea
Flip the check for access array (#259)
0xddom Dec 30, 2025
ab5d973
consume `GenResult` instead of referencing (#260)
tim-hoffman Dec 30, 2025
637105e
Get latest LLZK (#263)
tim-hoffman Dec 30, 2025
73e9254
make the main part of `IfThenElse` translation reusable (#261)
tim-hoffman Dec 30, 2025
595dba5
Implement if-then-else translation in template (#262)
tim-hoffman Dec 30, 2025
6bfa850
Implement `IntDiv` and `Complement` operators (#264)
Dec 30, 2025
cd60f75
Various minor code cleanup/fixes (#266)
tim-hoffman Dec 31, 2025
c08e908
Make `gen_in_*` functions have flexible return type (#265)
tim-hoffman Dec 31, 2025
c483a77
get latest llzk lib (#268)
tim-hoffman Jan 1, 2026
a6786c0
translate Statement::While in templates (#269)
tim-hoffman Jan 2, 2026
48eadf2
expression gen is the same in template and function so just delegate …
tim-hoffman Jan 2, 2026
1338120
Implement InlineSwitch for functions and templates (#267)
Jan 2, 2026
b4759cf
Unify bool casting (#274)
Jan 5, 2026
adaad34
Implement function array accesses (#275)
Jan 5, 2026
d7d960d
A few minor improvements (#277)
tim-hoffman Jan 5, 2026
85bb6dd
avoid using lossy "as" cast (#280)
tim-hoffman Jan 6, 2026
66633a8
Implement `Expression::ArrayInLine` (#278)
Jan 6, 2026
70cbe29
Use shared type helper functions more and auto-format (#281)
tim-hoffman Jan 6, 2026
5208fbb
Add option to generate LLZK from concrete program (#273)
tim-hoffman Jan 7, 2026
5590285
Implement Statement::Substitution for arrays, fix multi-dim array han…
Jan 7, 2026
d3c100d
Minor cleanup (#283)
tim-hoffman Jan 7, 2026
c736ad2
Update deps (#284)
0xddom Jan 7, 2026
9e96e36
Move extension traits to separate files (#285)
0xddom Jan 7, 2026
009624f
Subcomponents handling (#230)
0xddom Jan 7, 2026
c22c02d
Handle clippy warnings and formatting (#289)
tim-hoffman Jan 8, 2026
3f91e0f
support using struct parameter value (#287)
tim-hoffman Jan 8, 2026
8e33e31
fix bug in while loop translation (#288)
tim-hoffman Jan 8, 2026
5c4d093
Handle err (BlockArgument) case of `OperationResult::try_from` (#293)
tim-hoffman Jan 8, 2026
e64b64b
Fix incorrect subcmp signal assignment (#295)
0xddom Jan 8, 2026
2b7b7f0
assorted minor cleanup and correct an error message (#296)
tim-hoffman Jan 8, 2026
355a3a9
Properly handle automatic cast generation (#297)
tim-hoffman Jan 8, 2026
cf400a4
avoid process hang on failure (#299)
tim-hoffman Jan 8, 2026
41219be
add immediate exit to more places that may hang (#300)
tim-hoffman Jan 8, 2026
5cd33b9
impl `ChainResult` for `GenResult` more broadly (#303)
tim-hoffman Jan 9, 2026
9147c1f
Implement `convert_dim_exprs` for constant values (#302)
Jan 9, 2026
70d8581
Translate `Statement::While` in functions (#301)
tim-hoffman Jan 9, 2026
3fbe584
update LLZK dependency (#304)
tim-hoffman Jan 10, 2026
2ba68fe
Implement `Expression::ParallelOp` in templates (#305)
Jan 12, 2026
79951a4
update LLZK-lib (#306)
tim-hoffman Jan 12, 2026
e2396ce
Replace FunctionContext::Drop with a finalize method (#309)
tim-hoffman Jan 13, 2026
e32e50f
Initial support for array write operations (#310)
0xddom Jan 14, 2026
07c8d41
Update repo to reflect Veridise -> project-llzk move (#312)
tim-hoffman Jan 14, 2026
6a92840
Get latest from llzk-lib (#313)
tim-hoffman Jan 14, 2026
abd3d26
Utilize new/moved APIs from `llzk-rs` (#314)
tim-hoffman Jan 14, 2026
da731fc
"for" loop heuristic (#307)
tim-hoffman Jan 14, 2026
0c291a1
reverse the logic of the early return handing (#316)
tim-hoffman Jan 16, 2026
e3bb811
Refactor to allow skipping rest of block when if-else returns (#315)
tim-hoffman Jan 16, 2026
442eff4
simplify by using `op_result_owner` in more places (#318)
tim-hoffman Jan 17, 2026
9c822bb
Add verbose output (#321)
tim-hoffman Jan 20, 2026
d6be57b
add flag to dump VCP (#322)
tim-hoffman Jan 20, 2026
833c8a9
Implement more dimension expression handling (#319)
Jan 21, 2026
aa082e2
update LLZK lib (#323)
tim-hoffman Jan 21, 2026
2538344
Properly handle propagating returns within control flow ops (#317)
tim-hoffman Jan 21, 2026
9fb17e8
fix: array type expected (#325)
tim-hoffman Jan 22, 2026
78de687
add a new test (that doesn't pass yet) (#327)
tim-hoffman Jan 22, 2026
f01a240
Enhance handling of `Expression::UniformArray` (#326)
Jan 23, 2026
1f63a97
NFC: reorg functions logically
tim-hoffman Jan 23, 2026
9087350
[fix upstream] add MemoryKnowledge "has" functions
tim-hoffman Jan 23, 2026
4dd8551
Fix array write type error (#329)
tim-hoffman Jan 23, 2026
181dd87
Add new tests for int div op (#330)
tim-hoffman Jan 23, 2026
f692829
Fix lifetime compile time errors (#332)
0xddom Jan 27, 2026
b5f618d
update llzk-lib, use new attr on functions by default, update all tes…
tim-hoffman Jan 27, 2026
cf6e764
Fix conflicting types errors when generating from VCP (#334)
tim-hoffman Jan 27, 2026
9425c8b
Collect subcomponent declarations in VCP mode (#335)
Jan 28, 2026
a97d593
clarify error message
tim-hoffman Jan 28, 2026
8b7bf28
Ensure `OPERAND_VAL_NAMES` attr is propagated (#336)
tim-hoffman Jan 28, 2026
8b559b1
handle array `write` vs `insert` and `read` vs `extract` properly (#337)
tim-hoffman Jan 28, 2026
ac6aede
ensure `assert` ops are bool type (#339)
tim-hoffman Jan 28, 2026
47a2af6
Handle pure array case of "Generate array write operation in template…
tim-hoffman Jan 28, 2026
eb769da
Make template parameter constants accessible in concrete mode (#341)
Jan 28, 2026
f88ad10
Update llzk-lib (#342)
tim-hoffman Jan 28, 2026
88c18bd
Relax signal assignment/constraint type restrictions (#343)
Jan 28, 2026
b806466
Refactor WriteChain impl into functions, fix typos and clippy issues …
tim-hoffman Jan 28, 2026
258931b
simplify `AssignSignal` in `Substitution` in template (#345)
tim-hoffman Jan 29, 2026
b80c356
fix: several locations used `numdims` not signal `idx` (#346)
tim-hoffman Jan 29, 2026
d374796
clear up ambiguous name
tim-hoffman Jan 29, 2026
3fd8b59
make sure `WireLike` is debug printable
tim-hoffman Jan 29, 2026
0ecbb28
use unique names in test
tim-hoffman Jan 29, 2026
683f81e
code quality
tim-hoffman Jan 29, 2026
7f87393
Precompute `DeclarationInfo` for all templates (#347)
tim-hoffman Jan 29, 2026
21b0a38
update llzk-lib (#348)
tim-hoffman Jan 29, 2026
13a30af
refactor location builder
tim-hoffman Jan 30, 2026
5a36e5f
refactor `try_compute_dim_expr` for reuse
tim-hoffman Jan 30, 2026
d83e5ed
get prime as `BigUInt` up front
tim-hoffman Jan 30, 2026
dc14b4b
Fix field reads in constrain functions (#350)
Jan 30, 2026
f98662d
cleanup and format
tim-hoffman Jan 30, 2026
bd00e98
Generate annotation for main component (#351)
tim-hoffman Jan 30, 2026
0ff853a
move concrete tests to proper directory
tim-hoffman Jan 30, 2026
5fd58a8
clarify error
tim-hoffman Jan 30, 2026
330c60d
use unique template name in concrete mode
tim-hoffman Jan 30, 2026
50b1609
turns out AnonymouseComponent is reachable in some cases
tim-hoffman Jan 30, 2026
41c0c0a
add test comment
tim-hoffman Jan 30, 2026
6b40eed
fix: ensure array write rvalue is correct type (#352)
tim-hoffman Jan 30, 2026
6787759
Add --concrete flag to update_test_cases.sh (#353)
Feb 3, 2026
6e977a6
add flag to stabilize IR ordering
tim-hoffman Feb 5, 2026
f616261
use flag for existing sorts
tim-hoffman Feb 5, 2026
d7a7d7b
add stabilize flag to lit tests
tim-hoffman Feb 5, 2026
9b9e177
add missing lit "END" directives
tim-hoffman Feb 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
57 changes: 57 additions & 0 deletions .github/workflows/ci-llzk.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: CI (circom-to-llzk)
on:
push:
branches: [ llzk ]
pull_request:

env:
CARGO_TERM_COLOR: always

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: cachix/install-nix-action@9280e7aca88deada44c930f1e2c78e21c3ae3edd # v31.7.0
with:
install_url: https://releases.nixos.org/nix/nix-2.31.2/install
github_access_token: "${{ secrets.GITHUB_TOKEN }}"
- name: Set Git credentials
run: |
git config --global 'url.https://api@github.com/'.insteadOf 'https://github.com/'
git config --global 'url.https://ssh@github.com/'.insteadOf 'ssh://git@github.com/'
git config --global 'url.https://git@github.com/'.insteadOf 'git@github.com:'
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with:
name: veridise-public
authToken: '${{ secrets.CACHIX_PUBLIC_TOKEN }}'
- name: Build and test
run: nix --print-build-logs build

clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: cachix/install-nix-action@9280e7aca88deada44c930f1e2c78e21c3ae3edd # v31.7.0
with:
install_url: https://releases.nixos.org/nix/nix-2.31.2/install
github_access_token: "${{ secrets.GITHUB_TOKEN }}"
- name: Set Git credentials
run: |
git config --global 'url.https://api@github.com/'.insteadOf 'https://github.com/'
git config --global 'url.https://ssh@github.com/'.insteadOf 'ssh://git@github.com/'
git config --global 'url.https://git@github.com/'.insteadOf 'git@github.com:'
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with:
name: veridise-public
authToken: '${{ secrets.CACHIX_PUBLIC_TOKEN }}'
- name: Set nix environment
uses: nicknovitski/nix-develop@v1
env:
CI_BOT_PAT: "${{ secrets.CI_BUILD_TOKEN }}"
- name: Run clippy
run: cargo clippy -p llzk_backend -- --no-deps
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ type_analysis/target/
.idea/
.vscode/
.DS_Store

# Nix package build
/result
/build-tools
Loading