Skip to content

Commit

Permalink
Merge pull request #169 from starkware-libs/dori/merge-main-v0.13.2-i…
Browse files Browse the repository at this point in the history
…nto-main

Merge main-v0.13.2 into main
  • Loading branch information
dorimedini-starkware authored Jul 29, 2024
2 parents ca2d126 + 443e717 commit 0aa3f9a
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 7 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/committer_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
credentials_json: ${{ secrets.COMMITER_PRODUCTS_EXT_WRITER_JSON }}
- uses: 'google-github-actions/setup-gcloud@v2'
- run: echo "OLD_BENCH_INPUT_FILES_PREFIX=$(cat ./crates/committer_cli/src/tests/flow_test_files_prefix)" >> $GITHUB_ENV
- run: gcloud storage cp -r gs://committer-testing-artifacts/$OLD_BENCH_INPUT_FILES_PREFIX/* ./crates/committer_cli/benches
- run: gcloud storage cp -r gs://committer-testing-artifacts/$OLD_BENCH_INPUT_FILES_PREFIX/* ./crates/committer_cli/test_inputs

# List the existing benchmarks.
- run: |
Expand All @@ -71,8 +71,8 @@ jobs:
- run: cargo bench -p committer_cli

# Backup the downloaded files to avoid re-downloading them if they didn't change (overwritten by checkout).
- run: mv ./crates/committer_cli/benches/tree_flow_inputs.json ./crates/committer_cli/benches/tree_flow_inputs.json_bu
- run: mv ./crates/committer_cli/benches/committer_flow_inputs.json ./crates/committer_cli/benches/committer_flow_inputs.json_bu
- run: mv ./crates/committer_cli/test_inputs/tree_flow_inputs.json ./crates/committer_cli/test_inputs/tree_flow_inputs.json_bu
- run: mv ./crates/committer_cli/test_inputs/committer_flow_inputs.json ./crates/committer_cli/test_inputs/committer_flow_inputs.json_bu

# Checkout the new code.
- uses: actions/checkout@v4
Expand All @@ -83,8 +83,8 @@ jobs:
# Input files didn't change.
- if: env.OLD_BENCH_INPUT_FILES_PREFIX == env.NEW_BENCH_INPUT_FILES_PREFIX
run: |
mv ./crates/committer_cli/benches/tree_flow_inputs.json_bu ./crates/committer_cli/test_inputs/tree_flow_inputs.json
mv ./crates/committer_cli/benches/committer_flow_inputs.json_bu ./crates/committer_cli/test_inputs/committer_flow_inputs.json
mv ./crates/committer_cli/test_inputs/tree_flow_inputs.json_bu ./crates/committer_cli/test_inputs/tree_flow_inputs.json
mv ./crates/committer_cli/test_inputs/committer_flow_inputs.json_bu ./crates/committer_cli/test_inputs/committer_flow_inputs.json
# Input files did change, download new inputs.
- if: env.OLD_BENCH_INPUT_FILES_PREFIX != env.NEW_BENCH_INPUT_FILES_PREFIX
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use std::collections::HashSet;

use cairo_vm::types::builtin_name::BuiltinName;
use cairo_vm::types::layout_name::LayoutName;
use cairo_vm::types::relocatable::{MaybeRelocatable, Relocatable};
Expand Down Expand Up @@ -29,6 +31,15 @@ pub struct VmExecutionContext<'a> {
pub entry_point_pc: usize,
}

pub const CAIRO0_BUILTINS_NAMES: [BuiltinName; 6] = [
BuiltinName::range_check,
BuiltinName::pedersen,
BuiltinName::ecdsa,
BuiltinName::bitwise,
BuiltinName::ec_op,
BuiltinName::poseidon,
];

/// Executes a specific call to a contract entry point and returns its output.
pub fn execute_entry_point_call(
call: CallEntryPoint,
Expand Down Expand Up @@ -71,9 +82,19 @@ pub fn initialize_execution_context<'a>(
resources: &'a mut ExecutionResources,
context: &'a mut EntryPointExecutionContext,
) -> Result<VmExecutionContext<'a>, PreExecutionError> {
// Verify use of cairo0 builtins only.
let program_builtins: HashSet<&BuiltinName> =
HashSet::from_iter(contract_class.program.iter_builtins());
let unsupported_builtins =
&program_builtins - &HashSet::from_iter(CAIRO0_BUILTINS_NAMES.iter());
if !unsupported_builtins.is_empty() {
return Err(PreExecutionError::UnsupportedCairo0Builtin(
unsupported_builtins.iter().map(|&item| *item).collect(),
));
}

// Resolve initial PC from EP indicator.
let entry_point_pc = resolve_entry_point_pc(call, &contract_class)?;

// Instantiate Cairo runner.
let proof_mode = false;
let trace_enabled = false;
Expand Down
5 changes: 5 additions & 0 deletions crates/blockifier/src/execution/errors.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
use std::collections::HashSet;

use cairo_vm::types::builtin_name::BuiltinName;
use cairo_vm::types::errors::math_errors::MathError;
use cairo_vm::vm::errors::cairo_run_errors::CairoRunError;
use cairo_vm::vm::errors::memory_errors::MemoryError;
Expand Down Expand Up @@ -42,6 +45,8 @@ pub enum PreExecutionError {
StateError(#[from] StateError),
#[error("Requested contract address {:#064x} is not deployed.", .0.key())]
UninitializedStorageAddress(ContractAddress),
#[error("Called builtins: {0:?} are unsupported in a Cairo0 contract")]
UnsupportedCairo0Builtin(HashSet<BuiltinName>),
}

impl From<RunnerError> for PreExecutionError {
Expand Down
2 changes: 1 addition & 1 deletion crates/papyrus_monitoring_gateway/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ async fn node_config_by_secret(
async fn metrics(prometheus_handle: Option<PrometheusHandle>) -> Response {
match prometheus_handle {
Some(handle) => {
Collector::default().prefix(PROCESS_METRICS_PREFIX).collect();
Collector::new(PROCESS_METRICS_PREFIX).collect();
handle.render().into_response()
}
None => StatusCode::METHOD_NOT_ALLOWED.into_response(),
Expand Down

0 comments on commit 0aa3f9a

Please sign in to comment.