Throughout the development lifecycle of Midgard, Aiken has been put through the gauntlet. Hundreds of contracts, a massive test-suite, and hundreds of thousands of lines of Aiken.
Our contributions to this release include:
1. Major compiler and optimizer speedups — PR #1399
The Aiken test-suite in Midgard was taking 485 minutes to complete; this was a real performance issue and heavily slowed down development loops. This PR introduced optimizations to the Aiken compiler and optimizer ultimately resulting in:
767-test suite was 485 minutes → 5 minutes 27 seconds, approximately 89× faster
2. Reduced CEK evaluator memory blow-ups — PR #1410
Aiken was regularly causing seg-faults and OOMs when building Midgard, causing our developers computers and our remote development machines to regularly crash on certain large scripts.
This PR optimized addressed these memory issues resulting in:
Deeply recursive list accumulation target consumes 48 GB RAM causing OOM
→ the same list accumulation target consumes only 1.1 GB RAM
3. Parallelized UPLC optimization during test runs — PR #1410
Another large performance improvement improving wall-clock times by roughly 3.5x for `aiken check`.
Midgard also uses Plutarch extensively, and we have made similar contributions to its maintenance during this timeframe.
A raising tide lifts all boats.
Aiken v1.1.24 is now available 🎁, and with it, new (major) versions of the stdlib (v4.0.0) and fuzz (v3.0.0) libraries.
This coordinated update introduces a new primitive type to the language: Value, to work more efficiently with multi-assets quantities.
What else? 👇