Implementation

This category covers Dyalog implementation topics: how the interpreter actually works under the hood, including floating-point comparison and tolerance, performance optimisation and its occasional pitfalls, primitive function internals like stencil, and behind-the-scenes accounts of building infrastructure like the APL Challenge. Expect technical depth aimed at readers curious about how Dyalog APL is built, not just how to use it.

In February 2026, the APL Challenge quietly launched its next round on a rewritten stack. The previous infrastructure was retired and replaced by... Read
I am very pleased to be able to announce the start of the Beta testing of the next release of Dyalog APL! As explained in June, we decided to delay the release... Read
Background Dyalog version 18.0 contained the largest number of optimised algorithms in the history of Dyalog APL. Unfortunately, since its release, we have... Read
Background The stencil operator ⌺ was introduced in Dyalog version 16.0 in 2017. Recently we received some feedback (OK, complaints) that (a) stencil does... Read
This post might be more difficult than our usual fare. You won’t find any interesting APL coding insights here—instead we’ll be focused on the... Read
The four presentations from Dyalog’18 that we are releasing this week address both the visible (user interface) and invisible (performance) parts of... Read
Warning: The formula for “tolerated” comparison in this post is not correct for actual floating-point numbers. Do not use it! The follow-up post... Read
The chart above compares the performance of ∘.∧ in Dyalog versions 16.0 and 17.0. The improvement is a factor of 3-4 across the whole range (except at... Read
Enlist (∊) is twice as fast in Dyalog 16.0 as it was in Dyalog 15.0. Pretty much across the board: ∊⍳100 is not going to be any faster, but whenever the... Read
Get Support