a lightweight protocol description DSL, similar to google protobuf