Many of the new features here are internal adjustments intended to improve performance and runtime overheads. So far, we have been able to see a 15×

Search code, repositories, users, issues, pull requests...

submited by
Style Pass
2024-07-10 16:30:12

Many of the new features here are internal adjustments intended to improve performance and runtime overheads. So far, we have been able to see a 15× or greater decrease in performance overheads on some basic benchmarks like naive nbody simulations.

The compiler now uses a graph coloring algorithm to allocate all intermediate arrays using an infinite register machine model in the runtime. This massively reduces the overhead of each function call and reduces the stack size consumption of each function to something approximating a minimal set of intermediate array values. It also eliminates the overhead within an expression call of pushing and popping values to and from a stack during execution. This eliminates significant amounts of reference counting overhead as well as eliminating the stack overheads.

The allocator at present is not optimized, so for large programs, you may see an increase in compile time due to the register allocation. We intend to improve this performance in future releases.  

Leave a Comment