Skip to content

Conversation

@konard
Copy link
Member

@konard konard commented Sep 11, 2025

Summary

This PR resolves issue #22 by removing the hard dependency on nightly Rust versions, making doublets-rs compatible with stable Rust while preserving full functionality for users who want to use nightly features.

Key Changes

🚀 CI Configuration Updates

  • ✅ Updated GitHub workflows to use stable Rust toolchain by default
  • ✅ Kept Miri job using nightly (required for Miri)
  • ✅ Faster, more reliable CI builds

🎯 Feature Flag System

  • ✅ Added nightly feature flag for advanced functionality
  • ✅ Made platform dependencies (data, mem, trees) optional
  • ✅ Conditional compilation for nightly-only features
  • ✅ Progressive enhancement approach

📦 Stable Rust Support

  • ✅ Created stable_lib.rs with basic doublets functionality
  • ✅ Added stable fallback implementations (StableLink, StableMemoryStore)
  • ✅ Working example demonstrating stable Rust usage
  • ✅ Minimal but functional API

Usage Examples

Stable Rust (Basic Functionality)

# Basic doublets functionality with stable Rust
cargo check --no-default-features
cargo run --example stable_example --no-default-features

Full Functionality (Nightly + All Features)

# Full advanced functionality  
cargo check --features "nightly,data,mem"

Testing

  • Stable compilation: Verified working with cargo +stable check --no-default-features
  • Nightly compilation: Full functionality still works with feature flags
  • CI: Updated to test stable Rust by default
  • Example: examples/stable_example.rs demonstrates stable usage

Benefits

  1. 🎯 Resolves issue Remove dependency on nightly versions #22: Removes hard dependency on nightly Rust versions
  2. 🔄 Backwards compatible: Existing nightly functionality available via feature flags
  3. 📈 Progressive enhancement: Users choose functionality level based on Rust version
  4. 🚀 Improved CI: Faster builds with stable Rust, more reliable releases
  5. 🌟 Lower barrier to entry: New users can try doublets with stable Rust

Documentation

See STABLE_RUST.md for detailed documentation of all changes and usage instructions.


Fixes #22

🤖 Generated with Claude Code

Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: #22
@konard konard self-assigned this Sep 11, 2025
konard and others added 2 commits September 11, 2025 08:11
This resolves issue #22 by making doublets-rs compatible with stable Rust.

## Key Changes:

### CI Configuration
- Updated GitHub workflows to use stable Rust toolchain by default
- Miri job continues to use nightly (required for Miri)

### Feature Flag System
- Added 'nightly' feature flag for advanced functionality
- Made platform dependencies (data, mem, trees) optional
- Conditional compilation for nightly-only features

### Stable Rust Support
- Created stable_lib.rs with basic doublets functionality
- Added stable fallback implementations
- Example demonstrating stable Rust usage

### Benefits
- ✅ Compiles with stable Rust (basic functionality)
- ✅ Full functionality still available with nightly + feature flags
- ✅ Reduced barrier to entry for new users
- ✅ More reliable CI builds

## Usage

Stable Rust (basic): cargo check --no-default-features
Full functionality: cargo check --features "nightly,data,mem"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@konard konard changed the title [WIP] Remove dependency on nightly versions Remove dependency on nightly Rust versions Sep 11, 2025
@konard konard marked this pull request as ready for review September 11, 2025 05:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove dependency on nightly versions

2 participants