Rholang requirements for Mercury

All Typing is icing on the cake.

We should focus on everything else first.

Essential Features that are not currently implemented 2018-01-12

  • Non-linear bindings.
  • ... Tuple capture
  • @ Destructuring and Process vs Name tracking. This is a very simple typing, and probably all we should promise for Mercury
  • IOPairs → requires support in the tuplespace library.
  • Arithmetic expressions need to act on arbritrary processes, not just quantities. (So that *x + *x will compile)
  • Name unforgeability

Caveats

  • We will not likely support destructuring of arbitrary processes, only values for mercury.
  • We will support construction of arbitrary names. (If it comes to it, we could probably construct the names we need as values.)
  • When we do support process destructuring and matching, we will likely want to add an ```opaque { P }``` construction that won't destructure further.

Other requirements:

  • Target library needs to be well documented.