Dyalog APL versions: Difference between revisions
Jump to navigation
Jump to search
m (12 revisions imported: Migrate from miraheze) |
(→14.0) |
||
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. | ||
<!-- 13.0? | |||
A [[primitive operator]] (<source lang=apl inline>⍠</source>) was introduced as an alternative spelling of the existing system operator [[Variant]] (<source lang=apl inline>⎕OPT</source>), with a functionality similar to one sketched by [[Ken Iverson]] (<source lang=apl inline>:</source>)<ref>Kenneth E. Iverson, [https://www.jsoftware.com/papers/APLDictionary.htm A Dictionary of APL], VI. Conjunctions, [https://www.jsoftware.com/papers/APLDictionary1.htm#colon Custom]. APL Quote Quad, Volume 18, Number 1, 1987-09.</ref> and implemented in J (<source lang=j inline>!.</source>). | |||
--> | |||
== 14.0 == | == 14.0 == | ||
Line 7: | Line 11: | ||
Version 14.0 was released in June 2014. It featured extensive changes to the Dyalog APL language as well as its implementation. | Version 14.0 was released in June 2014. It featured extensive changes to the Dyalog APL language as well as its implementation. | ||
Under the | Under the direction of [[Roger Hui]], who had been hired by [[Dyalog Ltd.]] in 2011, several features adapted from [[J]] were added. Version 14.0 began the adoption in Dyalog APL of array programming's [[leading axis model]], with built-ins [[Tally]] (<source lang=apl inline>≢</source>), [[Key]] (<source lang=apl inline>⌸</source>), and the [[Rank operator]] (<source lang=apl inline>⍤</source>). [[Function train]]s, another J feature, were also introduced. Of these, Rank differs from J's definition because it does not allow complete [[leading axis agreement]]—instead, two arguments must have identical [[frame]]s or one frame must be empty—and Key has an added monadic case, and differs in that the operand is passed a left argument indicating the unique element used. | ||
Further changes were made in conjunction with the introduction of [[Rank operator|Rank]] and [[leading axis theory]]. [[Index Of]] was [[High-rank set functions|extended]] (as in [[J]]) to allow a left argument of [[rank]] greater than 1, searching [[major cell]]s of the left argument. [[Mix]] was extended to increase the rank of each element in its argument to a common rank, rather than giving a [[RANK ERROR]] if they had unequal ranks. This change brought the behavior of Mix into alignment with the result array combination used by the [[Rank operator]] and [[Key]]. An unrelated change was to extend Mix with [[Function axis|axis]] to allow the axis to be a [[vector]] indicating the final positions of each axis of the argument elements (rather than only a [[singleton]] indicating the position of the first axis). This change was made to apply only with a [[migration level]] setting of at least 2; it was extended to all migration levels in [[#18.0|version 18.0]]. | |||
This version allowed [[monadic operator]]s to be manipulated more easily: beginning in 14.0, they can be [[Assignment|named]], grouped with parentheses, and displayed in the [[session]]. It also introduced a new way to form a monadic operator called [[right operand currying]]: a [[dyadic operator]] along with an [[operand]] to its right produces a [[derived operator]]. These changes did not extend to naming, parenthesizing, or displaying dyadic operators, nor to binding a left operant to a dyadic operator. | |||
Performance improvements to existing features were focused on [[Boolean]] arrays but also included work on [[indexing]] and [[scan]]s. A new [[I-beam]], <source lang=apl inline>8⌶</source>, was introduced to allow fast lookups on [[inverted table]]s, paralleling the extension to [[Index Of]] to allow lookups on non-inverted tables. | |||
The default [[migration level]] was changed from 0 to 1, with the effect that monadic <source lang=apl inline>∊</source> indicates [[Enlist]] rather than [[Type]] by default. The default [[random link]] was changed to use the [[wikipedia:Mersenne Twister|Mersenne Twister]] algorithm rather than a [[wikipedia:linear congruential generator|linear congruential generator]]. Additionally, the assignment <source lang=apl inline>⎕RL←0</source> was introduced to initialize random number generation with a seed taken from the operating system (which therefore differs between different APL instances). | |||
[[Component file]]s were enhanced with usability improvements in the component file [[system function]]s and the ability to create zipped (compressed) component files. | |||
== 14.1 == | == 14.1 == |