Commit graph

5 commits

Author SHA1 Message Date
b533b8d6ca fix(avm-review): resolve adversarial review findings
Rust fixes:
- Remove Q0_16 Not arm (was silently returning Bool(false) instead of type error)
- Replace inline floor division with floor_div() calls in MulSatQ16/DivSatQ16
- Fix comment ranges for Q0_16 [-32767, 32767] and Q16_16 [-2147483647, 2147483647]

Go fixes:
- Add euclideanDiv() matching Lean Int.ediv (remainder ≥ 0)
- Use euclideanDiv for MulSatQ16 and DivSatQ16
- Change Locals from []*Val to []Val (dangling pointer fix)
- Step on halted state returns &s, nil (Lean returns Ok s)
- OOB PC returns error instead of silent halt
- Halt does not increment PC (Lean: PC unchanged)

All Go tests pass (9/9)
2026-06-30 19:01:47 -05:00
59a236db73 fix(go): simplify execPrim call, remove unnecessary recover closure 2026-06-30 18:15:40 -05:00
a6db85ab5e fix(go): prevent panic on division by zero
- execPrim checks b.Q == 0 before calling floorDiv
- Step function wraps execPrim call with recover() for safety
- Go tests now pass without panicking
2026-06-30 18:15:09 -05:00
3c4e039e48 fix(go): type conversion errors in floorDiv/avmClamp
- floorDiv returns int64 instead of int32 to match avmClamp signature
- instr.Arg wrapped in int64() for avmClamp/avmQ0Clamp calls
- Test expected value cast to int32

fix(julia): add Q16_SCALE export to Q16_16 module
2026-06-30 18:10:48 -05:00
863da04f21 feat(avm-ports): port AVM ISA to all 12 scientific languages
Lean (reference), Python, Rust, C, C++, Go, Julia, R, Scala, Fortran,
Coq, Octave — all implementing the same AVM ISA v1 specification.

Every port implements:
- Full type universe: Q0_16, Q16_16, Bool
- 11 primitives with floor division (Lean Int.ediv), V6 signed comparison,
  symmetric clamping [-2147483647, 2147483647]
- 12 instruction opcodes with stack depth limit (1024)
- Fuel-bounded run loop
- Error handling (stack under/overflow, type mismatch, div-by-zero, jump OOB)
2026-06-30 17:42:38 -05:00