Dyalog ’23 Videos: Week 3 – Dyalog Core Development

This week’s collection consists of presentations by members of the development team, and concentrates on language features and development tools that the developers are currently designing or already implementing. Many of these features are likely to be in version 20.0 of Dyalog, which we plan to release in early 2025, about a year after version 19.0 becomes available. In other words, there is still time to comment on these ideas and propose changes or additions…please take a look and let us know your thoughts!

John Daintree presents an update to the design (and prototype implementation) of so-called Token-by-Token (TBT) debugging, which will make it possible to step through code one primitive at a time rather than one line at a time. This promises to be a wonderful teaching tool, and will also help experienced users debug complex expressions – especially trains and other tacit constructs.

In the presentation on “Setting and Getting Variable Values”, Adám Brudzewsky proposes extensions that will simplify (and speed up) a number of frequently-occurring patterns, where application code needs to reference or update variables based on arrays containing variable names. At the moment, most solutions require complicated, inefficient, and uncomfortable uses of the execute primitive (which some code scanners might identify as potentially unsafe).

Adám’s second presentation also proposes ways to simplify frequently-occurring use cases, this time related to a relatively recent addition to the Dyalog language, the key operator (). Similar to an SQL “group by” clause, key performs operations on groups of data that are partitioned using key values – and it suffers from similar issues if you want the results to be in a particular order, or include entries for key values that do not occur in the data which is at hand.

Peter Mikkelsen proposes a new mechanism for making shell commands from Dyalog. Rather than extending the existing mechanism (⎕SH and its synonym ⎕CMD), which is widely used by existing code bases, Peter proposes a new system function that will manage both binary and encoded input and output, and include features such as whether to error on a non-zero exit code and ways to redirect input and output

The final talk in this block is by Kamila Szewczyk, a student from Saarland University, who was an intern at Dyalog Ltd this summer. In this whirlwind talk, she covers her implementation of a prototype of an APL Array Notation deserialiser, which will be available as an I-Beam in version 19.0, and probably used by Link 4.0. When she needed a break from that project, she created internal experimental builds of the interpreter to try out a large number of interesting ideas that are present in other array language implementations, such as automatic numerical differentiation, the obverse operator, and a monadic inner product where, for example, -.× computes the determinant.

——————————————

This week’s videos:

Materials for all presentations can be downloaded from the Dyalog ’23 webpage.