diff --git a/CHANGELOG.md b/CHANGELOG.md index b7589bb6..d918f254 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -90,4 +90,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Memory-efficient doublets storage - Support for split and unit storage modes - FFI bindings for cross-language support -- Comprehensive data structures for link management \ No newline at end of file +- Comprehensive data structures for link management diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4407e8ba..9b09d902 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,10 +20,11 @@ Thank you for your interest in contributing! This document provides guidelines a curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` - The project uses a specific nightly toolchain configured in `rust-toolchain.toml`: + The project uses the stable Rust toolchain configured in `rust-toolchain.toml`: + ```toml [toolchain] - channel = "nightly-2022-08-22" + channel = "stable" ``` 3. **Install development tools** @@ -262,7 +263,6 @@ Fragments are automatically collected into CHANGELOG.md during the release proce ├── changelog.d/ # Changelog fragments │ └── README.md # Fragment instructions ├── ci/ # CI scripts -├── dev-deps/ # Development dependencies (git submodules) ├── doublets/ # Main doublets library │ ├── src/ # Source code │ ├── tests/ # Integration tests diff --git a/Cargo.lock b/Cargo.lock index add47df8..07a05f4f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -203,7 +203,7 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "doublets" -version = "0.1.0-pre+beta.15" +version = "0.3.0" dependencies = [ "cfg-if", "criterion", diff --git a/README.md b/README.md index 1192dcc9..3da7ccb7 100644 --- a/README.md +++ b/README.md @@ -34,14 +34,11 @@ Add to your `Cargo.toml`: ```toml [dependencies] -doublets = "0.1.0-pre" +doublets = "0.3.0" ``` -**Note:** This crate requires nightly Rust due to usage of experimental features. - -```bash -rustup default nightly -``` +This crate builds on stable Rust. The minimum supported Rust version is 1.85, +as configured by `doublets/Cargo.toml`. ## Example @@ -200,10 +197,6 @@ doublets-rs/ │ │ └── split/ # Split storage implementation │ └── benches/ # Performance benchmarks ├── doublets-ffi/ # C FFI bindings -├── dev-deps/ # Platform dependencies -│ ├── data-rs/ # Data primitives (LinkType, Flow, etc.) -│ ├── mem-rs/ # Memory abstractions (RawMem, FileMapped) -│ └── trees-rs/ # Tree structures (size-balanced trees) └── integration/ # Integration tests ``` @@ -246,9 +239,10 @@ cargo bench --all-features ## Dependencies -- [platform-data](https://github.com/linksplatform/data-rs) - Core data types -- [platform-mem](https://github.com/linksplatform/mem-rs) - Memory abstractions -- [platform-trees](https://github.com/linksplatform/trees-rs) - Tree implementations +- [platform-num](https://crates.io/crates/platform-num) - Link reference numeric traits +- [platform-data](https://crates.io/crates/platform-data) - Core data types +- [platform-mem](https://crates.io/crates/platform-mem) - Memory abstractions +- [platform-trees](https://crates.io/crates/platform-trees) - Tree implementations ## Support diff --git a/STABLE_RUST.md b/STABLE_RUST.md new file mode 100644 index 00000000..d56e1ebf --- /dev/null +++ b/STABLE_RUST.md @@ -0,0 +1,36 @@ +# Stable Rust Support + +`doublets-rs` builds on stable Rust. The workspace uses `rust-toolchain.toml` +with `channel = "stable"`, and the `doublets` crate declares Rust 1.85 as its +minimum supported Rust version. + +## Current Setup + +- The crate no longer uses `#![feature(...)]` attributes. +- CI uses `.github/workflows/release.yml` with `dtolnay/rust-toolchain@stable`. +- Platform dependencies are consumed from crates.io: + `platform-num`, `platform-data`, `platform-mem`, and `platform-trees`. +- The old `dev-deps/` git submodules are no longer required. +- Miri, when used manually through `ci/miri.sh`, still installs a nightly + toolchain because Miri itself requires nightly Rust. This does not make the + crate require nightly for normal builds, tests, or releases. + +## Usage + +```bash +cargo check +cargo test --all-features +``` + +For local development, install the standard stable components: + +```bash +rustup component add rustfmt clippy +``` + +## Related Work + +The full migration was completed through PR 48, which removed the nightly-only +language features, migrated platform dependencies to crates.io releases, and +updated CI/CD to use the stable toolchain. This document keeps issue 22's +stable Rust requirement visible from the repository root. diff --git a/changelog.d/20260418_issue_22_stable_rust_docs.md b/changelog.d/20260418_issue_22_stable_rust_docs.md new file mode 100644 index 00000000..24c831dc --- /dev/null +++ b/changelog.d/20260418_issue_22_stable_rust_docs.md @@ -0,0 +1,2 @@ +### Fixed +- Updated installation and contributor documentation to reflect stable Rust 1.85+ support instead of the removed nightly toolchain requirement.