Learning WebAssembly, part 2
Continuing on with the AssemblyScript concepts chapter.
Concepts
No any
or undefined
— interesting. And good, I think. But no union types yet? A little sad.
Okay, so module imports and exports are the main way (possibly the only way) the host communicates with the Wasm script. I knew about exports but didn’t know about declare
and module imports. Nice.
The tree-shaking approach to compiling is interesting — dead code doesn’t get type checked, for example.
Types
Not as much type inference as TypeScript. Good to know.
Oh, interesting: WebAssembly has distinct operations for signed and unsigned comparisons. (gt_s
vs. gt_u
, for example.) Also, == === ===
. (Couldn’t resist. But yes, given that the basic types aren’t nullable etc., makes sense that ==
is also doing strict equality.)
Standard library
I think the reason I like reading through standard library docs is the same reason I like reading through dictionaries — both open up a world of possibilities. And each time I go exploring, I find something new. Need to do more of both.
I like that the low-level WebAssembly instructions are available to AssemblyScript.
Nice, there’s manual memory management when you need it.
StaticArray
s for C-like arrays with better performance, got it.
The string considerations section was interesting.
Implementation status
Some drama with WASI and the component model. I don’t know enough about the situation to comment, but I hope things get sorted out in a way that’s good for standards and the web platform.
Ah, there aren’t closures, Promises, exceptions, or rest parameters in AssemblyScript. That’s very good to know.
Using the runtime
A few different runtime options, including support for a custom runtime. Interesting.
Reading about the memory layout was fun. Reminds me of writing C twenty-some years ago. I need to come up with a low-level project to work on sometime.
And that’s a wrap on the documentation. I’ve decided that my learning project for AssemblyScript will be a small convex hull implementation. Notes on that coming soon!