announcing Triton VM v0.40.0

⚓ Triton VM    📅 2024-04-16    👤 jfs    👁️ 363      

jfs

Warning

This post was published 38 days ago. The infomation described in this article may have changed.

Triton VM v0.40.0 is now live. The main highlights are:

Performance

This release fixes a previously unknown performance bottleneck when proving programs that perform a lot of RAM I/O. One such program is Triton VM’s very own recursive verifier, making this performance boost mission critical.

As another perfomance highlight, Triton VM now consumes considerably less RAM when proving the correct execution of a program.

Profiling

The profiler for Triton assembly programs now reports not only the clock cycle contribution of any encountered subroutine, but the contribution to any of parts critical for prover performance. On any Triton VM program, you can execute .profile() to get the new report. The Display implementation of that report gives you a markdown table listing all the new goodies.

Full Changelog

✨ Features

  • (!) Generate profiles despite unfinished tasks (f7ebd2cb)
  • (!) Streamline accessing AET’s heights (3f3a9fd1)
  • (!) Track all relevant tables in VM profiler (fa38fa8b)

🐛 Bug Fixes

  • (!) Don’t treat randomizer polynomial special (9bbe963b)

⚡️ Performance

  • Minimize squeezes for combination weights (50b803c7)
  • Re-organize prover steps (86a7799f)
  • (test) Use minimal size for quotient domain (727ff8ec)
  • Use faster polynomial coset evaluation (29849abe)
  • Compute Bézout coefficients faster (652b7e9c)

📚 Documentation

  • Add rationale for performed DEEP updates (74814884)
  • Update documentation of MasterTable (d5c2049c)
  • Describe computation of Bézout coefficients (06123843)

⚙️ Miscellaneous

  • Use fewer glob uses (9ca39513)
  • (!) (circuit) Use challenge’s index (e05e3ff3)
  • (!) (circuit) No Challenges in evaluate (15a8cd7f)
  • Use constant “lookup table height” more (22834b03)
  • Benchmark Bézout coefficient computation (ab135be4)

♻️ Refactor

  • Deprecate method num_quotients() (363ae773)
  • (!) Use BFieldElements everywhere (05bd271a)
  • (!) Make ProofStream non-generic (bde928d4)
  • (!) Remove deprecated type aliases (14d08ef8)
  • (!) Rename TableId variants (c265cf4d)
  • Bypass quotient table (ff305459)

✅ Testing

  • Benchmark program with lots of memory I/O (c7613878)

🎨 Styling

  • Improve readability of .verify() slightly (e0ac1096)
🏷️ release 🏷️ triton-vm