A schema-based binary format for efficiently encoding trees of data
See the codeKiwi is a schema-based binary format for efficiently encoding trees of data. It's inspired by Google's Protocol Buffer format but is simpler, has a more compact encoding, and has better support for optional fields.
Goals:
struct feature supports nested objects with zero encoding overhead.Non-goals:
true or false. Will use 1 byte.[] suffix.uint with a restricted set of values that are identified by name. New fields can be added to any message while maintaining backwards compatibility.enum Type {
FLAT = 0;
ROUND = 1;
POINTED = 2;
}
struct Color {
byte red;
byte green;
byte blue;
byte alpha;
}
message Example {
uint clientID = 1;
Type type = 2;
Color[] colors = 3;
}
See http://evanw.github.io/kiwi/ for a live demo of the schema compiler.
Pick a language:
(top 24 of 27)
3,978 followers · starred Jul 2023
1,712 followers · starred Jan 2023
1,649 followers · starred May 2024
769 followers · starred May 2023
A schema-based binary format for efficiently encoding trees of data
See the codeKiwi is a schema-based binary format for efficiently encoding trees of data. It's inspired by Google's Protocol Buffer format but is simpler, has a more compact encoding, and has better support for optional fields.
Goals:
struct feature supports nested objects with zero encoding overhead.Non-goals:
true or false. Will use 1 byte.[] suffix.uint with a restricted set of values that are identified by name. New fields can be added to any message while maintaining backwards compatibility.enum Type {
FLAT = 0;
ROUND = 1;
POINTED = 2;
}
struct Color {
byte red;
byte green;
byte blue;
byte alpha;
}
message Example {
uint clientID = 1;
Type type = 2;
Color[] colors = 3;
}
See http://evanw.github.io/kiwi/ for a live demo of the schema compiler.
Pick a language:
(top 24 of 27)
3,978 followers · starred Jul 2023
1,712 followers · starred Jan 2023
1,649 followers · starred May 2024
769 followers · starred May 2023