{"id":47225316,"url":"https://github.com/nipsysdev/storage-rust-bindings","last_synced_at":"2026-03-13T19:30:23.866Z","repository":{"id":322904460,"uuid":"1091377319","full_name":"nipsysdev/storage-rust-bindings","owner":"nipsysdev","description":"Rust bindings for Storage, the Decentralized Durability Engine","archived":false,"fork":false,"pushed_at":"2026-01-28T13:35:29.000Z","size":360,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-29T05:54:04.718Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nipsysdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-06T23:54:26.000Z","updated_at":"2026-01-28T13:35:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nipsysdev/storage-rust-bindings","commit_stats":null,"previous_names":["nipsysdev/codex-rust-bindings","nipsysdev/storage-rust-bindings"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nipsysdev/storage-rust-bindings","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nipsysdev%2Fstorage-rust-bindings","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nipsysdev%2Fstorage-rust-bindings/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nipsysdev%2Fstorage-rust-bindings/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nipsysdev%2Fstorage-rust-bindings/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nipsysdev","download_url":"https://codeload.github.com/nipsysdev/storage-rust-bindings/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nipsysdev%2Fstorage-rust-bindings/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30473269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T17:15:31.527Z","status":"ssl_error","status_checked_at":"2026-03-13T17:15:22.394Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-13T19:30:18.417Z","updated_at":"2026-03-13T19:30:23.842Z","avatar_url":"https://github.com/nipsysdev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Storage Rust Bindings\n\nThis repository provides Rust bindings for the Storage library, enabling seamless integration with Rust projects.\n\n## Usage\n\nInclude in your Cargo project:\n\n```toml\n[dependencies]\nstorage-bindings = \"0.2\"\n```\n\nTo learn how to use those bindings, take a look at the [example project](https://github.com/nipsysdev/example-storage-rust-bindings) or the [integration tests](./tests/) directory.\n\n## Building\n\nBuilding will automatically:\n\n1. Fetch the pinned static binary release of libstorage for your platform from the [logos-storage-nim-bin](https://github.com/nipsysdev/logos-storage-nim-bin/releases) repository releases\n2. Generate Rust bindings and compile the crate\n\n**Note**: The first build will download the prebuilt binary (~50MB). Subsequent builds will use the cached version.\n\n## Caching\n\nPrebuilt binaries are automatically cached to improve build performance and reduce network usage.\n\n### Cache Location\n\nPrebuilt binaries are cached in a platform-specific location:\n\n- **Linux**: `~/.cache/storage-bindings/`\n- **macOS**: `~/Library/Caches/storage-bindings/`\n- **Windows**: `%LOCALAPPDATA%\\storage-bindings\\cache\\`\n\nThe cache is organized by version and platform:\n\n```\n~/.cache/storage-bindings/\n├── v0.3.0/              # Stable release\n│   ├── linux-amd64/\n│   │   ├── libstorage.a\n│   │   ├── libstorage.h\n│   │   └── SHA256SUMS.txt\n│   └── darwin-arm64/\n│       └── ...\n├── master-60861d6a/     # Nightly release\n│   ├── linux-amd64/\n│   └── darwin-arm64/\n└── master-2b3d4e5/\n    └── ...\n```\n\n### Managing the Cache\n\n#### Force Re-download\n\nTo force a fresh download without clearing the cache:\n\n```bash\nSTORAGE_BINDINGS_FORCE_DOWNLOAD=1 cargo build\n```\n\n#### Clean Entire Cache\n\nTo remove all cached binaries:\n\n```bash\n# Linux/macOS\nrm -rf ~/.cache/storage-bindings/\n\n# Windows\nrmdir /s /q %LOCALAPPDATA%\\storage-bindings\\cache\n\n# Or using the build script\nSTORAGE_BINDINGS_CLEAN_CACHE=1 cargo build\n```\n\n### Supported Platforms\n\n- Linux x86_64 (x86_64-unknown-linux-gnu)\n- Linux ARM64 (aarch64-unknown-linux-gnu)\n- macOS Apple Silicon (aarch64-apple-darwin)\n- macOS Intel (x86_64-apple-darwin)\n\n### Libstorage Version Pinning\n\nThis crate is pinned to a stable release by default. You can override the version if needed. [See available versions here](https://github.com/nipsysdev/logos-storage-nim-bin/releases).\n\n**Option 1: Cargo.toml metadata**\n\nAdd to your `Cargo.toml`:\n\n```toml\n[package.metadata.prebuilt]\nlibstorage = \"v0.3.0\"\n```\n\n**Option 2: Environment variable (for local overrides)**\n\n```bash\nexport LOGOS_STORAGE_VERSION=v0.3.0\ncargo build\n```\n\n#### Using Latest Stable Release\n\nTo use the latest stable release:\n\n```toml\n[package.metadata.prebuilt]\n# Leave empty or remove the section to use latest\n```\n\nOr via environment variable:\n\n```bash\nexport LOGOS_STORAGE_VERSION=latest\ncargo build\n```\n\n### Building from source\n\n```bash\ncargo build --release\n# or, for debug\ncargo build\n```\n\n### Building using local libraries\n\nTo use locally built libraries instead of downloading from GitHub, set the `STORAGE_BINDINGS_LOCAL_LIBS` environment variable to the path of the dist folder:\n\n```bash\nexport STORAGE_BINDINGS_LOCAL_LIBS=/path/to/logos-storage-nim-bin/dist/v0.3.0-linux-amd64\ncargo build\n```\n\n### Testing\n\nThe library includes comprehensive integration tests that demonstrate all major functionality.\n\n#### Running All Tests\n\n```bash\n# Run all tests (unit tests + integration tests)\ncargo test\n```\n\n#### Running Specific Tests\n\n```bash\n# Run only unit tests\ncargo test --lib\n\n# Run only integration tests\ncargo test --test $test_name\n```\n\n#### Available Integration Tests\n\n- **basic_usage**: Demonstrates basic upload/download functionality\n- **chunk_operations**: Shows chunk-based upload and download operations\n- **debug_operations**: Demonstrates debug operations and logging\n- **p2p_networking**: Shows P2P networking operations\n- **storage_management**: Demonstrates storage management operations\n- **two_node_network**: Shows two-node network setup and data transfer\n- **thread_safe_tests**: Tests thread-safe node lifecycle and concurrent operations\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnipsysdev%2Fstorage-rust-bindings","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnipsysdev%2Fstorage-rust-bindings","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnipsysdev%2Fstorage-rust-bindings/lists"}