Dyalog APL versions: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>Marshall
No edit summary
Miraheze>Marshall
No edit summary
Line 1: Line 1:
[[Dyalog APL]] is released in numbered versions, with approximately one version per year. Each release version is classified as a major (.0) or minor (point) release, depending on whether the major version number is incremented. Major versions are more likely to introduce new features and may spend longer in development.
[[Dyalog APL]] is released in numbered versions, with approximately one version per year. Each release version is classified as a major (.0) or minor (point) release, depending on whether the major version number is incremented. Major versions are more likely to introduce new features and may spend longer in development.
== 16.0 ==
Release [https://www.dyalog.com/dyalog/dyalog-versions/160.htm announcement], [http://docs.dyalog.com/16.0/Dyalog%20Version%2016.0%20Release%20Notes.pdf notes (pdf)]
Version 16.0 was released in June 2017. It added several new primitives as well as tools for working with [[wikipedia:JSON|JSON]] and [[wikipedia:Comma-separated values|CSV]] files.
The following new primitive functions and operators were added:
* [[Where]] (<source lang=apl inline>⍸</source>)
* [[Interval Index]] (<source lang=apl inline>⍸</source>)
* [[Nest]] (<source lang=apl inline>⊆</source>)
* [[Partition]] (<source lang=apl inline>⊆</source>), another way to write a function which was previously only accessible with [[migration level]] 3
* [[At operator]] (<source lang=apl inline>@</source>)
* [[Stencil]] (<source lang=apl inline>⌺</source>)
Additionally, [[system function]]s <source lang=apl inline>⎕JSON</source> and <source lang=apl inline>⎕CSV</source> were added to import and export data in common formats. Some JSON support was already present; 16.0 promoted it to a system function.
Work was continued on the [[RIDE]] [[session]] environment, which was made the default IDE on Linux in addition to macOS. Additionally, the [[HTMLRenderer]] and [[MiServer]] user interface tools were introduced.
Significant [https://www.dyalog.com/dyalog/dyalog-versions/160/performance.htm performance improvements] were made in [[structural function|structural]] and selective functions such as [[Transpose]], [[Catenate]], [[Take]], [[Rotate]], and [[Reverse]], and other primitives including [[Enlist]], [[Encode]], and [[Decode]].


== 17.0 ==
== 17.0 ==


Version 17.0 release [https://www.dyalog.com/dyalog/dyalog-versions/170.htm announcement], [http://help.dyalog.com/17.0/Content/RelNotes17.0/Language%20Enhancements.htm notes]
Release [https://www.dyalog.com/dyalog/dyalog-versions/170.htm announcement], [http://help.dyalog.com/17.0/Content/RelNotes17.0/Language%20Enhancements.htm notes]


Version 17.0 was released in July 2018. It features significant work on tools for using APL and interfacing with other languages, as well as performance, and a relatively small number of new language features.
Version 17.0 was released in July 2018. It features significant work on tools for using APL and interfacing with other languages, as well as performance, and a relatively small number of new language features.
Line 19: Line 39:
== 17.1 ==
== 17.1 ==


Version 17.1 release [https://www.dyalog.com/dyalog/dyalog-versions/171.htm announcement], [http://help.dyalog.com/latest/index.htm#RelNotes17.1/Highlights.htm notes]
Release [https://www.dyalog.com/dyalog/dyalog-versions/171.htm announcement], [http://help.dyalog.com/latest/index.htm#RelNotes17.1/Highlights.htm notes]


Version 17.1 was released in October 2019, shortly after the [[Dyalog '19]] user meeting. It contains few new features and almost no performance changes. The primary changes to the language were to add the [[Dyalog APL Link|Link]] system using <source lang=apl inline>]LINK</source>, allow running Dyalog through [[wikipedia:Docker (software)|docker]] containers, and improve cross-platform support for [[HTMLRenderer]]. Additionally, Dyalog's licensing was changed to allow non-commercial users to download and run it for free, without applying for a non-commercial license from Dyalog.
Version 17.1 was released in October 2019, shortly after the [[Dyalog '19]] user meeting. It contains few new features and almost no performance changes. The primary changes to the language were to add the [[Dyalog APL Link|Link]] system using <source lang=apl inline>]LINK</source>, allow running Dyalog through [[wikipedia:Docker (software)|docker]] containers, and improve cross-platform support for [[HTMLRenderer]]. Additionally, Dyalog's licensing was changed to allow non-commercial users to download and run it for free, without applying for a non-commercial license from Dyalog.

Revision as of 14:50, 12 November 2019

Dyalog APL is released in numbered versions, with approximately one version per year. Each release version is classified as a major (.0) or minor (point) release, depending on whether the major version number is incremented. Major versions are more likely to introduce new features and may spend longer in development.

16.0

Release announcement, notes (pdf)

Version 16.0 was released in June 2017. It added several new primitives as well as tools for working with JSON and CSV files.

The following new primitive functions and operators were added:

Additionally, system functions ⎕JSON and ⎕CSV were added to import and export data in common formats. Some JSON support was already present; 16.0 promoted it to a system function.

Work was continued on the RIDE session environment, which was made the default IDE on Linux in addition to macOS. Additionally, the HTMLRenderer and MiServer user interface tools were introduced.

Significant performance improvements were made in structural and selective functions such as Transpose, Catenate, Take, Rotate, and Reverse, and other primitives including Enlist, Encode, and Decode.

17.0

Release announcement, notes

Version 17.0 was released in July 2018. It features significant work on tools for using APL and interfacing with other languages, as well as performance, and a relatively small number of new language features.

Total array ordering (TAO) was added in version 17.0, making it the first APL implementation to order entire arrays rather than cells of a single array. This allows Grade Up (), Grade down (), and Interval Index () to work on nested arrays.

17.0 featured improvements to the HTML-based session environment RIDE, and a preliminary version of Link, which was fully released in 17.1. It also improved the positioning of the session's error caret: prior to 17.0 the caret usually pointed to a position further left than the source of an error, while in 17.0 and later it almost always points to the actual primitive or named function or operator which emitted the error, or the beginning of the derived function which did.

Support for packaging APL code as a shared library (for instance a .so or .dll file) for use by other languages was added.

Portable file function support was improved, with changes including new functions ⎕NCOPY and ⎕NMOVE to copy and move files.

Version 17.0 implemented substantial performance improvements in many areas. The most important improvements were better use of vector instructions including support for ARM NEON and AVX2 and vectorised comparison functions, simplification of trivial cases for functions, improved Boolean algorithms, and improvements to Replicate, Expand, and Where.

17.1

Release announcement, notes

Version 17.1 was released in October 2019, shortly after the Dyalog '19 user meeting. It contains few new features and almost no performance changes. The primary changes to the language were to add the Link system using ]LINK, allow running Dyalog through docker containers, and improve cross-platform support for HTMLRenderer. Additionally, Dyalog's licensing was changed to allow non-commercial users to download and run it for free, without applying for a non-commercial license from Dyalog.

The Interval Index () primitive was extended to allow duplicate values in the left argument (a feature already present in J, which does not verify that the left argument is sorted).

18.0

Version 18.0 is currently planned for release in 2020. It was developed in parallel with version 17.1, which had very few new features, and includes several new primitives and extensions to existing primitives.

The following new primitive functions and operators are added:

Integers greater than 1 are now allowed in the right argument of Where (), matching the definition of Indices in other languages. A related extension allows integers greater than 1 in the left argument of Partitioned Enclose (), which produce empty partitions in the output. The extension to Partitioned Enclose makes it the first APL partitioning function which can produce empty partitions.

Version 18.0 allows multi-line input in the session using the line editor, and allows control structures to be used in the session. Multi-line input is begun when a dfn, namespace, class, or control structure is begun but not finished on the same line.

New system functions for case folding and mapping (⎕C) and date-time conversion are added.

Initial support for .NET Core, Microsoft's cross-platform successor to the original .NET framework, has been added.