Skip to content

Commit a789eee

Browse files
fmolettarcatalan98
andauthored
Run CasmContractClass (#1098)
* Implement TryFrom<CasmContractClass> for Program * Add cairo1hintprocessor dependency * Map hints to pc * Add Cairo1HintProcessor * Move cairo-1-hint-processor to cairo-rs crate * fixes * Fix test helper * Remove allow * fix test func * Add builtins to test * Extract builtins from contract_class * Add _builtin to builtin names in etrypoint data * Copy logic from cairo1 contract execution in starknet * Remove unused code * Use lower initial_gas value * Add program segment size argument * Check return values in run_cairo_1_entrypoint fn * Remove debug prints * Add basic fibonacci test * Add another fibonacci case * Always verify secure * Clippy * Compile casm contracts when running test target * Remove unwrap from cell_ref_to_relocatable * Remove paniking macro from extract_buffer * Misc improvements * Misc improvements * Misc improvements * Misc improvements * Remove unwraps & asserts from DictSquashExecScope::pop_current_key * Remove unwraps & asserts from DictManagerExecScope::new_default_dict * Remove expect from get_dict_tracker * Add constants for cairo 1 compiler binaries in makefile * Add cairo 1 compiler to deps target in makefile * Add cairo folder to clean target * Remove todo from execute method * Separate helper functions from Cairo1HintProcessor implementation * Add untracked file * Fix * Add changelog entry * Add a job to compile cairo 1 contracts in ci * Add job dependency * Fix yml syntax * Fix yml syntax * Temporarily extempt cairo-1-hint-processor from codecov * Fix yml syntax * Fix workflow * Remove cache code from new job * Fix yml syntax * Fix wrong path * Fix makefile * Build only compiler binaries * Add cairo-1-contracts-cache * Fetch contracts cache in jobs that need them * Use no-std version of HashMap * Import stdlib::prelude::* * Wrap print in not-wasm block * Remove std path * use slices instead of vec * Make DictSquashExecScope fields private * Import hint processor dependencies without default features * -Clippy * Add type * Compile cairo 1 contracts in build-programs job * Rename cache * Use target dependency instead of explicit $(MAKE) * Fix yml syntax * Check for cairo folder before cloning cairo repo * Ommit folder name * Swap paths * Add cairo-1-hints feature flag * Add compile-hint feature to tests run in workflow * Add cairo-1-hints to test_utils * Add cairo-1-hints to test_utils * Use both paths when fetching compiled test data * Remove cairo-1-hints feature from test_utils feature * Move dependencies to cairo-1-hints feature * Update CHANGELOG.md * Fix cfg directive * Add cairo-1-hints to test workflow * Add Cairo 1 considerations for Gitignore and Makefile (#1144) * Add ignore for casm and sierra files * Add libfunc experimental for cairo 1 compilation * Add new enty to CHANGELOG * Fix rust.yml --------- Co-authored-by: Roberto Catalan <[email protected]>
1 parent e284753 commit a789eee

File tree

16 files changed

+2447
-86
lines changed

16 files changed

+2447
-86
lines changed

.github/codecov.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ ignore:
88
- src/vm/errors
99
- src/types/errors
1010
- hint_accountant
11+
- src/hint_processor/cairo-1-hint-processor # TODO: Remove this line
1112
- ./deps

.github/workflows/rust.yml

Lines changed: 60 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
strategy:
1616
matrix:
1717
# NOTE: we build cairo_proof_programs so clippy can check the benchmarks too
18-
program-target: [ cairo_bench_programs, cairo_proof_programs, cairo_test_programs ]
18+
program-target: [ cairo_bench_programs, cairo_proof_programs, cairo_test_programs, cairo_1_test_contracts ]
1919
name: Build Cairo programs
2020
runs-on: ubuntu-22.04
2121
steps:
@@ -28,7 +28,9 @@ jobs:
2828
uses: actions/cache@v3
2929
id: cache-programs
3030
with:
31-
path: cairo_programs/**/*.json
31+
path: |
32+
cairo_programs/**/*.casm
33+
cairo_programs/**/*.json
3234
key: ${{ matrix.program-target }}-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
3335
restore-keys: ${{ matrix.program-target }}-cache-
3436

@@ -46,6 +48,10 @@ jobs:
4648
- name: Install cairo-lang and deps
4749
if: ${{ steps.cache-programs.outputs.cache-hit != 'true' }}
4850
run: pip install -r requirements.txt
51+
52+
- name: Install cairo 1 compiler
53+
if: ${{ steps.cache-programs.outputs.cache-hit != 'true' }}
54+
run: make build-cairo-1-compiler
4955

5056
- name: Build programs
5157
if: ${{ steps.cache-programs.outputs.cache-hit != 'true' }}
@@ -72,18 +78,31 @@ jobs:
7278
- name: Fetch test programs
7379
uses: actions/cache/restore@v3
7480
with:
75-
path: cairo_programs/**/*.json
81+
path: |
82+
cairo_programs/**/*.casm
83+
cairo_programs/**/*.json
7684
key: cairo_test_programs-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
7785
- name: Fetch proof programs
7886
uses: actions/cache/restore@v3
7987
with:
80-
path: cairo_programs/**/*.json
88+
path: |
89+
cairo_programs/**/*.casm
90+
cairo_programs/**/*.json
8191
key: cairo_proof_programs-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
8292
- name: Fetch bench programs
8393
uses: actions/cache/restore@v3
8494
with:
85-
path: cairo_programs/**/*.json
95+
path: |
96+
cairo_programs/**/*.casm
97+
cairo_programs/**/*.json
8698
key: cairo_bench_programs-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
99+
- name: Fetch test contracts
100+
uses: actions/cache/restore@v3
101+
with:
102+
path: |
103+
cairo_programs/**/*.casm
104+
cairo_programs/**/*.json
105+
key: cairo_1_test_contracts-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
87106
- name: Run clippy
88107
run: make clippy
89108

@@ -109,18 +128,31 @@ jobs:
109128
- name: Fetch test programs
110129
uses: actions/cache/restore@v3
111130
with:
112-
path: cairo_programs/**/*.json
131+
path: |
132+
cairo_programs/**/*.casm
133+
cairo_programs/**/*.json
113134
key: cairo_test_programs-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
114135
- name: Fetch proof programs
115136
uses: actions/cache/restore@v3
116137
with:
117-
path: cairo_programs/**/*.json
138+
path: |
139+
cairo_programs/**/*.casm
140+
cairo_programs/**/*.json
118141
key: cairo_proof_programs-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
119142
- name: Fetch bench programs
120143
uses: actions/cache/restore@v3
121144
with:
122-
path: cairo_programs/**/*.json
145+
path: |
146+
cairo_programs/**/*.casm
147+
cairo_programs/**/*.json
123148
key: cairo_bench_programs-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
149+
- name: Fetch test contracts
150+
uses: actions/cache/restore@v3
151+
with:
152+
path: |
153+
cairo_programs/**/*.casm
154+
cairo_programs/**/*.json
155+
key: cairo_1_test_contracts-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
124156

125157
- name: Check
126158
run: cargo check-all-features --workspace --all-targets
@@ -154,13 +186,24 @@ jobs:
154186
- name: Fetch test programs
155187
uses: actions/cache/restore@v3
156188
with:
157-
path: cairo_programs/**/*.json
189+
path: |
190+
cairo_programs/**/*.casm
191+
cairo_programs/**/*.json
158192
key: cairo_test_programs-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
159193
- name: Fetch proof programs
160194
uses: actions/cache/restore@v3
161195
with:
162-
path: cairo_programs/**/*.json
196+
path: |
197+
cairo_programs/**/*.casm
198+
cairo_programs/**/*.json
163199
key: cairo_proof_programs-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
200+
- name: Fetch test contracts
201+
uses: actions/cache/restore@v3
202+
with:
203+
path: |
204+
cairo_programs/**/*.casm
205+
cairo_programs/**/*.json
206+
key: cairo_1_test_contracts-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
164207

165208
- name: Install testing tools
166209
uses: taiki-e/install-action@v2
@@ -171,7 +214,7 @@ jobs:
171214
# FIXME: we need to update the Makefile to do this correctly
172215
case ${{ matrix.target }} in
173216
'test')
174-
cargo llvm-cov nextest --lcov --output-path lcov-${{ matrix.target }}.info --workspace --features test_utils
217+
cargo llvm-cov nextest --lcov --output-path lcov-${{ matrix.target }}.info --workspace --features "cairo-1-hints, test_utils"
175218
;;
176219
'test-no_std')
177220
cargo llvm-cov nextest --lcov --output-path lcov-${{ matrix.target }}.info --workspace --features test_utils --no-default-features
@@ -253,7 +296,9 @@ jobs:
253296
if: ${{ steps.trace-cache.outputs.cache-hit != 'true' }}
254297
uses: actions/cache/restore@v3
255298
with:
256-
path: cairo_programs/**/*.json
299+
path: |
300+
cairo_programs/**/*.casm
301+
cairo_programs/**/*.json
257302
key: ${{ matrix.program-target }}-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
258303
fail-on-cache-miss: true
259304

@@ -294,7 +339,9 @@ jobs:
294339
- name: Fetch programs
295340
uses: actions/cache/restore@v3
296341
with:
297-
path: cairo_programs/**/*.json
342+
path: |
343+
cairo_programs/**/*.casm
344+
cairo_programs/**/*.json
298345
key: ${{ matrix.program-target }}-cache-${{ hashFiles( 'cairo_programs/**/*.cairo' ) }}
299346
fail-on-cache-miss: true
300347

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
**/*.json
55
!hint_accountant/whitelists/*.json
66
!cairo_programs/manually_compiled/*.json
7+
**/*.casm
8+
**/*.sierra
79
**/*.trace
810
**/*.memory
911
**/*.swp

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
#### Upcoming Changes
44

5+
* Add some small considerations regarding Cairo 1 programs [#1144](https://github.com/lambdaclass/cairo-rs/pull/1144):
6+
7+
* Ignore Casm and Sierra files
8+
* Add special flag to compile Cairo 1 programs
9+
10+
* Make the VM able to run `CasmContractClass` files under `cairo-1-hints` feature [#1098](https://github.com/lambdaclass/cairo-rs/pull/1098)
11+
12+
* Implement `TryFrom<CasmContractClass> for Program`
13+
* Add `Cairo1HintProcessor`
14+
15+
* Add `CairoRunner::get_program method` [#1123](https://github.com/lambdaclass/cairo-rs/pull/1123):
16+
517
* perf: insert elements from the tail in `load_data` so reallocation happens only once [#1117](https://github.com/lambdaclass/cairo-rs/pull/1117)
618

719
* Add `CairoRunner::get_program method` [#1123](https://github.com/lambdaclass/cairo-rs/pull/1123)

0 commit comments

Comments
 (0)