MoonPack is a MoonBit-native schema-first binary serialization toolkit.
Dependencies
| Area | MoonPack | Protobuf |
|---|---|---|
| Schema | Small .mpack language | Full .proto language |
| Codegen | MoonBit-only MVP | Multi-language ecosystem |
| Wire format | Tag-based, protobuf-inspired | Protobuf-compatible |
| Scope | 4k-10k LOC target | Large mature ecosystem |
| Goal | MoonBit ecosystem building block | Cross-language standard |
git clone https://github.com/001-Elsa/Moonbit-Submit.git
cd Moonbit-Submit
moon update
moon check
moon build
moon testpowershell -ExecutionPolicy Bypass -File .\scripts\check.ps1bash scripts/check.shmoon fetch 001-Elsa/moonpack@0.1.2package demo.auth
message User {
1: id Int64
2: name String
3: email String?
4: roles List[String]
5: status UserStatus
}
enum UserStatus {
0: Unknown
1: Active
2: Disabled
}moonpack check examples/auth/auth.mpack
moonpack compat examples/compat/savegame_v1.mpack examples/compat/savegame_v2.mpack
moonpack gen examples/auth/auth.mpack -o generated [--no-tests]
moonpack doc examples/savegame/savegame.mpack -o docs/generatedmoon run src/cli -- check examples/auth/auth.mpack
moon run src/cli -- compat examples/compat/savegame_v1.mpack examples/compat/savegame_v2.mpack
moon run src/cli -- gen examples/savegame/savegame.mpack -o generated
moon run src/cli -- doc examples/savegame/savegame.mpack -o docs/generated
moon check
moon testok: demo.auth
ok: compatible
generated: generated/demo/savegame (7 files)
documented: docs/generated/demo/savegame.md
Total tests: 43, passed: 43, failed: 0.
error: examples/invalid/reserved.mpack:5:3: field number 1 is reserved in message User
error: compat failed: message Save removed field 2 without reserving itmoon run src/cli -- check examples/auth/auth.mpackmoon run src/cli -- gen examples/savegame/savegame.mpack -o generated
moon testdefault_save_game()
sample_save_game()
equal_save_game(lhs, rhs)
encode_save_game(value)
decode_save_game(bytes)flowchart LR
A[".mpack schema"] --> B["lexer + parser"]
B --> C["AST"]
C --> D["validator"]
D --> E["MoonBit codegen"]
E --> F["structs + enums"]
E --> G["encode/decode"]
E --> H["round-trip tests"]package demo.savegame
message Vec2 {
1: x Double
2: y Double
}
message SaveGame {
reserved 6
reserved 10..20
1: player_id String
2: level Int
3: position Vec2
4: inventory List[InventoryItem]
5: note String?
}.
README.md
LICENSE
moon.mod
docs\
examples\
generated\
scripts\
src\
core\
schema\
codegen\
cli\MoonPack is a MoonBit-native schema-first binary serialization toolkit.
Dependencies