mirror of
https://github.com/astral-sh/ruff.git
synced 2026-10-28 10:45:37 +08:00
## Summary Publish Ruff's production Rust crates to crates.io as part of the existing release workflow. This follows uv's setup: workspace dependencies carry registry-compatible version pins, internal crates receive generated READMEs and an explicit versioning policy, CI dry-runs the full workspace publish, and release jobs publish missing crate versions idempotently through crates.io trusted publishing. The publishing set contains 32 packages: Ruff's CLI, WASM package, server, linter, formatter, parser, and the internal Ruff component crates required by them. It also includes `ty_module_resolver`, `ty_site_packages`, and `ty_static`, because those three crates are part of Ruff's normal dependency closure. The publishing set deliberately excludes: - Test-only crates: `mdtest`, `ruff_mdtest`, `ruff_python_ast_integration_tests`, and `ruff_python_trivia_integration_tests`. - Benchmark and development crates: `ruff_benchmark` and `ruff_dev`. - All remaining `ty_*` crates. These packages retain `publish = false`, so bootstrap, version bumping, README generation, CI dry-runs, and release publishing skip them through Cargo metadata instead of a separate hard-coded allowlist. The crates.io job is intentionally independent of release announcement, so a crates.io outage cannot block the existing binary, PyPI, npm, or GitHub release outputs. A bootstrap script reserves new crate names, configures the release workflow as each crate's trusted publisher, enables trusted-publishing-only releases, and records configured crates for idempotent reruns. The full workspace publish dry-run packages and verifies all 32 selected crates. Closes https://github.com/astral-sh/ruff/issues/43.
Integration tests for ruff_python_ast
This crate includes integration tests for the ruff_python_ast crate.
The reason for having a separate crate is to avoid introducing a dev circular
dependency between the ruff_python_parser crate and the ruff_python_ast crate.
This crate shouldn't include any code, only tests.
Reference:
rust-analyzerissue: https://github.com/rust-lang/rust-analyzer/issues/3390- Ruff's pull request: https://github.com/astral-sh/ruff/pull/11261