Jay Foad: Difference between revisions

Jump to navigation Jump to search
No change in size ,  18:01, 24 November 2019
Line 11: Line 11:
== Contributions ==
== Contributions ==


Foad's bytecode compiler (invoked with <source lang=apl inline>400⌶</source>) for Dyalog was included in [[Dyalog APL 14.0|version 14.0]] and on, although work on the compiler almost entirely stopped by [[Dyalog APL 17.0|version 17.0]]. On leaving Dyalog Foad remarked that he no longer thought his purely compiled approach was the best method for APL, and expressed enthusiasm for hybrid interpreter-compiler techniques.<ref name="goodbye"></ref> He also did significant work on Dyalog's interpreter, in particular optimising [[Maximum]], [[Minimum]], and [[Plus]] [[Reduce|reductions]] using [[vector instructions]] on x86 and POWER platforms. He also developed a technique for transposing [[Boolean]] matrices with multiple-of-8 dimensions, which was later extended to arbitrary dimensions by [[Marshall Lochbaum]] with help from Foad.<ref>Lochbaum, Marshall. [https://dyalog.tv/Dyalog17/?v=2KnrDmZov4U "Moving Bits Faster in Dyalog 16.0"].</ref> Foad worked not only on speeding up particular functions but also optimising the interpreter as a whole, for instance implementing special code for [[scalar function]]s with all arguments scalar, rewriting Dyalog's workspace compactor with a faster algorithm, and changing Dyalog's [[stranding]] implementation from an <math>O(n^2)</math> to a linear-time algorithm. Foad did signigicant work on Dyalog's [[decimal float]] implementation, and was the primary developer involved in switching from [[wikipedia:Densely packed decimal|DPD]] to the faster [[wikipedia:Binary integer decimal|BID]] format on platforms other than POWER (which has hardware DPD support).
Foad's bytecode compiler (invoked with <source lang=apl inline>400⌶</source>) for Dyalog was included in [[Dyalog APL 14.0|version 14.0]] and on, although work on the compiler almost entirely stopped by [[Dyalog APL 17.0|version 17.0]]. On leaving Dyalog Foad remarked that he no longer thought his purely compiled approach was the best method for APL, and expressed enthusiasm for hybrid interpreter-compiler techniques.<ref name="goodbye"></ref> He also did significant work on Dyalog's interpreter, in particular optimising [[Maximum]], [[Minimum]], and [[Plus]] [[Reduce|reductions]] using [[vector instructions]] on x86 and POWER platforms. He also developed a technique for transposing [[Boolean]] matrices with multiple-of-8 dimensions, which was later extended to arbitrary dimensions by [[Marshall Lochbaum]] with help from Foad.<ref>Lochbaum, Marshall. [https://dyalog.tv/Dyalog17/?v=2KnrDmZov4U "Moving Bits Faster in Dyalog 16.0"].</ref> Foad worked not only on speeding up particular functions but also optimising the interpreter as a whole, for instance implementing special code for [[scalar function]]s with all arguments scalar, rewriting Dyalog's workspace compactor with a faster algorithm, and changing Dyalog's [[stranding]] implementation from an <math>O(n^2)</math> to a linear-time algorithm. Foad did significant work on Dyalog's [[decimal float]] implementation, and was the primary developer involved in switching from [[wikipedia:Densely packed decimal|DPD]] to the faster [[wikipedia:Binary integer decimal|BID]] format on platforms other than POWER (which has hardware DPD support).


With [[John Scholes]], Foad defined the [[identity element]] for [[Catenate]] in Dyalog and more generally [[Catenate]] [[reduction]] of an [[empty array]], a model based on but distinct from [[NARS2000]]'s. He was involved in the design of the [[At operator]], [[Where]], [[Interval Index]], and [[Nest]], and defined [[shy result]]s for [[system function]]s that previously lacked any result (as no-result functions are difficult to use in [[dfn]]s). Foad was involved in designing several extensions to Dyalog primitives, including high-rank [[Unique]] in [[Dyalog APL 17.0]] and the decision to allow duplicate left argument cells in [[Interval Index]] in [[Dyalog APL 17.1|17.1]].
With [[John Scholes]], Foad defined the [[identity element]] for [[Catenate]] in Dyalog and more generally [[Catenate]] [[reduction]] of an [[empty array]], a model based on but distinct from [[NARS2000]]'s. He was involved in the design of the [[At operator]], [[Where]], [[Interval Index]], and [[Nest]], and defined [[shy result]]s for [[system function]]s that previously lacked any result (as no-result functions are difficult to use in [[dfn]]s). Foad was involved in designing several extensions to Dyalog primitives, including high-rank [[Unique]] in [[Dyalog APL 17.0]] and the decision to allow duplicate left argument cells in [[Interval Index]] in [[Dyalog APL 17.1|17.1]].

Navigation menu