A clean implementation of apache avro wire protocol

All internal protocol communication with my Libertas OS uses the Apache Avro format across Rust, C++, TypeScript, and Android, etc.

Since Libertas manages data schemas in a centralized location, we don't need schema support in Rust. We just want an encoder and decoder generated by a Rust macro.

Unfortunately, the official Apache Avro design is seriously flawed and unfixable. It has over 40,000 lines of code (not including comments). Another implementation is better, but it still has over 10,000 lines of code and is LGPL-licensed.

Our wired protocol is about 1,500 lines of code, and it supports the following:

  • All primitives
  • Vec
  • Option
  • Box

Most of codes are generic functions for tuples with 1-26 items. Other codes are about 200 lines of code.

Here is the git: