Avatar for the egraphs-good user
egraphs-good
egglog
BlogDocsChangelog

Don't panic when extracting non existent term

#629
Comparing
saulshanabrook:extract-dont-panic
(
ce28183
) with
main
(
d2fa5b7
)
CodSpeed Performance Gauge
0%
Improvements
0
Regressions
0
Untouched
10
New
0
Dropped
0
Ignored
93

Benchmarks

Passed

extract-vec-bench
benches/example_benchmarks.rs::benches::criterion_benchmark::extract-vec-bench
CodSpeed Performance Gauge
0%
103.8 ms
103.7 ms
herbie
benches/example_benchmarks.rs::benches::criterion_benchmark::herbie
CodSpeed Performance Gauge
0%
285.5 ms
285.4 ms
math-microbenchmark
benches/example_benchmarks.rs::benches::criterion_benchmark::math-microbenchmark
CodSpeed Performance Gauge
0%
10.7 s
10.7 s
stresstest_large_expr
benches/example_benchmarks.rs::benches::criterion_benchmark::stresstest_large_expr
CodSpeed Performance Gauge
0%
1.5 s
1.5 s
cykjson
benches/example_benchmarks.rs::benches::criterion_benchmark::cykjson
CodSpeed Performance Gauge
0%
914.4 ms
914.4 ms
eggcc-extraction
benches/example_benchmarks.rs::benches::criterion_benchmark::eggcc-extraction
CodSpeed Performance Gauge
0%
3.9 s
3.9 s
python_array_optimize
benches/example_benchmarks.rs::benches::criterion_benchmark::python_array_optimize
CodSpeed Performance Gauge
0%
4.9 s
4.9 s
typeinfer
benches/example_benchmarks.rs::benches::criterion_benchmark::typeinfer
CodSpeed Performance Gauge
0%
310.4 ms
310.5 ms
lambda
benches/example_benchmarks.rs::benches::criterion_benchmark::lambda
CodSpeed Performance Gauge
0%
86.4 ms
86.5 ms
rat-pow-eval
benches/example_benchmarks.rs::benches::criterion_benchmark::rat-pow-eval
CodSpeed Performance Gauge
-1%
3.5 ms
3.5 ms

Ignored

antiunifyIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::antiunify
CodSpeed Performance Gauge
0%
2.8 ms
2.8 ms
arrayIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::array
CodSpeed Performance Gauge
0%
29.9 ms
29.9 ms
bddIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::bdd
CodSpeed Performance Gauge
0%
14.9 ms
15 ms
before-proofsIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::before-proofs
CodSpeed Performance Gauge
0%
2 ms
2 ms
bignumIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::bignum
CodSpeed Performance Gauge
0%
1 ms
1 ms
birewriteIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::birewrite
CodSpeed Performance Gauge
0%
1.9 ms
1.9 ms
bitwiseIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::bitwise
CodSpeed Performance Gauge
0%
827.8 µs
830.2 µs
boolIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::bool
CodSpeed Performance Gauge
0%
1.6 ms
1.6 ms
calcIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::calc
CodSpeed Performance Gauge
0%
5.9 ms
5.9 ms
combinatorsIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::combinators
CodSpeed Performance Gauge
0%
20.9 ms
20.9 ms
combined-nestedIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::combined-nested
CodSpeed Performance Gauge
0%
923.1 µs
924 µs
complex-merge-funcIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::complex-merge-func
CodSpeed Performance Gauge
-1%
1.1 ms
1.1 ms
complex-merge-primIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::complex-merge-prim
CodSpeed Performance Gauge
0%
872.3 µs
876 µs
container-rebuildIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::container-rebuild
CodSpeed Performance Gauge
0%
2.7 ms
2.7 ms
cykIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::cyk
CodSpeed Performance Gauge
0%
23 ms
23.1 ms
datatypesIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::datatypes
CodSpeed Performance Gauge
-1%
781.7 µs
788.3 µs
deleteIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::delete
CodSpeed Performance Gauge
+1%
659 µs
655.5 µs
eqsat-basicIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::eqsat-basic
CodSpeed Performance Gauge
0%
1.9 ms
1.9 ms
eqsat-basic-multisetIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::eqsat-basic-multiset
CodSpeed Performance Gauge
0%
4 ms
4 ms
eqsolveIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::eqsolve
CodSpeed Performance Gauge
0%
39.2 ms
39.2 ms
f64Ignored
benches/example_benchmarks.rs::benches::criterion_benchmark::f64
CodSpeed Performance Gauge
0%
1.2 ms
1.2 ms
fail_wrong_assertionIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::fail_wrong_assertion
CodSpeed Performance Gauge
0%
1.5 ms
1.5 ms
fibonacciIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::fibonacci
CodSpeed Performance Gauge
0%
1.2 ms
1.2 ms
fibonacci-demandIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::fibonacci-demand
CodSpeed Performance Gauge
0%
2.6 ms
2.6 ms
fusionIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::fusion
CodSpeed Performance Gauge
0%
23.4 ms
23.5 ms
herbie-tutorialIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::herbie-tutorial
CodSpeed Performance Gauge
0%
9.2 ms
9.3 ms
i64Ignored
benches/example_benchmarks.rs::benches::criterion_benchmark::i64
CodSpeed Performance Gauge
0%
409.6 µs
410.1 µs
includeIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::include
CodSpeed Performance Gauge
0%
1.3 ms
1.3 ms
integer_mathIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::integer_math
CodSpeed Performance Gauge
0%
14.2 ms
14.2 ms
intersectionIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::intersection
CodSpeed Performance Gauge
0%
3 ms
3 ms
intervalIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::interval
CodSpeed Performance Gauge
-1%
2 ms
2 ms
knapsackIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::knapsack
CodSpeed Performance Gauge
0%
7.9 ms
7.9 ms
levenshtein-distanceIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::levenshtein-distance
CodSpeed Performance Gauge
0%
19.4 ms
19.5 ms
listIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::list
CodSpeed Performance Gauge
0%
4.8 ms
4.8 ms
looking_up_globalIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::looking_up_global
CodSpeed Performance Gauge
0%
580.3 µs
580.4 µs
looking_up_nonconstructor_in_rewrite_goodIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::looking_up_nonconstructor_in_rewrite_good
CodSpeed Performance Gauge
+1%
641.2 µs
632.2 µs
mapIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::map
CodSpeed Performance Gauge
0%
785.4 µs
789 µs
mathIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::math
CodSpeed Performance Gauge
0%
44 ms
44 ms
matrixIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::matrix
CodSpeed Performance Gauge
0%
10.8 ms
10.8 ms
merge-during-rebuildIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::merge-during-rebuild
CodSpeed Performance Gauge
0%
1.3 ms
1.3 ms
merge-saturatesIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::merge-saturates
CodSpeed Performance Gauge
0%
3.4 ms
3.4 ms
merge_readIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::merge_read
CodSpeed Performance Gauge
0%
504.1 µs
502.1 µs
multisetIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::multiset
CodSpeed Performance Gauge
-1%
3 ms
3 ms
name-resolutionIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::name-resolution
CodSpeed Performance Gauge
0%
1.3 ms
1.3 ms
naturalsIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::naturals
CodSpeed Performance Gauge
0%
3.7 ms
3.7 ms
pathIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::path
CodSpeed Performance Gauge
+1%
1.3 ms
1.3 ms
path-unionIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::path-union
CodSpeed Performance Gauge
0%
1.4 ms
1.5 ms
pathproofIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::pathproof
CodSpeed Performance Gauge
0%
1.7 ms
1.7 ms
points-toIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::points-to
CodSpeed Performance Gauge
0%
2.8 ms
2.8 ms
primitivesIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::primitives
CodSpeed Performance Gauge
-1%
670.4 µs
679.9 µs
primsIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::prims
CodSpeed Performance Gauge
0%
4 ms
4 ms
push-popIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::push-pop
CodSpeed Performance Gauge
+1%
819.1 µs
814.1 µs
repro-defineIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-define
CodSpeed Performance Gauge
0%
889.6 µs
892.7 µs
repro-desugar-143Ignored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-desugar-143
CodSpeed Performance Gauge
0%
10.7 ms
10.7 ms
repro-empty-queryIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-empty-query
CodSpeed Performance Gauge
+1%
661.7 µs
655.4 µs
repro-equal-constantIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-equal-constant
CodSpeed Performance Gauge
-1%
679.4 µs
687 µs
repro-equal-constant2Ignored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-equal-constant2
CodSpeed Performance Gauge
0%
698.4 µs
696 µs
repro-new-backend-deleteIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-new-backend-delete
CodSpeed Performance Gauge
0%
539.7 µs
539.2 µs
repro-new-backend-primsIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-new-backend-prims
CodSpeed Performance Gauge
+1%
807.6 µs
803.4 µs
repro-new-backend-python-vecIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-new-backend-python-vec
CodSpeed Performance Gauge
0%
162.8 ms
162.6 ms
repro-noteqbugIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-noteqbug
CodSpeed Performance Gauge
+1%
880.5 µs
875.6 µs
repro-primitive-queryIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-primitive-query
CodSpeed Performance Gauge
0%
733.4 µs
734.5 µs
repro-querybugIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-querybug
CodSpeed Performance Gauge
0%
1 ms
1.1 ms
repro-querybug2Ignored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-querybug2
CodSpeed Performance Gauge
0%
762.4 µs
759.2 µs
repro-querybug3Ignored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-querybug3
CodSpeed Performance Gauge
0%
2 ms
2 ms
repro-querybug4Ignored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-querybug4
CodSpeed Performance Gauge
+1%
780.5 µs
773.5 µs
repro-should-saturateIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-should-saturate
CodSpeed Performance Gauge
+1%
614.9 µs
611.3 µs
repro-silly-panicIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-silly-panic
CodSpeed Performance Gauge
0%
946.8 µs
949 µs
repro-typechecking-scheduleIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-typechecking-schedule
CodSpeed Performance Gauge
-1%
418.2 µs
420.8 µs
repro-unsoundIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-unsound
CodSpeed Performance Gauge
0%
437.1 ms
437.7 ms
repro-unsound-htutorialIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-unsound-htutorial
CodSpeed Performance Gauge
+1%
1 ms
1 ms
repro-vec-unequalIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::repro-vec-unequal
CodSpeed Performance Gauge
0%
1 ms
1 ms
resolutionIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::resolution
CodSpeed Performance Gauge
-1%
4.9 ms
4.9 ms
rw-analysisIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::rw-analysis
CodSpeed Performance Gauge
0%
30.9 ms
31 ms
schedule-demoIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::schedule-demo
CodSpeed Performance Gauge
0%
2.4 ms
2.4 ms
setIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::set
CodSpeed Performance Gauge
0%
2.5 ms
2.5 ms
set_sort_functionIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::set_sort_function
CodSpeed Performance Gauge
0%
728 µs
730.5 µs
stratifiedIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::stratified
CodSpeed Performance Gauge
0%
1.2 ms
1.2 ms
stringIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::string
CodSpeed Performance Gauge
0%
581.8 µs
583.8 µs
string_quotesIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::string_quotes
CodSpeed Performance Gauge
+1%
506.6 µs
501.7 µs
subsumeIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::subsume
CodSpeed Performance Gauge
0%
1.7 ms
1.7 ms
subsume-relationIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::subsume-relation
CodSpeed Performance Gauge
0%
1 ms
1 ms
test-combinedIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::test-combined
CodSpeed Performance Gauge
0%
1.5 ms
1.5 ms
test-combined-stepsIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::test-combined-steps
CodSpeed Performance Gauge
0%
3.1 ms
3.1 ms
towers-of-hanoiIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::towers-of-hanoi
CodSpeed Performance Gauge
0%
3.5 ms
3.5 ms
tricky-type-checkingIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::tricky-type-checking
CodSpeed Performance Gauge
0%
12.8 ms
12.8 ms
type-constraints-testsIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::type-constraints-tests
CodSpeed Performance Gauge
+1%
560.5 µs
556.5 µs
typecheckIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::typecheck
CodSpeed Performance Gauge
0%
7.1 ms
7.1 ms
unification-points-toIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::unification-points-to
CodSpeed Performance Gauge
0%
10.7 ms
10.8 ms
unifyIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::unify
CodSpeed Performance Gauge
0%
1.2 ms
1.2 ms
unstable-fnIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::unstable-fn
CodSpeed Performance Gauge
-1%
7.1 ms
7.2 ms
untilIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::until
CodSpeed Performance Gauge
0%
3.3 ms
3.3 ms
vecIgnored
benches/example_benchmarks.rs::benches::criterion_benchmark::vec
CodSpeed Performance Gauge
0%
1.7 ms
1.7 ms

Commits

Click on a commit to change the comparison range
Base
main
d2fa5b7
0%
Don't panic when extracting non existent term This PR changes the behavior of extract when it is a primitive sort and it does not exist, so that it does not panic but raises an error instead. This was the previous behavior on the old backend and it was relied on by the Python bindings. They used this fact to try extracting a term, and only if it doesn't exist, then run some rules to create it (https://github.com/egraphs-good/egglog-python/blob/b8be0848e22137396f31f86a73c447f4997f68fe/python/egglog/exp/array_api.py#L1973-L1985). The alterantive of using `check` and then extracting is slower especially when the terms are large. Currently, it will panic and catching a panic in Rust and then continuing is not ideal. This PR handles a cleanup as well even if the rule doesn't succeed.
1e638e6
3 days ago
by saulshanabrook
0%
nits
ce28183
3 days ago
by saulshanabrook
© 2025 CodSpeed Technology
Home Terms Privacy Docs