|
1 | | -# PackOS |
2 | | -PackOS is a binary packing protocol with offset-indexed framing, designed for fast composition, random access, and reliable for RPC or BadgerDB workloads with **small blobs(<8kb)**(the size limitation maybe lifted to make it suitable for all purpose) |
3 | | -It supports: |
4 | | -All packing paths emit canonical headers, preserve offset domains, and support recursive structures. PAOSP ensures schema validation, GC neutrality, and reproducible output across variants. |
5 | | - |
6 | | -- [x] Canonical encoding |
7 | | -Emits offset-indexed binary frames with consistent headers and type tags. |
8 | | -- [x] Sequential decoding |
9 | | -Supports single-pass traversal with offset tracking and teardown-safe accessors. |
10 | | -- [x] Random access decoding |
11 | | -Enables direct lookup via offset domains without full unpacking. |
12 | | -- [x] Recursive structure support |
13 | | -Handles nested maps, slices, and tagged frames with offset provenance. |
14 | | -- [x] Simple schema validation |
15 | | -Validates type tags, offsets, and structure boundaries during decode. |
16 | | -- [x] GC neutrality |
17 | | -Avoids retained slices and ensures allocation discipline across packing paths. |
18 | | -- [x] Reproducible output |
19 | | -Guarantees stable binary layout across runs and variants. |
20 | | -- [ ] General-purpose container support |
21 | | -Supports arbitrarily large maps, slices, and tagged frames without size limits. |
22 | | -- [ ] Generate big and nested complex structures above 8kb limit |
| 1 | +# PackOS |
| 2 | + |
| 3 | +PackOS is a binary packing protocol with offset-indexed framing. |
| 4 | +It provides fast composition, random access, and reliable use in RPC or BadgerDB workloads with **small blobs (<8 KB)**. |
| 5 | +Future versions may lift the size limit for general-purpose use. |
| 6 | + |
| 7 | +## Features |
| 8 | +- [x] **Canonical encoding** |
| 9 | + Offset-indexed binary frames with consistent headers and type tags |
| 10 | + |
| 11 | +- [x] **Sequential decoding** |
| 12 | + Single-pass traversal with offset tracking and safe accessors |
| 13 | + |
| 14 | +- [x] **Random access decoding** |
| 15 | + Direct lookup via offset domains; nested elements accessed by header first, then inner offsets |
| 16 | + |
| 17 | +- [x] **Recursive structure support** |
| 18 | + Nested maps and tuples |
| 19 | + |
| 20 | +- [x] **Schema-based validation, encoding, and decoding** |
| 21 | + Validates type tags, offsets, and structure boundaries during decode and encode |
| 22 | + Packs compactly by stripping field names |
| 23 | + |
| 24 | +- [x] **Reproducible output** |
| 25 | + Stable binary layout across runs and variants |
| 26 | + |
| 27 | +- [ ] **General-purpose container support** |
| 28 | + Arbitrarily large maps, slices, and tagged frames without size limits |
| 29 | + |
| 30 | +- [ ] **Large structure generation** |
| 31 | + Big and nested complex structures above the 8 KB limit |
23 | 32 |
|
24 | 33 |
|
25 | 34 | ## Encoding Example |
|
0 commit comments