At the heart of Dyalog is an ISO/IEC 13751-compliant APL language engine that has been tuned and optimised for more than 30 years. The current Dyalog language has evolved from a classical APL2-style interpreter into a modern, multi-paradigm programming language. The most important extensions to the original APL language include:
1983
Nested arrays
In nested array theory, a nested array is an array of depth greater than one, that is, an array that contains at least one element which is not a simple scalar. It is roughly equivalent to a boxed array in flat array theory; more precisely, non-mixed nested arrays correspond exactly to boxed arrays. Depending on language, an empty array may never be considered nested, or it may be considered nested if its prototype is nested.
1990
Namespaces
A namespace is an encapsulation mechanism for names used within a program. Namespaces were added to APL2 in 1987, and to Dyalog APL in 1994. They are also present in J, where they may be used for object-oriented programming. As they are now common across many programming languages, more recent array languages such as Rowan may include namespace designs inspired by other languages (in this case R). Because code can be evaluated within a particular namespace, namespaces serve as a way to combine the context for a set of functions or other operations without interfering with other parts of a program that do not need this context.
1995
Control Structures
Some modern versions of APL include a set of keywords for controlling flow of execution. Such keywords allow programmers to create control structures which are commonly used in procedural programming languages.
Control structures, using reserved words, were included in A+ by 1989. In 1994 they were added to both J release 2.0.1, with a dotted syntax such as while., and to APL*PLUS III, using the colon-prefixed syntax :While that has since been widely adopted in APL. Dyalog introduced similar structures in version 8.0, in 1996. They also appear in SAX, APLX, and NARS2000.
1996
Functional programming
dfns provide lexical scope and lambda-style expressions
2006
Object Orientated Programming
Allowing integration with OO frameworks and Microsoft .NET
2014
Similar to that in the J programming language
Futures and Isolates
For parallel programming
New versions of Dyalog are released approximately annually.
Dyalog language engines provide the same language features on all platforms and enable extreme inter-operability; binary workspace images and component files can be shared in real time without conversion between all platforms and TCP sockets can be used to exchange binary data between the platforms.
The individual tools and interfaces available vary according to the platform that the engine is running on, but TCP, Web Service and Server frameworks and the ODBC database interface are available on most platforms.