Interesting, though I can’t help but feel that the tone of the first few paragraphs could be a bit more.. humble? Even if the underlying model is much better, you can’t really compare a complete project to one that is alpha. Real world complexities catch up in the later phase of bigger projects. Nonetheless, I eagerly await its future.
I'm working on improving my communication :(
Higher-Order Virtual Machine (HVM)
31–40 of 51 posts
Re: Higher-Order Virtual Machine (HVM)
#32Are there plans to expand documentation on how to use HVM as a general compilation target like LLVM?
Re: Higher-Order Virtual Machine (HVM)
#33Earlier quoted context omitted.
Yes, starting next week or so! We'll be looking for engineers that have skills relevant to our projects, including compilers, low-level assembly optimization, functional programming, type theory, parallel computing, and so on. Right now, we're quite busy with incorporation and bureaucracy, but you should see job postings in our to-be-released landing page (higherorderco.com) soon. Meanwhile, I answer DMs on Twitter (…
What are your thoughts around WebAssembly, Typed Assembly [1] and will you be using BlueSpec [2] to implement these ideas in hardware? [1] https://www.semanticscholar.org/search?q=typed%20assembly%20... namely, Greg Morrisett and Neal Glew's work https://www.semanticscholar.org/author/J.-G.-Morrisett/14364... https://www.semanticscholar.org/author/MorrisettGreg/1643921... (semantic scholar incorrectly thinks there ar…
In general though, I think we should move away from procedural instructions towards "interactional" instructions. HVM's AST can be seen as an assembly language with high-level instructions like LAM-APP (lambda application) and FUN-CTR (pattern-matching), and that's possible precisely because beta reduction is O(1) on interaction nets. A hardware with HVM's interactional instructions could make let us break out of the Von Neumann bottleneck and make processors much faster. Here is a table of HVM's core instructions:
.-----------------------------------------------------.
| Opcode | Effect | Cost |
|-----------|---------------------------------|-------|
| APP-LAM | applies a lambda | 2 |
| APP-SUP | applies a superposition | 4 |
| OP2-NUM | operates on a number | 2 |
| OP2-SUP | operates on a superposition | 4 |
| FUN-CTR | pattern-matches a constructor | 2 + M |
| FUN-SUP | pattern-matches a superposition | 2 + A |
| DUP-LAM | clones a lambda | 4 |
| DUP-NUM | clones a number | 2 |
| DUP-CTR | clones a constructor | 2 + A |
| DUP-SUP-0 | clones a superposition | 4 |
| DUP-SUP-1 | undoes a superposition | 2 |
| DUP-ERA | clones an erasure | 2 |
|-----------------------------------------------------|
I think BlueSpec is impressive and a good direction in the (arguably messy) hardware language domain. It is likely that we'll consider using it in our research and projects.Re: Higher-Order Virtual Machine (HVM)
#34Earlier quoted context omitted.
Yes, starting next week or so! We'll be looking for engineers that have skills relevant to our projects, including compilers, low-level assembly optimization, functional programming, type theory, parallel computing, and so on. Right now, we're quite busy with incorporation and bureaucracy, but you should see job postings in our to-be-released landing page (higherorderco.com) soon. Meanwhile, I answer DMs on Twitter (…
Digital hardware engineers too?
Re: Higher-Order Virtual Machine (HVM)
#35For anyone interested how interaction nets work here's how one would program them directly: https://github.com/inpla/inpla/blob/main/Gentle_introduction...
Re: Higher-Order Virtual Machine (HVM)
#36"be up to exponentially faster than alternatives" – hmm
"Interaction Net, which supersedes the Turing Machine" – Interaction Net link points to a paper on Interaction Combinators. And talking about superseding Turing machines is embarrassing – do you have Oracle powers? (https://en.wikipedia.org/wiki/Oracle_machine)
"set to scale towards uncharted levels of performance" – that's just a bit cringy
I've come across claims of no GC needed and I don't buy it unless in restricted domains, and it would be nice to have a link towards what you mean by 'beta optimality'. I would like to see the sort benchmark being done something realistic (recursive bubble sort, the two words together don't look good). Also automatic parallelism..., Immutability apparently for free, everything higher-order, it seems you hit a lot of holy grails in one go. Rather too many for me to feel comfortable.
The FAQ by contrast is a whole lot more reasonable and upfront, perhaps be careful about overselling yourself?
Re: Higher-Order Virtual Machine (HVM)
#37Earlier quoted context omitted.
What are your thoughts around WebAssembly, Typed Assembly [1] and will you be using BlueSpec [2] to implement these ideas in hardware? [1] https://www.semanticscholar.org/search?q=typed%20assembly%20... namely, Greg Morrisett and Neal Glew's work https://www.semanticscholar.org/author/J.-G.-Morrisett/14364... https://www.semanticscholar.org/author/MorrisettGreg/1643921... (semantic scholar incorrectly thinks there ar…
I love WASM - who doesn't? Maintaining a WASM target was included on HOC's current fundraise, and is essential to our JIT plans. I don't know much about typed assembly, but I guess it would enable optimizations that aren't possible without types, as well as increased safety - although I wonder if that's relevant, if the source language is already typed? In general though, I think we should move away from procedural i…
Re: Higher-Order Virtual Machine (HVM)
#38This seems very interesting, and I like your FAQ where you get honest, but your intro almost put me off: "be up to exponentially faster than alternatives" – hmm "Interaction Net, which supersedes the Turing Machine" – Interaction Net link points to a paper on Interaction Combinators. And talking about superseding Turing machines is embarrassing – do you have Oracle powers? ( https://en.wikipedia.org/wiki/Oracle_machi…
Re: Higher-Order Virtual Machine (HVM)
#39My understanding is that while parallelism (actually executing instructions simultaneously) is a property of the runtime, it depends upon concurrency (the separation of computations as independent) which is always something that has to be specified in the program source code.
Erlang has a similar property of "scaling with core-count for free" provided you write your program with a prodigious use of processes (which Erlang makes very easy and idiomatic). How is it that HVM is able to identify independent computations?
I admit to being only passingly familiar with Haskell-style FP, so perhaps the answer to my question is obvious.
Re: Higher-Order Virtual Machine (HVM)
#40I took a quick look at the HVM runtime and can vaguely make out the shape of the memory and code that reduces terms. While it's cool to have a computational model that evaluates everything only once and avoids duplicating computation, if it does not compile programs to machine code to exploit hardware, then the single-core performance will be worse than C/C++/Rust.
Something that generates a few machines instructions in C/C++/Rust requires reducing a graph of terms - many CPU instructions for each reduction and many memory accesses that may have poor locality.
Is the idea that programs contain enough parallelism that is out of reach of human programmers so that HVM will make up for the single-core performance drag through parallelism?
Maybe I'm missing what the HVM compiler does?
Maybe hardware acceleration with FPGAs or ASICs could be applied?
In other words, can this beautiful and elegant computational model be implemented with efficiency that matches C/C++/Rust?