Skip to content

ArenaNode: stabilize cursor typing and allocation checks#167

Open
MilesCranmerBot wants to merge 9 commits intoSymbolicML:masterfrom
MilesCranmerBot:arenanode-prototype
Open

ArenaNode: stabilize cursor typing and allocation checks#167
MilesCranmerBot wants to merge 9 commits intoSymbolicML:masterfrom
MilesCranmerBot:arenanode-prototype

Conversation

@MilesCranmerBot
Copy link
Copy Markdown
Contributor

Summary

  • add ArenaNode-specific / helpers to avoid ambiguity/inference issues
  • make traversal return and update call sites for concrete typing
  • tighten ArenaNode child-setting dispatch and a few Int32 construction paths
  • add explicit Arena allocation regression checks in using a fresh Julia subprocess

Validation

  • Test Summary: | Pass Total Time
    Arena-backed node prototype | 43 43 23.5s (43/43 pass)
  • (3011/3011 pass)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 20, 2026

Benchmark Results (Julia v1)

Time benchmarks
master 847c2c6... master / 847c2c6...
eval/ComplexF32/evaluation 6.86 ± 0.47 ms 6.91 ± 0.47 ms 0.993 ± 0.096
eval/ComplexF64/evaluation 10.3 ± 0.84 ms 10.2 ± 0.86 ms 1.01 ± 0.12
eval/Float32/derivative 11.4 ± 1.6 ms 11.3 ± 1 ms 1.01 ± 0.17
eval/Float32/derivative_turbo 11.3 ± 1.3 ms 11.2 ± 1.1 ms 1.01 ± 0.15
eval/Float32/evaluation 2.48 ± 0.25 ms 2.47 ± 0.23 ms 1.01 ± 0.14
eval/Float32/evaluation_bumper 0.604 ± 0.016 ms 0.602 ± 0.016 ms 1 ± 0.037
eval/Float32/evaluation_turbo 0.522 ± 0.032 ms 0.522 ± 0.031 ms 1 ± 0.085
eval/Float32/evaluation_turbo_bumper 0.604 ± 0.016 ms 0.603 ± 0.015 ms 1 ± 0.037
eval/Float64/derivative 14.2 ± 1.6 ms 14.3 ± 1.8 ms 0.997 ± 0.17
eval/Float64/derivative_turbo 14.1 ± 1.7 ms 14.3 ± 1.6 ms 0.987 ± 0.16
eval/Float64/evaluation 2.85 ± 0.28 ms 2.87 ± 0.27 ms 0.993 ± 0.14
eval/Float64/evaluation_bumper 1.27 ± 0.041 ms 1.26 ± 0.042 ms 1 ± 0.046
eval/Float64/evaluation_turbo 1.02 ± 0.06 ms 1.02 ± 0.061 ms 1 ± 0.084
eval/Float64/evaluation_turbo_bumper 1.27 ± 0.043 ms 1.27 ± 0.043 ms 1 ± 0.048
utils/combine_operators/break_sharing 0.0413 ± 0.00087 ms 0.0409 ± 0.00091 ms 1.01 ± 0.031
utils/convert/break_sharing 27.8 ± 3.1 μs 27.7 ± 3.2 μs 1 ± 0.16
utils/convert/preserve_sharing 0.0989 ± 0.0079 ms 0.1 ± 0.0086 ms 0.985 ± 0.12
utils/copy/break_sharing 27.5 ± 3.1 μs 28.1 ± 3.2 μs 0.978 ± 0.16
utils/copy/preserve_sharing 0.0999 ± 0.0091 ms 0.0994 ± 0.0084 ms 1.01 ± 0.12
utils/count_constant_nodes/break_sharing 12.8 ± 0.71 μs 12.8 ± 0.74 μs 0.993 ± 0.08
utils/count_constant_nodes/preserve_sharing 0.084 ± 0.0064 ms 0.0839 ± 0.0065 ms 1 ± 0.11
utils/count_depth/break_sharing 13.8 ± 0.79 μs 13.4 ± 0.94 μs 1.04 ± 0.094
utils/count_nodes/break_sharing 12.2 ± 0.77 μs 12.7 ± 0.75 μs 0.96 ± 0.084
utils/count_nodes/preserve_sharing 0.0856 ± 0.0069 ms 0.0843 ± 0.0069 ms 1.01 ± 0.12
utils/get_set_constants!/break_sharing 0.0325 ± 0.0028 ms 0.0322 ± 0.0031 ms 1.01 ± 0.13
utils/get_set_constants!/preserve_sharing 0.172 ± 0.01 ms 0.171 ± 0.0097 ms 1.01 ± 0.083
utils/get_set_constants_parametric 0.0473 ± 0.0062 ms 0.0466 ± 0.0061 ms 1.01 ± 0.19
utils/has_constants/break_sharing 7.39 ± 0.71 μs 7.41 ± 0.62 μs 0.997 ± 0.13
utils/has_operators/break_sharing 2.56 ± 0.15 μs 2.62 ± 0.12 μs 0.98 ± 0.073
utils/hash/break_sharing 23.3 ± 1.5 μs 24 ± 1.8 μs 0.972 ± 0.095
utils/hash/preserve_sharing 0.1 ± 0.0073 ms 0.0998 ± 0.0077 ms 1.01 ± 0.11
utils/index_constant_nodes/break_sharing 28.7 ± 2.4 μs 29 ± 2.1 μs 0.988 ± 0.11
utils/index_constant_nodes/preserve_sharing 0.101 ± 0.008 ms 0.101 ± 0.0075 ms 1 ± 0.11
utils/is_constant/break_sharing 8 ± 0.83 μs 7.91 ± 0.68 μs 1.01 ± 0.14
utils/simplify_tree/break_sharing 31.3 ± 1.2 μs 0.0321 ± 0.0014 ms 0.973 ± 0.055
utils/simplify_tree/preserve_sharing 0.113 ± 0.0076 ms 0.113 ± 0.0072 ms 1 ± 0.093
utils/string_tree/break_sharing 0.443 ± 0.018 ms 0.446 ± 0.018 ms 0.993 ± 0.056
utils/string_tree/preserve_sharing 0.542 ± 0.022 ms 0.541 ± 0.02 ms 1 ± 0.055
time_to_load 0.169 ± 0.0026 s 0.175 ± 0.0024 s 0.965 ± 0.02
Memory benchmarks
master 847c2c6... master / 847c2c6...
eval/ComplexF32/evaluation 0.981 k allocs: 2.51 MB 0.99 k allocs: 2.53 MB 0.991
eval/ComplexF64/evaluation 0.969 k allocs: 4.94 MB 0.996 k allocs: 5.07 MB 0.973
eval/Float32/derivative 4.69 k allocs: 17.7 MB 4.55 k allocs: 17.1 MB 1.03
eval/Float32/derivative_turbo 4.64 k allocs: 17.5 MB 4.71 k allocs: 17.7 MB 0.984
eval/Float32/evaluation 0.987 k allocs: 1.29 MB 0.975 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.96 k allocs: 1.25 MB 1
eval/Float32/evaluation_turbo_bumper 0.303 k allocs: 0.393 MB 0.303 k allocs: 0.393 MB 1
eval/Float64/derivative 4.8 k allocs: 0.0351 GB 4.83 k allocs: 0.0353 GB 0.994
eval/Float64/derivative_turbo 4.72 k allocs: 0.0345 GB 4.83 k allocs: 0.0353 GB 0.978
eval/Float64/evaluation 1.01 k allocs: 2.58 MB 0.972 k allocs: 2.49 MB 1.04
eval/Float64/evaluation_bumper 0.303 k allocs: 0.771 MB 0.303 k allocs: 0.771 MB 1
eval/Float64/evaluation_turbo 0.99 k allocs: 2.53 MB 1.01 k allocs: 2.57 MB 0.985
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.

1 participant