from armchair_progamer@programming.dev to programming_languages@programming.dev on 17 May 2024 19:44
https://programming.dev/post/14224254
-
HMV2 (GitHub): an IR, runtime, and interaction combinator evaluator which allegedly “achieves near-ideal speedups as a function of available cores.”
-
Bend (Github): a high-level language that targets the CPU and GPU via HVM2.
-
Kind (GitHub): another language that uses HVM2, designed for proving theorems (no MVP yet).
Interaction combinators were devised by Yves Lafont. Interaction combinators compose to form interaction nets like how SKI combinators compose to form lambda terms. Interaction nets are a model of computation like lambda calculus or Turing machines. In fact, any lambda term can be translated into an interaction net. The key property of interaction nets, unlike Turing machines, is that you can reduce separate parts of an interaction net (i.e. evaluate separate parts of the program it encodes) in parallel, without data races or locks.
For more info, see:
- The original papers on interaction nets and interaction combinators.
- The lead developer of HVM2 is also writing a paper on HVM2.
- Video demonstrating interaction net reduction (from HOC).
- iNet, an interaction net implementation with a graphical demo; and inet-js (GitHub) the implementation (not HOC).
The above repos are in very early stages and the team/company has previous attempts that they ended up rewriting:
threaded - newest