feat: add Storage trait and JSONL journal backend
Replace the internal Vec<CompletedTrial<V>> with a pluggable Storage<V> trait. MemoryStorage is the default (no behavior change for existing users). Behind the `journal` feature flag, JournalStorage persists trials to a JSONL file with fs2 file locking for multi-process safety. - Storage<V> trait with push(), trials_arc(), refresh() methods - MemoryStorage<V> wraps Arc<RwLock<Vec<CompletedTrial<V>>>> - JournalStorage<V> appends JSON lines with exclusive file locks - Study::with_sampler_and_storage() general constructor - Study::with_journal() convenience constructor (journal feature) - Refresh from storage on create_trial() for multi-process discovery - MSRV bumped to 1.89
This commit is contained in:
@@ -139,14 +139,14 @@ jobs:
|
||||
fail_ci_if_error: true
|
||||
|
||||
msrv:
|
||||
name: MSRV (1.88)
|
||||
name: MSRV (1.89)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install Rust 1.88
|
||||
- name: Install Rust 1.89
|
||||
run: |
|
||||
rustup override set 1.88
|
||||
rustup update 1.88
|
||||
rustup override set 1.89
|
||||
rustup update 1.89
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- name: Check compilation
|
||||
run: cargo check --all-features
|
||||
|
||||
Reference in New Issue
Block a user