OCapN Pre-standardization Group

August 2023

Minutes

markm: The following is in the context of concrete binary syntax, and why the order-preserving properties of the format in https://github.com/endojs/endo/pull/1594 are important.

(Baldurs note : that being data order and not message order)

jweisz: I have news to share. Not sure if everyone has heard, but Ian Denhardt passed away unexpectedly last month, and thus Cap'n Proto doesn't currently have much representation here. I am not technical enough to participate at the level Ian did, but someone else may step in in the near future. Don't let Cap'n Proto be a blocker on moving forward since we won't have much input at this time.

jar: Given low turnout today, I don't think we should make big decisions, anyhow.

markm: Who will be representing capnproto going forward?

jweisz: Louis Thibault is potentially interested but uncertain at this time.

dpwiz: I've started implementation to match the test suite and found discrepancies between the spec and the test suite

jar: Were issues filed?

dpwiz: Yes

dthompson: We should grant additional privileges so more people can grant presenter access at meetings.

jar: I should at least be able to.

#40 "OCapN & Agoric: Layers and Orders" continuation

markm: PDF and Keynote presentation are at https://github.com/ocapn/ocapn/issues/75#issuecomment-1631722508

markm: I'm recording audio locally.

markm: quickly reviews the previous slides he presented at a past meeting

markm: a Key is a Passable that can be used as a key in a Map or element in a Set, and the important aspect of a Key is that it must have stable and well-defined equality semantics. A Key is not necessarily primitive, but cannot encompass a Promise or an Error, or a TagRecord whose tag does not identify it as a Map, Set, or Bag.

markm: Every Key is also a Pattern that matches itself, and some Patterns match more than one value (e.g., a Pattern matching numbers greater than or equal to 100).

markm: We differentiate compareRank (a total preorder at the low "pass-style" level in which values are always comparable but can have equal rank) from compareKeys (a partial order over Keys at the higher "patterns"/"kindOf" level in which some Keys are incomparable).

dthompson: What does this mean for Spritely?

markm: We're proposing this as a candidate for a concrete binary encoding, secondary to completing agreement about the passable and CapTP levels.

dthompson: The slides include logic programming capability that Goblins currently lacks, but I appreciate the recap helping me grasp things much better than the first time around. I think we can get agreement on the pass-style layer. But I don't have experience at the marshalling level for Spritely.

markm: For everyone here, does it seem plausible that we could get agreement on the encodePassable format, absent any penalties?

dthompson: It does preserve an ordering guarantee in similar style to our current use of Syrup.

Next meeting

jar: Per schedule, Tuesday, September 12

zarutian: The meetings should be longer.