Skip to content

Split out a rust binary for the CLI#52

Merged
jelmer merged 27 commits intomainfrom
rust
Aug 4, 2025
Merged

Split out a rust binary for the CLI#52
jelmer merged 27 commits intomainfrom
rust

Conversation

@jelmer
Copy link
Owner

@jelmer jelmer commented Aug 3, 2025

No description provided.

jelmer added 22 commits August 3, 2025 12:33
Document the hybrid Python/Rust architecture with core functionality moved to Rust for performance while keeping the @replace_me decorator in Python for runtime warnings. The design now reflects the use of Ruff parser for AST processing and type checker integration.
- Use IndexSet to eliminate clones in expand_paths deduplication
- Replace String with &Path for file path parameters throughout
- Optimize string allocations in detect_module_name and build_full_path
- Remove unnecessary .clone() and .to_string() calls
- Pre-allocate vectors with known capacity
- Use string slices where possible to avoid allocations
- Add setup.py integration to build/install Rust binary with [tool] extra
- Fails with clear errors if Rust is not available when [tool] requested
- Migrate README from reStructuredText to Markdown
- Update installation docs to reference the [tool] extra
- Remove obsolete libcst references
Users now:
1. pip install dissolve (gets Python package + CLI wrapper)
2. cargo install dissolve-python (gets high-performance Rust binary)

The wrapper automatically detects and uses the Rust binary when available,
providing seamless experience while keeping packaging simple.
@jelmer jelmer merged commit 181803c into main Aug 4, 2025
34 checks passed
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.

1 participant