diff --git a/README.md b/README.md index c6d94f4..dce4e3d 100644 --- a/README.md +++ b/README.md @@ -174,10 +174,60 @@ The BinaryTable uses a custom binary format optimized for random access: - **Concurrent Access**: Single-threaded access only - **Type System**: Limited compared to JSON (no nested objects, mixed arrays) -## Future Roadmap +# SweepStore Roadmap -- Full JSON parity with nested objects and mixed-type arrays -- Compression support for large data blocks -- Checksums and data integrity validation -- Multi-threaded access with file locking -- Query system for complex data retrieval \ No newline at end of file +## v1.0.0 (Current) +- ✅ Key-value storage with hash-based indexing +- ✅ Uniform arrays with random access +- ✅ Automatic memory management via free list +- ✅ Single file format (.sws) + +## v2.0.0 (Planned) + +### Core Changes +- **Nested objects** - Store objects within objects for hierarchical data +- **Key enumeration** - Query and list all keys without knowing them upfront +- **Object-based architecture** - Each object has its own address table and key list + +### File Format Changes +``` +v1: Global address table → All keys at root level +v2: Root object → Each object manages its own keys +``` + +### New API +```dart +// Nested objects +table["player"] = {}; +table["player"]["name"] = "Alice"; +table["player"]["inventory"] = {}; + +// Key discovery +List keys = table.keys(); +bool exists = table.containsKey("player"); + +// Object operations +BT_Object player = table["player"]; +for (String key in player.keys()) { + print("$key: ${player[key]}"); +} +``` + +### Implementation Strategy +- Introduce `BT_Object` type with embedded address table + key list +- `BinaryTable` becomes wrapper around root object +- Maintain global free list (not per-object) +- Address table entries remain absolute pointers +- Key list stored alongside each object's address table + +### Breaking Changes +- File format incompatible with v1.0.0 +- API remains largely the same (only additions) +- Migration tool needed for v1 → v2 files + +## Future Considerations +- Hash collision resolution +- Checksums for data integrity +- Optimized allocation strategies +- Incremental array resizing +- Compression options \ No newline at end of file