Skip to content

remove default zero(UInt) from hash seed#141

Open
adienes wants to merge 2 commits intoSymbolicML:masterfrom
adienes:hash_default
Open

remove default zero(UInt) from hash seed#141
adienes wants to merge 2 commits intoSymbolicML:masterfrom
adienes:hash_default

Conversation

@adienes
Copy link
Copy Markdown

@adienes adienes commented Oct 8, 2025

this creates a 1-arg method Base.hash(:: AbstractExpressionNode{T}) morespecific than the default hash(::Any) fallback, and since the default seed is not 0 anymore this leads to hash inconsistencies and bugs.

@codecov
Copy link
Copy Markdown

codecov bot commented Oct 8, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 59.33%. Comparing base (bc05728) to head (c019139).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #141   +/-   ##
=======================================
  Coverage   59.33%   59.33%           
=======================================
  Files          30       30           
  Lines        2673     2673           
=======================================
  Hits         1586     1586           
  Misses       1087     1087           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@MilesCranmer
Copy link
Copy Markdown
Member

Thanks.

Other issues seem to be related to Julia 1.12.0

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1)

Time benchmarks
master c019139... master / c019139...
eval/ComplexF32/evaluation 6.91 ± 0.46 ms 6.93 ± 0.5 ms 0.997 ± 0.098
eval/ComplexF64/evaluation 10.2 ± 0.83 ms 10.2 ± 0.79 ms 0.998 ± 0.11
eval/Float32/derivative 10.8 ± 1.3 ms 11.1 ± 1.6 ms 0.974 ± 0.18
eval/Float32/derivative_turbo 10.8 ± 1.5 ms 11 ± 1.7 ms 0.976 ± 0.2
eval/Float32/evaluation 2.45 ± 0.25 ms 2.49 ± 0.26 ms 0.984 ± 0.14
eval/Float32/evaluation_bumper 0.597 ± 0.017 ms 0.605 ± 0.017 ms 0.987 ± 0.039
eval/Float32/evaluation_turbo 0.516 ± 0.033 ms 0.533 ± 0.033 ms 0.968 ± 0.085
eval/Float32/evaluation_turbo_bumper 0.598 ± 0.016 ms 0.606 ± 0.019 ms 0.987 ± 0.041
eval/Float64/derivative 14.1 ± 3.2 ms 14.9 ± 3.8 ms 0.949 ± 0.32
eval/Float64/derivative_turbo 14.2 ± 2.9 ms 14.8 ± 4 ms 0.956 ± 0.32
eval/Float64/evaluation 2.87 ± 0.28 ms 2.87 ± 0.3 ms 0.999 ± 0.14
eval/Float64/evaluation_bumper 1.26 ± 0.042 ms 1.27 ± 0.046 ms 0.991 ± 0.049
eval/Float64/evaluation_turbo 1.01 ± 0.061 ms 1.03 ± 0.065 ms 0.978 ± 0.085
eval/Float64/evaluation_turbo_bumper 1.26 ± 0.044 ms 1.27 ± 0.044 ms 0.987 ± 0.049
utils/combine_operators/break_sharing 0.0414 ± 0.00091 ms 0.0413 ± 0.00082 ms 1 ± 0.03
utils/convert/break_sharing 27.8 ± 3.6 μs 27.8 ± 3.5 μs 0.999 ± 0.18
utils/convert/preserve_sharing 0.0987 ± 0.0088 ms 0.0988 ± 0.0085 ms 1 ± 0.12
utils/copy/break_sharing 28.2 ± 4 μs 27.6 ± 3.9 μs 1.02 ± 0.2
utils/copy/preserve_sharing 0.1 ± 0.01 ms 0.0987 ± 0.008 ms 1.02 ± 0.13
utils/count_constant_nodes/break_sharing 12.7 ± 0.72 μs 12.8 ± 0.74 μs 0.995 ± 0.081
utils/count_constant_nodes/preserve_sharing 0.086 ± 0.0092 ms 0.0837 ± 0.0049 ms 1.03 ± 0.13
utils/count_depth/break_sharing 14.4 ± 0.83 μs 13.4 ± 1 μs 1.07 ± 0.1
utils/count_nodes/break_sharing 12.3 ± 0.79 μs 12 ± 0.7 μs 1.02 ± 0.089
utils/count_nodes/preserve_sharing 0.0869 ± 0.0094 ms 0.0859 ± 0.0058 ms 1.01 ± 0.13
utils/get_set_constants!/break_sharing 0.0338 ± 0.0045 ms 0.0332 ± 0.0037 ms 1.02 ± 0.18
utils/get_set_constants!/preserve_sharing 0.175 ± 0.012 ms 0.173 ± 0.011 ms 1.01 ± 0.095
utils/get_set_constants_parametric 0.046 ± 0.005 ms 0.0456 ± 0.0039 ms 1.01 ± 0.14
utils/has_constants/break_sharing 7.55 ± 0.72 μs 7.45 ± 0.77 μs 1.01 ± 0.14
utils/has_operators/break_sharing 2.58 ± 0.12 μs 2.58 ± 0.12 μs 1 ± 0.067
utils/hash/break_sharing 26 ± 2.1 μs 23.3 ± 1.6 μs 1.11 ± 0.12
utils/hash/preserve_sharing 0.0994 ± 0.0083 ms 0.0986 ± 0.0073 ms 1.01 ± 0.11
utils/index_constant_nodes/break_sharing 28.5 ± 2.1 μs 29.5 ± 2.3 μs 0.966 ± 0.1
utils/index_constant_nodes/preserve_sharing 0.103 ± 0.0099 ms 0.0991 ± 0.0055 ms 1.04 ± 0.12
utils/is_constant/break_sharing 8.04 ± 0.74 μs 8.12 ± 0.92 μs 0.99 ± 0.14
utils/simplify_tree/break_sharing 31.2 ± 1.3 μs 31.4 ± 1.1 μs 0.993 ± 0.053
utils/simplify_tree/preserve_sharing 0.111 ± 0.0058 ms 0.111 ± 0.0054 ms 1 ± 0.072
utils/string_tree/break_sharing 0.443 ± 0.023 ms 0.441 ± 0.021 ms 1.01 ± 0.071
utils/string_tree/preserve_sharing 0.543 ± 0.027 ms 0.538 ± 0.025 ms 1.01 ± 0.07
time_to_load 0.175 ± 0.0019 s 0.172 ± 0.0044 s 1.02 ± 0.029
Memory benchmarks
master c019139... master / c019139...
eval/ComplexF32/evaluation 0.972 k allocs: 2.49 MB 0.963 k allocs: 2.46 MB 1.01
eval/ComplexF64/evaluation 0.993 k allocs: 5.06 MB 1.01 k allocs: 5.12 MB 0.988
eval/Float32/derivative 4.66 k allocs: 17.6 MB 4.73 k allocs: 17.8 MB 0.986
eval/Float32/derivative_turbo 4.62 k allocs: 17.4 MB 4.67 k allocs: 17.6 MB 0.989
eval/Float32/evaluation 0.984 k allocs: 1.28 MB 0.978 k allocs: 1.27 MB 1.01
eval/Float32/evaluation_bumper 0.303 k allocs: 0.393 MB 0.303 k allocs: 0.393 MB 1
eval/Float32/evaluation_turbo 0.963 k allocs: 1.25 MB 0.969 k allocs: 1.26 MB 0.994
eval/Float32/evaluation_turbo_bumper 0.303 k allocs: 0.393 MB 0.303 k allocs: 0.393 MB 1
eval/Float64/derivative 4.75 k allocs: 0.0348 GB 4.8 k allocs: 0.0351 GB 0.99
eval/Float64/derivative_turbo 4.86 k allocs: 0.0356 GB 4.78 k allocs: 0.0349 GB 1.02
eval/Float64/evaluation 1.01 k allocs: 2.57 MB 0.999 k allocs: 2.56 MB 1.01
eval/Float64/evaluation_bumper 0.303 k allocs: 0.771 MB 0.303 k allocs: 0.771 MB 1
eval/Float64/evaluation_turbo 0.999 k allocs: 2.56 MB 0.99 k allocs: 2.53 MB 1.01
eval/Float64/evaluation_turbo_bumper 0.303 k allocs: 0.771 MB 0.303 k allocs: 0.771 MB 1
utils/combine_operators/break_sharing 4 allocs: 0.953 kB 4 allocs: 0.953 kB 1
utils/convert/break_sharing 2 k allocs: 0.123 MB 2 k allocs: 0.123 MB 1
utils/convert/preserve_sharing 2.4 k allocs: 0.192 MB 2.4 k allocs: 0.192 MB 1
utils/copy/break_sharing 2 k allocs: 0.123 MB 2 k allocs: 0.123 MB 1
utils/copy/preserve_sharing 2.4 k allocs: 0.192 MB 2.4 k allocs: 0.192 MB 1
utils/count_constant_nodes/break_sharing 4 allocs: 0.953 kB 4 allocs: 0.953 kB 1
utils/count_constant_nodes/preserve_sharing 0.404 k allocs: 0.0696 MB 0.404 k allocs: 0.0696 MB 1
utils/count_depth/break_sharing 4 allocs: 0.953 kB 4 allocs: 0.953 kB 1
utils/count_nodes/break_sharing 4 allocs: 0.953 kB 4 allocs: 0.953 kB 1
utils/count_nodes/preserve_sharing 0.404 k allocs: 0.0696 MB 0.404 k allocs: 0.0696 MB 1
utils/get_set_constants!/break_sharing 0.898 k allocs: 25.2 kB 0.898 k allocs: 25.2 kB 1
utils/get_set_constants!/preserve_sharing 1.7 k allocs: 0.138 MB 1.7 k allocs: 0.138 MB 1
utils/get_set_constants_parametric 1.42 k allocs: 0.0663 MB 1.42 k allocs: 0.0663 MB 1
utils/has_constants/break_sharing 4 allocs: 0.203 kB 4 allocs: 0.203 kB 1
utils/has_operators/break_sharing 4 allocs: 0.203 kB 4 allocs: 0.203 kB 1
utils/hash/break_sharing 0.104 k allocs: 2.52 kB 0.104 k allocs: 2.52 kB 1
utils/hash/preserve_sharing 0.504 k allocs: 0.0711 MB 0.504 k allocs: 0.0711 MB 1
utils/index_constant_nodes/break_sharing 2.1 k allocs: 0.094 MB 2.1 k allocs: 0.094 MB 1
utils/index_constant_nodes/preserve_sharing 2.5 k allocs: 0.163 MB 2.5 k allocs: 0.163 MB 1
utils/is_constant/break_sharing 4 allocs: 0.203 kB 4 allocs: 0.203 kB 1
utils/simplify_tree/break_sharing 0.104 k allocs: 2.52 kB 0.104 k allocs: 2.52 kB 1
utils/simplify_tree/preserve_sharing 0.504 k allocs: 0.0711 MB 0.504 k allocs: 0.0711 MB 1
utils/string_tree/break_sharing 11.9 k allocs: 0.999 MB 11.9 k allocs: 0.999 MB 1
utils/string_tree/preserve_sharing 12.3 k allocs: 1.07 MB 12.3 k allocs: 1.07 MB 1
time_to_load 0.145 k allocs: 11 kB 0.145 k allocs: 11 kB 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants