[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MirageOS-devel] How to implement protocols?

  • To: mirageos-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Hannes Mehnert <hannes@xxxxxxxxxxx>
  • Date: Thu, 12 Nov 2015 22:45:00 +0100
  • Delivery-date: Thu, 12 Nov 2015 21:45:20 +0000
  • List-id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>
  • Openpgp: id=11B5464249B5BD858FFF6328BC896588DF7C28EE


I just revived a draft on how to write protocols in a purely functional
way.  The goal is that the protocol logic is independent of any side
effects, but has an explicit API what action the effectful client should
do (which a test harness could also check for, instead of putting the
bytes onto the wire).

I think the design space of software implementations is very thinly
populated, and we should try out more approaches.  The draft is based on
experience developing TLS with David (which was my first OCaml project),
and OTR, but also experience from implementing TCP/IP in Dylan (a LISP
dialect) back in 2005 (retrospectively I can find shortcomings of that
approach much easier).

I'm eager to discuss it in further detail on this list (I'm pretty sure
it is incomplete and partially wrong).


Thanks to David and Mort for feedback on earlier drafts.  Feedback welcome,


Attachment: signature.asc
Description: OpenPGP digital signature

MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.