After our Protobuf schemas became a cluttered after numerous major changes, we evaluated many alternatives for better schema evolution - Cap'n Proto, FlatBuffers, Borsh, etc. - but none seemed that they’d make a noticable improvement.
VBARE takes a different approach: it's a tiny extension to BARE that adds version headers and explicit migration functions between schema versions. This allows you to handle complex changes (like splitting a "name" field into "firstName"/"lastName") that are impossible with other tools, and your application logic stays clean.
It's been powering all of Rivet's protocols in production, with TypeScript and Rust implementations available.