|
1 | | -# Rheo Storage |
| 1 | +# Dhara Storage |
2 | 2 |
|
3 | | -Rheo Storage is a Rust-first storage runtime with a Windows-first delivery story. |
| 3 | + |
| 4 | +[](LICENSE.txt) |
| 5 | + |
| 6 | +Dhara Storage is a Rust-first storage runtime with a Windows-first delivery story. |
4 | 7 | It combines definition-driven file analysis, path-based file and directory operations, |
5 | | -debounced watching, a reusable `RPKG` package format, and a managed .NET wrapper over |
| 8 | +debounced watching, a reusable `DHBIN` package format, and a managed .NET wrapper over |
6 | 9 | the native core. |
7 | 10 |
|
8 | 11 | ## Workspace |
9 | 12 |
|
10 | | -| Project | Purpose | |
11 | | -| --- | --- | |
12 | | -| `rheo_rpkg` | Shared `RPKG` v2 container crate for MessagePack payloads, optional metadata, and integrity sections | |
13 | | -| `rheo_storage` | Rust-native runtime for analysis, metadata, operations, navigation, and watching | |
14 | | -| `rheo_storage_ffi` | Thin C ABI over `rheo_storage` for managed and native hosts | |
15 | | -| `bindings/dotnet/Rheo.Storage` | `net10.0` wrapper over `rheo_storage_ffi` | |
16 | | -| `tooling/rheo_tool` | Operator CLI for verification, packaging, release, and defs workflows | |
17 | | -| `tooling/rheo_tool_rheo_storage` | Repository-specific capability pack used by `rheo_tool` | |
| 13 | +| Project | Purpose | |
| 14 | +| ---------------------------------- | ----------------------------------------------------------------------------------------------------- | |
| 15 | +| `dhara_dhbin` | Shared `DHBIN` v2 container crate for MessagePack payloads, optional metadata, and integrity sections | |
| 16 | +| `dhara_storage` | Rust-native runtime for analysis, metadata, operations, navigation, and watching | |
| 17 | +| `dhara_storage_native` | Thin C ABI over `dhara_storage` for managed and native hosts | |
| 18 | +| `bindings/dotnet/Dhara.Storage` | `net10.0` wrapper over `dhara_storage_native` | |
| 19 | +| `tooling/dhara_tool` | Operator CLI for verification, packaging, release, and defs workflows | |
| 20 | +| `tooling/dhara_tool_dhara_storage` | Repository-specific capability pack used by `dhara_tool` | |
18 | 21 |
|
19 | 22 | ## Highlights |
20 | 23 |
|
21 | | -- Rust-native public API in `rheo_storage`, not a class-for-class port of the legacy C# model |
22 | | -- Bundled `filedefs.rpkg` runtime package for content-based file analysis |
| 24 | +- Rust-native public API in `dhara_storage`, not a class-for-class port of the legacy C# model |
| 25 | +- Bundled `filedefs.dhbin` runtime package for content-based file analysis |
23 | 26 | - File and directory operations that keep the simple path fast and opt into progress only when needed |
24 | 27 | - Debounced directory watching for stable change notifications |
25 | | -- Structured logging with `tracing` in Rust, native log forwarding through `rheo_storage_ffi`, and host integration through `Microsoft.Extensions.Logging` |
| 28 | +- Structured logging with `tracing` in Rust, native log forwarding through `dhara_storage_native`, and host integration through `Microsoft.Extensions.Logging` |
26 | 29 | - Multi-runtime NuGet packaging for Windows `win-x64` and `win-arm64` |
27 | 30 |
|
28 | 31 | ## Quick Start |
29 | 32 |
|
30 | 33 | Rust runtime: |
31 | 34 |
|
32 | 35 | ```rust |
33 | | -use rheo_storage::{FileStorage, analyze_path}; |
| 36 | +use dhara_storage::{FileStorage, analyze_path}; |
34 | 37 |
|
35 | 38 | let report = analyze_path("sample.pdf")?; |
36 | 39 | let bytes = FileStorage::from_existing("sample.pdf")?.read()?; |
37 | | -# Ok::<(), rheo_storage::StorageError>(()) |
| 40 | +# Ok::<(), dhara_storage::StorageError>(()) |
38 | 41 | ``` |
39 | 42 |
|
40 | 43 | .NET wrapper: |
41 | 44 |
|
42 | 45 | ```csharp |
43 | 46 | using Microsoft.Extensions.Logging; |
44 | | -using Rheo.Storage; |
| 47 | +using Dhara.Storage; |
45 | 48 |
|
46 | 49 | using var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); |
47 | | -RheoStorage.UseLoggerFactory(loggerFactory); |
| 50 | +DharaStorage.UseLoggerFactory(loggerFactory); |
48 | 51 |
|
49 | | -var file = RheoStorage.File(@"C:\data\sample.pdf"); |
| 52 | +var file = DharaStorage.File(@"C:\data\sample.pdf"); |
50 | 53 | var analysis = file.Analyze(); |
51 | 54 | var bytes = await file.ReadBytesAsync(); |
52 | 55 | ``` |
53 | 56 |
|
54 | 57 | Tooling: |
55 | 58 |
|
56 | 59 | ```powershell |
57 | | -cargo run -p rheo_tool -- verify ci |
58 | | -cargo run -p rheo_tool -- package verify |
| 60 | +cargo run -p dhara_tool -- verify ci |
| 61 | +cargo run -p dhara_tool -- verify package |
59 | 62 | ``` |
60 | 63 |
|
61 | 64 | ## Support Matrix |
62 | 65 |
|
63 | | -| Surface | Status | |
64 | | -| --- | --- | |
65 | | -| `rheo_rpkg` | Portable Rust crate | |
66 | | -| `rheo_storage` | Windows-first runtime; portable where the underlying functionality naturally is | |
67 | | -| `rheo_storage_ffi` | Windows-first native ABI | |
68 | | -| `Rheo.Storage` NuGet package | Windows `win-x64` and `win-arm64` only | |
| 66 | +| Surface | Status | |
| 67 | +| ----------------------------- | ------------------------------------------------------------------------------- | |
| 68 | +| `dhara_dhbin` | Portable Rust crate | |
| 69 | +| `dhara_storage` | Windows-first runtime; portable where the underlying functionality naturally is | |
| 70 | +| `dhara_storage_native` | Windows-first native ABI | |
| 71 | +| `Dhara.Storage` NuGet package | Windows `win-x64` and `win-arm64` only | |
69 | 72 |
|
70 | 73 | The NuGet package now fails clearly during package consumption for unsupported RIDs such as `win-x86`, |
71 | 74 | and the managed wrapper also throws a `PlatformNotSupportedException` when loaded outside Windows `x64` or `arm64`. |
72 | 75 |
|
73 | 76 | ## Logging |
74 | 77 |
|
75 | 78 | - Rust crates emit structured `tracing` events for analysis, metadata loading, operations, watching, package verification, and release flows. |
76 | | -- `rheo_storage_ffi` exposes a native logger registration API that forwards JSON log records across the ABI. |
77 | | -- `Rheo.Storage` forwards both managed wrapper logs and native runtime logs into a host `ILoggerFactory`. |
78 | | -- `rheo_tool` and `rheo_tool_rheo_storage` now emit richer command, configuration, transfer, and verification logs for release diagnostics. |
| 79 | +- `dhara_storage_native` exposes a native logger registration API that forwards JSON log records across the ABI. |
| 80 | +- `Dhara.Storage` forwards both managed wrapper logs and native runtime logs into a host `ILoggerFactory`. |
| 81 | +- `dhara_tool` and `dhara_tool_dhara_storage` now emit richer command, configuration, transfer, and verification logs for release diagnostics. |
79 | 82 |
|
80 | 83 | ## Release Flow |
81 | 84 |
|
82 | | -- Shared release metadata lives in [rheo.config.toml](./rheo.config.toml). |
| 85 | +- Shared release metadata lives in [dhara.config.toml](./dhara.config.toml). |
83 | 86 | - Local secrets belong in [.env.local](./.env.example), created from the example file. |
84 | | -- [tooling/rheo_tool](./tooling/rheo_tool/README.md) is the supported operator surface for config sync, verification, packaging, and publish flows. |
85 | | -- NuGet verification checks that both `runtimes/win-x64/native/rheo_storage_ffi.dll` and `runtimes/win-arm64/native/rheo_storage_ffi.dll` are present in the package. |
| 87 | +- [tooling/dhara_tool](./tooling/dhara_tool/README.md) is the supported operator surface for config sync, verification, packaging, and publish flows. |
| 88 | +- NuGet verification checks that both `runtimes/win-x64/native/dhara_storage_native.dll` and `runtimes/win-arm64/native/dhara_storage_native.dll` are present in the package. |
86 | 89 |
|
87 | 90 | ## Docs |
88 | 91 |
|
89 | | -- [Rust consumer guide](./docs/reference/rust-consumer.md) |
90 | | -- [.NET consumer guide](./docs/reference/dotnet-consumer.md) |
91 | | -- [.NET release guide](./docs/reference/releasing-rheo-storage-dotnet.md) |
92 | | -- [rheo_rpkg README](./rheo_rpkg/README.md) |
93 | | -- [rheo_storage README](./rheo_storage/README.md) |
94 | | -- [rheo_storage_ffi README](./rheo_storage_ffi/README.md) |
95 | | -- [Rheo.Storage README](./bindings/dotnet/Rheo.Storage/README.md) |
| 92 | +- Rust consumer guide: `%USERPROFILE%\OneDrive\Documents\MindVault\AI\Workspaces\rheo-storage\References\Rust Consumer.md` |
| 93 | +- .NET consumer guide: `%USERPROFILE%\OneDrive\Documents\MindVault\AI\Workspaces\rheo-storage\References\DotNET Consumer.md` |
| 94 | +- .NET release guide: `%USERPROFILE%\OneDrive\Documents\MindVault\AI\Workspaces\rheo-storage\References\Releasing Rheo.Storage for DotNET.md` |
| 95 | +- [dhara_dhbin README](./dhara_dhbin/README.md) |
| 96 | +- [dhara_storage README](./dhara_storage/README.md) |
| 97 | +- [dhara_storage_native README](./dhara_storage_native/README.md) |
| 98 | +- [Dhara.Storage README](./bindings/dotnet/Dhara.Storage/README.md) |
0 commit comments