Dyalog Version 16.0
Dyalog v16.0 was released in June 2017 and is supported under Microsoft Windows, IBM AIX, Linux (including the Raspberry Pi), and Apple macOS.
Visit the Documentation Centre for Dyalog v16.0
In addition to improved performance, import/export tools, new communication tools and cross-platform features, Dyalog v16.0 includes very significant new core language features to make it easier to implement high performance, functional, elegant, array-oriented solutions.
Performance
Our work on rewriting core components to take advantage of modern processor features continues. Our standard performance test suite reports that this release is approximately 6% faster than Dyalog v15.0; the last three development cycles have accumulated a speed-up of approximately one third, according to these (admittedly synthetic) tests. For details of the specific speed-ups in this release, see Dyalog v16.0 Performance.
Importing and Exporting Data
Dyalog v16.0 adds a high-performance mechanism to convert data held in CSV files into arrays and back, enabling you to move data efficiently in and out of your application. A new system function, ⎕CSV, automatically detects the characteristics of most CSV files, and it also has a plethora of options. ⎕CSV also deals with fixed record layouts without separators and provides very significant speed-ups over current best practices.
Exchanging Data with Other Applications
Data isn’t always exchanged using files; often you want to call – or be called by – other applications over a network. Our TCP library Conga has been significantly enhanced. We have removed the burden of dis-assembling HTTP packets from the APL developer by supporting the HTTP protocol at the library level – which also allows us to add support for asynchronous, bi-directional, WebSockets, for highly interactive web apps. Conga has also been optimised to better support very large numbers of simultaneous connections.
The experimental features for converting messages in JSON format to APL arrays or namespaces have been promoted into a ⎕JSON system function, complementing the existing ⎕XML function.
New Primitives
- monadic ⍸ (where function) – returns indices of 1s in right argument
- dyadic ⍸ (interval index function) – left argument defines interval boundaries; return interval each item of right argument is found in
- monadic ⊆ (nest function) – make a nested array
- dyadic ⊆ (partition function) – as APL2 Partition regardless of current ⎕ML setting
- dyadic @ (at operator) – functional merge operator: [argument] (modifier @ selector) array
- dyadic ⌺ (stencil operator) – apply stencil function to windows of specified size. Useful for image manipulation, neural networks and many other applications.
Cross-Platform Development Environment
With Dyalog v16.0, our Remote Integrated Development Environment (RIDE) is promoted to be the default IDE for not only macOS (as it was with Dyalog v15.0), but also Linux – including the Raspberry Pi. In addition, a “zero footprint” option is available, allowing you run RIDE in any web browser that supports Javascript, loading it directly from a running APL interpreter.
RIDE v4.0 supports many new features that were previously only available in our native Windows IDE, including a Workspace Explorer tree view, Stack and Thread windows, and full support for debugging threaded applications.
Cross-Platform User Interfaces
A new HTMLRenderer object allows APL applications to create user interfaces by generating and “injecting” HTML/JS into an instance of the Chromium Embedded Framework, which is included with Dyalog. You can mix content created by your APL process with services provided by external web servers and use simple call-back functions to respond to user actions. Content can be generated using your own code or tools like SharpPlot. The MiServer widget library allows you to generate rich content from APL, using all the controls that are on display at http://miserver.dyalog.com. No matter how you generate the content, the UI will look and behave in exactly the same way on all platforms – and the application code will be able to run as an actual web server if the application code support multiple users.
The HTMLRenderer is available under Microsoft Windows and Apple macOS; Dyalog v17.0 will add support for the HTMLRenderer under Linux.
A New Approach to Tools and Samples
The inclusion of support for APL source code stored in Unicode text files as an alternative to workspace files means that Dyalog v16.0 can use industry standard source code management tools. This makes it possible to share open source APL projects using tools like GitHub, allowing users to collaborate on developing tools and applications and to read APL code without having a running APL system.
Visit the Documentation Centre for Dyalog v16.0