aquavm
aquavm copied to clipboard
Deterministic AIR execution
At the moment, AIR consists of several instructions and every their combintation must work in a deterministic way on one peer. Deterministic problems arise while working with streams:
- streams must be CRDT-like and deterministic on one peer
- all operations with streams should be deterministic and don't depend on a CRDT nature of streams
The solution for the second issue is a stream canonicalization before its usage in any instruction except the fold instruction. This allows safely usage of streams in match and mismatch instructions, because after a canonicalization a stream become a scalar value.
Roadmap
- [x] make streams CRDT-like #89
- [x] introduce stream canonicalization #158
- [x] fix ap position generation #326
- [ ] reduce streams scope usage #297
Fixes #204.
Finally fixed in #297