Skip to content

v1.0.0-rc0

Pre-release
Pre-release
Compare
Choose a tag to compare
@fmoletta fmoletta released this 08 Jan 15:20
· 195 commits to main since this release
b020f11
  • feat: Use ProjectivePoint from types-rs in ec_op builtin impl #1532

  • feat(BREAKING): Replace cairo-felt crate with starknet-types-core (0.0.5) #1408

  • feat(BREAKING): Add Cairo 1 proof mode compilation and execution [#1517] (#1517)

    • In the cairo1-run crate, now the Cairo 1 Programs are compiled and executed in proof-mode
    • BREAKING: Remove CairoRunner.proof_mode: bool field and replace it with CairoRunner.runner_mode: RunnerMode
  • perf: Add extensive_hints feature to prevent performance regression for the common use-case [#1503] (#1503)

    • Gates changes added by #1491 under the feature flag extensive_hints
  • chore: remove cancel-duplicates workflow #1497

  • feat: Handle pcs outside of program segment in VmException [#1501] (#1501)

    • VmException now shows the full pc value instead of just the offset (VmException.pc field type changed to Relocatable)
    • VmException.traceback now shows the full pc value for each entry instead of hardcoding its index to 0.
    • Disable debug information for errors produced when pc is outside of the program segment (segment_index != 0). VmException fields inst_location & error_attr_value will be None in such case.
  • feat: Allow running instructions from pcs outside the program segement #1493

  • BREAKING: Partially Revert Optimize trace relocation #906 #1492

    • Remove methods VirtualMachine::get_relocated_trace& VirtualMachine::relocate_trace.
    • Add relocated_trace field & relocate_trace method to CairoRunner.
    • Swap TraceEntry for RelocatedTraceEntry type in write_encoded_trace & PublicInput::new signatures.
    • Now takes into account the program counter's segment index when building the execution trace instead of assuming it to be 0.
  • feat: Add HintProcessor::execute_hint_extensive + refactor hint_ranges #1491

    • Add trait method HintProcessorLogic::execute_hint_extensive:

      • This method has a similar behaviour to HintProcessorLogic::execute_hint but it also returns a HintExtension (type alias for HashMap<Relocatable, Vec<Box<dyn Any>>>) that can be used to extend the current map of hints used by the VM. This behaviour achieves what the vm_load_data primitive does for cairo-lang, and is needed to implement os hints.
      • This method is now used by the VM to execute hints instead of execute_hint, but it's default implementation calls execute_hint, so current implementors of the HintProcessor trait won't notice any change.
    • Signature changes:

      • pub fn step_hint(&mut self, hint_executor: &mut dyn HintProcessor, exec_scopes: &mut ExecutionScopes, hint_datas: &mut Vec<Box<dyn Any>>, constants: &HashMap<String, Felt252>) -> Result<(), VirtualMachineError> -> pub fn step_hint(&mut self, hint_processor: &mut dyn HintProcessor, exec_scopes: &mut ExecutionScopes, hint_datas: &mut Vec<Box<dyn Any>>, hint_ranges: &mut HashMap<Relocatable, HintRange>, constants: &HashMap<String, Felt252>) -> Result<(), VirtualMachineError>
      • pub fn step(&mut self, hint_executor: &mut dyn HintProcessor, exec_scopes: &mut ExecutionScopes, hint_data: &[Box<dyn Any>], constants: &HashMap<String, Felt252>) -> Result<(), VirtualMachineError> -> pub fn step(&mut self, hint_processor: &mut dyn HintProcessor, exec_scopes: &mut ExecutionScopes, hint_datas: &mut Vec<Box<dyn Any>>, hint_ranges: &mut HashMap<Relocatable, HintRange>, constants: &HashMap<String, Felt252>) -> Result<(), VirtualMachineError>
  • feat: add debugging capabilities behind print feature flag. #1476

  • feat: add cairo_run_program function that takes a Program as an arg. #1496