1. virt
1.1. QEMU
1.2. KVM
1.3. Hyper-V
1.4. Firecracker
1.5. Docker
1.6. Vagrant
1.7. LXC
1.8. LXD
1.9. containerd
1.10. systemd-nspawn
1.11. VirtualBox
2. Concatenative
2.1. Factor factor
- Factor is a cool concatenative lang but unfortunately the C interface (vm/master.h) no longer exists on the master branch.
3. Lisp lisp
These notes pertain to Lisp. More specifically, ANSI Common Lisp in most places.
- https://github.com/lispnik/iup/ - doesn't support MacOS yet, looks
cool though
- what we really need is wasm compiler.. TBD
4. Rust
4.1. Serde
important part of the Rust ecosystem, another dtolnay contribution. If you want to program a data format in the Rust ecosystem, this is how you do it.The way it works is that you define some special structs, a Serializer and a Deserializer which implement the Serialize and Deserialize traits provided by serde, respectively.
You can use these structs to provide your public API. The conventional choice is public top-level functions like from-str and to-string. That's it, your serialization library can now read and write your data format as Rust data types.
- the default behavior is an externally tagged representation (verbose)
The docs use strings as core IO when implementing a custom format, but the convention is to implement for T where T is bound by std::io Read or Write trait. Then you can provide a more robust public API (frombytes, fromwriter, etc).