Skip to content

Allow Moshi 0.3.13 (fix unbound BasicSymbolicImpl.Div constructor) - #1125

Merged
ChrisRackauckas merged 1 commit into
JuliaSymbolics:masterfrom
ChrisRackauckas-Claude:agent/1037-moshi-compat
Oct 1, 2026
Merged

ChrisRackauckas merged 1 commit into
JuliaSymbolics:masterfrom
ChrisRackauckas-Claude:agent/1037-moshi-compat

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Summary

Moshi 0.3.10–0.3.12 generate an unbound promoting constructor for BasicSymbolicImpl.Div (Aqua unbound-args failure). That generator defect was fixed upstream in Moshi v0.3.13 (Roger-luo/Moshi.jl#92). This PR only widens SymbolicUtils compat from Moshi = "0.3.6 - 0.3.9" to Moshi = "0.3.6 - 0.3.9, 0.3.13", so the resolver can pick the fixed release while still excluding the broken range. Moshi remains MIT-licensed; no new dependency.

Triage diagnosis verified locally: DemoTree and BasicSymbolicImpl each show 1 unbound arg on Moshi 0.3.12 and 0 on 0.3.13.

Verification

Moshi version before / after

# before (master pin 0.3.6 - 0.3.9)
Moshi v0.3.9
unbound_count=0   # failure masked by pin

# forced broken version
Moshi v0.3.12
unbound_count=1
BasicSymbolicImpl.Div(... Union{Type{T}, Type{Union{}}} ...) where T<:SymVariant

# after (this PR)
Moshi v0.3.13
unbound_count=0

GROUP=QA fail-before (temporary Moshi = "=0.3.12")

GROUP=QA julia --project -e 'using Pkg; Pkg.test()'
Test Summary:                                  | Pass  Fail  Total     Time
SciMLTesting QA                                |   19     1     20  1m21.0s
  Quality Assurance                            |   19     1     20  1m10.7s
    Method ambiguity                           |    1           1     5.1s
    Unbound type parameters                    |          1      1     4.2s
...
ERROR: Package SymbolicUtils errored during testing

GROUP=QA pass-after (this PR, Moshi ↑ 0.3.12 ⇒ 0.3.13)

GROUP=QA julia --project -e 'using Pkg; Pkg.test()'
↑ Moshi v0.3.12 ⇒ v0.3.13
Test Summary:   | Pass  Total     Time
SciMLTesting QA |   20     20  1m18.4s
Test Summary: | Pass  Total  Time
AdjView JET   |   37     37  23.4s
     Testing SymbolicUtils tests passed

GROUP=Core (Moshi v0.3.13)

GROUP=Core julia --project -e 'using Pkg; Pkg.test()'
Status ... Moshi v0.3.13
Test Summary: |  Pass  Broken  Total      Time
Core          | 18442       3  18445  13m56.0s
     Testing SymbolicUtils tests passed

typos Project.toml clean.

What I did NOT verify

  • Downstream packages (Symbolics.jl, ModelingToolkit.jl, etc.) against Moshi 0.3.13 beyond SymbolicUtils Core/QA.
  • Julia versions other than 1.12.4 (local).
  • Whether allowing only "0.3.13" (dropping 0.3.6–0.3.9) would be preferable for registry simplicity.

What a reviewer should push back on

  • Compat string form: "0.3.6 - 0.3.9, 0.3.13" vs forcing "0.3.13" only.
  • Whether a version bump / registry release should accompany the unpin.
  • No dedicated regression test was added; Aqua unbound-args in GROUP=QA already covers this once 0.3.13 is resolvable.

Closes #1037

Please ignore this draft until reviewed by @ChrisRackauckas.

Harness: Cursor Agent CLI 2026.09.28-64d2043; model: auto; transcript: /home/crackauc/sandbox/agent-jobs/ib-su/SymbolicUtils.jl/jobs/1037-cursor/log.txt on amdci2.julia.csail.mit.edu

Risk assessment

  • Risk: low
  • Blast radius: Project.toml Moshi compat only; public API unchanged; downstream packages that resolve Moshi may upgrade from ≤0.3.9 to 0.3.13
  • Evidence: failing-before/passing-after GROUP=QA unbound-args; GROUP=Core passed with Moshi 0.3.13
  • Independent review: pending
  • Merge: needs human review until the independent review is in

Moshi 0.3.10–0.3.12 emit an unbound promoting Div constructor; v0.3.13
(Roger-luo/Moshi.jl#92) binds those parameters. Keep excluding the broken
range while admitting the fixed release.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Cursor Agent <noreply@cursor.com>
Agent-Harness: Cursor Agent CLI 2026.09.28-64d2043
Agent-Model: auto
Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/ib-su/SymbolicUtils.jl/jobs/1037-cursor/log.txt on amdci2.julia.csail.mit.edu
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia vlts)

Time benchmarks
master 4488e3e... master / 4488e3e...
arithmetic/2-arg mul 8.18 ± 0.49 μs 9.09 ± 1.2 μs 0.9 ± 0.13
arithmetic/addition 0.0507 ± 0.0061 ms 0.0522 ± 0.0034 ms 0.972 ± 0.13
arithmetic/division 17.7 ± 0.32 μs 18.4 ± 0.69 μs 0.961 ± 0.04
arithmetic/multiplication 26.7 ± 0.49 μs 27.1 ± 0.91 μs 0.987 ± 0.038
codegen/arrayop_nested/fast_toexpr 7.14 ± 0.84 μs 7.3 ± 0.84 μs 0.979 ± 0.16
codegen/arrayop_nested/toexpr 0.0406 ± 0.0047 ms 0.0409 ± 0.0035 ms 0.993 ± 0.14
codegen/deep_poly/deg=10:fast_toexpr 0.0587 ± 0.0036 ms 0.0582 ± 0.0031 ms 1.01 ± 0.081
codegen/deep_poly/deg=10:toexpr 0.0628 ± 0.0069 ms 0.0616 ± 0.0024 ms 1.02 ± 0.12
codegen/deep_poly/deg=14:fast_toexpr 0.108 ± 0.007 ms 0.105 ± 0.0068 ms 1.02 ± 0.094
codegen/deep_poly/deg=14:toexpr 0.105 ± 0.0074 ms 0.114 ± 0.013 ms 0.918 ± 0.12
codegen/deep_poly/deg=6:fast_toexpr 27.1 ± 2.6 μs 26.6 ± 1.7 μs 1.02 ± 0.12
codegen/deep_poly/deg=6:toexpr 28.4 ± 3.1 μs 28.2 ± 4.9 μs 1 ± 0.21
codegen/makearray/n=100:fast_toexpr 0.0536 ± 0.0036 ms 0.0535 ± 0.0027 ms 1 ± 0.084
codegen/makearray/n=100:toexpr 0.407 ± 0.037 ms 0.422 ± 0.016 ms 0.964 ± 0.095
codegen/makearray/n=200:fast_toexpr 0.0893 ± 0.0032 ms 0.0892 ± 0.004 ms 1 ± 0.057
codegen/makearray/n=200:toexpr 0.576 ± 0.027 ms 0.618 ± 0.069 ms 0.932 ± 0.11
codegen/makearray/n=400:fast_toexpr 0.168 ± 0.012 ms 0.169 ± 0.013 ms 0.993 ± 0.1
codegen/makearray/n=400:toexpr 0.933 ± 0.053 ms 0.969 ± 0.031 ms 0.962 ± 0.063
codegen/wide_deep_poly/fast_toexpr 0.376 ± 0.021 ms 0.386 ± 0.023 ms 0.974 ± 0.079
codegen/wide_deep_poly/toexpr 0.371 ± 0.03 ms 0.386 ± 0.037 ms 0.96 ± 0.12
codegen/wide_poly/n=100:fast_toexpr 0.208 ± 0.017 ms 0.211 ± 0.02 ms 0.986 ± 0.12
codegen/wide_poly/n=100:toexpr 0.209 ± 0.0085 ms 0.225 ± 0.011 ms 0.928 ± 0.057
codegen/wide_poly/n=25:fast_toexpr 0.0475 ± 0.0017 ms 0.0488 ± 0.0038 ms 0.973 ± 0.084
codegen/wide_poly/n=25:toexpr 0.054 ± 0.0055 ms 0.0572 ± 0.003 ms 0.944 ± 0.11
codegen/wide_poly/n=50:fast_toexpr 0.0981 ± 0.0088 ms 0.099 ± 0.0071 ms 0.991 ± 0.11
codegen/wide_poly/n=50:toexpr 0.106 ± 0.0057 ms 0.114 ± 0.0068 ms 0.931 ± 0.075
irstructure/search_variables/common:IRStructure 0.336 ± 0.021 ms 0.339 ± 0.016 ms 0.99 ± 0.076
irstructure/search_variables/common:reference 0.555 ± 0.073 ms 0.558 ± 0.064 ms 0.995 ± 0.17
irstructure/search_variables/dissimilar:IRStructure 0.0832 ± 0.0093 ms 0.0838 ± 0.0056 ms 0.993 ± 0.13
irstructure/search_variables/dissimilar:reference 0.157 ± 0.016 ms 0.163 ± 0.025 ms 0.965 ± 0.18
irstructure/subset_ir/large 1.82 ± 0.084 ms 1.83 ± 0.087 ms 0.995 ± 0.066
irstructure/subset_ir/small 0.131 ± 0.014 ms 0.144 ± 0.016 ms 0.914 ± 0.14
irstructure/substitute/IRSubstituter 5.99 ± 0.28 ms 6.19 ± 0.28 ms 0.967 ± 0.063
irstructure/substitute/reference 6.28 ± 0.29 ms 6.46 ± 0.23 ms 0.973 ± 0.056
irstructure/substitute/sparse IRSubstituter 0.917 ± 0.034 ms 0.978 ± 0.045 ms 0.938 ± 0.055
irstructure/substitute/sparse reference 1.43 ± 0.064 ms 1.48 ± 0.057 ms 0.97 ± 0.057
overhead/acrule/a+2 1.41 ± 0.071 μs 1.59 ± 0.11 μs 0.888 ± 0.075
overhead/acrule/a+2+b 0.045 ± 0.002 μs 0.043 ± 0.001 μs 1.05 ± 0.052
overhead/acrule/a+b 2.55 ± 0.14 μs 2.8 ± 0.18 μs 0.911 ± 0.077
overhead/acrule/noop:Int 0.035 ± 0.001 μs 0.039 ± 0.002 μs 0.897 ± 0.053
overhead/acrule/noop:Sym 0.038 ± 0.001 μs 0.038 ± 0.001 μs 1 ± 0.037
overhead/get_degrees/large_poly 0.064 ± 0.001 μs 0.074 ± 0.002 μs 0.865 ± 0.027
overhead/isequal/different 0.438 ± 0.018 ms 0.437 ± 0.045 ms 1 ± 0.11
overhead/isequal/identical 3.37 ± 0.097 μs 3.79 ± 0.018 μs 0.889 ± 0.026
overhead/rule/noop:Int 0.046 ± 0.001 μs 0.046 ± 0.002 μs 1 ± 0.049
overhead/rule/noop:Sym 0.044 ± 0.001 μs 0.05 ± 0.002 μs 0.88 ± 0.04
overhead/rule/noop:Term 0.05 ± 0.002 μs 0.044 ± 0.002 μs 1.14 ± 0.069
overhead/ruleset/noop:Int 22 ± 1 ns 22 ± 1 ns 1 ± 0.064
overhead/ruleset/noop:Sym 0.229 ± 0.018 μs 0.255 ± 0.018 μs 0.898 ± 0.095
overhead/ruleset/noop:Term 1.01 ± 0.054 μs 1.04 ± 0.032 μs 0.974 ± 0.06
overhead/simplify/noop:Int 24 ± 1 ns 22 ± 1 ns 1.09 ± 0.067
overhead/simplify/noop:Sym 27 ± 1 ns 29 ± 1 ns 0.931 ± 0.047
overhead/simplify/noop:Term 19.7 ± 0.45 μs 21.4 ± 1.4 μs 0.924 ± 0.063
overhead/simplify/randterm (+, *):serial 0.159 ± 0.009 s 0.164 ± 0.0093 s 0.965 ± 0.077
overhead/simplify/randterm (+, *):thread 0.192 ± 0.013 s 0.191 ± 0.014 s 1.01 ± 0.097
overhead/simplify/randterm (/, *):serial 0.127 ± 0.0077 ms 0.133 ± 0.0092 ms 0.954 ± 0.088
overhead/simplify/randterm (/, *):thread 0.13 ± 0.0076 ms 0.133 ± 0.006 ms 0.977 ± 0.072
overhead/substitute/a 25 ± 2.3 μs 23.6 ± 1.3 μs 1.06 ± 0.11
overhead/substitute/a,b 28.3 ± 0.56 μs 29 ± 2 μs 0.977 ± 0.069
overhead/substitute/a,b,c 27.6 ± 0.84 μs 28.4 ± 0.61 μs 0.973 ± 0.036
polyform/easy_iszero 12.7 ± 0.65 μs 13.5 ± 1.6 μs 0.944 ± 0.12
polyform/isone 0.651 ± 0.034 ms 0.681 ± 0.045 ms 0.955 ± 0.081
polyform/isone:noop 0.065 ± 0.002 μs 0.066 ± 0.002 μs 0.985 ± 0.043
polyform/iszero 0.553 ± 0.042 ms 0.573 ± 0.035 ms 0.966 ± 0.093
polyform/iszero:noop 0.074 ± 0.002 μs 0.066 ± 0.003 μs 1.12 ± 0.059
polyform/simplify_fractions 0.704 ± 0.038 ms 0.757 ± 0.094 ms 0.931 ± 0.13
printing/large_poly 0.159 ± 0.011 s 0.161 ± 0.0056 s 0.988 ± 0.077
time_to_load 1.07 ± 0.018 s 1.18 ± 0.048 s 0.905 ± 0.04
Memory benchmarks
master 4488e3e... master / 4488e3e...
arithmetic/2-arg mul 0.071 k allocs: 3.17 kB 0.073 k allocs: 3.23 kB 0.981
arithmetic/addition 0.206 k allocs: 6.78 kB 0.206 k allocs: 6.78 kB 1
arithmetic/division 0.117 k allocs: 4.61 kB 0.12 k allocs: 4.7 kB 0.98
arithmetic/multiplication 0.274 k allocs: 8.14 kB 0.274 k allocs: 8.14 kB 1
codegen/arrayop_nested/fast_toexpr 0.192 k allocs: 11.6 kB 0.198 k allocs: 11.7 kB 0.992
codegen/arrayop_nested/toexpr 0.455 k allocs: 20 kB 0.461 k allocs: 20.1 kB 0.995
codegen/deep_poly/deg=10:fast_toexpr 1.19 k allocs: 0.0636 MB 1.19 k allocs: 0.0636 MB 1
codegen/deep_poly/deg=10:toexpr 1.05 k allocs: 0.0497 MB 1.05 k allocs: 0.0497 MB 1
codegen/deep_poly/deg=14:fast_toexpr 2.07 k allocs: 0.126 MB 2.07 k allocs: 0.126 MB 1
codegen/deep_poly/deg=14:toexpr 1.89 k allocs: 0.093 MB 1.89 k allocs: 0.093 MB 1
codegen/deep_poly/deg=6:fast_toexpr 0.545 k allocs: 0.0328 MB 0.545 k allocs: 0.0328 MB 1
codegen/deep_poly/deg=6:toexpr 0.449 k allocs: 22.9 kB 0.449 k allocs: 22.9 kB 1
codegen/makearray/n=100:fast_toexpr 1.26 k allocs: 0.0658 MB 1.27 k allocs: 0.0659 MB 0.998
codegen/makearray/n=100:toexpr 4.31 k allocs: 0.17 MB 4.32 k allocs: 0.17 MB 0.999
codegen/makearray/n=200:fast_toexpr 2.17 k allocs: 0.109 MB 2.19 k allocs: 0.109 MB 0.998
codegen/makearray/n=200:toexpr 6.19 k allocs: 0.24 MB 6.21 k allocs: 0.241 MB 0.999
codegen/makearray/n=400:fast_toexpr 4.03 k allocs: 0.213 MB 4.07 k allocs: 0.214 MB 0.997
codegen/makearray/n=400:toexpr 9.88 k allocs: 0.383 MB 9.91 k allocs: 0.383 MB 0.999
codegen/wide_deep_poly/fast_toexpr 6.62 k allocs: 0.341 MB 6.62 k allocs: 0.341 MB 1
codegen/wide_deep_poly/toexpr 6.88 k allocs: 0.319 MB 6.88 k allocs: 0.319 MB 1
codegen/wide_poly/n=100:fast_toexpr 3.69 k allocs: 0.2 MB 3.69 k allocs: 0.2 MB 1
codegen/wide_poly/n=100:toexpr 3.72 k allocs: 0.162 MB 3.72 k allocs: 0.162 MB 1
codegen/wide_poly/n=25:fast_toexpr 0.958 k allocs: 0.0518 MB 0.958 k allocs: 0.0518 MB 1
codegen/wide_poly/n=25:toexpr 0.943 k allocs: 0.0412 MB 0.943 k allocs: 0.0412 MB 1
codegen/wide_poly/n=50:fast_toexpr 1.87 k allocs: 0.116 MB 1.87 k allocs: 0.116 MB 1
codegen/wide_poly/n=50:toexpr 1.87 k allocs: 0.0853 MB 1.87 k allocs: 0.0853 MB 1
irstructure/search_variables/common:IRStructure 0.04 k allocs: 5.31 kB 0.04 k allocs: 5.31 kB 1
irstructure/search_variables/common:reference 0.08 k allocs: 0.238 MB 0.08 k allocs: 0.238 MB 1
irstructure/search_variables/dissimilar:IRStructure 31 allocs: 4.19 kB 31 allocs: 4.19 kB 1
irstructure/search_variables/dissimilar:reference 0.07 k allocs: 0.115 MB 0.072 k allocs: 0.135 MB 0.854
irstructure/subset_ir/large 0.0425 M allocs: 1.99 MB 0.0425 M allocs: 1.99 MB 1
irstructure/subset_ir/small 2.65 k allocs: 0.214 MB 2.65 k allocs: 0.214 MB 1
irstructure/substitute/IRSubstituter 26.2 k allocs: 0.919 MB 26.2 k allocs: 0.919 MB 1
irstructure/substitute/reference 28.9 k allocs: 1.09 MB 31.5 k allocs: 1.13 MB 0.964
irstructure/substitute/sparse IRSubstituter 2.99 k allocs: 0.107 MB 2.99 k allocs: 0.107 MB 1
irstructure/substitute/sparse reference 5.66 k allocs: 0.274 MB 8.32 k allocs: 0.314 MB 0.871
overhead/acrule/a+2 0.032 k allocs: 1.19 kB 0.033 k allocs: 1.2 kB 0.987
overhead/acrule/a+2+b 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/a+b 0.043 k allocs: 1.67 kB 0.045 k allocs: 1.7 kB 0.982
overhead/acrule/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/get_degrees/large_poly 2 allocs: 32 B 2 allocs: 32 B 1
overhead/isequal/different 0 allocs: 0 B 0 allocs: 0 B
overhead/isequal/identical 0 allocs: 0 B 0 allocs: 0 B
overhead/rule/noop:Int 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Sym 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Term 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/ruleset/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/ruleset/noop:Sym 3 allocs: 0.109 kB 3 allocs: 0.109 kB 1
overhead/ruleset/noop:Term 12 allocs: 0.391 kB 12 allocs: 0.391 kB 1
overhead/simplify/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Term 0.295 k allocs: 12 kB 0.311 k allocs: 12.2 kB 0.98
overhead/simplify/randterm (+, *):serial 2.32 M allocs: 0.0902 GB 2.43 M allocs: 0.0918 GB 0.983
overhead/simplify/randterm (+, *):thread 2.38 M allocs: 0.248 GB 2.48 M allocs: 0.249 GB 0.994
overhead/simplify/randterm (/, *):serial 2.02 k allocs: 0.0753 MB 2.16 k allocs: 0.0775 MB 0.973
overhead/simplify/randterm (/, *):thread 2.06 k allocs: 0.0764 MB 2.2 k allocs: 0.0785 MB 0.973
overhead/substitute/a 0.131 k allocs: 4.86 kB 0.131 k allocs: 4.86 kB 1
overhead/substitute/a,b 0.171 k allocs: 6.22 kB 0.171 k allocs: 6.22 kB 1
overhead/substitute/a,b,c 0.177 k allocs: 6.31 kB 0.177 k allocs: 6.31 kB 1
polyform/easy_iszero 0.088 k allocs: 2.95 kB 0.094 k allocs: 3.05 kB 0.969
polyform/isone 7.2 k allocs: 0.501 MB 7.56 k allocs: 0.507 MB 0.988
polyform/isone:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/iszero 5.98 k allocs: 0.415 MB 6.16 k allocs: 0.419 MB 0.992
polyform/iszero:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/simplify_fractions 7.73 k allocs: 0.522 MB 7.92 k allocs: 0.525 MB 0.993
printing/large_poly 1.86 M allocs: 0.082 GB 1.86 M allocs: 0.082 GB 1
time_to_load 0.153 k allocs: 14.5 kB 0.153 k allocs: 14.5 kB 1

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1)

Time benchmarks
master 4488e3e... master / 4488e3e...
arithmetic/2-arg mul 7.55 ± 0.29 μs 7.6 ± 0.3 μs 0.994 ± 0.055
arithmetic/addition 0.0399 ± 0.00084 ms 0.0401 ± 0.00055 ms 0.997 ± 0.025
arithmetic/division 14.4 ± 0.39 μs 14.6 ± 0.37 μs 0.982 ± 0.037
arithmetic/multiplication 23.8 ± 0.72 μs 23.8 ± 0.59 μs 0.999 ± 0.039
codegen/arrayop_nested/fast_toexpr 6.49 ± 0.55 μs 6.5 ± 0.49 μs 0.998 ± 0.11
codegen/arrayop_nested/toexpr 29.9 ± 0.91 μs 29.8 ± 0.84 μs 1 ± 0.042
codegen/deep_poly/deg=10:fast_toexpr 0.057 ± 0.019 ms 0.0578 ± 0.02 ms 0.986 ± 0.48
codegen/deep_poly/deg=10:toexpr 0.0657 ± 0.02 ms 0.0666 ± 0.02 ms 0.987 ± 0.42
codegen/deep_poly/deg=14:fast_toexpr 0.108 ± 0.032 ms 0.107 ± 0.034 ms 1.01 ± 0.44
codegen/deep_poly/deg=14:toexpr 0.121 ± 0.035 ms 0.122 ± 0.037 ms 0.991 ± 0.41
codegen/deep_poly/deg=6:fast_toexpr 26 ± 7.7 μs 26.2 ± 8.6 μs 0.99 ± 0.44
codegen/deep_poly/deg=6:toexpr 28 ± 0.76 μs 28.4 ± 0.88 μs 0.984 ± 0.041
codegen/makearray/n=100:fast_toexpr 0.0648 ± 0.029 ms 0.0661 ± 0.031 ms 0.98 ± 0.64
codegen/makearray/n=100:toexpr 0.281 ± 0.053 ms 0.282 ± 0.051 ms 0.997 ± 0.26
codegen/makearray/n=200:fast_toexpr 0.116 ± 0.053 ms 0.118 ± 0.053 ms 0.986 ± 0.63
codegen/makearray/n=200:toexpr 0.558 ± 0.033 ms 0.563 ± 0.046 ms 0.992 ± 0.1
codegen/makearray/n=400:fast_toexpr 0.213 ± 0.017 ms 0.213 ± 0.017 ms 1 ± 0.11
codegen/makearray/n=400:toexpr 0.766 ± 0.12 ms 0.769 ± 0.12 ms 0.996 ± 0.22
codegen/wide_deep_poly/fast_toexpr 0.486 ± 0.032 ms 0.491 ± 0.03 ms 0.991 ± 0.089
codegen/wide_deep_poly/toexpr 0.374 ± 0.017 ms 0.373 ± 0.016 ms 1 ± 0.063
codegen/wide_poly/n=100:fast_toexpr 0.196 ± 0.032 ms 0.195 ± 0.023 ms 1 ± 0.2
codegen/wide_poly/n=100:toexpr 0.208 ± 0.06 ms 0.209 ± 0.059 ms 0.996 ± 0.4
codegen/wide_poly/n=25:fast_toexpr 0.0444 ± 0.017 ms 0.0451 ± 0.018 ms 0.983 ± 0.54
codegen/wide_poly/n=25:toexpr 0.0524 ± 0.016 ms 0.0521 ± 0.016 ms 1.01 ± 0.44
codegen/wide_poly/n=50:fast_toexpr 0.093 ± 0.036 ms 0.0936 ± 0.037 ms 0.994 ± 0.55
codegen/wide_poly/n=50:toexpr 0.106 ± 0.033 ms 0.106 ± 0.03 ms 1.01 ± 0.43
irstructure/search_variables/common:IRStructure 0.267 ± 0.0063 ms 0.273 ± 0.006 ms 0.981 ± 0.032
irstructure/search_variables/common:reference 0.671 ± 0.011 ms 0.703 ± 0.0089 ms 0.955 ± 0.02
irstructure/search_variables/dissimilar:IRStructure 0.0668 ± 0.00096 ms 0.0685 ± 0.00098 ms 0.975 ± 0.02
irstructure/search_variables/dissimilar:reference 0.187 ± 0.022 ms 0.185 ± 0.02 ms 1.01 ± 0.16
irstructure/subset_ir/large 1.24 ± 0.062 ms 1.29 ± 0.038 ms 0.957 ± 0.055
irstructure/subset_ir/small 0.0771 ± 0.0064 ms 0.0804 ± 0.005 ms 0.959 ± 0.1
irstructure/substitute/IRSubstituter 5.6 ± 0.37 ms 5.45 ± 0.12 ms 1.03 ± 0.071
irstructure/substitute/reference 6.17 ± 0.74 ms 5.73 ± 0.2 ms 1.08 ± 0.13
irstructure/substitute/sparse IRSubstituter 0.909 ± 0.023 ms 0.912 ± 0.019 ms 0.997 ± 0.033
irstructure/substitute/sparse reference 1.24 ± 0.039 ms 1.19 ± 0.026 ms 1.04 ± 0.04
overhead/acrule/a+2 1.37 ± 0.1 μs 1.36 ± 0.11 μs 1.01 ± 0.11
overhead/acrule/a+2+b 0.05 ± 0.01 μs 0.05 ± 0 μs 1 ± 0.2
overhead/acrule/a+b 2.37 ± 0.17 μs 2.34 ± 0.16 μs 1.01 ± 0.1
overhead/acrule/noop:Int 20 ± 10 ns 20 ± 10 ns 1 ± 0.71
overhead/acrule/noop:Sym 0.04 ± 0 μs 0.04 ± 0.01 μs 1 ± 0.25
overhead/get_degrees/large_poly 0.06 ± 0.01 μs 0.071 ± 0.01 μs 0.845 ± 0.18
overhead/isequal/different 0.33 ± 0.0066 ms 0.326 ± 0.0063 ms 1.01 ± 0.028
overhead/isequal/identical 5.21 ± 0.03 μs 5.2 ± 0.02 μs 1 ± 0.0069
overhead/rule/noop:Int 0.04 ± 0.01 μs 0.05 ± 0.01 μs 0.8 ± 0.26
overhead/rule/noop:Sym 0.04 ± 0.01 μs 0.06 ± 0 μs 0.667 ± 0.17
overhead/rule/noop:Term 0.05 ± 0.01 μs 0.06 ± 0.01 μs 0.833 ± 0.22
overhead/ruleset/noop:Int 20 ± 10 ns 20 ± 10 ns 1 ± 0.71
overhead/ruleset/noop:Sym 0.2 ± 0.01 μs 0.201 ± 0.01 μs 0.995 ± 0.07
overhead/ruleset/noop:Term 0.891 ± 0.03 μs 0.941 ± 0.039 μs 0.947 ± 0.051
overhead/simplify/noop:Int 20 ± 10 ns 20 ± 10 ns 1 ± 0.71
overhead/simplify/noop:Sym 30 ± 9 ns 0.04 ± 0 μs 0.75 ± 0.22
overhead/simplify/noop:Term 18.9 ± 0.63 μs 18.4 ± 0.56 μs 1.02 ± 0.046
overhead/simplify/randterm (+, *):serial 0.153 ± 0.025 s 0.149 ± 0.026 s 1.03 ± 0.25
overhead/simplify/randterm (+, *):thread 0.201 ± 0.069 s 0.187 ± 0.13 s 1.07 ± 0.84
overhead/simplify/randterm (/, *):serial 0.123 ± 0.027 ms 0.121 ± 0.027 ms 1.01 ± 0.31
overhead/simplify/randterm (/, *):thread 0.123 ± 0.026 ms 0.122 ± 0.027 ms 1.01 ± 0.31
overhead/substitute/a 21.2 ± 0.5 μs 21.1 ± 0.48 μs 1 ± 0.033
overhead/substitute/a,b 26.4 ± 0.62 μs 26.5 ± 0.56 μs 0.997 ± 0.032
overhead/substitute/a,b,c 25.6 ± 0.61 μs 25.9 ± 0.54 μs 0.989 ± 0.031
polyform/easy_iszero 10.9 ± 0.3 μs 10.8 ± 0.32 μs 1.01 ± 0.041
polyform/isone 0.574 ± 0.017 ms 0.571 ± 0.018 ms 1.01 ± 0.044
polyform/isone:noop 0.06 ± 0 μs 0.06 ± 0.01 μs 1 ± 0.17
polyform/iszero 0.486 ± 0.016 ms 0.482 ± 0.015 ms 1.01 ± 0.045
polyform/iszero:noop 0.06 ± 0.01 μs 0.06 ± 0.01 μs 1 ± 0.24
polyform/simplify_fractions 0.643 ± 0.019 ms 0.642 ± 0.024 ms 1 ± 0.048
printing/large_poly 0.188 ± 0.029 s 0.179 ± 0.022 s 1.05 ± 0.21
time_to_load 0.932 ± 0.014 s 0.933 ± 0.0031 s 0.999 ± 0.015
Memory benchmarks
master 4488e3e... master / 4488e3e...
arithmetic/2-arg mul 0.061 k allocs: 2.25 kB 0.061 k allocs: 2.25 kB 1
arithmetic/addition 0.206 k allocs: 6.45 kB 0.206 k allocs: 6.45 kB 1
arithmetic/division 0.107 k allocs: 3.89 kB 0.107 k allocs: 3.89 kB 1
arithmetic/multiplication 0.231 k allocs: 6.25 kB 0.231 k allocs: 6.25 kB 1
codegen/arrayop_nested/fast_toexpr 0.218 k allocs: 9.98 kB 0.218 k allocs: 9.98 kB 1
codegen/arrayop_nested/toexpr 0.433 k allocs: 16.5 kB 0.433 k allocs: 16.5 kB 1
codegen/deep_poly/deg=10:fast_toexpr 1.56 k allocs: 0.065 MB 1.56 k allocs: 0.065 MB 1
codegen/deep_poly/deg=10:toexpr 1.41 k allocs: 0.0488 MB 1.41 k allocs: 0.0488 MB 1
codegen/deep_poly/deg=14:fast_toexpr 2.77 k allocs: 0.132 MB 2.77 k allocs: 0.132 MB 1
codegen/deep_poly/deg=14:toexpr 2.55 k allocs: 0.0908 MB 2.55 k allocs: 0.0908 MB 1
codegen/deep_poly/deg=6:fast_toexpr 0.709 k allocs: 0.0317 MB 0.709 k allocs: 0.0317 MB 1
codegen/deep_poly/deg=6:toexpr 0.601 k allocs: 22.2 kB 0.601 k allocs: 22.2 kB 1
codegen/makearray/n=100:fast_toexpr 1.77 k allocs: 0.073 MB 1.77 k allocs: 0.073 MB 1
codegen/makearray/n=100:toexpr 3.73 k allocs: 0.129 MB 3.73 k allocs: 0.129 MB 1
codegen/makearray/n=200:fast_toexpr 3.16 k allocs: 0.128 MB 3.16 k allocs: 0.128 MB 1
codegen/makearray/n=200:toexpr 7.32 k allocs: 0.255 MB 7.32 k allocs: 0.255 MB 1
codegen/makearray/n=400:fast_toexpr 5.43 k allocs: 0.228 MB 5.43 k allocs: 0.228 MB 1
codegen/makearray/n=400:toexpr 10 k allocs: 0.34 MB 10 k allocs: 0.34 MB 1
codegen/wide_deep_poly/fast_toexpr 9.02 k allocs: 0.396 MB 9.02 k allocs: 0.396 MB 1
codegen/wide_deep_poly/toexpr 9.37 k allocs: 0.327 MB 9.37 k allocs: 0.327 MB 1
codegen/wide_poly/n=100:fast_toexpr 4.61 k allocs: 0.183 MB 4.61 k allocs: 0.183 MB 1
codegen/wide_poly/n=100:toexpr 4.72 k allocs: 0.16 MB 4.72 k allocs: 0.16 MB 1
codegen/wide_poly/n=25:fast_toexpr 1.19 k allocs: 0.0459 MB 1.19 k allocs: 0.0459 MB 1
codegen/wide_poly/n=25:toexpr 1.19 k allocs: 0.0406 MB 1.19 k allocs: 0.0406 MB 1
codegen/wide_poly/n=50:fast_toexpr 2.34 k allocs: 0.105 MB 2.34 k allocs: 0.105 MB 1
codegen/wide_poly/n=50:toexpr 2.37 k allocs: 0.0831 MB 2.37 k allocs: 0.0831 MB 1
irstructure/search_variables/common:IRStructure 0.06 k allocs: 4.53 kB 0.06 k allocs: 4.53 kB 1
irstructure/search_variables/common:reference 0.26 k allocs: 0.23 MB 0.26 k allocs: 0.23 MB 1
irstructure/search_variables/dissimilar:IRStructure 0.047 k allocs: 3.84 kB 0.047 k allocs: 3.84 kB 1
irstructure/search_variables/dissimilar:reference 0.155 k allocs: 0.0486 MB 0.153 k allocs: 0.048 MB 1.01
irstructure/subset_ir/large 0.0369 M allocs: 1.65 MB 0.0369 M allocs: 1.65 MB 1
irstructure/subset_ir/small 2.66 k allocs: 0.194 MB 2.66 k allocs: 0.194 MB 1
irstructure/substitute/IRSubstituter 27.9 k allocs: 0.902 MB 28.3 k allocs: 0.908 MB 0.994
irstructure/substitute/reference 30.6 k allocs: 1.07 MB 31 k allocs: 1.07 MB 0.995
irstructure/substitute/sparse IRSubstituter 3.25 k allocs: 0.106 MB 3.29 k allocs: 0.106 MB 0.993
irstructure/substitute/sparse reference 5.92 k allocs: 0.273 MB 5.96 k allocs: 0.274 MB 0.997
overhead/acrule/a+2 31 allocs: 1.05 kB 31 allocs: 1.05 kB 1
overhead/acrule/a+2+b 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/a+b 0.042 k allocs: 1.42 kB 0.042 k allocs: 1.42 kB 1
overhead/acrule/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/get_degrees/large_poly 2 allocs: 32 B 2 allocs: 32 B 1
overhead/isequal/different 0 allocs: 0 B 0 allocs: 0 B
overhead/isequal/identical 0 allocs: 0 B 0 allocs: 0 B
overhead/rule/noop:Int 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Sym 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Term 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/ruleset/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/ruleset/noop:Sym 3 allocs: 0.109 kB 3 allocs: 0.109 kB 1
overhead/ruleset/noop:Term 12 allocs: 0.391 kB 12 allocs: 0.391 kB 1
overhead/simplify/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Term 0.293 k allocs: 10.5 kB 0.293 k allocs: 10.5 kB 1
overhead/simplify/randterm (+, *):serial 2.28 M allocs: 0.0802 GB 2.28 M allocs: 0.0802 GB 1
overhead/simplify/randterm (+, *):thread 2.32 M allocs: 0.237 GB 2.33 M allocs: 0.238 GB 1
overhead/simplify/randterm (/, *):serial 2 k allocs: 0.0693 MB 2 k allocs: 0.0693 MB 1
overhead/simplify/randterm (/, *):thread 2.02 k allocs: 0.0699 MB 2.02 k allocs: 0.0699 MB 1
overhead/substitute/a 0.138 k allocs: 4.78 kB 0.139 k allocs: 4.8 kB 0.997
overhead/substitute/a,b 0.182 k allocs: 6.2 kB 0.183 k allocs: 6.22 kB 0.997
overhead/substitute/a,b,c 0.19 k allocs: 6.42 kB 0.191 k allocs: 6.44 kB 0.998
polyform/easy_iszero 0.076 k allocs: 2.45 kB 0.079 k allocs: 2.5 kB 0.981
polyform/isone 10.4 k allocs: 0.527 MB 10.4 k allocs: 0.527 MB 1
polyform/isone:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/iszero 8.46 k allocs: 0.439 MB 8.47 k allocs: 0.439 MB 0.999
polyform/iszero:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/simplify_fractions 10.8 k allocs: 0.544 MB 10.8 k allocs: 0.544 MB 1
printing/large_poly 1.88 M allocs: 0.071 GB 1.88 M allocs: 0.071 GB 1
time_to_load 0.2 k allocs: 11.7 kB 0.2 k allocs: 11.7 kB 1

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review October 1, 2026 01:01
@ChrisRackauckas
ChrisRackauckas merged commit e0f02c4 into JuliaSymbolics:master Oct 1, 2026
27 of 30 checks passed
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.

QA: Moshi 0.3.10+ generates an unbound BasicSymbolicImpl.Div constructor

2 participants