Sounds interesting. But i can’t see the use case of this yet.
Could you give me some example of it?
At a high level, a lot of this started when the first spectre bugs hit and performance got slashed. We had a hell week at work until we all just accepted that this was the new normal. This pissed me off enough to start looking into the root causes of why it hurt us so bad at the institutional level. Our industry is largely a monoculture around one kind of processor created by 2 companies, one of whom has a bad reputation at cutting corners in the name of speed. A lot of why this happened is because people chain themselves to their processors with binaries. (yes i’m aware of the exceptions, but) AMD64 binaries normally only run on AMD64 processors. Compilers target AMD64 processors. They emit AMD64 bytecode. That bytecode is treated as the word of God and sometimes is kept even long after the author of it has left the company or even died.
This started me down a rabbit hole of researching virtual machine formats and WebAssembly kept coming up. I would be able to run the same code on other processor kinds via WebAssembly. All that was missing was the way for it to interact with the outside world. Thus a lot of my research that’s resulted in wasmcloud.
The main goal of wasmcloud is to solve two problems that I’ve been considering some of the hardest in my career:
When I get to that stage, wasmcloud will have a few arm instances in its production fleet. It will get work via nats and the messages will be durably stored using something like Kafka. I’m still at a bootstrapping phase or I would give you a much more detailed example, but here’s an execution log of one of Olin’s hello world programs running on wasmcloud: https://gateway.ipfs.io/ipfs/QmeW8XpmQzEQouKAQWVtE4JkrrcTiA7rYGncFTPfWJrQz3
One of the first things I plan to port to wasmcloud is a Discord bot of mine.
Small note about the h language. As far as I know the shortest quine producing language is in fact Nothing
$ touch quine.sh
$ chmod +x quine.sh
$ ./quine.sh > quine.out
$ diff -u quine.sh quine.out
That does work too. You could say that sh is a Nothing interpreter with a lot of extensions.
Love the snowflakes but they’re killing my cpu to the point the page is not very responsive.
Oh, weird. If you change your settings to “prefer reduced motion” it’ll disable the animation. I’ll look into it and see if I can make it a bit more efficient. Sorry!
I really loved this post and love the underlying concept even more. Can’t wait to learn more.
Thanks! It’s been one of the most fun projects I’ve ever done.
That’s so great to hear! I myself have had dreams of a compute mesh powered by WASM so this is something I plan to follow closely. Keep up the awesome and thanks again for sharing.
Did you see the recent post on Gate? It sounds like you might be interested in that too!