All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- explicit support for Secp syscalls
- support for scarb execute
- sierra gas estimations for syscalls were inaccurate, because of a bug in builtins counting logic
- l2 gas profiling
- profiler now correctly removes
::separators from function names which were monomorphised with different types - calldata factor for deploy syscall is now correctly factored in
- upgraded cost map (versioned constants) to starknet 0.14.1
- contract entrypoints are now shown in the tree as called from functions
- addresses and selectors are now displayed in fixed hex format (66 chars) instead of decimal format
- profiler now accounts for steps when pc is outside the function area
- profiler now accounts for syscalls in nodes without
CairoExecutionInfo
- sierra gas profiling; in order to profile sierra gas please make sure to run snforge test with
--tracked-resourceflag set to "sierra-gas" - builtins usage is now included in sierra gas estimations
- new flag
--show-libfuncs, allowing to show all libfuncs usage per function (along with its resource consumption) - new sample "casm size" to show casm sizes of functions
- new sample "syscall usage" to show functions' syscall usage count
- new
--hideoption, that allows to filter out nodes from the profile based on passed regex. Resources of the filtered node are added to a parent node (function).
- Bumped dependencies to ensure compatibility with scarb 2.10 and newest snfoundry
l2_l1_message_sizessample no longer is displayed when its value is zero
- new
build-profilesubcommand, it behaves the same ascairo-profiler <trace_file> - new flag
--viewthat allows to view the built profile (egcairo-profiler <trace_file> --vieworcairo-profiler build-profile <trace_file> --view) - new
viewsubcommand that allows to view previously built profile
- show syscalls as nodes in trace tree rather than samples
- add
--versioned-constants-pathflag to allow passing custom resource cost map - remove
trace-datacrate in favour ofcairo-annotations
- support for
sha256_process_block_syscall
- support for Sierra 1.6.0
--show-inlined-functionsflag to show inlined functions in the profile. Requires Scarb >= 2.7.0-rc.0 and settingunstable-add-statements-functions-debug-info = truein[cairo]section of Scarb.toml.
--max-function-stack-trace-depthallowing to specify maximum depth of the function tree in function level profiling--split-genericsflag allowing to differentiate between non-inlined generics monomorphised with different types
- function level profiling for steps
- optional field and
CallEntryPoint.class_hashto input structs - optional field
CallEntryPoint.cairo_execution_infoto input structs. The struct contains vm trace and path to a relevant sierra file. It will enable function level profiling soon
CallTrace.nested_callstype changed fromVec<CallTrace>toVec<CallTraceNode>
trace_datalibrary (other tools can use it to integrate withcairo-profiler)- L2 -> L1 messages
show_detailsflag to showcontract_addressandfunction_selector
contract_addressandfunction_selectorare not displayed by default (useshow_detailsflag to see them)
- Starknet calls profiling:
- L2 resources: steps, memory holes, builtins, syscalls
- support for human-readable contract and function names
- custom output path support