wat-compiler
sia
Our great sponsors
wat-compiler | sia | |
---|---|---|
2 | 1 | |
18 | 126 | |
- | - | |
0.0 | 2.5 | |
over 1 year ago | 27 days ago | |
JavaScript | TypeScript | |
- | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
wat-compiler
-
Understanding Every Byte in a WASM Module
For some time I've been fascinated by the codebase of a small WAT compiler written in JavaScript.
https://github.com/stagas/wat-compiler/blob/main/story.txt
And I mean "small" as a real complement to how readable the entire compiler is. It's also been a great way to appreciate the design of the WASM text format and WASM overall. It's not a Lisp but has a similar feel to it.
I've been meaning to get more fluent at writing WAT directly, not for any practical purpose but just for pleasure of it. I could see myself gradually building up some abstractions to help me deveolp larger programs, perhaps a slightly higher-level language.
-
Grain: WebAssembly-First Programming Language
I was also disappointed that this isn't included in the browsers given that it was designed to be very simple to parse and compile. So I tried as an exercise to build such a compiler[0] and indeed it was much easier than I expected (with a few shortcuts of course, being a POC). It is just 5kb gzipped and it compiles to binary most of the WAT code out there and also quite fast, just a few ms. That said, I think writing WAT by hand is only helpful for very small critical hot code, anything more complex and IMO you need an abstraction of some sort.
[0]: https://github.com/stagas/wel
sia
-
Clio: extremely fast, multi-threaded code on the browser
Prior to version v0.11.0, Clio used JSON for serialization. JSON is available everywhere and it’s fairly fast, so at first, it might sound like a good idea to go with JSON. Unfortunately, as soon as we start serializing custom types with JSON, its performance degrades to the point that it’s not efficient anymore. To solve this issue, I created a serialization library for JavaScript named Sia, and to boost its serialization performance to the next level, I also designed a new text encoding which I called utfz. I spent over a year optimizing these two libraries, and as a result, managed to make Sia so fast that the pure JavaScript version of it beats even the performance of the native serialization libraries available for Node.js!
What are some alternatives?
bytenode - A minimalist bytecode compiler for Node.js
clio - Clio is a functional, parallel, distributed programming language.
gc - Branch of the spec repo scoped to discussion of GC integration in WebAssembly
pbf - A low-level, lightweight protocol buffers implementation in JavaScript.
website - AssemblyScript's website and documentation.
utfz - UTFZ, a UTF-16 compression library.
examples - A few Clio examples
benchmark - Clio benchmark